typescript-language-server 0.11.1 → 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.
Files changed (149) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +160 -27
  3. package/lib/calls.d.ts +3 -3
  4. package/lib/calls.d.ts.map +1 -1
  5. package/lib/calls.js +143 -195
  6. package/lib/calls.js.map +1 -1
  7. package/lib/cli.js +9 -33
  8. package/lib/cli.js.map +1 -1
  9. package/lib/commands.d.ts +1 -0
  10. package/lib/commands.d.ts.map +1 -1
  11. package/lib/commands.js +4 -5
  12. package/lib/commands.js.map +1 -1
  13. package/lib/completion.d.ts +8 -11
  14. package/lib/completion.d.ts.map +1 -1
  15. package/lib/completion.js +121 -163
  16. package/lib/completion.js.map +1 -1
  17. package/lib/configuration-manager.d.ts +47 -0
  18. package/lib/configuration-manager.d.ts.map +1 -0
  19. package/lib/configuration-manager.js +105 -0
  20. package/lib/configuration-manager.js.map +1 -0
  21. package/lib/diagnostic-queue.d.ts +10 -9
  22. package/lib/diagnostic-queue.d.ts.map +1 -1
  23. package/lib/diagnostic-queue.js +13 -21
  24. package/lib/diagnostic-queue.js.map +1 -1
  25. package/lib/document-symbol.d.ts +2 -2
  26. package/lib/document-symbol.d.ts.map +1 -1
  27. package/lib/document-symbol.js +20 -25
  28. package/lib/document-symbol.js.map +1 -1
  29. package/lib/document.d.ts +1 -1
  30. package/lib/document.d.ts.map +1 -1
  31. package/lib/document.js +6 -34
  32. package/lib/document.js.map +1 -1
  33. package/lib/features/fix-all.d.ts +4 -4
  34. package/lib/features/fix-all.d.ts.map +1 -1
  35. package/lib/features/fix-all.js +104 -147
  36. package/lib/features/fix-all.js.map +1 -1
  37. package/lib/features/inlay-hints.d.ts +11 -0
  38. package/lib/features/inlay-hints.d.ts.map +1 -0
  39. package/lib/features/inlay-hints.js +70 -0
  40. package/lib/features/inlay-hints.js.map +1 -0
  41. package/lib/features/source-definition.d.ts +11 -0
  42. package/lib/features/source-definition.d.ts.map +1 -0
  43. package/lib/features/source-definition.js +50 -0
  44. package/lib/features/source-definition.js.map +1 -0
  45. package/lib/file-lsp-server.spec.js +26 -36
  46. package/lib/file-lsp-server.spec.js.map +1 -1
  47. package/lib/hover.d.ts +4 -3
  48. package/lib/hover.d.ts.map +1 -1
  49. package/lib/hover.js +53 -17
  50. package/lib/hover.js.map +1 -1
  51. package/lib/logger.d.ts +12 -4
  52. package/lib/logger.d.ts.map +1 -1
  53. package/lib/logger.js +37 -44
  54. package/lib/logger.js.map +1 -1
  55. package/lib/lsp-client.d.ts +13 -17
  56. package/lib/lsp-client.d.ts.map +1 -1
  57. package/lib/lsp-client.js +32 -91
  58. package/lib/lsp-client.js.map +1 -1
  59. package/lib/lsp-connection.d.ts +1 -1
  60. package/lib/lsp-connection.d.ts.map +1 -1
  61. package/lib/lsp-connection.js +13 -39
  62. package/lib/lsp-connection.js.map +1 -1
  63. package/lib/lsp-protocol.calls.proposed.d.ts +1 -1
  64. package/lib/lsp-protocol.calls.proposed.d.ts.map +1 -1
  65. package/lib/lsp-protocol.calls.proposed.js +7 -32
  66. package/lib/lsp-protocol.calls.proposed.js.map +1 -1
  67. package/lib/lsp-protocol.inlayHints.proposed.d.ts +2 -11
  68. package/lib/lsp-protocol.inlayHints.proposed.d.ts.map +1 -1
  69. package/lib/lsp-protocol.inlayHints.proposed.js +2 -28
  70. package/lib/lsp-protocol.inlayHints.proposed.js.map +1 -1
  71. package/lib/lsp-server.d.ts +27 -28
  72. package/lib/lsp-server.d.ts.map +1 -1
  73. package/lib/lsp-server.js +868 -926
  74. package/lib/lsp-server.js.map +1 -1
  75. package/lib/lsp-server.spec.js +956 -606
  76. package/lib/lsp-server.spec.js.map +1 -1
  77. package/lib/organize-imports.d.ts +3 -3
  78. package/lib/organize-imports.d.ts.map +1 -1
  79. package/lib/organize-imports.js +5 -32
  80. package/lib/organize-imports.js.map +1 -1
  81. package/lib/organize-imports.spec.js +17 -42
  82. package/lib/organize-imports.spec.js.map +1 -1
  83. package/lib/protocol-translation.d.ts +5 -10
  84. package/lib/protocol-translation.d.ts.map +1 -1
  85. package/lib/protocol-translation.js +39 -168
  86. package/lib/protocol-translation.js.map +1 -1
  87. package/lib/quickfix.d.ts +3 -3
  88. package/lib/quickfix.d.ts.map +1 -1
  89. package/lib/quickfix.js +7 -35
  90. package/lib/quickfix.js.map +1 -1
  91. package/lib/refactor.d.ts +2 -2
  92. package/lib/refactor.d.ts.map +1 -1
  93. package/lib/refactor.js +11 -36
  94. package/lib/refactor.js.map +1 -1
  95. package/lib/semantic-tokens.d.ts +1 -1
  96. package/lib/semantic-tokens.d.ts.map +1 -1
  97. package/lib/semantic-tokens.js +1 -5
  98. package/lib/semantic-tokens.js.map +1 -1
  99. package/lib/test-utils.d.ts +11 -5
  100. package/lib/test-utils.d.ts.map +1 -1
  101. package/lib/test-utils.js +137 -120
  102. package/lib/test-utils.js.map +1 -1
  103. package/lib/ts-protocol.d.ts +8 -20
  104. package/lib/ts-protocol.d.ts.map +1 -1
  105. package/lib/ts-protocol.js +4 -31
  106. package/lib/ts-protocol.js.map +1 -1
  107. package/lib/tsp-client.d.ts +46 -43
  108. package/lib/tsp-client.d.ts.map +1 -1
  109. package/lib/tsp-client.js +31 -52
  110. package/lib/tsp-client.js.map +1 -1
  111. package/lib/tsp-client.spec.js +48 -75
  112. package/lib/tsp-client.spec.js.map +1 -1
  113. package/lib/tsp-command-types.d.ts +1 -0
  114. package/lib/tsp-command-types.d.ts.map +1 -1
  115. package/lib/tsp-command-types.js +4 -8
  116. package/lib/tsp-command-types.js.map +1 -1
  117. package/lib/utils/SnippetString.js +1 -4
  118. package/lib/utils/SnippetString.js.map +1 -1
  119. package/lib/utils/api.d.ts +1 -0
  120. package/lib/utils/api.d.ts.map +1 -1
  121. package/lib/utils/api.js +3 -28
  122. package/lib/utils/api.js.map +1 -1
  123. package/lib/utils/configuration.d.ts +2 -2
  124. package/lib/utils/configuration.d.ts.map +1 -1
  125. package/lib/utils/configuration.js +1 -2
  126. package/lib/utils/errorCodes.js +11 -14
  127. package/lib/utils/errorCodes.js.map +1 -1
  128. package/lib/utils/fixNames.js +13 -16
  129. package/lib/utils/fixNames.js.map +1 -1
  130. package/lib/utils/modules-resolver.js +7 -34
  131. package/lib/utils/modules-resolver.js.map +1 -1
  132. package/lib/utils/modules-resolver.spec.d.ts +1 -1
  133. package/lib/utils/modules-resolver.spec.d.ts.map +1 -1
  134. package/lib/utils/modules-resolver.spec.js +11 -34
  135. package/lib/utils/modules-resolver.spec.js.map +1 -1
  136. package/lib/utils/typeConverters.d.ts +20 -2
  137. package/lib/utils/typeConverters.d.ts.map +1 -1
  138. package/lib/utils/typeConverters.js +105 -9
  139. package/lib/utils/typeConverters.js.map +1 -1
  140. package/lib/utils/types.js +2 -29
  141. package/lib/utils/types.js.map +1 -1
  142. package/lib/utils/versionProvider.d.ts +3 -3
  143. package/lib/utils/versionProvider.d.ts.map +1 -1
  144. package/lib/utils/versionProvider.js +52 -60
  145. package/lib/utils/versionProvider.js.map +1 -1
  146. package/lib/utils.d.ts.map +1 -1
  147. package/lib/utils.js +3 -5
  148. package/lib/utils.js.map +1 -1
  149. package/package.json +38 -33
package/lib/completion.js CHANGED
@@ -1,57 +1,20 @@
1
- "use strict";
2
1
  /*
3
2
  * Copyright (C) 2018 TypeFox and others.
4
3
  *
5
4
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
6
5
  * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
7
6
  */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
32
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
33
- return new (P || (P = Promise))(function (resolve, reject) {
34
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
35
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
36
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
37
- step((generator = generator.apply(thisArg, _arguments || [])).next());
38
- });
39
- };
40
- var __importDefault = (this && this.__importDefault) || function (mod) {
41
- return (mod && mod.__esModule) ? mod : { "default": mod };
42
- };
43
- Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.getCompletionTriggerCharacter = exports.isValidFunctionCompletionContext = exports.asResolvedCompletionItem = exports.asCompletionItem = void 0;
45
- const lsp = __importStar(require("vscode-languageserver/node"));
46
- const tsp_command_types_1 = require("./tsp-command-types");
47
- const protocol_translation_1 = require("./protocol-translation");
48
- const commands_1 = require("./commands");
49
- const ts_protocol_1 = require("./ts-protocol");
50
- const SnippetString_1 = __importDefault(require("./utils/SnippetString"));
51
- const typeConverters = __importStar(require("./utils/typeConverters"));
52
- function asCompletionItem(entry, file, position, document) {
7
+ import * as lsp from 'vscode-languageserver';
8
+ import { KindModifiers, ScriptElementKind } from './tsp-command-types.js';
9
+ import { toTextEdit, asPlainText, asDocumentation, normalizePath } from './protocol-translation.js';
10
+ import { Commands } from './commands.js';
11
+ import { DisplayPartKind } from './ts-protocol.js';
12
+ import SnippetString from './utils/SnippetString.js';
13
+ import { Range, Position } from './utils/typeConverters.js';
14
+ export function asCompletionItem(entry, file, position, document, features) {
53
15
  const item = {
54
16
  label: entry.name,
17
+ ...features.completionLabelDetails ? { labelDetails: entry.labelDetails } : {},
55
18
  kind: asCompletionItemKind(entry.kind),
56
19
  sortText: entry.sortText,
57
20
  commitCharacters: asCommitCharacters(entry.kind),
@@ -64,25 +27,29 @@ function asCompletionItem(entry, file, position, document) {
64
27
  entry.source || entry.data ? {
65
28
  name: entry.name,
66
29
  source: entry.source,
67
- data: entry.data
68
- } : entry.name
69
- ]
70
- }
30
+ data: entry.data,
31
+ } : entry.name,
32
+ ],
33
+ },
71
34
  };
72
35
  if (entry.source && entry.hasAction) {
73
36
  // De-prioritze auto-imports
74
37
  // https://github.com/Microsoft/vscode/issues/40311
75
38
  item.sortText = '\uffff' + entry.sortText;
76
39
  }
77
- const { sourceDisplay, isSnippet } = entry;
78
- if (sourceDisplay) {
79
- item.detail = (0, protocol_translation_1.asPlainText)(sourceDisplay);
40
+ const { isSnippet, sourceDisplay } = entry;
41
+ if (isSnippet && !features.completionSnippets) {
42
+ return null;
80
43
  }
81
- if (entry.isImportStatementCompletion || isSnippet || item.kind === lsp.CompletionItemKind.Function || item.kind === lsp.CompletionItemKind.Method) {
44
+ if (features.completionSnippets && (isSnippet || entry.isImportStatementCompletion || item.kind === lsp.CompletionItemKind.Function || item.kind === lsp.CompletionItemKind.Method)) {
45
+ // Import statements, Functions and Methods can result in a snippet completion when resolved.
82
46
  item.insertTextFormat = lsp.InsertTextFormat.Snippet;
83
47
  }
48
+ if (sourceDisplay) {
49
+ item.detail = asPlainText(sourceDisplay);
50
+ }
84
51
  let insertText = entry.insertText;
85
- let replacementRange = entry.replacementSpan && (0, protocol_translation_1.asRange)(entry.replacementSpan);
52
+ let replacementRange = entry.replacementSpan && Range.fromTextSpan(entry.replacementSpan);
86
53
  // Make sure we only replace a single line at most
87
54
  if (replacementRange && replacementRange.start.line !== replacementRange.end.line) {
88
55
  replacementRange = lsp.Range.create(replacementRange.start, document.getLineEnd(replacementRange.start.line));
@@ -92,7 +59,7 @@ function asCompletionItem(entry, file, position, document) {
92
59
  }
93
60
  if (entry.kindModifiers) {
94
61
  const kindModifiers = new Set(entry.kindModifiers.split(/,|\s+/g));
95
- if (kindModifiers.has(tsp_command_types_1.KindModifiers.optional)) {
62
+ if (kindModifiers.has(KindModifiers.optional)) {
96
63
  if (!insertText) {
97
64
  insertText = item.label;
98
65
  }
@@ -101,14 +68,14 @@ function asCompletionItem(entry, file, position, document) {
101
68
  }
102
69
  item.label += '?';
103
70
  }
104
- if (kindModifiers.has(tsp_command_types_1.KindModifiers.deprecated)) {
71
+ if (kindModifiers.has(KindModifiers.deprecated)) {
105
72
  item.tags = [lsp.CompletionItemTag.Deprecated];
106
73
  }
107
- if (kindModifiers.has(tsp_command_types_1.KindModifiers.color)) {
74
+ if (kindModifiers.has(KindModifiers.color)) {
108
75
  item.kind = lsp.CompletionItemKind.Color;
109
76
  }
110
- if (entry.kind === tsp_command_types_1.ScriptElementKind.scriptElement) {
111
- for (const extModifier of tsp_command_types_1.KindModifiers.fileExtensionKindModifiers) {
77
+ if (entry.kind === ScriptElementKind.scriptElement) {
78
+ for (const extModifier of KindModifiers.fileExtensionKindModifiers) {
112
79
  if (kindModifiers.has(extModifier)) {
113
80
  if (entry.name.toLowerCase().endsWith(extModifier)) {
114
81
  item.detail = entry.name;
@@ -132,46 +99,45 @@ function asCompletionItem(entry, file, position, document) {
132
99
  }
133
100
  return item;
134
101
  }
135
- exports.asCompletionItem = asCompletionItem;
136
102
  function asCompletionItemKind(kind) {
137
103
  switch (kind) {
138
- case tsp_command_types_1.ScriptElementKind.primitiveType:
139
- case tsp_command_types_1.ScriptElementKind.keyword:
104
+ case ScriptElementKind.primitiveType:
105
+ case ScriptElementKind.keyword:
140
106
  return lsp.CompletionItemKind.Keyword;
141
- case tsp_command_types_1.ScriptElementKind.constElement:
107
+ case ScriptElementKind.constElement:
142
108
  return lsp.CompletionItemKind.Constant;
143
- case tsp_command_types_1.ScriptElementKind.letElement:
144
- case tsp_command_types_1.ScriptElementKind.variableElement:
145
- case tsp_command_types_1.ScriptElementKind.localVariableElement:
146
- case tsp_command_types_1.ScriptElementKind.alias:
109
+ case ScriptElementKind.letElement:
110
+ case ScriptElementKind.variableElement:
111
+ case ScriptElementKind.localVariableElement:
112
+ case ScriptElementKind.alias:
147
113
  return lsp.CompletionItemKind.Variable;
148
- case tsp_command_types_1.ScriptElementKind.memberVariableElement:
149
- case tsp_command_types_1.ScriptElementKind.memberGetAccessorElement:
150
- case tsp_command_types_1.ScriptElementKind.memberSetAccessorElement:
114
+ case ScriptElementKind.memberVariableElement:
115
+ case ScriptElementKind.memberGetAccessorElement:
116
+ case ScriptElementKind.memberSetAccessorElement:
151
117
  return lsp.CompletionItemKind.Field;
152
- case tsp_command_types_1.ScriptElementKind.functionElement:
118
+ case ScriptElementKind.functionElement:
153
119
  return lsp.CompletionItemKind.Function;
154
- case tsp_command_types_1.ScriptElementKind.memberFunctionElement:
155
- case tsp_command_types_1.ScriptElementKind.constructSignatureElement:
156
- case tsp_command_types_1.ScriptElementKind.callSignatureElement:
157
- case tsp_command_types_1.ScriptElementKind.indexSignatureElement:
120
+ case ScriptElementKind.memberFunctionElement:
121
+ case ScriptElementKind.constructSignatureElement:
122
+ case ScriptElementKind.callSignatureElement:
123
+ case ScriptElementKind.indexSignatureElement:
158
124
  return lsp.CompletionItemKind.Method;
159
- case tsp_command_types_1.ScriptElementKind.enumElement:
125
+ case ScriptElementKind.enumElement:
160
126
  return lsp.CompletionItemKind.Enum;
161
- case tsp_command_types_1.ScriptElementKind.moduleElement:
162
- case tsp_command_types_1.ScriptElementKind.externalModuleName:
127
+ case ScriptElementKind.moduleElement:
128
+ case ScriptElementKind.externalModuleName:
163
129
  return lsp.CompletionItemKind.Module;
164
- case tsp_command_types_1.ScriptElementKind.classElement:
165
- case tsp_command_types_1.ScriptElementKind.typeElement:
130
+ case ScriptElementKind.classElement:
131
+ case ScriptElementKind.typeElement:
166
132
  return lsp.CompletionItemKind.Class;
167
- case tsp_command_types_1.ScriptElementKind.interfaceElement:
133
+ case ScriptElementKind.interfaceElement:
168
134
  return lsp.CompletionItemKind.Interface;
169
- case tsp_command_types_1.ScriptElementKind.warning:
170
- case tsp_command_types_1.ScriptElementKind.scriptElement:
135
+ case ScriptElementKind.warning:
136
+ case ScriptElementKind.scriptElement:
171
137
  return lsp.CompletionItemKind.File;
172
- case tsp_command_types_1.ScriptElementKind.directory:
138
+ case ScriptElementKind.directory:
173
139
  return lsp.CompletionItemKind.Folder;
174
- case tsp_command_types_1.ScriptElementKind.string:
140
+ case ScriptElementKind.string:
175
141
  return lsp.CompletionItemKind.Constant;
176
142
  }
177
143
  return lsp.CompletionItemKind.Property;
@@ -179,85 +145,77 @@ function asCompletionItemKind(kind) {
179
145
  function asCommitCharacters(kind) {
180
146
  const commitCharacters = [];
181
147
  switch (kind) {
182
- case tsp_command_types_1.ScriptElementKind.memberGetAccessorElement:
183
- case tsp_command_types_1.ScriptElementKind.memberSetAccessorElement:
184
- case tsp_command_types_1.ScriptElementKind.constructSignatureElement:
185
- case tsp_command_types_1.ScriptElementKind.callSignatureElement:
186
- case tsp_command_types_1.ScriptElementKind.indexSignatureElement:
187
- case tsp_command_types_1.ScriptElementKind.enumElement:
188
- case tsp_command_types_1.ScriptElementKind.interfaceElement:
148
+ case ScriptElementKind.memberGetAccessorElement:
149
+ case ScriptElementKind.memberSetAccessorElement:
150
+ case ScriptElementKind.constructSignatureElement:
151
+ case ScriptElementKind.callSignatureElement:
152
+ case ScriptElementKind.indexSignatureElement:
153
+ case ScriptElementKind.enumElement:
154
+ case ScriptElementKind.interfaceElement:
189
155
  commitCharacters.push('.');
190
156
  break;
191
- case tsp_command_types_1.ScriptElementKind.moduleElement:
192
- case tsp_command_types_1.ScriptElementKind.alias:
193
- case tsp_command_types_1.ScriptElementKind.constElement:
194
- case tsp_command_types_1.ScriptElementKind.letElement:
195
- case tsp_command_types_1.ScriptElementKind.variableElement:
196
- case tsp_command_types_1.ScriptElementKind.localVariableElement:
197
- case tsp_command_types_1.ScriptElementKind.memberVariableElement:
198
- case tsp_command_types_1.ScriptElementKind.classElement:
199
- case tsp_command_types_1.ScriptElementKind.functionElement:
200
- case tsp_command_types_1.ScriptElementKind.memberFunctionElement:
157
+ case ScriptElementKind.moduleElement:
158
+ case ScriptElementKind.alias:
159
+ case ScriptElementKind.constElement:
160
+ case ScriptElementKind.letElement:
161
+ case ScriptElementKind.variableElement:
162
+ case ScriptElementKind.localVariableElement:
163
+ case ScriptElementKind.memberVariableElement:
164
+ case ScriptElementKind.classElement:
165
+ case ScriptElementKind.functionElement:
166
+ case ScriptElementKind.memberFunctionElement:
201
167
  commitCharacters.push('.', ',');
202
168
  commitCharacters.push('(');
203
169
  break;
204
170
  }
205
171
  return commitCharacters.length === 0 ? undefined : commitCharacters;
206
172
  }
207
- function asResolvedCompletionItem(item, details, client, options) {
208
- var _a;
209
- return __awaiter(this, void 0, void 0, function* () {
210
- item.detail = asDetail(details);
211
- item.documentation = (0, protocol_translation_1.asDocumentation)(details);
212
- const filepath = (0, protocol_translation_1.normalizePath)(item.data.file);
213
- if ((_a = details.codeActions) === null || _a === void 0 ? void 0 : _a.length) {
214
- item.additionalTextEdits = asAdditionalTextEdits(details.codeActions, filepath);
215
- item.command = asCommand(details.codeActions, item.data.file);
216
- }
217
- if (options.completeFunctionCalls && item.insertTextFormat === lsp.InsertTextFormat.Snippet
218
- && (item.kind === lsp.CompletionItemKind.Function || item.kind === lsp.CompletionItemKind.Method)) {
219
- const { line, offset } = item.data;
220
- const position = typeConverters.Position.fromLocation({ line, offset });
221
- const shouldCompleteFunction = yield isValidFunctionCompletionContext(filepath, position, client);
222
- if (shouldCompleteFunction) {
223
- createSnippetOfFunctionCall(item, details);
224
- }
173
+ export async function asResolvedCompletionItem(item, details, client, options, features) {
174
+ item.detail = asDetail(details);
175
+ item.documentation = asDocumentation(details);
176
+ const filepath = normalizePath(item.data.file);
177
+ if (details.codeActions?.length) {
178
+ item.additionalTextEdits = asAdditionalTextEdits(details.codeActions, filepath);
179
+ item.command = asCommand(details.codeActions, item.data.file);
180
+ }
181
+ if (features.completionSnippets && options.completeFunctionCalls && (item.kind === lsp.CompletionItemKind.Function || item.kind === lsp.CompletionItemKind.Method)) {
182
+ const { line, offset } = item.data;
183
+ const position = Position.fromLocation({ line, offset });
184
+ const shouldCompleteFunction = await isValidFunctionCompletionContext(filepath, position, client);
185
+ if (shouldCompleteFunction) {
186
+ createSnippetOfFunctionCall(item, details);
225
187
  }
226
- return item;
227
- });
188
+ }
189
+ return item;
228
190
  }
229
- exports.asResolvedCompletionItem = asResolvedCompletionItem;
230
- function isValidFunctionCompletionContext(filepath, position, client) {
231
- return __awaiter(this, void 0, void 0, function* () {
232
- // Workaround for https://github.com/Microsoft/TypeScript/issues/12677
233
- // Don't complete function calls inside of destructive assigments or imports
234
- try {
235
- const args = typeConverters.Position.toFileLocationRequestArgs(filepath, position);
236
- const response = yield client.request("quickinfo" /* Quickinfo */, args);
237
- if (response.type !== 'response') {
238
- return true;
239
- }
240
- const { body } = response;
241
- switch (body === null || body === void 0 ? void 0 : body.kind) {
242
- case 'var':
243
- case 'let':
244
- case 'const':
245
- case 'alias':
246
- return false;
247
- default:
248
- return true;
249
- }
250
- }
251
- catch (_a) {
191
+ export async function isValidFunctionCompletionContext(filepath, position, client) {
192
+ // Workaround for https://github.com/Microsoft/TypeScript/issues/12677
193
+ // Don't complete function calls inside of destructive assigments or imports
194
+ try {
195
+ const args = Position.toFileLocationRequestArgs(filepath, position);
196
+ const response = await client.request("quickinfo" /* CommandTypes.Quickinfo */, args);
197
+ if (response.type !== 'response') {
252
198
  return true;
253
199
  }
254
- });
200
+ const { body } = response;
201
+ switch (body?.kind) {
202
+ case 'var':
203
+ case 'let':
204
+ case 'const':
205
+ case 'alias':
206
+ return false;
207
+ default:
208
+ return true;
209
+ }
210
+ }
211
+ catch {
212
+ return true;
213
+ }
255
214
  }
256
- exports.isValidFunctionCompletionContext = isValidFunctionCompletionContext;
257
215
  function createSnippetOfFunctionCall(item, detail) {
258
216
  const { displayParts } = detail;
259
217
  const parameterListParts = getParameterListParts(displayParts);
260
- const snippet = new SnippetString_1.default();
218
+ const snippet = new SnippetString();
261
219
  snippet.appendText(`${item.insertText || item.label}(`);
262
220
  appendJoinedPlaceholders(snippet, parameterListParts.parts, ', ');
263
221
  if (parameterListParts.hasOptionalParameters) {
@@ -266,6 +224,7 @@ function createSnippetOfFunctionCall(item, detail) {
266
224
  snippet.appendText(')');
267
225
  snippet.appendTabstop(0);
268
226
  item.insertText = snippet.value;
227
+ item.insertTextFormat = lsp.InsertTextFormat.Snippet;
269
228
  }
270
229
  function getParameterListParts(displayParts) {
271
230
  const parts = [];
@@ -276,15 +235,15 @@ function getParameterListParts(displayParts) {
276
235
  outer: for (let i = 0; i < displayParts.length; ++i) {
277
236
  const part = displayParts[i];
278
237
  switch (part.kind) {
279
- case ts_protocol_1.DisplayPartKind.methodName:
280
- case ts_protocol_1.DisplayPartKind.functionName:
281
- case ts_protocol_1.DisplayPartKind.text:
282
- case ts_protocol_1.DisplayPartKind.propertyName:
238
+ case DisplayPartKind.methodName:
239
+ case DisplayPartKind.functionName:
240
+ case DisplayPartKind.text:
241
+ case DisplayPartKind.propertyName:
283
242
  if (parenCount === 0 && braceCount === 0) {
284
243
  isInMethod = true;
285
244
  }
286
245
  break;
287
- case ts_protocol_1.DisplayPartKind.parameterName:
246
+ case DisplayPartKind.parameterName:
288
247
  if (parenCount === 1 && braceCount === 0 && isInMethod) {
289
248
  // Only take top level paren names
290
249
  const next = displayParts[i + 1];
@@ -298,7 +257,7 @@ function getParameterListParts(displayParts) {
298
257
  hasOptionalParameters = hasOptionalParameters || nameIsFollowedByOptionalIndicator;
299
258
  }
300
259
  break;
301
- case ts_protocol_1.DisplayPartKind.punctuation:
260
+ case DisplayPartKind.punctuation:
302
261
  if (part.text === '(') {
303
262
  ++parenCount;
304
263
  }
@@ -342,7 +301,7 @@ function asAdditionalTextEdits(codeActions, filepath) {
342
301
  for (const change of tsAction.changes) {
343
302
  if (change.fileName === filepath) {
344
303
  for (const textChange of change.textChanges) {
345
- additionalTextEdits.push((0, protocol_translation_1.toTextEdit)(textChange));
304
+ additionalTextEdits.push(toTextEdit(textChange));
346
305
  }
347
306
  }
348
307
  }
@@ -370,12 +329,12 @@ function asCommand(codeActions, filepath) {
370
329
  // Create command that applies all edits not in the current file.
371
330
  return {
372
331
  title: '',
373
- command: commands_1.Commands.APPLY_COMPLETION_CODE_ACTION,
332
+ command: Commands.APPLY_COMPLETION_CODE_ACTION,
374
333
  arguments: [filepath, codeActions.map(codeAction => ({
375
334
  commands: codeAction.commands,
376
335
  description: codeAction.description,
377
- changes: codeAction.changes.filter(x => x.fileName !== filepath)
378
- }))]
336
+ changes: codeAction.changes.filter(x => x.fileName !== filepath),
337
+ }))],
379
338
  };
380
339
  }
381
340
  }
@@ -383,15 +342,15 @@ function asDetail({ displayParts, sourceDisplay, source: deprecatedSource }) {
383
342
  const result = [];
384
343
  const source = sourceDisplay || deprecatedSource;
385
344
  if (source) {
386
- result.push(`Auto import from '${(0, protocol_translation_1.asPlainText)(source)}'`);
345
+ result.push(`Auto import from '${asPlainText(source)}'`);
387
346
  }
388
- const detail = (0, protocol_translation_1.asPlainText)(displayParts);
347
+ const detail = asPlainText(displayParts);
389
348
  if (detail) {
390
349
  result.push(detail);
391
350
  }
392
351
  return result.join('\n');
393
352
  }
394
- function getCompletionTriggerCharacter(character) {
353
+ export function getCompletionTriggerCharacter(character) {
395
354
  switch (character) {
396
355
  case '@':
397
356
  case '#':
@@ -407,5 +366,4 @@ function getCompletionTriggerCharacter(character) {
407
366
  return undefined;
408
367
  }
409
368
  }
410
- exports.getCompletionTriggerCharacter = getCompletionTriggerCharacter;
411
369
  //# sourceMappingURL=completion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type * as lsp from 'vscode-languageserver';
2
+ import type tsp from 'typescript/lib/protocol.d.js';
3
+ import { LspDocuments } from './document.js';
4
+ import type { TypeScriptInitializationOptions } from './ts-protocol.js';
5
+ import type { TspClient } from './tsp-client.js';
6
+ export interface WorkspaceConfiguration {
7
+ javascript?: WorkspaceConfigurationLanguageOptions;
8
+ typescript?: WorkspaceConfigurationLanguageOptions;
9
+ completions?: WorkspaceConfigurationCompletionOptions;
10
+ diagnostics?: WorkspaceConfigurationDiagnosticsOptions;
11
+ }
12
+ export interface WorkspaceConfigurationLanguageOptions {
13
+ format?: tsp.FormatCodeSettings;
14
+ inlayHints?: TypeScriptInlayHintsPreferences;
15
+ }
16
+ export interface TypeScriptInlayHintsPreferences {
17
+ includeInlayParameterNameHints?: 'none' | 'literals' | 'all';
18
+ includeInlayParameterNameHintsWhenArgumentMatchesName?: boolean;
19
+ includeInlayFunctionParameterTypeHints?: boolean;
20
+ includeInlayVariableTypeHints?: boolean;
21
+ includeInlayPropertyDeclarationTypeHints?: boolean;
22
+ includeInlayFunctionLikeReturnTypeHints?: boolean;
23
+ includeInlayEnumMemberValueHints?: boolean;
24
+ }
25
+ interface WorkspaceConfigurationDiagnosticsOptions {
26
+ ignoredCodes?: number[];
27
+ }
28
+ export interface WorkspaceConfigurationCompletionOptions {
29
+ completeFunctionCalls?: boolean;
30
+ }
31
+ export declare class ConfigurationManager {
32
+ private readonly documents;
33
+ tsPreferences: Required<tsp.UserPreferences>;
34
+ workspaceConfiguration: WorkspaceConfiguration;
35
+ private tspClient;
36
+ constructor(documents: LspDocuments);
37
+ mergeTsPreferences(preferences: tsp.UserPreferences): void;
38
+ setWorkspaceConfiguration(configuration: WorkspaceConfiguration): void;
39
+ setAndConfigureTspClient(client: TspClient, hostInfo?: TypeScriptInitializationOptions['hostInfo']): Promise<void>;
40
+ configureGloballyFromDocument(filename: string, formattingOptions?: lsp.FormattingOptions): Promise<void>;
41
+ getPreferences(filename: string): tsp.UserPreferences;
42
+ private getFormattingOptions;
43
+ private getQuoteStylePreference;
44
+ private getWorkspacePreferencesForFile;
45
+ }
46
+ export {};
47
+ //# sourceMappingURL=configuration-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-manager.d.ts","sourceRoot":"","sources":["../src/configuration-manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAmCjD,MAAM,WAAW,sBAAsB;IACnC,UAAU,CAAC,EAAE,qCAAqC,CAAC;IACnD,UAAU,CAAC,EAAE,qCAAqC,CAAC;IACnD,WAAW,CAAC,EAAE,uCAAuC,CAAC;IACtD,WAAW,CAAC,EAAE,wCAAwC,CAAC;CAC1D;AAED,MAAM,WAAW,qCAAqC;IAClD,MAAM,CAAC,EAAE,GAAG,CAAC,kBAAkB,CAAC;IAChC,UAAU,CAAC,EAAE,+BAA+B,CAAC;CAChD;AAED,MAAM,WAAW,+BAA+B;IAC5C,8BAA8B,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;IAC7D,qDAAqD,CAAC,EAAE,OAAO,CAAC;IAChE,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,wCAAwC,CAAC,EAAE,OAAO,CAAC;IACnD,uCAAuC,CAAC,EAAE,OAAO,CAAC;IAClD,gCAAgC,CAAC,EAAE,OAAO,CAAC;CAC9C;AAED,UAAU,wCAAwC;IAC9C,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,uCAAuC;IACpD,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,qBAAa,oBAAoB;IAKjB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ/B,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAA+C;IAC3F,sBAAsB,EAAE,sBAAsB,CAAM;IAC3D,OAAO,CAAC,SAAS,CAA0B;gBAEd,SAAS,EAAE,YAAY;IAE7C,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,eAAe,GAAG,IAAI;IAI1D,yBAAyB,CAAC,aAAa,EAAE,sBAAsB,GAAG,IAAI;IAIhE,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,+BAA+B,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAclH,6BAA6B,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/G,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,eAAe;IAkB5D,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,8BAA8B;CAKzC"}
@@ -0,0 +1,105 @@
1
+ import deepmerge from 'deepmerge';
2
+ import API from './utils/api.js';
3
+ const DEFAULT_TSSERVER_PREFERENCES = {
4
+ allowIncompleteCompletions: true,
5
+ allowRenameOfImportPath: true,
6
+ allowTextChangesInNewFiles: true,
7
+ disableSuggestions: false,
8
+ displayPartsForJSDoc: true,
9
+ generateReturnInDocTemplate: true,
10
+ importModuleSpecifierEnding: 'auto',
11
+ importModuleSpecifierPreference: 'shortest',
12
+ includeAutomaticOptionalChainCompletions: true,
13
+ includeCompletionsForImportStatements: true,
14
+ includeCompletionsForModuleExports: true,
15
+ includeCompletionsWithClassMemberSnippets: true,
16
+ includeCompletionsWithInsertText: true,
17
+ includeCompletionsWithObjectLiteralMethodSnippets: true,
18
+ includeCompletionsWithSnippetText: true,
19
+ includeInlayEnumMemberValueHints: false,
20
+ includeInlayFunctionLikeReturnTypeHints: false,
21
+ includeInlayFunctionParameterTypeHints: false,
22
+ includeInlayParameterNameHints: 'none',
23
+ includeInlayParameterNameHintsWhenArgumentMatchesName: false,
24
+ includeInlayPropertyDeclarationTypeHints: false,
25
+ includeInlayVariableTypeHints: false,
26
+ includePackageJsonAutoImports: 'auto',
27
+ jsxAttributeCompletionStyle: 'auto',
28
+ lazyConfiguredProjectsFromExternalProject: false,
29
+ providePrefixAndSuffixTextForRename: true,
30
+ provideRefactorNotApplicableReason: false,
31
+ quotePreference: 'auto',
32
+ useLabelDetailsInCompletionEntries: true,
33
+ };
34
+ export class ConfigurationManager {
35
+ constructor(documents) {
36
+ this.documents = documents;
37
+ this.tsPreferences = deepmerge({}, DEFAULT_TSSERVER_PREFERENCES);
38
+ this.workspaceConfiguration = {};
39
+ this.tspClient = null;
40
+ }
41
+ mergeTsPreferences(preferences) {
42
+ this.tsPreferences = deepmerge(this.tsPreferences, preferences);
43
+ }
44
+ setWorkspaceConfiguration(configuration) {
45
+ this.workspaceConfiguration = configuration;
46
+ }
47
+ async setAndConfigureTspClient(client, hostInfo) {
48
+ this.tspClient = client;
49
+ const formatOptions = {
50
+ // We can use \n here since the editor should normalize later on to its line endings.
51
+ newLineCharacter: '\n',
52
+ };
53
+ const args = {
54
+ ...hostInfo ? { hostInfo } : {},
55
+ formatOptions,
56
+ preferences: this.tsPreferences,
57
+ };
58
+ await this.tspClient?.request("configure" /* CommandTypes.Configure */, args);
59
+ }
60
+ async configureGloballyFromDocument(filename, formattingOptions) {
61
+ const args = {
62
+ formatOptions: this.getFormattingOptions(filename, formattingOptions),
63
+ preferences: this.getPreferences(filename),
64
+ };
65
+ await this.tspClient?.request("configure" /* CommandTypes.Configure */, args);
66
+ }
67
+ getPreferences(filename) {
68
+ if (this.tspClient?.apiVersion.lt(API.v290)) {
69
+ return {};
70
+ }
71
+ const workspacePreferences = this.getWorkspacePreferencesForFile(filename);
72
+ const preferences = Object.assign({}, this.tsPreferences, workspacePreferences?.inlayHints || {});
73
+ return {
74
+ ...preferences,
75
+ quotePreference: this.getQuoteStylePreference(preferences),
76
+ };
77
+ }
78
+ getFormattingOptions(filename, formattingOptions) {
79
+ const workspacePreferences = this.getWorkspacePreferencesForFile(filename);
80
+ const opts = {
81
+ ...workspacePreferences?.format,
82
+ ...formattingOptions,
83
+ };
84
+ if (opts.convertTabsToSpaces === undefined) {
85
+ opts.convertTabsToSpaces = formattingOptions?.insertSpaces;
86
+ }
87
+ if (opts.indentSize === undefined) {
88
+ opts.indentSize = formattingOptions?.tabSize;
89
+ }
90
+ return opts;
91
+ }
92
+ getQuoteStylePreference(preferences) {
93
+ switch (preferences.quotePreference) {
94
+ case 'single': return 'single';
95
+ case 'double': return 'double';
96
+ default: return this.tspClient?.apiVersion.gte(API.v333) ? 'auto' : undefined;
97
+ }
98
+ }
99
+ getWorkspacePreferencesForFile(filename) {
100
+ const document = this.documents.get(filename);
101
+ const languageId = document?.languageId.startsWith('typescript') ? 'typescript' : 'javascript';
102
+ return this.workspaceConfiguration[languageId] || {};
103
+ }
104
+ }
105
+ //# sourceMappingURL=configuration-manager.js.map