typescript-language-server 3.0.1 → 3.0.2
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 +12 -0
- package/lib/cli.mjs +3 -0
- package/lib/cli.mjs.map +1 -0
- package/package.json +37 -31
- package/lib/cli.d.ts +0 -3
- package/lib/cli.d.ts.map +0 -1
- package/lib/cli.js +0 -37
- package/lib/cli.js.map +0 -1
- package/lib/commands.d.ts +0 -13
- package/lib/commands.d.ts.map +0 -1
- package/lib/commands.js +0 -20
- package/lib/commands.js.map +0 -1
- package/lib/completion.d.ts +0 -10
- package/lib/completion.d.ts.map +0 -1
- package/lib/completion.js +0 -388
- package/lib/completion.js.map +0 -1
- package/lib/configuration-manager.d.ts +0 -48
- package/lib/configuration-manager.d.ts.map +0 -1
- package/lib/configuration-manager.js +0 -138
- package/lib/configuration-manager.js.map +0 -1
- package/lib/diagnostic-queue.d.ts +0 -31
- package/lib/diagnostic-queue.d.ts.map +0 -1
- package/lib/diagnostic-queue.js +0 -70
- package/lib/diagnostic-queue.js.map +0 -1
- package/lib/document-symbol.d.ts +0 -6
- package/lib/document-symbol.d.ts.map +0 -1
- package/lib/document-symbol.js +0 -85
- package/lib/document-symbol.js.map +0 -1
- package/lib/document.d.ts +0 -34
- package/lib/document.d.ts.map +0 -1
- package/lib/document.js +0 -115
- package/lib/document.js.map +0 -1
- package/lib/features/call-hierarchy.d.ts +0 -7
- package/lib/features/call-hierarchy.d.ts.map +0 -1
- package/lib/features/call-hierarchy.js +0 -81
- package/lib/features/call-hierarchy.js.map +0 -1
- package/lib/features/call-hierarchy.spec.d.ts +0 -2
- package/lib/features/call-hierarchy.spec.d.ts.map +0 -1
- package/lib/features/call-hierarchy.spec.js +0 -107
- package/lib/features/call-hierarchy.spec.js.map +0 -1
- package/lib/features/fix-all.d.ts +0 -12
- package/lib/features/fix-all.d.ts.map +0 -1
- package/lib/features/fix-all.js +0 -156
- package/lib/features/fix-all.js.map +0 -1
- package/lib/features/inlay-hints.d.ts +0 -11
- package/lib/features/inlay-hints.d.ts.map +0 -1
- package/lib/features/inlay-hints.js +0 -71
- package/lib/features/inlay-hints.js.map +0 -1
- package/lib/features/semantic-tokens.d.ts +0 -9
- package/lib/features/semantic-tokens.d.ts.map +0 -1
- package/lib/features/semantic-tokens.js +0 -43
- package/lib/features/semantic-tokens.js.map +0 -1
- package/lib/features/source-definition.d.ts +0 -11
- package/lib/features/source-definition.d.ts.map +0 -1
- package/lib/features/source-definition.js +0 -51
- package/lib/features/source-definition.js.map +0 -1
- package/lib/file-lsp-server.spec.d.ts +0 -2
- package/lib/file-lsp-server.spec.d.ts.map +0 -1
- package/lib/file-lsp-server.spec.js +0 -64
- package/lib/file-lsp-server.spec.js.map +0 -1
- package/lib/hover.d.ts +0 -6
- package/lib/hover.d.ts.map +0 -1
- package/lib/hover.js +0 -80
- package/lib/hover.js.map +0 -1
- package/lib/lsp-client.d.ts +0 -26
- package/lib/lsp-client.d.ts.map +0 -1
- package/lib/lsp-client.js +0 -51
- package/lib/lsp-client.js.map +0 -1
- package/lib/lsp-connection.d.ts +0 -9
- package/lib/lsp-connection.d.ts.map +0 -1
- package/lib/lsp-connection.js +0 -54
- package/lib/lsp-connection.js.map +0 -1
- package/lib/lsp-server.d.ts +0 -86
- package/lib/lsp-server.d.ts.map +0 -1
- package/lib/lsp-server.js +0 -1168
- package/lib/lsp-server.js.map +0 -1
- package/lib/lsp-server.spec.d.ts +0 -2
- package/lib/lsp-server.spec.d.ts.map +0 -1
- package/lib/lsp-server.spec.js +0 -2106
- package/lib/lsp-server.spec.js.map +0 -1
- package/lib/organize-imports.d.ts +0 -5
- package/lib/organize-imports.d.ts.map +0 -1
- package/lib/organize-imports.js +0 -19
- package/lib/organize-imports.js.map +0 -1
- package/lib/organize-imports.spec.d.ts +0 -2
- package/lib/organize-imports.spec.d.ts.map +0 -1
- package/lib/organize-imports.spec.js +0 -38
- package/lib/organize-imports.spec.js.map +0 -1
- package/lib/protocol-translation.d.ts +0 -26
- package/lib/protocol-translation.d.ts.map +0 -1
- package/lib/protocol-translation.js +0 -184
- package/lib/protocol-translation.js.map +0 -1
- package/lib/quickfix.d.ts +0 -5
- package/lib/quickfix.d.ts.map +0 -1
- package/lib/quickfix.js +0 -20
- package/lib/quickfix.js.map +0 -1
- package/lib/refactor.d.ts +0 -6
- package/lib/refactor.d.ts.map +0 -1
- package/lib/refactor.js +0 -58
- package/lib/refactor.js.map +0 -1
- package/lib/test-utils.d.ts +0 -45
- package/lib/test-utils.d.ts.map +0 -1
- package/lib/test-utils.js +0 -185
- package/lib/test-utils.js.map +0 -1
- package/lib/ts-protocol.d.ts +0 -93
- package/lib/ts-protocol.d.ts.map +0 -1
- package/lib/ts-protocol.js +0 -66
- package/lib/ts-protocol.js.map +0 -1
- package/lib/tsServer/callbackMap.d.ts +0 -17
- package/lib/tsServer/callbackMap.d.ts.map +0 -1
- package/lib/tsServer/callbackMap.js +0 -47
- package/lib/tsServer/callbackMap.js.map +0 -1
- package/lib/tsServer/cancellation.d.ts +0 -22
- package/lib/tsServer/cancellation.d.ts.map +0 -1
- package/lib/tsServer/cancellation.js +0 -51
- package/lib/tsServer/cancellation.js.map +0 -1
- package/lib/tsServer/logDirectoryProvider.d.ts +0 -13
- package/lib/tsServer/logDirectoryProvider.d.ts.map +0 -1
- package/lib/tsServer/logDirectoryProvider.js +0 -49
- package/lib/tsServer/logDirectoryProvider.js.map +0 -1
- package/lib/tsServer/requestQueue.d.ts +0 -34
- package/lib/tsServer/requestQueue.d.ts.map +0 -1
- package/lib/tsServer/requestQueue.js +0 -74
- package/lib/tsServer/requestQueue.js.map +0 -1
- package/lib/tsServer/requests.d.ts +0 -73
- package/lib/tsServer/requests.d.ts.map +0 -1
- package/lib/tsServer/requests.js +0 -30
- package/lib/tsServer/requests.js.map +0 -1
- package/lib/tsServer/server.d.ts +0 -100
- package/lib/tsServer/server.d.ts.map +0 -1
- package/lib/tsServer/server.js +0 -216
- package/lib/tsServer/server.js.map +0 -1
- package/lib/tsServer/serverError.d.ts +0 -18
- package/lib/tsServer/serverError.d.ts.map +0 -1
- package/lib/tsServer/serverError.js +0 -53
- package/lib/tsServer/serverError.js.map +0 -1
- package/lib/tsServer/serverProcess.d.ts +0 -7
- package/lib/tsServer/serverProcess.d.ts.map +0 -1
- package/lib/tsServer/serverProcess.js +0 -244
- package/lib/tsServer/serverProcess.js.map +0 -1
- package/lib/tsServer/spawner.d.ts +0 -19
- package/lib/tsServer/spawner.d.ts.map +0 -1
- package/lib/tsServer/spawner.js +0 -130
- package/lib/tsServer/spawner.js.map +0 -1
- package/lib/tsServer/tracer.d.ts +0 -26
- package/lib/tsServer/tracer.d.ts.map +0 -1
- package/lib/tsServer/tracer.js +0 -80
- package/lib/tsServer/tracer.js.map +0 -1
- package/lib/tsServer/versionProvider.d.ts +0 -29
- package/lib/tsServer/versionProvider.d.ts.map +0 -1
- package/lib/tsServer/versionProvider.js +0 -161
- package/lib/tsServer/versionProvider.js.map +0 -1
- package/lib/tsp-client.d.ts +0 -53
- package/lib/tsp-client.d.ts.map +0 -1
- package/lib/tsp-client.js +0 -228
- package/lib/tsp-client.js.map +0 -1
- package/lib/tsp-client.spec.d.ts +0 -2
- package/lib/tsp-client.spec.d.ts.map +0 -1
- package/lib/tsp-client.spec.js +0 -113
- package/lib/tsp-client.spec.js.map +0 -1
- package/lib/utils/MarkdownString.d.ts +0 -15
- package/lib/utils/MarkdownString.d.ts.map +0 -1
- package/lib/utils/MarkdownString.js +0 -45
- package/lib/utils/MarkdownString.js.map +0 -1
- package/lib/utils/SnippetString.d.ts +0 -12
- package/lib/utils/SnippetString.d.ts.map +0 -1
- package/lib/utils/SnippetString.js +0 -66
- package/lib/utils/SnippetString.js.map +0 -1
- package/lib/utils/api.d.ts +0 -49
- package/lib/utils/api.d.ts.map +0 -1
- package/lib/utils/api.js +0 -77
- package/lib/utils/api.js.map +0 -1
- package/lib/utils/configuration.d.ts +0 -20
- package/lib/utils/configuration.d.ts.map +0 -1
- package/lib/utils/configuration.js +0 -47
- package/lib/utils/configuration.js.map +0 -1
- package/lib/utils/errorCodes.d.ts +0 -12
- package/lib/utils/errorCodes.d.ts.map +0 -1
- package/lib/utils/errorCodes.js +0 -16
- package/lib/utils/errorCodes.js.map +0 -1
- package/lib/utils/fixNames.d.ts +0 -14
- package/lib/utils/fixNames.d.ts.map +0 -1
- package/lib/utils/fixNames.js +0 -18
- package/lib/utils/fixNames.js.map +0 -1
- package/lib/utils/logger.d.ts +0 -65
- package/lib/utils/logger.d.ts.map +0 -1
- package/lib/utils/logger.js +0 -187
- package/lib/utils/logger.js.map +0 -1
- package/lib/utils/modules-resolver.d.ts +0 -2
- package/lib/utils/modules-resolver.d.ts.map +0 -1
- package/lib/utils/modules-resolver.js +0 -17
- package/lib/utils/modules-resolver.js.map +0 -1
- package/lib/utils/modules-resolver.spec.d.ts +0 -2
- package/lib/utils/modules-resolver.spec.d.ts.map +0 -1
- package/lib/utils/modules-resolver.spec.js +0 -18
- package/lib/utils/modules-resolver.spec.js.map +0 -1
- package/lib/utils/previewer.d.ts +0 -15
- package/lib/utils/previewer.d.ts.map +0 -1
- package/lib/utils/previewer.js +0 -185
- package/lib/utils/previewer.js.map +0 -1
- package/lib/utils/previewer.spec.d.ts +0 -2
- package/lib/utils/previewer.spec.d.ts.map +0 -1
- package/lib/utils/previewer.spec.js +0 -123
- package/lib/utils/previewer.spec.js.map +0 -1
- package/lib/utils/tsconfig.d.ts +0 -4
- package/lib/utils/tsconfig.d.ts.map +0 -1
- package/lib/utils/tsconfig.js +0 -41
- package/lib/utils/tsconfig.js.map +0 -1
- package/lib/utils/typeConverters.d.ts +0 -29
- package/lib/utils/typeConverters.d.ts.map +0 -1
- package/lib/utils/typeConverters.js +0 -118
- package/lib/utils/typeConverters.js.map +0 -1
- package/lib/utils/types.d.ts +0 -41
- package/lib/utils/types.d.ts.map +0 -1
- package/lib/utils/types.js +0 -55
- package/lib/utils/types.js.map +0 -1
- package/lib/utils.d.ts +0 -6
- package/lib/utils.d.ts.map +0 -1
- package/lib/utils.js +0 -17
- package/lib/utils.js.map +0 -1
|
@@ -1,81 +0,0 @@
|
|
|
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 path from 'node:path';
|
|
12
|
-
import * as lsp from 'vscode-languageserver';
|
|
13
|
-
import { pathToUri } from '../protocol-translation.js';
|
|
14
|
-
import { tslib } from '../ts-protocol.js';
|
|
15
|
-
import { Range } from '../utils/typeConverters.js';
|
|
16
|
-
export function fromProtocolCallHierarchyItem(item, documents, workspaceRoot) {
|
|
17
|
-
const useFileName = isSourceFileItem(item);
|
|
18
|
-
const name = useFileName ? path.basename(item.file) : item.name;
|
|
19
|
-
const detail = useFileName
|
|
20
|
-
? workspaceRoot ? path.relative(workspaceRoot, path.dirname(item.file)) : path.dirname(item.file)
|
|
21
|
-
: item.containerName ?? '';
|
|
22
|
-
const result = {
|
|
23
|
-
kind: fromProtocolScriptElementKind(item.kind),
|
|
24
|
-
name,
|
|
25
|
-
detail,
|
|
26
|
-
uri: pathToUri(item.file, documents),
|
|
27
|
-
range: Range.fromTextSpan(item.span),
|
|
28
|
-
selectionRange: Range.fromTextSpan(item.selectionSpan),
|
|
29
|
-
};
|
|
30
|
-
const kindModifiers = item.kindModifiers ? parseKindModifier(item.kindModifiers) : undefined;
|
|
31
|
-
if (kindModifiers?.has(tslib.ScriptElementKindModifier.deprecatedModifier)) {
|
|
32
|
-
result.tags = [lsp.SymbolTag.Deprecated];
|
|
33
|
-
}
|
|
34
|
-
return result;
|
|
35
|
-
}
|
|
36
|
-
export function fromProtocolCallHierarchyIncomingCall(item, documents, workspaceRoot) {
|
|
37
|
-
return {
|
|
38
|
-
from: fromProtocolCallHierarchyItem(item.from, documents, workspaceRoot),
|
|
39
|
-
fromRanges: item.fromSpans.map(Range.fromTextSpan),
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export function fromProtocolCallHierarchyOutgoingCall(item, documents, workspaceRoot) {
|
|
43
|
-
return {
|
|
44
|
-
to: fromProtocolCallHierarchyItem(item.to, documents, workspaceRoot),
|
|
45
|
-
fromRanges: item.fromSpans.map(Range.fromTextSpan),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
function isSourceFileItem(item) {
|
|
49
|
-
return item.kind === tslib.ScriptElementKind.scriptElement || item.kind === tslib.ScriptElementKind.moduleElement && item.selectionSpan.start.line === 1 && item.selectionSpan.start.offset === 1;
|
|
50
|
-
}
|
|
51
|
-
function fromProtocolScriptElementKind(kind) {
|
|
52
|
-
switch (kind) {
|
|
53
|
-
case tslib.ScriptElementKind.moduleElement: return lsp.SymbolKind.Module;
|
|
54
|
-
case tslib.ScriptElementKind.classElement: return lsp.SymbolKind.Class;
|
|
55
|
-
case tslib.ScriptElementKind.enumElement: return lsp.SymbolKind.Enum;
|
|
56
|
-
case tslib.ScriptElementKind.enumMemberElement: return lsp.SymbolKind.EnumMember;
|
|
57
|
-
case tslib.ScriptElementKind.interfaceElement: return lsp.SymbolKind.Interface;
|
|
58
|
-
case tslib.ScriptElementKind.indexSignatureElement: return lsp.SymbolKind.Method;
|
|
59
|
-
case tslib.ScriptElementKind.callSignatureElement: return lsp.SymbolKind.Method;
|
|
60
|
-
case tslib.ScriptElementKind.memberFunctionElement: return lsp.SymbolKind.Method;
|
|
61
|
-
case tslib.ScriptElementKind.memberVariableElement: return lsp.SymbolKind.Property;
|
|
62
|
-
case tslib.ScriptElementKind.memberGetAccessorElement: return lsp.SymbolKind.Property;
|
|
63
|
-
case tslib.ScriptElementKind.memberSetAccessorElement: return lsp.SymbolKind.Property;
|
|
64
|
-
case tslib.ScriptElementKind.variableElement: return lsp.SymbolKind.Variable;
|
|
65
|
-
case tslib.ScriptElementKind.letElement: return lsp.SymbolKind.Variable;
|
|
66
|
-
case tslib.ScriptElementKind.constElement: return lsp.SymbolKind.Variable;
|
|
67
|
-
case tslib.ScriptElementKind.localVariableElement: return lsp.SymbolKind.Variable;
|
|
68
|
-
case tslib.ScriptElementKind.alias: return lsp.SymbolKind.Variable;
|
|
69
|
-
case tslib.ScriptElementKind.functionElement: return lsp.SymbolKind.Function;
|
|
70
|
-
case tslib.ScriptElementKind.localFunctionElement: return lsp.SymbolKind.Function;
|
|
71
|
-
case tslib.ScriptElementKind.constructSignatureElement: return lsp.SymbolKind.Constructor;
|
|
72
|
-
case tslib.ScriptElementKind.constructorImplementationElement: return lsp.SymbolKind.Constructor;
|
|
73
|
-
case tslib.ScriptElementKind.typeParameterElement: return lsp.SymbolKind.TypeParameter;
|
|
74
|
-
case tslib.ScriptElementKind.string: return lsp.SymbolKind.String;
|
|
75
|
-
default: return lsp.SymbolKind.Variable;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
function parseKindModifier(kindModifiers) {
|
|
79
|
-
return new Set(kindModifiers.split(/,|\s+/g));
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=call-hierarchy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-hierarchy.js","sourceRoot":"","sources":["../../src/features/call-hierarchy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-hierarchy.spec.d.ts","sourceRoot":"","sources":["../../src/features/call-hierarchy.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,107 +0,0 @@
|
|
|
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
|
-
import * as chai from 'chai';
|
|
8
|
-
import { uri, createServer, positionAfter, documentFromFile } from './../test-utils.js';
|
|
9
|
-
const assert = chai.assert;
|
|
10
|
-
const diagnostics = new Map();
|
|
11
|
-
let server;
|
|
12
|
-
async function getIncomingCalls(server, item) {
|
|
13
|
-
const incomingCalls = await server.callHierarchyIncomingCalls({ item });
|
|
14
|
-
const children = await Promise.all((incomingCalls || []).map(incomingCall => getIncomingCalls(server, incomingCall.from)));
|
|
15
|
-
return {
|
|
16
|
-
...item,
|
|
17
|
-
children,
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
async function getOutgoingCalls(server, item) {
|
|
21
|
-
const outgoingCalls = await server.callHierarchyOutgoingCalls({ item });
|
|
22
|
-
const children = await Promise.all((outgoingCalls || []).map(outgoingCall => getOutgoingCalls(server, outgoingCall.to)));
|
|
23
|
-
return {
|
|
24
|
-
...item,
|
|
25
|
-
children,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function itemToString(item, indentLevel) {
|
|
29
|
-
if (!item) {
|
|
30
|
-
return '<not found>';
|
|
31
|
-
}
|
|
32
|
-
return `${new Array(indentLevel * 2 + 1).join(' ')}-|> ${item.name} (symbol: ${item.uri.split('/').pop()}#${item.selectionRange.start.line})`;
|
|
33
|
-
}
|
|
34
|
-
function callsToString(item, indentLevel, lines) {
|
|
35
|
-
for (const child of item.children) {
|
|
36
|
-
lines.push(itemToString(child, indentLevel + 1));
|
|
37
|
-
callsToString(child, indentLevel + 1, lines);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
before(async () => {
|
|
41
|
-
server = await createServer({
|
|
42
|
-
rootUri: uri(),
|
|
43
|
-
publishDiagnostics: args => diagnostics.set(args.uri, args),
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
beforeEach(() => {
|
|
47
|
-
server.closeAll();
|
|
48
|
-
// "closeAll" triggers final publishDiagnostics with an empty list so clear last.
|
|
49
|
-
diagnostics.clear();
|
|
50
|
-
});
|
|
51
|
-
after(() => {
|
|
52
|
-
server.closeAll();
|
|
53
|
-
server.shutdown();
|
|
54
|
-
});
|
|
55
|
-
describe.only('call hierarchy', () => {
|
|
56
|
-
const oneDoc = documentFromFile({ path: 'call-hierarchy/one.ts' });
|
|
57
|
-
const twoDoc = documentFromFile({ path: 'call-hierarchy/two.ts' });
|
|
58
|
-
const threeDoc = documentFromFile({ path: 'call-hierarchy/three.ts' });
|
|
59
|
-
function openDocuments() {
|
|
60
|
-
for (const textDocument of [oneDoc, twoDoc, threeDoc]) {
|
|
61
|
-
server.didOpenTextDocument({ textDocument });
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
it('incoming calls', async () => {
|
|
65
|
-
openDocuments();
|
|
66
|
-
const items = await server.prepareCallHierarchy({
|
|
67
|
-
textDocument: twoDoc,
|
|
68
|
-
position: positionAfter(twoDoc, 'new Three().tada'),
|
|
69
|
-
});
|
|
70
|
-
assert.isNotNull(items);
|
|
71
|
-
assert.lengthOf(items, 1);
|
|
72
|
-
const lines = [];
|
|
73
|
-
for (const item of items) {
|
|
74
|
-
lines.push(itemToString(item, 0));
|
|
75
|
-
const incomingCalls = await getIncomingCalls(server, item);
|
|
76
|
-
callsToString(incomingCalls, 0, lines);
|
|
77
|
-
}
|
|
78
|
-
assert.equal(lines.join('\n'), `
|
|
79
|
-
-|> tada (symbol: three.ts#2)
|
|
80
|
-
-|> callThreeTwice (symbol: two.ts#3)
|
|
81
|
-
-|> main (symbol: one.ts#2)
|
|
82
|
-
`.trim());
|
|
83
|
-
});
|
|
84
|
-
it('outgoing calls', async () => {
|
|
85
|
-
openDocuments();
|
|
86
|
-
const items = await server.prepareCallHierarchy({
|
|
87
|
-
textDocument: oneDoc,
|
|
88
|
-
position: positionAfter(oneDoc, 'new Two().callThreeTwice'),
|
|
89
|
-
});
|
|
90
|
-
assert.isNotNull(items);
|
|
91
|
-
assert.lengthOf(items, 1);
|
|
92
|
-
const lines = [];
|
|
93
|
-
for (const item of items) {
|
|
94
|
-
lines.push(itemToString(item, 0));
|
|
95
|
-
const outgoingCalls = await getOutgoingCalls(server, item);
|
|
96
|
-
callsToString(outgoingCalls, 0, lines);
|
|
97
|
-
}
|
|
98
|
-
assert.equal(lines.join('\n'), `
|
|
99
|
-
-|> callThreeTwice (symbol: two.ts#3)
|
|
100
|
-
-|> tada (symbol: three.ts#2)
|
|
101
|
-
-|> print (symbol: three.ts#6)
|
|
102
|
-
-|> log (symbol: console.d.ts#220)
|
|
103
|
-
-|> Three (symbol: three.ts#1)
|
|
104
|
-
`.trim());
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
//# sourceMappingURL=call-hierarchy.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call-hierarchy.spec.js","sourceRoot":"","sources":["../../src/features/call-hierarchy.spec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,GAAG,EAAE,YAAY,EAAiB,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvG,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,MAAM,WAAW,GAA8C,IAAI,GAAG,EAAE,CAAC;AACzE,IAAI,MAAqB,CAAC;AAM1B,KAAK,UAAU,gBAAgB,CAAC,MAAqB,EAAE,IAA2B;IAC9E,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3H,OAAO;QACH,GAAG,IAAI;QACP,QAAQ;KACX,CAAC;AACN,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAqB,EAAE,IAA2B;IAC9E,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzH,OAAO;QACH,GAAG,IAAI;QACP,QAAQ;KACX,CAAC;AACN,CAAC;AAED,SAAS,YAAY,CAAC,IAAkC,EAAE,WAAmB;IACzE,IAAI,CAAC,IAAI,EAAE;QACP,OAAO,aAAa,CAAC;KACxB;IACD,OAAO,GAAG,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;AAClJ,CAAC;AAED,SAAS,aAAa,CAAC,IAAmC,EAAE,WAAmB,EAAE,KAAe;IAC5F,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;QAC/B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;KAChD;AACL,CAAC;AAED,MAAM,CAAC,KAAK,IAAI,EAAE;IACd,MAAM,GAAG,MAAM,YAAY,CAAC;QACxB,OAAO,EAAE,GAAG,EAAE;QACd,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;KAC9D,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,GAAG,EAAE;IACZ,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClB,iFAAiF;IACjF,WAAW,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEH,KAAK,CAAC,GAAG,EAAE;IACP,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClB,MAAM,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;IACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAEvE,SAAS,aAAa;QAClB,KAAK,MAAM,YAAY,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;YACnD,MAAM,CAAC,mBAAmB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;SAChD;IACL,CAAC;IAED,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC5B,aAAa,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC;YAC5C,YAAY,EAAE,MAAM;YACpB,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,kBAAkB,CAAC;SACtD,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,QAAQ,CAAC,KAAM,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAM,EAAE;YACvB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3D,aAAa,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAC1C;QACD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAChB;;;;aAIR,CAAC,IAAI,EAAE,CACX,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC5B,aAAa,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC;YAC5C,YAAY,EAAE,MAAM;YACpB,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,0BAA0B,CAAC;SAC9D,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,QAAQ,CAAC,KAAM,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAM,EAAE;YACvB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3D,aAAa,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;SAC1C;QACD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAChB;;;;;;CAMpB,CAAC,IAAI,EAAE,CACC,CAAC;IACN,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import * as lsp from 'vscode-languageserver';
|
|
2
|
-
import { LspDocuments } from '../document.js';
|
|
3
|
-
import { TspClient } from '../tsp-client.js';
|
|
4
|
-
import { CodeActionKind } from '../utils/types.js';
|
|
5
|
-
export declare class TypeScriptAutoFixProvider {
|
|
6
|
-
private readonly client;
|
|
7
|
-
private static kindProviders;
|
|
8
|
-
static get kinds(): CodeActionKind[];
|
|
9
|
-
constructor(client: TspClient);
|
|
10
|
-
provideCodeActions(kinds: CodeActionKind[], file: string, diagnostics: lsp.Diagnostic[], documents: LspDocuments): Promise<lsp.CodeAction[]>;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=fix-all.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fix-all.d.ts","sourceRoot":"","sources":["../../src/features/fix-all.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAgLnD,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
DELETED
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import * as lsp from 'vscode-languageserver';
|
|
6
|
-
import { toTextDocumentEdit } from '../protocol-translation.js';
|
|
7
|
-
import { tsp } from '../ts-protocol.js';
|
|
8
|
-
import * as errorCodes from '../utils/errorCodes.js';
|
|
9
|
-
import * as fixNames from '../utils/fixNames.js';
|
|
10
|
-
import { CodeActionKind } from '../utils/types.js';
|
|
11
|
-
import { Range } from '../utils/typeConverters.js';
|
|
12
|
-
var CommandTypes = tsp.CommandTypes;
|
|
13
|
-
async function buildIndividualFixes(fixes, client, file, documents, diagnostics) {
|
|
14
|
-
const edits = [];
|
|
15
|
-
for (const diagnostic of diagnostics) {
|
|
16
|
-
for (const { codes, fixName } of fixes) {
|
|
17
|
-
if (!codes.has(diagnostic.code)) {
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
const args = {
|
|
21
|
-
...Range.toFileRangeRequestArgs(file, diagnostic.range),
|
|
22
|
-
errorCodes: [+diagnostic.code],
|
|
23
|
-
};
|
|
24
|
-
const response = await client.request(CommandTypes.GetCodeFixes, args);
|
|
25
|
-
if (response.type !== 'response') {
|
|
26
|
-
continue;
|
|
27
|
-
}
|
|
28
|
-
const fix = response.body?.find(fix => fix.fixName === fixName);
|
|
29
|
-
if (fix) {
|
|
30
|
-
edits.push(...fix.changes.map(change => toTextDocumentEdit(change, documents)));
|
|
31
|
-
break;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return edits;
|
|
36
|
-
}
|
|
37
|
-
async function buildCombinedFix(fixes, client, file, documents, diagnostics) {
|
|
38
|
-
const edits = [];
|
|
39
|
-
for (const diagnostic of diagnostics) {
|
|
40
|
-
for (const { codes, fixName } of fixes) {
|
|
41
|
-
if (!codes.has(diagnostic.code)) {
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
const args = {
|
|
45
|
-
...Range.toFileRangeRequestArgs(file, diagnostic.range),
|
|
46
|
-
errorCodes: [+diagnostic.code],
|
|
47
|
-
};
|
|
48
|
-
const response = await client.request(CommandTypes.GetCodeFixes, args);
|
|
49
|
-
if (response.type !== 'response' || !response.body?.length) {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
const fix = response.body?.find(fix => fix.fixName === fixName);
|
|
53
|
-
if (!fix) {
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
if (!fix.fixId) {
|
|
57
|
-
edits.push(...fix.changes.map(change => toTextDocumentEdit(change, documents)));
|
|
58
|
-
return edits;
|
|
59
|
-
}
|
|
60
|
-
const combinedArgs = {
|
|
61
|
-
scope: {
|
|
62
|
-
type: 'file',
|
|
63
|
-
args: { file },
|
|
64
|
-
},
|
|
65
|
-
fixId: fix.fixId,
|
|
66
|
-
};
|
|
67
|
-
const combinedResponse = await client.request(CommandTypes.GetCombinedCodeFix, combinedArgs);
|
|
68
|
-
if (combinedResponse.type !== 'response' || !combinedResponse.body) {
|
|
69
|
-
return edits;
|
|
70
|
-
}
|
|
71
|
-
edits.push(...combinedResponse.body.changes.map(change => toTextDocumentEdit(change, documents)));
|
|
72
|
-
return edits;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return edits;
|
|
76
|
-
}
|
|
77
|
-
// #region Source Actions
|
|
78
|
-
class SourceAction {
|
|
79
|
-
}
|
|
80
|
-
class SourceFixAll extends SourceAction {
|
|
81
|
-
constructor() {
|
|
82
|
-
super(...arguments);
|
|
83
|
-
this.title = 'Fix all';
|
|
84
|
-
}
|
|
85
|
-
async build(client, file, documents, diagnostics) {
|
|
86
|
-
const edits = [];
|
|
87
|
-
edits.push(...await buildIndividualFixes([
|
|
88
|
-
{ codes: errorCodes.incorrectlyImplementsInterface, fixName: fixNames.classIncorrectlyImplementsInterface },
|
|
89
|
-
{ codes: errorCodes.asyncOnlyAllowedInAsyncFunctions, fixName: fixNames.awaitInSyncFunction },
|
|
90
|
-
], client, file, documents, diagnostics));
|
|
91
|
-
edits.push(...await buildCombinedFix([
|
|
92
|
-
{ codes: errorCodes.unreachableCode, fixName: fixNames.unreachableCode },
|
|
93
|
-
], client, file, documents, diagnostics));
|
|
94
|
-
if (!edits.length) {
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
return lsp.CodeAction.create(this.title, { documentChanges: edits }, SourceFixAll.kind.value);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
SourceFixAll.kind = CodeActionKind.SourceFixAllTs;
|
|
101
|
-
class SourceRemoveUnused extends SourceAction {
|
|
102
|
-
constructor() {
|
|
103
|
-
super(...arguments);
|
|
104
|
-
this.title = 'Remove all unused code';
|
|
105
|
-
}
|
|
106
|
-
async build(client, file, documents, diagnostics) {
|
|
107
|
-
const edits = await buildCombinedFix([
|
|
108
|
-
{ codes: errorCodes.variableDeclaredButNeverUsed, fixName: fixNames.unusedIdentifier },
|
|
109
|
-
], client, file, documents, diagnostics);
|
|
110
|
-
if (!edits.length) {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
return lsp.CodeAction.create(this.title, { documentChanges: edits }, SourceRemoveUnused.kind.value);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
SourceRemoveUnused.kind = CodeActionKind.SourceRemoveUnusedTs;
|
|
117
|
-
class SourceAddMissingImports extends SourceAction {
|
|
118
|
-
constructor() {
|
|
119
|
-
super(...arguments);
|
|
120
|
-
this.title = 'Add all missing imports';
|
|
121
|
-
}
|
|
122
|
-
async build(client, file, documents, diagnostics) {
|
|
123
|
-
const edits = await buildCombinedFix([
|
|
124
|
-
{ codes: errorCodes.cannotFindName, fixName: fixNames.fixImport },
|
|
125
|
-
], client, file, documents, diagnostics);
|
|
126
|
-
if (!edits.length) {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
return lsp.CodeAction.create(this.title, { documentChanges: edits }, SourceAddMissingImports.kind.value);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
SourceAddMissingImports.kind = CodeActionKind.SourceAddMissingImportsTs;
|
|
133
|
-
//#endregion
|
|
134
|
-
export class TypeScriptAutoFixProvider {
|
|
135
|
-
static get kinds() {
|
|
136
|
-
return TypeScriptAutoFixProvider.kindProviders.map(provider => provider.kind);
|
|
137
|
-
}
|
|
138
|
-
constructor(client) {
|
|
139
|
-
this.client = client;
|
|
140
|
-
}
|
|
141
|
-
async provideCodeActions(kinds, file, diagnostics, documents) {
|
|
142
|
-
const results = [];
|
|
143
|
-
for (const provider of TypeScriptAutoFixProvider.kindProviders) {
|
|
144
|
-
if (kinds.some(kind => kind.contains(provider.kind))) {
|
|
145
|
-
results.push((new provider).build(this.client, file, documents, diagnostics));
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return (await Promise.all(results)).flatMap(result => result || []);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
TypeScriptAutoFixProvider.kindProviders = [
|
|
152
|
-
SourceFixAll,
|
|
153
|
-
SourceRemoveUnused,
|
|
154
|
-
SourceAddMissingImports,
|
|
155
|
-
];
|
|
156
|
-
//# sourceMappingURL=fix-all.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fix-all.js","sourceRoot":"","sources":["../../src/features/fix-all.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inlay-hints.d.ts","sourceRoot":"","sources":["../../src/features/inlay-hints.ts"],"names":[],"mappings":"AAWA,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;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,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"}
|
|
@@ -1,71 +0,0 @@
|
|
|
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 { tsp } from '../ts-protocol.js';
|
|
14
|
-
import { Position } from '../utils/typeConverters.js';
|
|
15
|
-
import { uriToPath } from '../protocol-translation.js';
|
|
16
|
-
export class TypeScriptInlayHintsProvider {
|
|
17
|
-
static async provideInlayHints(uri, range, documents, tspClient, lspClient, configurationManager) {
|
|
18
|
-
if (tspClient.apiVersion.lt(TypeScriptInlayHintsProvider.minVersion)) {
|
|
19
|
-
lspClient.showErrorMessage('Inlay Hints request failed. Requires TypeScript 4.4+.');
|
|
20
|
-
return [];
|
|
21
|
-
}
|
|
22
|
-
const file = uriToPath(uri);
|
|
23
|
-
if (!file) {
|
|
24
|
-
lspClient.showErrorMessage('Inlay Hints request failed. No resource provided.');
|
|
25
|
-
return [];
|
|
26
|
-
}
|
|
27
|
-
const document = documents.get(file);
|
|
28
|
-
if (!document) {
|
|
29
|
-
lspClient.showErrorMessage('Inlay Hints request failed. File not opened in the editor.');
|
|
30
|
-
return [];
|
|
31
|
-
}
|
|
32
|
-
if (!areInlayHintsEnabledForFile(configurationManager, file)) {
|
|
33
|
-
return [];
|
|
34
|
-
}
|
|
35
|
-
await configurationManager.configureGloballyFromDocument(file);
|
|
36
|
-
const start = document.offsetAt(range.start);
|
|
37
|
-
const length = document.offsetAt(range.end) - start;
|
|
38
|
-
const response = await tspClient.request(tsp.CommandTypes.ProvideInlayHints, { file, start, length });
|
|
39
|
-
if (response.type !== 'response' || !response.success || !response.body) {
|
|
40
|
-
return [];
|
|
41
|
-
}
|
|
42
|
-
return response.body.map(hint => {
|
|
43
|
-
const inlayHint = lsp.InlayHint.create(Position.fromLocation(hint.position), hint.text, fromProtocolInlayHintKind(hint.kind));
|
|
44
|
-
hint.whitespaceBefore && (inlayHint.paddingLeft = true);
|
|
45
|
-
hint.whitespaceAfter && (inlayHint.paddingRight = true);
|
|
46
|
-
return inlayHint;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
TypeScriptInlayHintsProvider.minVersion = API.v440;
|
|
51
|
-
function areInlayHintsEnabledForFile(configurationManager, filename) {
|
|
52
|
-
const preferences = configurationManager.getPreferences(filename);
|
|
53
|
-
// Doesn't need to include `includeInlayVariableTypeHintsWhenTypeMatchesName` and
|
|
54
|
-
// `includeInlayVariableTypeHintsWhenTypeMatchesName` as those depend on other preferences being enabled.
|
|
55
|
-
return preferences.includeInlayParameterNameHints === 'literals' ||
|
|
56
|
-
preferences.includeInlayParameterNameHints === 'all' ||
|
|
57
|
-
preferences.includeInlayEnumMemberValueHints ||
|
|
58
|
-
preferences.includeInlayFunctionLikeReturnTypeHints ||
|
|
59
|
-
preferences.includeInlayFunctionParameterTypeHints ||
|
|
60
|
-
preferences.includeInlayPropertyDeclarationTypeHints ||
|
|
61
|
-
preferences.includeInlayVariableTypeHints;
|
|
62
|
-
}
|
|
63
|
-
function fromProtocolInlayHintKind(kind) {
|
|
64
|
-
switch (kind) {
|
|
65
|
-
case 'Parameter': return lsp.InlayHintKind.Parameter;
|
|
66
|
-
case 'Type': return lsp.InlayHintKind.Type;
|
|
67
|
-
case 'Enum': return undefined;
|
|
68
|
-
default: return undefined;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=inlay-hints.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inlay-hints.js","sourceRoot":"","sources":["../../src/features/inlay-hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { LspDocument } from '../document.js';
|
|
2
|
-
/**
|
|
3
|
-
* Transforms the semantic token spans given by the ts-server into lsp compatible spans.
|
|
4
|
-
* @param doc the document we are operating on
|
|
5
|
-
* @param spans the spans given by ts-server
|
|
6
|
-
* @returns lsp compatible spans
|
|
7
|
-
*/
|
|
8
|
-
export declare function transformSpans(doc: LspDocument, spans: number[]): number[];
|
|
9
|
-
//# sourceMappingURL=semantic-tokens.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-tokens.d.ts","sourceRoot":"","sources":["../../src/features/semantic-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAQlD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAI,MAAM,EAAE,CAiC3E"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// copied from https://github.com/microsoft/TypeScript/blob/main/src/services/classifier2020.ts
|
|
2
|
-
var TokenEncodingConsts;
|
|
3
|
-
(function (TokenEncodingConsts) {
|
|
4
|
-
TokenEncodingConsts[TokenEncodingConsts["typeOffset"] = 8] = "typeOffset";
|
|
5
|
-
TokenEncodingConsts[TokenEncodingConsts["modifierMask"] = 255] = "modifierMask";
|
|
6
|
-
})(TokenEncodingConsts || (TokenEncodingConsts = {}));
|
|
7
|
-
/**
|
|
8
|
-
* Transforms the semantic token spans given by the ts-server into lsp compatible spans.
|
|
9
|
-
* @param doc the document we are operating on
|
|
10
|
-
* @param spans the spans given by ts-server
|
|
11
|
-
* @returns lsp compatible spans
|
|
12
|
-
*/
|
|
13
|
-
export function transformSpans(doc, spans) {
|
|
14
|
-
const lspSpans = [];
|
|
15
|
-
let previousLine = 0;
|
|
16
|
-
let previousTokenStart = 0;
|
|
17
|
-
for (let i = 0; i < spans.length; i += 3) {
|
|
18
|
-
// ts-server sends us a packed array that contains 3 elements per 1 token:
|
|
19
|
-
// 1. the start position of the token
|
|
20
|
-
// 2. length of the token
|
|
21
|
-
// 3. token type & modifier packed into a bitset
|
|
22
|
-
const tokenStart = spans[i];
|
|
23
|
-
const tokenLength = spans[i + 1];
|
|
24
|
-
const tokenTypeBitSet = spans[i + 2];
|
|
25
|
-
// unpack the modifier and type: https://github.com/microsoft/TypeScript/blob/main/src/services/classifier2020.ts#L45
|
|
26
|
-
const tokenModifier = tokenTypeBitSet & TokenEncodingConsts.modifierMask;
|
|
27
|
-
const tokenType = (tokenTypeBitSet >> TokenEncodingConsts.typeOffset) - 1;
|
|
28
|
-
const { line, character } = doc.positionAt(tokenStart);
|
|
29
|
-
// lsp spec requires 5 elements per token instead of 3:
|
|
30
|
-
// 1. delta line number (relative to the previous line)
|
|
31
|
-
// 2. delta token start position (relative to the previous token)
|
|
32
|
-
// 3. length of the token
|
|
33
|
-
// 4. type of the token (e.g. function, comment, enum etc.)
|
|
34
|
-
// 5. token modifier (static, async etc.)
|
|
35
|
-
const deltaLine = line - previousLine;
|
|
36
|
-
const deltaStart = previousLine === line ? character - previousTokenStart : character;
|
|
37
|
-
lspSpans.push(deltaLine, deltaStart, tokenLength, tokenType, tokenModifier);
|
|
38
|
-
previousTokenStart = character;
|
|
39
|
-
previousLine = line;
|
|
40
|
-
}
|
|
41
|
-
return lspSpans;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=semantic-tokens.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-tokens.js","sourceRoot":"","sources":["../../src/features/semantic-tokens.ts"],"names":[],"mappings":"AAEA,+FAA+F;AAC/F,IAAK,mBAGJ;AAHD,WAAK,mBAAmB;IACpB,yEAAc,CAAA;IACd,+EAAoC,CAAA;AACxC,CAAC,EAHI,mBAAmB,KAAnB,mBAAmB,QAGvB;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAgB,EAAE,KAAe;IAC5D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACtC,0EAA0E;QAC1E,qCAAqC;QACrC,yBAAyB;QACzB,gDAAgD;QAChD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAErC,qHAAqH;QACrH,MAAM,aAAa,GAAG,eAAe,GAAG,mBAAmB,CAAC,YAAY,CAAC;QACzE,MAAM,SAAS,GAAG,CAAC,eAAe,IAAI,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAE1E,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACvD,uDAAuD;QACvD,uDAAuD;QACvD,iEAAiE;QACjE,yBAAyB;QACzB,2DAA2D;QAC3D,yCAAyC;QACzC,MAAM,SAAS,GAAG,IAAI,GAAG,YAAY,CAAC;QACtC,MAAM,UAAU,GAAG,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtF,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAE5E,kBAAkB,GAAG,SAAS,CAAC;QAC/B,YAAY,GAAG,IAAI,CAAC;KACvB;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
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
|
-
import { tsp } from '../ts-protocol.js';
|
|
15
|
-
export class SourceDefinitionCommand {
|
|
16
|
-
static async execute(uri, position, documents, tspClient, lspClient, reporter) {
|
|
17
|
-
if (tspClient.apiVersion.lt(SourceDefinitionCommand.minVersion)) {
|
|
18
|
-
lspClient.showErrorMessage('Go to Source Definition failed. Requires TypeScript 4.7+.');
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
if (!position || typeof position.character !== 'number' || typeof position.line !== 'number') {
|
|
22
|
-
lspClient.showErrorMessage('Go to Source Definition failed. Invalid position.');
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
let file;
|
|
26
|
-
if (!uri || typeof uri !== 'string' || !(file = uriToPath(uri))) {
|
|
27
|
-
lspClient.showErrorMessage('Go to Source Definition failed. No resource provided.');
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
const document = documents.get(file);
|
|
31
|
-
if (!document) {
|
|
32
|
-
lspClient.showErrorMessage('Go to Source Definition failed. File not opened in the editor.');
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
const args = Position.toFileLocationRequestArgs(file, position);
|
|
36
|
-
return await lspClient.withProgress({
|
|
37
|
-
message: 'Finding source definitions…',
|
|
38
|
-
reporter,
|
|
39
|
-
}, async () => {
|
|
40
|
-
const response = await tspClient.request(tsp.CommandTypes.FindSourceDefinition, args);
|
|
41
|
-
if (response.type !== 'response' || !response.body) {
|
|
42
|
-
lspClient.showErrorMessage('No source definitions found.');
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
return response.body.map(reference => toLocation(reference, documents));
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
SourceDefinitionCommand.id = '_typescript.goToSourceDefinition';
|
|
50
|
-
SourceDefinitionCommand.minVersion = API.v470;
|
|
51
|
-
//# sourceMappingURL=source-definition.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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;AAInE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,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,CAAC,GAAG,CAAC,YAAY,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;YACtF,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"}
|