typescript-language-server 3.0.1 → 3.0.3

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 (220) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/lib/cli.mjs +3 -0
  3. package/lib/cli.mjs.map +1 -0
  4. package/package.json +37 -31
  5. package/lib/cli.d.ts +0 -3
  6. package/lib/cli.d.ts.map +0 -1
  7. package/lib/cli.js +0 -37
  8. package/lib/cli.js.map +0 -1
  9. package/lib/commands.d.ts +0 -13
  10. package/lib/commands.d.ts.map +0 -1
  11. package/lib/commands.js +0 -20
  12. package/lib/commands.js.map +0 -1
  13. package/lib/completion.d.ts +0 -10
  14. package/lib/completion.d.ts.map +0 -1
  15. package/lib/completion.js +0 -388
  16. package/lib/completion.js.map +0 -1
  17. package/lib/configuration-manager.d.ts +0 -48
  18. package/lib/configuration-manager.d.ts.map +0 -1
  19. package/lib/configuration-manager.js +0 -138
  20. package/lib/configuration-manager.js.map +0 -1
  21. package/lib/diagnostic-queue.d.ts +0 -31
  22. package/lib/diagnostic-queue.d.ts.map +0 -1
  23. package/lib/diagnostic-queue.js +0 -70
  24. package/lib/diagnostic-queue.js.map +0 -1
  25. package/lib/document-symbol.d.ts +0 -6
  26. package/lib/document-symbol.d.ts.map +0 -1
  27. package/lib/document-symbol.js +0 -85
  28. package/lib/document-symbol.js.map +0 -1
  29. package/lib/document.d.ts +0 -34
  30. package/lib/document.d.ts.map +0 -1
  31. package/lib/document.js +0 -115
  32. package/lib/document.js.map +0 -1
  33. package/lib/features/call-hierarchy.d.ts +0 -7
  34. package/lib/features/call-hierarchy.d.ts.map +0 -1
  35. package/lib/features/call-hierarchy.js +0 -81
  36. package/lib/features/call-hierarchy.js.map +0 -1
  37. package/lib/features/call-hierarchy.spec.d.ts +0 -2
  38. package/lib/features/call-hierarchy.spec.d.ts.map +0 -1
  39. package/lib/features/call-hierarchy.spec.js +0 -107
  40. package/lib/features/call-hierarchy.spec.js.map +0 -1
  41. package/lib/features/fix-all.d.ts +0 -12
  42. package/lib/features/fix-all.d.ts.map +0 -1
  43. package/lib/features/fix-all.js +0 -156
  44. package/lib/features/fix-all.js.map +0 -1
  45. package/lib/features/inlay-hints.d.ts +0 -11
  46. package/lib/features/inlay-hints.d.ts.map +0 -1
  47. package/lib/features/inlay-hints.js +0 -71
  48. package/lib/features/inlay-hints.js.map +0 -1
  49. package/lib/features/semantic-tokens.d.ts +0 -9
  50. package/lib/features/semantic-tokens.d.ts.map +0 -1
  51. package/lib/features/semantic-tokens.js +0 -43
  52. package/lib/features/semantic-tokens.js.map +0 -1
  53. package/lib/features/source-definition.d.ts +0 -11
  54. package/lib/features/source-definition.d.ts.map +0 -1
  55. package/lib/features/source-definition.js +0 -51
  56. package/lib/features/source-definition.js.map +0 -1
  57. package/lib/file-lsp-server.spec.d.ts +0 -2
  58. package/lib/file-lsp-server.spec.d.ts.map +0 -1
  59. package/lib/file-lsp-server.spec.js +0 -64
  60. package/lib/file-lsp-server.spec.js.map +0 -1
  61. package/lib/hover.d.ts +0 -6
  62. package/lib/hover.d.ts.map +0 -1
  63. package/lib/hover.js +0 -80
  64. package/lib/hover.js.map +0 -1
  65. package/lib/lsp-client.d.ts +0 -26
  66. package/lib/lsp-client.d.ts.map +0 -1
  67. package/lib/lsp-client.js +0 -51
  68. package/lib/lsp-client.js.map +0 -1
  69. package/lib/lsp-connection.d.ts +0 -9
  70. package/lib/lsp-connection.d.ts.map +0 -1
  71. package/lib/lsp-connection.js +0 -54
  72. package/lib/lsp-connection.js.map +0 -1
  73. package/lib/lsp-server.d.ts +0 -86
  74. package/lib/lsp-server.d.ts.map +0 -1
  75. package/lib/lsp-server.js +0 -1168
  76. package/lib/lsp-server.js.map +0 -1
  77. package/lib/lsp-server.spec.d.ts +0 -2
  78. package/lib/lsp-server.spec.d.ts.map +0 -1
  79. package/lib/lsp-server.spec.js +0 -2106
  80. package/lib/lsp-server.spec.js.map +0 -1
  81. package/lib/organize-imports.d.ts +0 -5
  82. package/lib/organize-imports.d.ts.map +0 -1
  83. package/lib/organize-imports.js +0 -19
  84. package/lib/organize-imports.js.map +0 -1
  85. package/lib/organize-imports.spec.d.ts +0 -2
  86. package/lib/organize-imports.spec.d.ts.map +0 -1
  87. package/lib/organize-imports.spec.js +0 -38
  88. package/lib/organize-imports.spec.js.map +0 -1
  89. package/lib/protocol-translation.d.ts +0 -26
  90. package/lib/protocol-translation.d.ts.map +0 -1
  91. package/lib/protocol-translation.js +0 -184
  92. package/lib/protocol-translation.js.map +0 -1
  93. package/lib/quickfix.d.ts +0 -5
  94. package/lib/quickfix.d.ts.map +0 -1
  95. package/lib/quickfix.js +0 -20
  96. package/lib/quickfix.js.map +0 -1
  97. package/lib/refactor.d.ts +0 -6
  98. package/lib/refactor.d.ts.map +0 -1
  99. package/lib/refactor.js +0 -58
  100. package/lib/refactor.js.map +0 -1
  101. package/lib/test-utils.d.ts +0 -45
  102. package/lib/test-utils.d.ts.map +0 -1
  103. package/lib/test-utils.js +0 -185
  104. package/lib/test-utils.js.map +0 -1
  105. package/lib/ts-protocol.d.ts +0 -93
  106. package/lib/ts-protocol.d.ts.map +0 -1
  107. package/lib/ts-protocol.js +0 -66
  108. package/lib/ts-protocol.js.map +0 -1
  109. package/lib/tsServer/callbackMap.d.ts +0 -17
  110. package/lib/tsServer/callbackMap.d.ts.map +0 -1
  111. package/lib/tsServer/callbackMap.js +0 -47
  112. package/lib/tsServer/callbackMap.js.map +0 -1
  113. package/lib/tsServer/cancellation.d.ts +0 -22
  114. package/lib/tsServer/cancellation.d.ts.map +0 -1
  115. package/lib/tsServer/cancellation.js +0 -51
  116. package/lib/tsServer/cancellation.js.map +0 -1
  117. package/lib/tsServer/logDirectoryProvider.d.ts +0 -13
  118. package/lib/tsServer/logDirectoryProvider.d.ts.map +0 -1
  119. package/lib/tsServer/logDirectoryProvider.js +0 -49
  120. package/lib/tsServer/logDirectoryProvider.js.map +0 -1
  121. package/lib/tsServer/requestQueue.d.ts +0 -34
  122. package/lib/tsServer/requestQueue.d.ts.map +0 -1
  123. package/lib/tsServer/requestQueue.js +0 -74
  124. package/lib/tsServer/requestQueue.js.map +0 -1
  125. package/lib/tsServer/requests.d.ts +0 -73
  126. package/lib/tsServer/requests.d.ts.map +0 -1
  127. package/lib/tsServer/requests.js +0 -30
  128. package/lib/tsServer/requests.js.map +0 -1
  129. package/lib/tsServer/server.d.ts +0 -100
  130. package/lib/tsServer/server.d.ts.map +0 -1
  131. package/lib/tsServer/server.js +0 -216
  132. package/lib/tsServer/server.js.map +0 -1
  133. package/lib/tsServer/serverError.d.ts +0 -18
  134. package/lib/tsServer/serverError.d.ts.map +0 -1
  135. package/lib/tsServer/serverError.js +0 -53
  136. package/lib/tsServer/serverError.js.map +0 -1
  137. package/lib/tsServer/serverProcess.d.ts +0 -7
  138. package/lib/tsServer/serverProcess.d.ts.map +0 -1
  139. package/lib/tsServer/serverProcess.js +0 -244
  140. package/lib/tsServer/serverProcess.js.map +0 -1
  141. package/lib/tsServer/spawner.d.ts +0 -19
  142. package/lib/tsServer/spawner.d.ts.map +0 -1
  143. package/lib/tsServer/spawner.js +0 -130
  144. package/lib/tsServer/spawner.js.map +0 -1
  145. package/lib/tsServer/tracer.d.ts +0 -26
  146. package/lib/tsServer/tracer.d.ts.map +0 -1
  147. package/lib/tsServer/tracer.js +0 -80
  148. package/lib/tsServer/tracer.js.map +0 -1
  149. package/lib/tsServer/versionProvider.d.ts +0 -29
  150. package/lib/tsServer/versionProvider.d.ts.map +0 -1
  151. package/lib/tsServer/versionProvider.js +0 -161
  152. package/lib/tsServer/versionProvider.js.map +0 -1
  153. package/lib/tsp-client.d.ts +0 -53
  154. package/lib/tsp-client.d.ts.map +0 -1
  155. package/lib/tsp-client.js +0 -228
  156. package/lib/tsp-client.js.map +0 -1
  157. package/lib/tsp-client.spec.d.ts +0 -2
  158. package/lib/tsp-client.spec.d.ts.map +0 -1
  159. package/lib/tsp-client.spec.js +0 -113
  160. package/lib/tsp-client.spec.js.map +0 -1
  161. package/lib/utils/MarkdownString.d.ts +0 -15
  162. package/lib/utils/MarkdownString.d.ts.map +0 -1
  163. package/lib/utils/MarkdownString.js +0 -45
  164. package/lib/utils/MarkdownString.js.map +0 -1
  165. package/lib/utils/SnippetString.d.ts +0 -12
  166. package/lib/utils/SnippetString.d.ts.map +0 -1
  167. package/lib/utils/SnippetString.js +0 -66
  168. package/lib/utils/SnippetString.js.map +0 -1
  169. package/lib/utils/api.d.ts +0 -49
  170. package/lib/utils/api.d.ts.map +0 -1
  171. package/lib/utils/api.js +0 -77
  172. package/lib/utils/api.js.map +0 -1
  173. package/lib/utils/configuration.d.ts +0 -20
  174. package/lib/utils/configuration.d.ts.map +0 -1
  175. package/lib/utils/configuration.js +0 -47
  176. package/lib/utils/configuration.js.map +0 -1
  177. package/lib/utils/errorCodes.d.ts +0 -12
  178. package/lib/utils/errorCodes.d.ts.map +0 -1
  179. package/lib/utils/errorCodes.js +0 -16
  180. package/lib/utils/errorCodes.js.map +0 -1
  181. package/lib/utils/fixNames.d.ts +0 -14
  182. package/lib/utils/fixNames.d.ts.map +0 -1
  183. package/lib/utils/fixNames.js +0 -18
  184. package/lib/utils/fixNames.js.map +0 -1
  185. package/lib/utils/logger.d.ts +0 -65
  186. package/lib/utils/logger.d.ts.map +0 -1
  187. package/lib/utils/logger.js +0 -187
  188. package/lib/utils/logger.js.map +0 -1
  189. package/lib/utils/modules-resolver.d.ts +0 -2
  190. package/lib/utils/modules-resolver.d.ts.map +0 -1
  191. package/lib/utils/modules-resolver.js +0 -17
  192. package/lib/utils/modules-resolver.js.map +0 -1
  193. package/lib/utils/modules-resolver.spec.d.ts +0 -2
  194. package/lib/utils/modules-resolver.spec.d.ts.map +0 -1
  195. package/lib/utils/modules-resolver.spec.js +0 -18
  196. package/lib/utils/modules-resolver.spec.js.map +0 -1
  197. package/lib/utils/previewer.d.ts +0 -15
  198. package/lib/utils/previewer.d.ts.map +0 -1
  199. package/lib/utils/previewer.js +0 -185
  200. package/lib/utils/previewer.js.map +0 -1
  201. package/lib/utils/previewer.spec.d.ts +0 -2
  202. package/lib/utils/previewer.spec.d.ts.map +0 -1
  203. package/lib/utils/previewer.spec.js +0 -123
  204. package/lib/utils/previewer.spec.js.map +0 -1
  205. package/lib/utils/tsconfig.d.ts +0 -4
  206. package/lib/utils/tsconfig.d.ts.map +0 -1
  207. package/lib/utils/tsconfig.js +0 -41
  208. package/lib/utils/tsconfig.js.map +0 -1
  209. package/lib/utils/typeConverters.d.ts +0 -29
  210. package/lib/utils/typeConverters.d.ts.map +0 -1
  211. package/lib/utils/typeConverters.js +0 -118
  212. package/lib/utils/typeConverters.js.map +0 -1
  213. package/lib/utils/types.d.ts +0 -41
  214. package/lib/utils/types.d.ts.map +0 -1
  215. package/lib/utils/types.js +0 -55
  216. package/lib/utils/types.js.map +0 -1
  217. package/lib/utils.d.ts +0 -6
  218. package/lib/utils.d.ts.map +0 -1
  219. package/lib/utils.js +0 -17
  220. package/lib/utils.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typescript-language-server",
3
- "version": "3.0.1",
3
+ "version": "3.0.3",
4
4
  "description": "Language Server Protocol (LSP) implementation for TypeScript using tsserver",
5
5
  "author": "TypeFox and others",
6
6
  "license": "Apache-2.0",
@@ -16,18 +16,17 @@
16
16
  "lib"
17
17
  ],
18
18
  "bin": {
19
- "typescript-language-server": "./lib/cli.js"
19
+ "typescript-language-server": "./lib/cli.mjs"
20
20
  },
21
21
  "scripts": {
22
22
  "clean": "rimraf lib *.tsbuildinfo",
23
- "test": "cross-env CONSOLE_LOG_LEVEL=warning TS_NODE_PROJECT=./tsconfig.json mocha",
24
- "test:watch": "cross-env CONSOLE_LOG_LEVEL=warning TS_NODE_PROJECT=./tsconfig.json mocha --watch",
25
- "test:compiled": "cross-env CONSOLE_LOG_LEVEL=warning mocha \"./lib/**/*.spec.js\"",
23
+ "test": "cross-env NODE_OPTIONS=--experimental-vm-modules CONSOLE_LOG_LEVEL=warning jest",
24
+ "test:watch": "cross-env NODE_OPTIONS=--experimental-vm-modules CONSOLE_LOG_LEVEL=warning jest --watch",
26
25
  "lint": "eslint --ext \".js,.ts\" src",
27
26
  "fix": "eslint --ext \".js,.ts\" --fix src",
28
27
  "build": "concurrently -n compile,lint -c blue,green \"yarn compile\" \"yarn lint\"",
29
- "compile": "tsc -b",
30
- "watch": "tsc -b --watch --verbose",
28
+ "compile": "rimraf lib && rollup --config rollup.config.ts --configPlugin typescript",
29
+ "watch": "rimraf lib && rollup --config rollup.config.ts --configPlugin typescript --watch",
31
30
  "postversion": "git push --follow-tags",
32
31
  "prepare": "cd test-data/jsx && yarn"
33
32
  },
@@ -36,43 +35,50 @@
36
35
  ],
37
36
  "husky": {
38
37
  "hooks": {
39
- "pre-commit": "yarn lint && yarn build && yarn test:compiled",
38
+ "pre-commit": "yarn lint && yarn test && yarn build",
40
39
  "post-merge": "yarn"
41
40
  }
42
41
  },
43
- "dependencies": {
44
- "commander": "^9.4.1",
42
+ "devDependencies": {
43
+ "@babel/core": "^7.20.12",
44
+ "@babel/preset-env": "^7.20.2",
45
+ "@rollup/plugin-commonjs": "^24.0.1",
46
+ "@rollup/plugin-node-resolve": "^15.0.1",
47
+ "@rollup/plugin-terser": "^0.3.0",
48
+ "@rollup/plugin-typescript": "^11.0.0",
49
+ "@types/deepmerge": "^2.2.0",
50
+ "@types/fs-extra": "^11.0.1",
51
+ "@types/jest": "^29.2.6",
52
+ "@types/node": "^16.18.11",
53
+ "@types/semver": "^7.3.13",
54
+ "@types/which": "^2.0.1",
55
+ "@typescript-eslint/eslint-plugin": "^5.49.0",
56
+ "@typescript-eslint/parser": "^5.49.0",
57
+ "babel-jest": "^29.3.1",
58
+ "commander": "^10.0.0",
59
+ "concurrently": "^7.6.0",
60
+ "cross-env": "^7.0.3",
45
61
  "deepmerge": "^4.2.2",
62
+ "eslint": "^8.32.0",
63
+ "eslint-plugin-jest": "^27.2.1",
46
64
  "fs-extra": "^11.1.0",
65
+ "husky": "4.x",
66
+ "jest": "^29.3.1",
47
67
  "p-debounce": "^4.0.0",
48
68
  "pkg-up": "^4.0.0",
69
+ "rimraf": "^4.1.1",
70
+ "rollup": "^3.10.1",
49
71
  "semver": "^7.3.8",
72
+ "source-map-support": "^0.5.21",
50
73
  "tempy": "^3.0.0",
74
+ "ts-jest": "^29.0.5",
75
+ "ts-node": "^10.9.1",
76
+ "tslib": "^2.4.1",
77
+ "typescript": "^4.9.4",
51
78
  "vscode-languageserver": "^8.0.2",
52
79
  "vscode-languageserver-protocol": "^3.17.2",
53
80
  "vscode-languageserver-textdocument": "1.0.8",
54
81
  "vscode-uri": "^3.0.7",
55
82
  "which": "^3.0.0"
56
- },
57
- "devDependencies": {
58
- "@types/chai": "^4.3.4",
59
- "@types/deepmerge": "^2.2.0",
60
- "@types/fs-extra": "^9.0.13",
61
- "@types/mocha": "^10.0.1",
62
- "@types/node": "^16.18.11",
63
- "@types/semver": "^7.3.13",
64
- "@types/which": "^2.0.1",
65
- "@typescript-eslint/eslint-plugin": "^5.47.1",
66
- "@typescript-eslint/parser": "^5.47.1",
67
- "chai": "^4.3.7",
68
- "concurrently": "^7.6.0",
69
- "cross-env": "^7.0.3",
70
- "eslint": "^8.30.0",
71
- "husky": "4.x",
72
- "mocha": "^10.2.0",
73
- "rimraf": "^3.0.2",
74
- "source-map-support": "^0.5.21",
75
- "ts-node": "^10.9.1",
76
- "typescript": "^4.9.4"
77
83
  }
78
84
  }
package/lib/cli.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
package/lib/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/lib/cli.js DELETED
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env node
2
- /*
3
- * Copyright (C) 2017, 2018 TypeFox and others.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
7
- */
8
- import { readFileSync } from 'node:fs';
9
- import { Command } from 'commander';
10
- import lsp from 'vscode-languageserver';
11
- import { createLspConnection } from './lsp-connection.js';
12
- import { TsServerLogLevel } from './utils/configuration.js';
13
- const DEFAULT_LOG_LEVEL = lsp.MessageType.Info;
14
- const { version } = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), { encoding: 'utf8' }));
15
- const program = new Command('typescript-language-server')
16
- .version(version)
17
- .requiredOption('--stdio', 'use stdio')
18
- .option('--log-level <logLevel>', 'A number indicating the log level (4 = log, 3 = info, 2 = warn, 1 = error). Defaults to `2`.')
19
- .option('--tsserver-log-verbosity <tsserverLogVerbosity>', '[deprecated] Specify a tsserver log verbosity (terse, normal, verbose). Defaults to `normal`.' +
20
- ' example: --tsserver-log-verbosity verbose')
21
- .option('--tsserver-path <path>', '[deprecated] Specify path to tsserver.js or the lib directory. example: --tsserver-path=/Users/me/typescript/lib/tsserver.js')
22
- .parse(process.argv);
23
- const options = program.opts();
24
- let logLevel = DEFAULT_LOG_LEVEL;
25
- if (options.logLevel) {
26
- logLevel = parseInt(options.logLevel, 10);
27
- if (logLevel && (logLevel < 1 || logLevel > 4)) {
28
- console.error(`Invalid '--log-level ${logLevel}'. Falling back to 'info' level.`);
29
- logLevel = DEFAULT_LOG_LEVEL;
30
- }
31
- }
32
- createLspConnection({
33
- cmdLineTsserverPath: options.tsserverPath,
34
- cmdLineTsserverLogVerbosity: TsServerLogLevel.fromString(options.tsserverLogVerbosity),
35
- showMessageLevel: logLevel,
36
- }).listen();
37
- //# sourceMappingURL=cli.js.map
package/lib/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,uBAAuB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,iBAAiB,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAEhH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,4BAA4B,CAAC;KACpD,OAAO,CAAC,OAAO,CAAC;KAChB,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC;KACtC,MAAM,CAAC,wBAAwB,EAAE,8FAA8F,CAAC;KAChI,MAAM,CAAC,iDAAiD,EAAE,+FAA+F;IACxJ,4CAA4C,CAAC;KAC9C,MAAM,CAAC,wBAAwB,EAAE,8HAA8H,CAAC;KAChK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAE/B,IAAI,QAAQ,GAAG,iBAAiB,CAAC;AACjC,IAAI,OAAO,CAAC,QAAQ,EAAE;IAClB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE;QAC5C,OAAO,CAAC,KAAK,CAAC,wBAAwB,QAAQ,kCAAkC,CAAC,CAAC;QAClF,QAAQ,GAAG,iBAAiB,CAAC;KAChC;CACJ;AAED,mBAAmB,CAAC;IAChB,mBAAmB,EAAE,OAAO,CAAC,YAAsB;IACnD,2BAA2B,EAAE,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACtF,gBAAgB,EAAE,QAA2B;CAChD,CAAC,CAAC,MAAM,EAAE,CAAC"}
package/lib/commands.d.ts DELETED
@@ -1,13 +0,0 @@
1
- export declare const Commands: {
2
- APPLY_WORKSPACE_EDIT: string;
3
- APPLY_CODE_ACTION: string;
4
- APPLY_REFACTORING: string;
5
- CONFIGURE_PLUGIN: string;
6
- ORGANIZE_IMPORTS: string;
7
- APPLY_RENAME_FILE: string;
8
- APPLY_COMPLETION_CODE_ACTION: string;
9
- /** Commands below should be implemented by the client */
10
- SELECT_REFACTORING: string;
11
- SOURCE_DEFINITION: string;
12
- };
13
- //# sourceMappingURL=commands.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,QAAQ;;;;;;;;IAQjB,yDAAyD;;;CAG5D,CAAC"}
package/lib/commands.js DELETED
@@ -1,20 +0,0 @@
1
- /*
2
- * Copyright (C) 2018 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 { SourceDefinitionCommand } from './features/source-definition.js';
8
- export const Commands = {
9
- APPLY_WORKSPACE_EDIT: '_typescript.applyWorkspaceEdit',
10
- APPLY_CODE_ACTION: '_typescript.applyCodeAction',
11
- APPLY_REFACTORING: '_typescript.applyRefactoring',
12
- CONFIGURE_PLUGIN: '_typescript.configurePlugin',
13
- ORGANIZE_IMPORTS: '_typescript.organizeImports',
14
- APPLY_RENAME_FILE: '_typescript.applyRenameFile',
15
- APPLY_COMPLETION_CODE_ACTION: '_typescript.applyCompletionCodeAction',
16
- /** Commands below should be implemented by the client */
17
- SELECT_REFACTORING: '_typescript.selectRefactoring',
18
- SOURCE_DEFINITION: SourceDefinitionCommand.id,
19
- };
20
- //# sourceMappingURL=commands.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACpB,oBAAoB,EAAE,gCAAgC;IACtD,iBAAiB,EAAE,6BAA6B;IAChD,iBAAiB,EAAE,8BAA8B;IACjD,gBAAgB,EAAE,6BAA6B;IAC/C,gBAAgB,EAAE,6BAA6B;IAC/C,iBAAiB,EAAE,6BAA6B;IAChD,4BAA4B,EAAE,uCAAuC;IACrE,yDAAyD;IACzD,kBAAkB,EAAE,+BAA+B;IACnD,iBAAiB,EAAE,uBAAuB,CAAC,EAAE;CAChD,CAAC"}
@@ -1,10 +0,0 @@
1
- import * as lsp from 'vscode-languageserver';
2
- import { LspDocument } from './document.js';
3
- import { TspClient } from './tsp-client.js';
4
- import { tsp, SupportedFeatures } from './ts-protocol.js';
5
- import { IFilePathToResourceConverter } from './utils/previewer.js';
6
- import type { WorkspaceConfigurationCompletionOptions } from './configuration-manager.js';
7
- export declare function asCompletionItem(entry: tsp.CompletionEntry, optionalReplacementSpan: tsp.TextSpan | undefined, file: string, position: lsp.Position, document: LspDocument, filePathConverter: IFilePathToResourceConverter, options: WorkspaceConfigurationCompletionOptions, features: SupportedFeatures): lsp.CompletionItem | null;
8
- export declare function asResolvedCompletionItem(item: lsp.CompletionItem, details: tsp.CompletionEntryDetails, document: LspDocument | undefined, client: TspClient, filePathConverter: IFilePathToResourceConverter, options: WorkspaceConfigurationCompletionOptions, features: SupportedFeatures): Promise<lsp.CompletionItem>;
9
- export declare function getCompletionTriggerCharacter(character: string | undefined): tsp.CompletionsTriggerCharacter | undefined;
10
- //# sourceMappingURL=completion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAS,GAAG,EAAiB,iBAAiB,EAA2B,MAAM,kBAAkB,CAAC;AAEzG,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAGpE,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,4BAA4B,CAAC;AAU1F,wBAAgB,gBAAgB,CAC5B,KAAK,EAAE,GAAG,CAAC,eAAe,EAC1B,uBAAuB,EAAE,GAAG,CAAC,QAAQ,GAAG,SAAS,EACjD,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACpC,QAAQ,EAAE,WAAW,EACrB,iBAAiB,EAAE,4BAA4B,EAC/C,OAAO,EAAE,uCAAuC,EAChD,QAAQ,EAAE,iBAAiB,GAC5B,GAAG,CAAC,cAAc,GAAG,IAAI,CA+E3B;AA0GD,wBAAsB,wBAAwB,CAC1C,IAAI,EAAE,GAAG,CAAC,cAAc,EACxB,OAAO,EAAE,GAAG,CAAC,sBAAsB,EACnC,QAAQ,EAAE,WAAW,GAAG,SAAS,EACjC,MAAM,EAAE,SAAS,EACjB,iBAAiB,EAAE,4BAA4B,EAC/C,OAAO,EAAE,uCAAuC,EAChD,QAAQ,EAAE,iBAAiB,GAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAoB7B;AAsLD,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,GAAG,CAAC,2BAA2B,GAAG,SAAS,CAexH"}
package/lib/completion.js DELETED
@@ -1,388 +0,0 @@
1
- /*
2
- * Copyright (C) 2018 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 lsp from 'vscode-languageserver';
8
- import { toTextEdit, normalizePath } from './protocol-translation.js';
9
- import { Commands } from './commands.js';
10
- import { tslib, tsp, KindModifiers, toSymbolDisplayPartKind } from './ts-protocol.js';
11
- import * as Previewer from './utils/previewer.js';
12
- import SnippetString from './utils/SnippetString.js';
13
- import { Range, Position } from './utils/typeConverters.js';
14
- var ScriptElementKind = tslib.ScriptElementKind;
15
- var SymbolDisplayPartKind = tslib.SymbolDisplayPartKind;
16
- export function asCompletionItem(entry, optionalReplacementSpan, file, position, document, filePathConverter, options, features) {
17
- const item = {
18
- label: entry.name,
19
- ...features.completionLabelDetails ? { labelDetails: entry.labelDetails } : {},
20
- kind: asCompletionItemKind(entry.kind),
21
- sortText: entry.sortText,
22
- commitCharacters: asCommitCharacters(entry.kind),
23
- preselect: entry.isRecommended,
24
- data: {
25
- file,
26
- line: position.line + 1,
27
- offset: position.character + 1,
28
- entryNames: [
29
- entry.source || entry.data ? {
30
- name: entry.name,
31
- source: entry.source,
32
- data: entry.data,
33
- } : entry.name,
34
- ],
35
- },
36
- };
37
- if (entry.source && entry.hasAction) {
38
- // De-prioritze auto-imports
39
- // https://github.com/Microsoft/vscode/issues/40311
40
- item.sortText = `\uffff${entry.sortText}`;
41
- }
42
- const { isSnippet, replacementSpan, sourceDisplay } = entry;
43
- if (isSnippet && !features.completionSnippets) {
44
- return null;
45
- }
46
- if (features.completionSnippets && (isSnippet || canCreateSnippetOfFunctionCall(item.kind, options))) {
47
- // Import statements, Functions and Methods can result in a snippet completion when resolved.
48
- item.insertTextFormat = lsp.InsertTextFormat.Snippet;
49
- }
50
- if (sourceDisplay) {
51
- item.detail = Previewer.plainWithLinks(sourceDisplay, filePathConverter);
52
- }
53
- let { insertText } = entry;
54
- if (entry.kindModifiers) {
55
- const kindModifiers = new Set(entry.kindModifiers.split(/,|\s+/g));
56
- if (kindModifiers.has(KindModifiers.optional)) {
57
- if (!insertText) {
58
- insertText = item.label;
59
- }
60
- if (!item.filterText) {
61
- item.filterText = item.label;
62
- }
63
- item.label += '?';
64
- }
65
- if (kindModifiers.has(KindModifiers.deprecated)) {
66
- item.tags = [lsp.CompletionItemTag.Deprecated];
67
- }
68
- if (entry.kind === ScriptElementKind.scriptElement) {
69
- for (const extModifier of KindModifiers.fileExtensionKindModifiers) {
70
- if (kindModifiers.has(extModifier)) {
71
- if (entry.name.toLowerCase().endsWith(extModifier)) {
72
- item.detail = entry.name;
73
- }
74
- else {
75
- item.detail = entry.name + extModifier;
76
- }
77
- break;
78
- }
79
- }
80
- }
81
- }
82
- const range = getRangeFromReplacementSpan(replacementSpan, optionalReplacementSpan, position, document, features);
83
- if (range) {
84
- item.textEdit = range.insert
85
- ? lsp.InsertReplaceEdit.create(insertText || item.label, range.insert, range.replace)
86
- : lsp.TextEdit.replace(range.replace, insertText || item.label);
87
- }
88
- else {
89
- item.insertText = insertText;
90
- }
91
- return item;
92
- }
93
- function getRangeFromReplacementSpan(replacementSpan, optionalReplacementSpan, position, document, features) {
94
- if (replacementSpan) {
95
- // If TS provides an explicit replacement span with an entry, we should use it and not provide an insert.
96
- return {
97
- replace: ensureRangeIsOnSingleLine(Range.fromTextSpan(replacementSpan), document),
98
- };
99
- }
100
- if (features.completionInsertReplaceSupport && optionalReplacementSpan) {
101
- const range = ensureRangeIsOnSingleLine(Range.fromTextSpan(optionalReplacementSpan), document);
102
- return {
103
- insert: lsp.Range.create(range.start, position),
104
- replace: ensureRangeIsOnSingleLine(range, document),
105
- };
106
- }
107
- }
108
- function ensureRangeIsOnSingleLine(range, document) {
109
- if (range.start.line !== range.end.line) {
110
- return lsp.Range.create(range.start, document.getLineEnd(range.start.line));
111
- }
112
- return range;
113
- }
114
- function asCompletionItemKind(kind) {
115
- switch (kind) {
116
- case ScriptElementKind.primitiveType:
117
- case ScriptElementKind.keyword:
118
- return lsp.CompletionItemKind.Keyword;
119
- case ScriptElementKind.constElement:
120
- return lsp.CompletionItemKind.Constant;
121
- case ScriptElementKind.letElement:
122
- case ScriptElementKind.variableElement:
123
- case ScriptElementKind.localVariableElement:
124
- case ScriptElementKind.alias:
125
- return lsp.CompletionItemKind.Variable;
126
- case ScriptElementKind.memberVariableElement:
127
- case ScriptElementKind.memberGetAccessorElement:
128
- case ScriptElementKind.memberSetAccessorElement:
129
- return lsp.CompletionItemKind.Field;
130
- case ScriptElementKind.functionElement:
131
- return lsp.CompletionItemKind.Function;
132
- case ScriptElementKind.memberFunctionElement:
133
- case ScriptElementKind.constructSignatureElement:
134
- case ScriptElementKind.callSignatureElement:
135
- case ScriptElementKind.indexSignatureElement:
136
- return lsp.CompletionItemKind.Method;
137
- case ScriptElementKind.enumElement:
138
- return lsp.CompletionItemKind.Enum;
139
- case ScriptElementKind.moduleElement:
140
- case ScriptElementKind.externalModuleName:
141
- return lsp.CompletionItemKind.Module;
142
- case ScriptElementKind.classElement:
143
- case ScriptElementKind.typeElement:
144
- return lsp.CompletionItemKind.Class;
145
- case ScriptElementKind.interfaceElement:
146
- return lsp.CompletionItemKind.Interface;
147
- case ScriptElementKind.warning:
148
- case ScriptElementKind.scriptElement:
149
- return lsp.CompletionItemKind.File;
150
- case ScriptElementKind.directory:
151
- return lsp.CompletionItemKind.Folder;
152
- case ScriptElementKind.string:
153
- return lsp.CompletionItemKind.Constant;
154
- }
155
- return lsp.CompletionItemKind.Property;
156
- }
157
- function asCommitCharacters(kind) {
158
- const commitCharacters = [];
159
- switch (kind) {
160
- case ScriptElementKind.memberGetAccessorElement:
161
- case ScriptElementKind.memberSetAccessorElement:
162
- case ScriptElementKind.constructSignatureElement:
163
- case ScriptElementKind.callSignatureElement:
164
- case ScriptElementKind.indexSignatureElement:
165
- case ScriptElementKind.enumElement:
166
- case ScriptElementKind.interfaceElement:
167
- commitCharacters.push('.');
168
- break;
169
- case ScriptElementKind.moduleElement:
170
- case ScriptElementKind.alias:
171
- case ScriptElementKind.constElement:
172
- case ScriptElementKind.letElement:
173
- case ScriptElementKind.variableElement:
174
- case ScriptElementKind.localVariableElement:
175
- case ScriptElementKind.memberVariableElement:
176
- case ScriptElementKind.classElement:
177
- case ScriptElementKind.functionElement:
178
- case ScriptElementKind.memberFunctionElement:
179
- commitCharacters.push('.', ',');
180
- commitCharacters.push('(');
181
- break;
182
- }
183
- return commitCharacters.length === 0 ? undefined : commitCharacters;
184
- }
185
- export async function asResolvedCompletionItem(item, details, document, client, filePathConverter, options, features) {
186
- item.detail = asDetail(details, filePathConverter);
187
- const { documentation, tags } = details;
188
- item.documentation = Previewer.markdownDocumentation(documentation, tags, filePathConverter);
189
- const filepath = normalizePath(item.data.file);
190
- if (details.codeActions?.length) {
191
- item.additionalTextEdits = asAdditionalTextEdits(details.codeActions, filepath);
192
- item.command = asCommand(details.codeActions, item.data.file);
193
- }
194
- if (document && features.completionSnippets && canCreateSnippetOfFunctionCall(item.kind, options)) {
195
- const { line, offset } = item.data;
196
- const position = Position.fromLocation({ line, offset });
197
- const shouldCompleteFunction = await isValidFunctionCompletionContext(filepath, position, client, document);
198
- if (shouldCompleteFunction) {
199
- createSnippetOfFunctionCall(item, details);
200
- }
201
- }
202
- return item;
203
- }
204
- async function isValidFunctionCompletionContext(filepath, position, client, document) {
205
- // Workaround for https://github.com/Microsoft/TypeScript/issues/12677
206
- // Don't complete function calls inside of destructive assigments or imports
207
- try {
208
- const args = Position.toFileLocationRequestArgs(filepath, position);
209
- const response = await client.request(tsp.CommandTypes.Quickinfo, args);
210
- if (response.type === 'response' && response.body) {
211
- switch (response.body.kind) {
212
- case 'var':
213
- case 'let':
214
- case 'const':
215
- case 'alias':
216
- return false;
217
- }
218
- }
219
- }
220
- catch {
221
- // Noop
222
- }
223
- // Don't complete function call if there is already something that looks like a function call
224
- // https://github.com/microsoft/vscode/issues/18131
225
- const after = document.getLine(position.line).slice(position.character);
226
- return after.match(/^[a-z_$0-9]*\s*\(/gi) === null;
227
- }
228
- function canCreateSnippetOfFunctionCall(kind, options) {
229
- return options.completeFunctionCalls === true && (kind === lsp.CompletionItemKind.Function || kind === lsp.CompletionItemKind.Method);
230
- }
231
- function createSnippetOfFunctionCall(item, detail) {
232
- const { displayParts } = detail;
233
- const parameterListParts = getParameterListParts(displayParts);
234
- const snippet = new SnippetString();
235
- snippet.appendText(`${item.insertText || item.label}(`);
236
- appendJoinedPlaceholders(snippet, parameterListParts.parts, ', ');
237
- if (parameterListParts.hasOptionalParameters) {
238
- snippet.appendTabstop();
239
- }
240
- snippet.appendText(')');
241
- snippet.appendTabstop(0);
242
- item.insertText = snippet.value;
243
- item.insertTextFormat = lsp.InsertTextFormat.Snippet;
244
- if (item.textEdit) {
245
- item.textEdit.newText = snippet.value;
246
- }
247
- }
248
- function getParameterListParts(displayParts) {
249
- const parts = [];
250
- let isInMethod = false;
251
- let hasOptionalParameters = false;
252
- let parenCount = 0;
253
- let braceCount = 0;
254
- outer: for (let i = 0; i < displayParts.length; ++i) {
255
- const part = displayParts[i];
256
- switch (toSymbolDisplayPartKind(part.kind)) {
257
- case SymbolDisplayPartKind.methodName:
258
- case SymbolDisplayPartKind.functionName:
259
- case SymbolDisplayPartKind.text:
260
- case SymbolDisplayPartKind.propertyName:
261
- if (parenCount === 0 && braceCount === 0) {
262
- isInMethod = true;
263
- }
264
- break;
265
- case SymbolDisplayPartKind.parameterName:
266
- if (parenCount === 1 && braceCount === 0 && isInMethod) {
267
- // Only take top level paren names
268
- const next = displayParts[i + 1];
269
- // Skip optional parameters
270
- const nameIsFollowedByOptionalIndicator = next && next.text === '?';
271
- // Skip this parameter
272
- const nameIsThis = part.text === 'this';
273
- if (!nameIsFollowedByOptionalIndicator && !nameIsThis) {
274
- parts.push(part);
275
- }
276
- hasOptionalParameters = hasOptionalParameters || nameIsFollowedByOptionalIndicator;
277
- }
278
- break;
279
- case SymbolDisplayPartKind.punctuation:
280
- if (part.text === '(') {
281
- ++parenCount;
282
- }
283
- else if (part.text === ')') {
284
- --parenCount;
285
- if (parenCount <= 0 && isInMethod) {
286
- break outer;
287
- }
288
- }
289
- else if (part.text === '...' && parenCount === 1) {
290
- // Found rest parmeter. Do not fill in any further arguments
291
- hasOptionalParameters = true;
292
- break outer;
293
- }
294
- else if (part.text === '{') {
295
- ++braceCount;
296
- }
297
- else if (part.text === '}') {
298
- --braceCount;
299
- }
300
- break;
301
- }
302
- }
303
- return { hasOptionalParameters, parts };
304
- }
305
- function appendJoinedPlaceholders(snippet, parts, joiner) {
306
- for (let i = 0; i < parts.length; ++i) {
307
- const paramterPart = parts[i];
308
- snippet.appendPlaceholder(paramterPart.text);
309
- if (i !== parts.length - 1) {
310
- snippet.appendText(joiner);
311
- }
312
- }
313
- }
314
- function asAdditionalTextEdits(codeActions, filepath) {
315
- // Try to extract out the additionalTextEdits for the current file.
316
- const additionalTextEdits = [];
317
- for (const tsAction of codeActions) {
318
- // Apply all edits in the current file using `additionalTextEdits`
319
- if (tsAction.changes) {
320
- for (const change of tsAction.changes) {
321
- if (change.fileName === filepath) {
322
- for (const textChange of change.textChanges) {
323
- additionalTextEdits.push(toTextEdit(textChange));
324
- }
325
- }
326
- }
327
- }
328
- }
329
- return additionalTextEdits.length ? additionalTextEdits : undefined;
330
- }
331
- function asCommand(codeActions, filepath) {
332
- let hasRemainingCommandsOrEdits = false;
333
- for (const tsAction of codeActions) {
334
- if (tsAction.commands) {
335
- hasRemainingCommandsOrEdits = true;
336
- break;
337
- }
338
- if (tsAction.changes) {
339
- for (const change of tsAction.changes) {
340
- if (change.fileName !== filepath) {
341
- hasRemainingCommandsOrEdits = true;
342
- break;
343
- }
344
- }
345
- }
346
- }
347
- if (hasRemainingCommandsOrEdits) {
348
- // Create command that applies all edits not in the current file.
349
- return {
350
- title: '',
351
- command: Commands.APPLY_COMPLETION_CODE_ACTION,
352
- arguments: [filepath, codeActions.map(codeAction => ({
353
- commands: codeAction.commands,
354
- description: codeAction.description,
355
- changes: codeAction.changes.filter(x => x.fileName !== filepath),
356
- }))],
357
- };
358
- }
359
- }
360
- function asDetail({ displayParts, sourceDisplay, source: deprecatedSource }, filePathConverter) {
361
- const result = [];
362
- const source = sourceDisplay || deprecatedSource;
363
- if (source) {
364
- result.push(`Auto import from '${Previewer.plainWithLinks(source, filePathConverter)}'`);
365
- }
366
- const detail = Previewer.plainWithLinks(displayParts, filePathConverter);
367
- if (detail) {
368
- result.push(detail);
369
- }
370
- return result.join('\n');
371
- }
372
- export function getCompletionTriggerCharacter(character) {
373
- switch (character) {
374
- case '@':
375
- case '#':
376
- case ' ':
377
- case '.':
378
- case '"':
379
- case '\'':
380
- case '`':
381
- case '/':
382
- case '<':
383
- return character;
384
- default:
385
- return undefined;
386
- }
387
- }
388
- //# sourceMappingURL=completion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"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"}