typescript-language-server 1.0.0 → 1.1.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/CHANGELOG.md +17 -0
- package/README.md +128 -21
- package/lib/calls.d.ts +1 -1
- package/lib/calls.d.ts.map +1 -1
- package/lib/calls.js +140 -164
- package/lib/calls.js.map +1 -1
- package/lib/cli.js +1 -1
- package/lib/commands.d.ts +1 -0
- package/lib/commands.d.ts.map +1 -1
- package/lib/commands.js +3 -1
- package/lib/commands.js.map +1 -1
- package/lib/completion.d.ts +4 -7
- package/lib/completion.d.ts.map +1 -1
- package/lib/completion.js +64 -66
- package/lib/completion.js.map +1 -1
- package/lib/configuration-manager.d.ts +47 -0
- package/lib/configuration-manager.d.ts.map +1 -0
- package/lib/configuration-manager.js +105 -0
- package/lib/configuration-manager.js.map +1 -0
- package/lib/diagnostic-queue.d.ts +5 -4
- package/lib/diagnostic-queue.d.ts.map +1 -1
- package/lib/diagnostic-queue.js +7 -8
- package/lib/diagnostic-queue.js.map +1 -1
- package/lib/document-symbol.d.ts.map +1 -1
- package/lib/document-symbol.js +11 -10
- package/lib/document-symbol.js.map +1 -1
- package/lib/features/fix-all.d.ts.map +1 -1
- package/lib/features/fix-all.js +96 -112
- package/lib/features/fix-all.js.map +1 -1
- package/lib/features/inlay-hints.d.ts +11 -0
- package/lib/features/inlay-hints.d.ts.map +1 -0
- package/lib/features/inlay-hints.js +70 -0
- package/lib/features/inlay-hints.js.map +1 -0
- package/lib/features/source-definition.d.ts +11 -0
- package/lib/features/source-definition.d.ts.map +1 -0
- package/lib/features/source-definition.js +50 -0
- package/lib/features/source-definition.js.map +1 -0
- package/lib/file-lsp-server.spec.js +16 -25
- package/lib/file-lsp-server.spec.js.map +1 -1
- package/lib/hover.d.ts +2 -1
- package/lib/hover.d.ts.map +1 -1
- package/lib/hover.js +47 -7
- package/lib/hover.js.map +1 -1
- package/lib/logger.js +1 -1
- package/lib/logger.js.map +1 -1
- package/lib/lsp-client.d.ts +11 -15
- package/lib/lsp-client.d.ts.map +1 -1
- package/lib/lsp-client.js +29 -61
- package/lib/lsp-client.js.map +1 -1
- package/lib/lsp-connection.d.ts.map +1 -1
- package/lib/lsp-connection.js +3 -2
- package/lib/lsp-connection.js.map +1 -1
- package/lib/lsp-protocol.inlayHints.proposed.d.ts +0 -9
- package/lib/lsp-protocol.inlayHints.proposed.d.ts.map +1 -1
- package/lib/lsp-server.d.ts +15 -20
- package/lib/lsp-server.d.ts.map +1 -1
- package/lib/lsp-server.js +806 -901
- package/lib/lsp-server.js.map +1 -1
- package/lib/lsp-server.spec.js +772 -495
- package/lib/lsp-server.spec.js.map +1 -1
- package/lib/organize-imports.spec.js +8 -8
- package/lib/protocol-translation.d.ts +2 -7
- package/lib/protocol-translation.d.ts.map +1 -1
- package/lib/protocol-translation.js +19 -106
- package/lib/protocol-translation.js.map +1 -1
- package/lib/quickfix.js +1 -1
- package/lib/refactor.js +5 -1
- package/lib/refactor.js.map +1 -1
- package/lib/test-utils.d.ts +4 -3
- package/lib/test-utils.d.ts.map +1 -1
- package/lib/test-utils.js +103 -77
- package/lib/test-utils.js.map +1 -1
- package/lib/ts-protocol.d.ts +4 -19
- package/lib/ts-protocol.d.ts.map +1 -1
- package/lib/ts-protocol.js.map +1 -1
- package/lib/tsp-client.d.ts +36 -32
- package/lib/tsp-client.d.ts.map +1 -1
- package/lib/tsp-client.js +9 -7
- package/lib/tsp-client.js.map +1 -1
- package/lib/tsp-client.spec.js +26 -33
- package/lib/tsp-client.spec.js.map +1 -1
- package/lib/tsp-command-types.d.ts +1 -0
- package/lib/tsp-command-types.d.ts.map +1 -1
- package/lib/tsp-command-types.js +1 -1
- package/lib/tsp-command-types.js.map +1 -1
- package/lib/utils/typeConverters.d.ts +19 -1
- package/lib/utils/typeConverters.d.ts.map +1 -1
- package/lib/utils/typeConverters.js +103 -4
- package/lib/utils/typeConverters.js.map +1 -1
- package/lib/utils/versionProvider.js +17 -19
- package/lib/utils/versionProvider.js.map +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +2 -0
- package/lib/utils.js.map +1 -1
- package/package.json +10 -7
package/lib/document-symbol.js
CHANGED
|
@@ -4,22 +4,23 @@
|
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
|
|
5
5
|
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { toSymbolKind } from './protocol-translation.js';
|
|
8
8
|
import { ScriptElementKind } from './tsp-command-types.js';
|
|
9
|
+
import { Range } from './utils/typeConverters.js';
|
|
9
10
|
export function collectDocumentSymbols(parent, symbols) {
|
|
10
|
-
return collectDocumentSymbolsInRange(parent, symbols, { start:
|
|
11
|
+
return collectDocumentSymbolsInRange(parent, symbols, { start: Range.fromTextSpan(parent.spans[0]).start, end: Range.fromTextSpan(parent.spans[parent.spans.length - 1]).end });
|
|
11
12
|
}
|
|
12
13
|
function collectDocumentSymbolsInRange(parent, symbols, range) {
|
|
13
14
|
let shouldInclude = shouldIncludeEntry(parent);
|
|
14
15
|
for (const span of parent.spans) {
|
|
15
|
-
const spanRange =
|
|
16
|
+
const spanRange = Range.fromTextSpan(span);
|
|
16
17
|
if (!Range.intersection(range, spanRange)) {
|
|
17
18
|
continue;
|
|
18
19
|
}
|
|
19
20
|
const children = [];
|
|
20
21
|
if (parent.childItems) {
|
|
21
22
|
for (const child of parent.childItems) {
|
|
22
|
-
if (child.spans.some(childSpan => !!Range.intersection(spanRange,
|
|
23
|
+
if (child.spans.some(childSpan => !!Range.intersection(spanRange, Range.fromTextSpan(childSpan)))) {
|
|
23
24
|
const includedChild = collectDocumentSymbolsInRange(child, children, spanRange);
|
|
24
25
|
shouldInclude = shouldInclude || includedChild;
|
|
25
26
|
}
|
|
@@ -27,7 +28,7 @@ function collectDocumentSymbolsInRange(parent, symbols, range) {
|
|
|
27
28
|
}
|
|
28
29
|
let selectionRange = spanRange;
|
|
29
30
|
if (parent.nameSpan) {
|
|
30
|
-
const nameRange =
|
|
31
|
+
const nameRange = Range.fromTextSpan(parent.nameSpan);
|
|
31
32
|
// In the case of mergeable definitions, the nameSpan is only correct for the first definition.
|
|
32
33
|
if (Range.intersection(spanRange, nameRange)) {
|
|
33
34
|
selectionRange = nameRange;
|
|
@@ -40,7 +41,7 @@ function collectDocumentSymbolsInRange(parent, symbols, range) {
|
|
|
40
41
|
kind: toSymbolKind(parent.kind),
|
|
41
42
|
range: spanRange,
|
|
42
43
|
selectionRange: selectionRange,
|
|
43
|
-
children
|
|
44
|
+
children,
|
|
44
45
|
});
|
|
45
46
|
}
|
|
46
47
|
}
|
|
@@ -50,11 +51,11 @@ export function collectSymbolInformation(uri, current, symbols, containerName) {
|
|
|
50
51
|
let shouldInclude = shouldIncludeEntry(current);
|
|
51
52
|
const name = current.text;
|
|
52
53
|
for (const span of current.spans) {
|
|
53
|
-
const range =
|
|
54
|
+
const range = Range.fromTextSpan(span);
|
|
54
55
|
const children = [];
|
|
55
56
|
if (current.childItems) {
|
|
56
57
|
for (const child of current.childItems) {
|
|
57
|
-
if (child.spans.some(span => !!Range.intersection(range,
|
|
58
|
+
if (child.spans.some(span => !!Range.intersection(range, Range.fromTextSpan(span)))) {
|
|
58
59
|
const includedChild = collectSymbolInformation(uri, child, children, name);
|
|
59
60
|
shouldInclude = shouldInclude || includedChild;
|
|
60
61
|
}
|
|
@@ -66,9 +67,9 @@ export function collectSymbolInformation(uri, current, symbols, containerName) {
|
|
|
66
67
|
kind: toSymbolKind(current.kind),
|
|
67
68
|
location: {
|
|
68
69
|
uri,
|
|
69
|
-
range
|
|
70
|
+
range,
|
|
70
71
|
},
|
|
71
|
-
containerName
|
|
72
|
+
containerName,
|
|
72
73
|
});
|
|
73
74
|
symbols.push(...children);
|
|
74
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-symbol.js","sourceRoot":"","sources":["../src/document-symbol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"document-symbol.js","sourceRoot":"","sources":["../src/document-symbol.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-all.d.ts","sourceRoot":"","sources":["../../src/features/fix-all.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"fix-all.d.ts","sourceRoot":"","sources":["../../src/features/fix-all.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA8KnD,qBAAa,yBAAyB;IAWtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVnC,OAAO,CAAC,MAAM,CAAC,aAAa,CAI1B;IAEF,WAAkB,KAAK,IAAI,cAAc,EAAE,CAE1C;gBAE4B,MAAM,EAAE,SAAS;IAEjC,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;CAS5J"}
|
package/lib/features/fix-all.js
CHANGED
|
@@ -2,83 +2,75 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
6
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
7
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
8
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
9
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
10
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
11
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
5
|
import * as lsp from 'vscode-languageserver';
|
|
15
|
-
import {
|
|
6
|
+
import { toTextDocumentEdit } from '../protocol-translation.js';
|
|
16
7
|
import * as errorCodes from '../utils/errorCodes.js';
|
|
17
8
|
import * as fixNames from '../utils/fixNames.js';
|
|
18
9
|
import { CodeActionKind } from '../utils/types.js';
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
for (const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
10
|
+
import { Range } from '../utils/typeConverters.js';
|
|
11
|
+
async function buildIndividualFixes(fixes, client, file, documents, diagnostics) {
|
|
12
|
+
const edits = [];
|
|
13
|
+
for (const diagnostic of diagnostics) {
|
|
14
|
+
for (const { codes, fixName } of fixes) {
|
|
15
|
+
if (!codes.has(diagnostic.code)) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const args = {
|
|
19
|
+
...Range.toFileRangeRequestArgs(file, diagnostic.range),
|
|
20
|
+
errorCodes: [+diagnostic.code],
|
|
21
|
+
};
|
|
22
|
+
const response = await client.request("getCodeFixes" /* CommandTypes.GetCodeFixes */, args);
|
|
23
|
+
if (response.type !== 'response') {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const fix = response.body?.find(fix => fix.fixName === fixName);
|
|
27
|
+
if (fix) {
|
|
28
|
+
edits.push(...fix.changes.map(change => toTextDocumentEdit(change, documents)));
|
|
29
|
+
break;
|
|
38
30
|
}
|
|
39
31
|
}
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
}
|
|
33
|
+
return edits;
|
|
42
34
|
}
|
|
43
|
-
function buildCombinedFix(fixes, client, file, documents, diagnostics) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
},
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
edits.push(...combinedResponse.body.changes.map(change => toTextDocumentEdit(change, documents)));
|
|
35
|
+
async function buildCombinedFix(fixes, client, file, documents, diagnostics) {
|
|
36
|
+
const edits = [];
|
|
37
|
+
for (const diagnostic of diagnostics) {
|
|
38
|
+
for (const { codes, fixName } of fixes) {
|
|
39
|
+
if (!codes.has(diagnostic.code)) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const args = {
|
|
43
|
+
...Range.toFileRangeRequestArgs(file, diagnostic.range),
|
|
44
|
+
errorCodes: [+diagnostic.code],
|
|
45
|
+
};
|
|
46
|
+
const response = await client.request("getCodeFixes" /* CommandTypes.GetCodeFixes */, args);
|
|
47
|
+
if (response.type !== 'response' || !response.body?.length) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const fix = response.body?.find(fix => fix.fixName === fixName);
|
|
51
|
+
if (!fix) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (!fix.fixId) {
|
|
55
|
+
edits.push(...fix.changes.map(change => toTextDocumentEdit(change, documents)));
|
|
56
|
+
return edits;
|
|
57
|
+
}
|
|
58
|
+
const combinedArgs = {
|
|
59
|
+
scope: {
|
|
60
|
+
type: 'file',
|
|
61
|
+
args: { file },
|
|
62
|
+
},
|
|
63
|
+
fixId: fix.fixId,
|
|
64
|
+
};
|
|
65
|
+
const combinedResponse = await client.request("getCombinedCodeFix" /* CommandTypes.GetCombinedCodeFix */, combinedArgs);
|
|
66
|
+
if (combinedResponse.type !== 'response' || !combinedResponse.body) {
|
|
77
67
|
return edits;
|
|
78
68
|
}
|
|
69
|
+
edits.push(...combinedResponse.body.changes.map(change => toTextDocumentEdit(change, documents)));
|
|
70
|
+
return edits;
|
|
79
71
|
}
|
|
80
|
-
|
|
81
|
-
|
|
72
|
+
}
|
|
73
|
+
return edits;
|
|
82
74
|
}
|
|
83
75
|
// #region Source Actions
|
|
84
76
|
class SourceAction {
|
|
@@ -88,21 +80,19 @@ class SourceFixAll extends SourceAction {
|
|
|
88
80
|
super(...arguments);
|
|
89
81
|
this.title = 'Fix all';
|
|
90
82
|
}
|
|
91
|
-
build(client, file, documents, diagnostics) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return lsp.CodeAction.create(this.title, { documentChanges: edits }, SourceFixAll.kind.value);
|
|
105
|
-
});
|
|
83
|
+
async build(client, file, documents, diagnostics) {
|
|
84
|
+
const edits = [];
|
|
85
|
+
edits.push(...await buildIndividualFixes([
|
|
86
|
+
{ codes: errorCodes.incorrectlyImplementsInterface, fixName: fixNames.classIncorrectlyImplementsInterface },
|
|
87
|
+
{ codes: errorCodes.asyncOnlyAllowedInAsyncFunctions, fixName: fixNames.awaitInSyncFunction },
|
|
88
|
+
], client, file, documents, diagnostics));
|
|
89
|
+
edits.push(...await buildCombinedFix([
|
|
90
|
+
{ codes: errorCodes.unreachableCode, fixName: fixNames.unreachableCode },
|
|
91
|
+
], client, file, documents, diagnostics));
|
|
92
|
+
if (!edits.length) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
return lsp.CodeAction.create(this.title, { documentChanges: edits }, SourceFixAll.kind.value);
|
|
106
96
|
}
|
|
107
97
|
}
|
|
108
98
|
SourceFixAll.kind = CodeActionKind.SourceFixAllTs;
|
|
@@ -111,16 +101,14 @@ class SourceRemoveUnused extends SourceAction {
|
|
|
111
101
|
super(...arguments);
|
|
112
102
|
this.title = 'Remove all unused code';
|
|
113
103
|
}
|
|
114
|
-
build(client, file, documents, diagnostics) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return lsp.CodeAction.create(this.title, { documentChanges: edits }, SourceRemoveUnused.kind.value);
|
|
123
|
-
});
|
|
104
|
+
async build(client, file, documents, diagnostics) {
|
|
105
|
+
const edits = await buildCombinedFix([
|
|
106
|
+
{ codes: errorCodes.variableDeclaredButNeverUsed, fixName: fixNames.unusedIdentifier },
|
|
107
|
+
], client, file, documents, diagnostics);
|
|
108
|
+
if (!edits.length) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
return lsp.CodeAction.create(this.title, { documentChanges: edits }, SourceRemoveUnused.kind.value);
|
|
124
112
|
}
|
|
125
113
|
}
|
|
126
114
|
SourceRemoveUnused.kind = CodeActionKind.SourceRemoveUnusedTs;
|
|
@@ -129,16 +117,14 @@ class SourceAddMissingImports extends SourceAction {
|
|
|
129
117
|
super(...arguments);
|
|
130
118
|
this.title = 'Add all missing imports';
|
|
131
119
|
}
|
|
132
|
-
build(client, file, documents, diagnostics) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return lsp.CodeAction.create(this.title, { documentChanges: edits }, SourceAddMissingImports.kind.value);
|
|
141
|
-
});
|
|
120
|
+
async build(client, file, documents, diagnostics) {
|
|
121
|
+
const edits = await buildCombinedFix([
|
|
122
|
+
{ codes: errorCodes.cannotFindName, fixName: fixNames.fixImport },
|
|
123
|
+
], client, file, documents, diagnostics);
|
|
124
|
+
if (!edits.length) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
return lsp.CodeAction.create(this.title, { documentChanges: edits }, SourceAddMissingImports.kind.value);
|
|
142
128
|
}
|
|
143
129
|
}
|
|
144
130
|
SourceAddMissingImports.kind = CodeActionKind.SourceAddMissingImportsTs;
|
|
@@ -150,21 +136,19 @@ export class TypeScriptAutoFixProvider {
|
|
|
150
136
|
static get kinds() {
|
|
151
137
|
return TypeScriptAutoFixProvider.kindProviders.map(provider => provider.kind);
|
|
152
138
|
}
|
|
153
|
-
provideCodeActions(kinds, file, diagnostics, documents) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
results.push((new provider).build(this.client, file, documents, diagnostics));
|
|
159
|
-
}
|
|
139
|
+
async provideCodeActions(kinds, file, diagnostics, documents) {
|
|
140
|
+
const results = [];
|
|
141
|
+
for (const provider of TypeScriptAutoFixProvider.kindProviders) {
|
|
142
|
+
if (kinds.some(kind => kind.contains(provider.kind))) {
|
|
143
|
+
results.push((new provider).build(this.client, file, documents, diagnostics));
|
|
160
144
|
}
|
|
161
|
-
|
|
162
|
-
|
|
145
|
+
}
|
|
146
|
+
return (await Promise.all(results)).flatMap(result => result || []);
|
|
163
147
|
}
|
|
164
148
|
}
|
|
165
149
|
TypeScriptAutoFixProvider.kindProviders = [
|
|
166
150
|
SourceFixAll,
|
|
167
151
|
SourceRemoveUnused,
|
|
168
|
-
SourceAddMissingImports
|
|
152
|
+
SourceAddMissingImports,
|
|
169
153
|
];
|
|
170
154
|
//# sourceMappingURL=fix-all.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-all.js","sourceRoot":"","sources":["../../src/features/fix-all.ts"],"names":[],"mappings":"AAAA;;;gGAGgG
|
|
1
|
+
{"version":3,"file":"fix-all.js","sourceRoot":"","sources":["../../src/features/fix-all.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as lsp from 'vscode-languageserver';
|
|
2
|
+
import API from '../utils/api.js';
|
|
3
|
+
import type { ConfigurationManager } from '../configuration-manager.js';
|
|
4
|
+
import type { LspDocuments } from '../document.js';
|
|
5
|
+
import type { TspClient } from '../tsp-client.js';
|
|
6
|
+
import type { LspClient } from '../lsp-client.js';
|
|
7
|
+
export declare class TypeScriptInlayHintsProvider {
|
|
8
|
+
static readonly minVersion: API;
|
|
9
|
+
static provideInlayHints(uri: lsp.DocumentUri, range: lsp.Range, documents: LspDocuments, tspClient: TspClient, lspClient: LspClient, configurationManager: ConfigurationManager): Promise<lsp.InlayHint[]>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=inlay-hints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inlay-hints.d.ts","sourceRoot":"","sources":["../../src/features/inlay-hints.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAKlD,qBAAa,4BAA4B;IACrC,gBAAuB,UAAU,MAAY;WAEzB,iBAAiB,CACjC,GAAG,EAAE,GAAG,CAAC,WAAW,EACpB,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,oBAAoB,GAC3C,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;CA4C9B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2022 TypeFox and others.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*/
|
|
7
|
+
/*---------------------------------------------------------------------------------------------
|
|
8
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
9
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
10
|
+
*--------------------------------------------------------------------------------------------*/
|
|
11
|
+
import * as lsp from 'vscode-languageserver';
|
|
12
|
+
import API from '../utils/api.js';
|
|
13
|
+
import { Position } from '../utils/typeConverters.js';
|
|
14
|
+
import { uriToPath } from '../protocol-translation.js';
|
|
15
|
+
export class TypeScriptInlayHintsProvider {
|
|
16
|
+
static async provideInlayHints(uri, range, documents, tspClient, lspClient, configurationManager) {
|
|
17
|
+
if (tspClient.apiVersion.lt(TypeScriptInlayHintsProvider.minVersion)) {
|
|
18
|
+
lspClient.showErrorMessage('Inlay Hints request failed. Requires TypeScript 4.4+.');
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
const file = uriToPath(uri);
|
|
22
|
+
if (!file) {
|
|
23
|
+
lspClient.showErrorMessage('Inlay Hints request failed. No resource provided.');
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
const document = documents.get(file);
|
|
27
|
+
if (!document) {
|
|
28
|
+
lspClient.showErrorMessage('Inlay Hints request failed. File not opened in the editor.');
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
if (!areInlayHintsEnabledForFile(configurationManager, file)) {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
await configurationManager.configureGloballyFromDocument(file);
|
|
35
|
+
const start = document.offsetAt(range.start);
|
|
36
|
+
const length = document.offsetAt(range.end) - start;
|
|
37
|
+
const response = await tspClient.request("provideInlayHints" /* CommandTypes.ProvideInlayHints */, { file, start, length });
|
|
38
|
+
if (response.type !== 'response' || !response.success || !response.body) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
return response.body.map(hint => {
|
|
42
|
+
const inlayHint = lsp.InlayHint.create(Position.fromLocation(hint.position), hint.text, fromProtocolInlayHintKind(hint.kind));
|
|
43
|
+
hint.whitespaceBefore && (inlayHint.paddingLeft = true);
|
|
44
|
+
hint.whitespaceAfter && (inlayHint.paddingRight = true);
|
|
45
|
+
return inlayHint;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
TypeScriptInlayHintsProvider.minVersion = API.v440;
|
|
50
|
+
function areInlayHintsEnabledForFile(configurationManager, filename) {
|
|
51
|
+
const preferences = configurationManager.getPreferences(filename);
|
|
52
|
+
// Doesn't need to include `includeInlayVariableTypeHintsWhenTypeMatchesName` as it depends
|
|
53
|
+
// on `includeInlayVariableTypeHints` being enabled.
|
|
54
|
+
return preferences.includeInlayParameterNameHints === 'literals' ||
|
|
55
|
+
preferences.includeInlayParameterNameHints === 'all' ||
|
|
56
|
+
preferences.includeInlayEnumMemberValueHints ||
|
|
57
|
+
preferences.includeInlayFunctionLikeReturnTypeHints ||
|
|
58
|
+
preferences.includeInlayFunctionParameterTypeHints ||
|
|
59
|
+
preferences.includeInlayPropertyDeclarationTypeHints ||
|
|
60
|
+
preferences.includeInlayVariableTypeHints;
|
|
61
|
+
}
|
|
62
|
+
function fromProtocolInlayHintKind(kind) {
|
|
63
|
+
switch (kind) {
|
|
64
|
+
case 'Parameter': return lsp.InlayHintKind.Parameter;
|
|
65
|
+
case 'Type': return lsp.InlayHintKind.Type;
|
|
66
|
+
case 'Enum': return undefined;
|
|
67
|
+
default: return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=inlay-hints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inlay-hints.js","sourceRoot":"","sources":["../../src/features/inlay-hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as lsp from 'vscode-languageserver';
|
|
2
|
+
import API from '../utils/api.js';
|
|
3
|
+
import type { LspDocuments } from '../document.js';
|
|
4
|
+
import type { TspClient } from '../tsp-client.js';
|
|
5
|
+
import type { LspClient } from '../lsp-client.js';
|
|
6
|
+
export declare class SourceDefinitionCommand {
|
|
7
|
+
static readonly id = "_typescript.goToSourceDefinition";
|
|
8
|
+
static readonly minVersion: API;
|
|
9
|
+
static execute(uri: lsp.DocumentUri | undefined, position: lsp.Position | undefined, documents: LspDocuments, tspClient: TspClient, lspClient: LspClient, reporter: lsp.WorkDoneProgressReporter): Promise<lsp.Location[] | void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=source-definition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-definition.d.ts","sourceRoot":"","sources":["../../src/features/source-definition.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAGlC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,qBAAa,uBAAuB;IAChC,gBAAuB,EAAE,sCAAsC;IAC/D,gBAAuB,UAAU,MAAY;WAEzB,OAAO,CACvB,GAAG,EAAE,GAAG,CAAC,WAAW,GAAG,SAAS,EAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,EAClC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,GAAG,CAAC,wBAAwB,GACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;CAsCpC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2022 TypeFox and others.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
|
|
5
|
+
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
+
*/
|
|
7
|
+
/*---------------------------------------------------------------------------------------------
|
|
8
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
9
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
10
|
+
*--------------------------------------------------------------------------------------------*/
|
|
11
|
+
import API from '../utils/api.js';
|
|
12
|
+
import { Position } from '../utils/typeConverters.js';
|
|
13
|
+
import { toLocation, uriToPath } from '../protocol-translation.js';
|
|
14
|
+
export class SourceDefinitionCommand {
|
|
15
|
+
static async execute(uri, position, documents, tspClient, lspClient, reporter) {
|
|
16
|
+
if (tspClient.apiVersion.lt(SourceDefinitionCommand.minVersion)) {
|
|
17
|
+
lspClient.showErrorMessage('Go to Source Definition failed. Requires TypeScript 4.7+.');
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (!position || typeof position.character !== 'number' || typeof position.line !== 'number') {
|
|
21
|
+
lspClient.showErrorMessage('Go to Source Definition failed. Invalid position.');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
let file;
|
|
25
|
+
if (!uri || typeof uri !== 'string' || !(file = uriToPath(uri))) {
|
|
26
|
+
lspClient.showErrorMessage('Go to Source Definition failed. No resource provided.');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const document = documents.get(file);
|
|
30
|
+
if (!document) {
|
|
31
|
+
lspClient.showErrorMessage('Go to Source Definition failed. File not opened in the editor.');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const args = Position.toFileLocationRequestArgs(file, position);
|
|
35
|
+
return await lspClient.withProgress({
|
|
36
|
+
message: 'Finding source definitions…',
|
|
37
|
+
reporter,
|
|
38
|
+
}, async () => {
|
|
39
|
+
const response = await tspClient.request("findSourceDefinition" /* CommandTypes.FindSourceDefinition */, args);
|
|
40
|
+
if (response.type !== 'response' || !response.body) {
|
|
41
|
+
lspClient.showErrorMessage('No source definitions found.');
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
return response.body.map(reference => toLocation(reference, documents));
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
SourceDefinitionCommand.id = '_typescript.goToSourceDefinition';
|
|
49
|
+
SourceDefinitionCommand.minVersion = API.v470;
|
|
50
|
+
//# sourceMappingURL=source-definition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-definition.js","sourceRoot":"","sources":["../../src/features/source-definition.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH;;;gGAGgG;AAGhG,OAAO,GAAG,MAAM,iBAAiB,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAMnE,MAAM,OAAO,uBAAuB;IAIzB,MAAM,CAAC,KAAK,CAAC,OAAO,CACvB,GAAgC,EAChC,QAAkC,EAClC,SAAuB,EACvB,SAAoB,EACpB,SAAoB,EACpB,QAAsC;QAEtC,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE;YAC7D,SAAS,CAAC,gBAAgB,CAAC,2DAA2D,CAAC,CAAC;YACxF,OAAO;SACV;QAED,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC1F,SAAS,CAAC,gBAAgB,CAAC,mDAAmD,CAAC,CAAC;YAChF,OAAO;SACV;QAED,IAAI,IAAwB,CAAC;QAE7B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;YAC7D,SAAS,CAAC,gBAAgB,CAAC,uDAAuD,CAAC,CAAC;YACpF,OAAO;SACV;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,EAAE;YACX,SAAS,CAAC,gBAAgB,CAAC,gEAAgE,CAAC,CAAC;YAC7F,OAAO;SACV;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,yBAAyB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChE,OAAO,MAAM,SAAS,CAAC,YAAY,CAAwB;YACvD,OAAO,EAAE,6BAA6B;YACtC,QAAQ;SACX,EAAE,KAAK,IAAI,EAAE;YACV,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,iEAAoC,IAAI,CAAC,CAAC;YAClF,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;gBAChD,SAAS,CAAC,gBAAgB,CAAC,8BAA8B,CAAC,CAAC;gBAC3D,OAAO;aACV;YACD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACP,CAAC;;AA/CsB,0BAAE,GAAG,kCAAkC,CAAC;AACxC,kCAAU,GAAG,GAAG,CAAC,IAAI,CAAC"}
|