@teambit/ts-server 0.0.60 → 0.0.61

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.
@@ -1,252 +1,263 @@
1
1
  "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ProcessBasedTsServer = void 0;
7
+ function fs() {
8
+ const data = _interopRequireWildcard(require("fs"));
9
+ fs = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function path() {
15
+ const data = _interopRequireWildcard(require("path"));
16
+ path = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function cp() {
22
+ const data = _interopRequireWildcard(require("child_process"));
23
+ cp = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function readline() {
29
+ const data = _interopRequireWildcard(require("readline"));
30
+ readline = function () {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ function decoder() {
36
+ const data = _interopRequireWildcard(require("string_decoder"));
37
+ decoder = function () {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
42
+ function _tempy() {
43
+ const data = _interopRequireDefault(require("tempy"));
44
+ _tempy = function () {
45
+ return data;
46
+ };
47
+ return data;
48
+ }
49
+ function _utils() {
50
+ const data = require("./utils");
51
+ _utils = function () {
52
+ return data;
53
+ };
54
+ return data;
55
+ }
56
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
57
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
58
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
2
59
  /**
3
60
  * part of this file was copied over from https://github.com/typescript-language-server/typescript-language-server/blob/master/src/tsp-client.ts
4
61
  */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
- return new (P || (P = Promise))(function (resolve, reject) {
31
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
- step((generator = generator.apply(thisArg, _arguments || [])).next());
35
- });
36
- };
37
- var __importDefault = (this && this.__importDefault) || function (mod) {
38
- return (mod && mod.__esModule) ? mod : { "default": mod };
39
- };
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.ProcessBasedTsServer = void 0;
62
+
42
63
  /*
43
64
  * Copyright (C) 2017, 2018 TypeFox and others.
44
65
  *
45
66
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
46
67
  * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
47
68
  */
48
- const fs = __importStar(require("fs"));
49
- const path = __importStar(require("path"));
50
- const cp = __importStar(require("child_process"));
51
- const readline = __importStar(require("readline"));
52
- const decoder = __importStar(require("string_decoder"));
53
- const tempy_1 = __importDefault(require("tempy"));
54
- const tsp_command_types_1 = require("./tsp-command-types");
55
- const utils_1 = require("./utils");
69
+
56
70
  class ProcessBasedTsServer {
57
- constructor(options, tsServerArgs = {}) {
58
- this.options = options;
59
- this.tsServerArgs = tsServerArgs;
60
- this.seq = 0;
61
- this.deferreds = {};
62
- this.logger = options.logger;
63
- }
64
- restart() {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- this.kill();
67
- yield this.start();
68
- });
69
- }
70
- start() {
71
- return new Promise((resolve, reject) => {
72
- var _a;
73
- if (this.tsServerProcess) {
74
- reject(new Error('server already started'));
75
- return;
76
- }
77
- const { tsserverPath } = this.options;
78
- const { logFile, logVerbosity, maxTsServerMemory, globalPlugins, pluginProbeLocations } = this.tsServerArgs;
79
- const args = [];
80
- if (logFile) {
81
- args.push('--logFile', logFile);
82
- }
83
- if (logVerbosity) {
84
- args.push('--logVerbosity', logVerbosity);
85
- }
86
- if (globalPlugins && globalPlugins.length) {
87
- args.push('--globalPlugins', globalPlugins.join(','));
88
- }
89
- if (pluginProbeLocations && pluginProbeLocations.length) {
90
- args.push('--pluginProbeLocations', pluginProbeLocations.join(','));
91
- }
92
- this.cancellationPipeName = tempy_1.default.file({ name: 'tscancellation' });
93
- args.push('--cancellationPipeName', `${this.cancellationPipeName}*`);
94
- this.logger.info(`Starting tsserver : '${tsserverPath} ${args.join(' ')}'`);
95
- const tsserverPathIsModule = path.extname(tsserverPath) === '.js';
96
- const options = {
97
- silent: true,
98
- execArgv: maxTsServerMemory ? [`--max-old-space-size=${maxTsServerMemory}`] : [],
99
- };
100
- this.tsServerProcess = tsserverPathIsModule ? cp.fork(tsserverPath, args, options) : cp.spawn(tsserverPath, args);
101
- this.readlineInterface = readline.createInterface(this.tsServerProcess.stdout, this.tsServerProcess.stdin, undefined);
102
- process.on('exit', () => {
103
- this.kill();
104
- reject(new Error('TSServer was killed'));
105
- });
106
- this.readlineInterface.on('line', (line) => {
107
- this.processMessage(line, resolve, reject);
108
- });
109
- const dec = new decoder.StringDecoder('utf-8');
110
- (_a = this.tsServerProcess.stderr) === null || _a === void 0 ? void 0 : _a.addListener('data', (data) => {
111
- const stringMsg = typeof data === 'string' ? data : dec.write(data);
112
- this.logger.error(stringMsg);
113
- reject(new Error(stringMsg));
114
- });
115
- });
116
- }
117
- notify(command, args) {
118
- return __awaiter(this, void 0, void 0, function* () {
119
- yield this.ensureServerIsRunning();
120
- this.sendMessage(command, true, args);
121
- });
122
- }
123
- request(command, args, token) {
124
- return __awaiter(this, void 0, void 0, function* () {
125
- yield this.ensureServerIsRunning();
126
- this.sendMessage(command, false, args);
127
- const seq = this.seq;
128
- const deferred = new utils_1.Deferred();
129
- this.deferreds[seq] = deferred;
130
- const request = deferred.promise;
131
- let onCancelled;
132
- if (token) {
133
- onCancelled = token.onCancellationRequested(() => {
134
- onCancelled.dispose();
135
- if (this.cancellationPipeName) {
136
- const requestCancellationPipeName = `${this.cancellationPipeName}${seq}`;
137
- fs.writeFile(requestCancellationPipeName, '', (err) => {
138
- if (!err) {
139
- // eslint-disable-next-line
140
- request.then(() => fs.unlink(requestCancellationPipeName, () => {
141
- /* no-op */
142
- }));
143
- }
144
- });
145
- }
146
- });
147
- }
148
- try {
149
- const result = yield request;
150
- onCancelled === null || onCancelled === void 0 ? void 0 : onCancelled.dispose();
151
- return result;
152
- }
153
- catch (error) {
154
- this.logger.error(`Error in request: ${error}`);
155
- throw error;
71
+ seq = 0;
72
+ deferreds = {};
73
+ constructor(options, tsServerArgs = {}) {
74
+ this.options = options;
75
+ this.tsServerArgs = tsServerArgs;
76
+ this.logger = options.logger;
77
+ }
78
+ async restart() {
79
+ this.kill();
80
+ await this.start();
81
+ }
82
+ start() {
83
+ return new Promise((resolve, reject) => {
84
+ if (this.tsServerProcess) {
85
+ reject(new Error('server already started'));
86
+ return;
87
+ }
88
+ const {
89
+ tsserverPath
90
+ } = this.options;
91
+ const {
92
+ logFile,
93
+ logVerbosity,
94
+ maxTsServerMemory,
95
+ globalPlugins,
96
+ pluginProbeLocations
97
+ } = this.tsServerArgs;
98
+ const args = [];
99
+ if (logFile) {
100
+ args.push('--logFile', logFile);
101
+ }
102
+ if (logVerbosity) {
103
+ args.push('--logVerbosity', logVerbosity);
104
+ }
105
+ if (globalPlugins && globalPlugins.length) {
106
+ args.push('--globalPlugins', globalPlugins.join(','));
107
+ }
108
+ if (pluginProbeLocations && pluginProbeLocations.length) {
109
+ args.push('--pluginProbeLocations', pluginProbeLocations.join(','));
110
+ }
111
+ this.cancellationPipeName = _tempy().default.file({
112
+ name: 'tscancellation'
113
+ });
114
+ args.push('--cancellationPipeName', `${this.cancellationPipeName}*`);
115
+ this.logger.info(`Starting tsserver : '${tsserverPath} ${args.join(' ')}'`);
116
+ const tsserverPathIsModule = path().extname(tsserverPath) === '.js';
117
+ const options = {
118
+ silent: true,
119
+ execArgv: maxTsServerMemory ? [`--max-old-space-size=${maxTsServerMemory}`] : []
120
+ };
121
+ this.tsServerProcess = tsserverPathIsModule ? cp().fork(tsserverPath, args, options) : cp().spawn(tsserverPath, args);
122
+ this.readlineInterface = readline().createInterface(this.tsServerProcess.stdout, this.tsServerProcess.stdin, undefined);
123
+ process.on('exit', () => {
124
+ this.kill();
125
+ reject(new Error('TSServer was killed'));
126
+ });
127
+ this.readlineInterface.on('line', line => {
128
+ this.processMessage(line, resolve, reject);
129
+ });
130
+ const dec = new (decoder().StringDecoder)('utf-8');
131
+ this.tsServerProcess.stderr?.addListener('data', data => {
132
+ const stringMsg = typeof data === 'string' ? data : dec.write(data);
133
+ this.logger.error(stringMsg);
134
+ reject(new Error(stringMsg));
135
+ });
136
+ });
137
+ }
138
+ async notify(command, args) {
139
+ await this.ensureServerIsRunning();
140
+ this.sendMessage(command, true, args);
141
+ }
142
+ async request(command, args, token) {
143
+ await this.ensureServerIsRunning();
144
+ this.sendMessage(command, false, args);
145
+ const seq = this.seq;
146
+ const deferred = new (_utils().Deferred)();
147
+ this.deferreds[seq] = deferred;
148
+ const request = deferred.promise;
149
+ let onCancelled;
150
+ if (token) {
151
+ onCancelled = token.onCancellationRequested(() => {
152
+ onCancelled.dispose();
153
+ if (this.cancellationPipeName) {
154
+ const requestCancellationPipeName = `${this.cancellationPipeName}${seq}`;
155
+ fs().writeFile(requestCancellationPipeName, '', err => {
156
+ if (!err) {
157
+ // eslint-disable-next-line
158
+ request.then(() => fs().unlink(requestCancellationPipeName, () => {
159
+ /* no-op */
160
+ }));
156
161
  }
157
- });
162
+ });
163
+ }
164
+ });
158
165
  }
159
- kill() {
160
- var _a, _b, _c, _d;
161
- (_a = this.tsServerProcess) === null || _a === void 0 ? void 0 : _a.kill();
162
- (_c = (_b = this.tsServerProcess) === null || _b === void 0 ? void 0 : _b.stdin) === null || _c === void 0 ? void 0 : _c.destroy();
163
- (_d = this.readlineInterface) === null || _d === void 0 ? void 0 : _d.close();
164
- this.tsServerProcess = null;
165
- this.readlineInterface = null;
166
+ try {
167
+ const result = await request;
168
+ onCancelled?.dispose();
169
+ return result;
170
+ } catch (error) {
171
+ this.logger.error(`Error in request: ${error}`);
172
+ throw error;
166
173
  }
167
- log(msg, obj = {}) {
168
- msg = `[tsserver] ${msg}`;
169
- if (this.options.logToConsole) {
170
- this.logger.console(`${msg} ${JSON.stringify(obj, undefined, 4)}`);
171
- }
172
- else {
173
- this.logger.trace(msg, obj);
174
- }
174
+ }
175
+ kill() {
176
+ this.tsServerProcess?.kill();
177
+ this.tsServerProcess?.stdin?.destroy();
178
+ this.readlineInterface?.close();
179
+ this.tsServerProcess = null;
180
+ this.readlineInterface = null;
181
+ }
182
+ log(msg, obj = {}) {
183
+ msg = `[tsserver] ${msg}`;
184
+ if (this.options.logToConsole) {
185
+ this.logger.console(`${msg} ${JSON.stringify(obj, undefined, 4)}`);
186
+ } else {
187
+ this.logger.trace(msg, obj);
175
188
  }
176
- sendMessage(command, notification, args) {
177
- var _a, _b;
178
- this.seq += 1;
179
- const request = {
180
- command,
181
- seq: this.seq,
182
- type: 'request',
183
- };
184
- if (args) {
185
- request.arguments = args;
186
- }
187
- const serializedRequest = `${JSON.stringify(request)}\n`;
188
- (_b = (_a = this.tsServerProcess) === null || _a === void 0 ? void 0 : _a.stdin) === null || _b === void 0 ? void 0 : _b.write(serializedRequest);
189
- this.log(notification ? 'notify' : 'request', request);
189
+ }
190
+ sendMessage(command, notification, args) {
191
+ this.seq += 1;
192
+ const request = {
193
+ command,
194
+ seq: this.seq,
195
+ type: 'request'
196
+ };
197
+ if (args) {
198
+ request.arguments = args;
190
199
  }
191
- processMessage(untrimmedMessageString, resolve, reject) {
192
- const messageString = untrimmedMessageString.trim();
193
- if (!messageString || messageString.startsWith('Content-Length:')) {
194
- return;
195
- }
196
- let message;
197
- try {
198
- message = JSON.parse(messageString);
199
- }
200
- catch (_a) {
201
- // If the message isn't valid JSON, it's not a valid tsserver message. Reject the promise.
202
- reject === null || reject === void 0 ? void 0 : reject(new Error(`Received invalid message from TSServer: ${untrimmedMessageString}`));
203
- return;
204
- }
205
- this.log('processMessage', message);
206
- if (this.isEvent(message)) {
207
- resolve === null || resolve === void 0 ? void 0 : resolve();
208
- }
209
- if (this.isResponse(message)) {
210
- this.resolveResponse(message, message.request_seq, message.success);
211
- }
212
- else if (this.isEvent(message)) {
213
- if (this.isRequestCompletedEvent(message)) {
214
- this.resolveResponse(message, message.body.request_seq, true);
215
- }
216
- else if (this.options.onEvent) {
217
- this.options.onEvent(message);
218
- }
219
- }
200
+ const serializedRequest = `${JSON.stringify(request)}\n`;
201
+ this.tsServerProcess?.stdin?.write(serializedRequest);
202
+ this.log(notification ? 'notify' : 'request', request);
203
+ }
204
+ processMessage(untrimmedMessageString, resolve, reject) {
205
+ const messageString = untrimmedMessageString.trim();
206
+ if (!messageString || messageString.startsWith('Content-Length:')) {
207
+ return;
220
208
  }
221
- resolveResponse(message, request_seq, success) {
222
- const deferred = this.deferreds[request_seq];
223
- this.log('request completed', { request_seq, success });
224
- if (deferred) {
225
- if (success) {
226
- this.deferreds[request_seq].resolve(message);
227
- }
228
- else {
229
- this.deferreds[request_seq].reject(message);
230
- }
231
- delete this.deferreds[request_seq];
232
- }
209
+ let message;
210
+ try {
211
+ message = JSON.parse(messageString);
212
+ } catch {
213
+ // If the message isn't valid JSON, it's not a valid tsserver message. Reject the promise.
214
+ reject?.(new Error(`Received invalid message from TSServer: ${untrimmedMessageString}`));
215
+ return;
233
216
  }
234
- isEvent(message) {
235
- return message.type === 'event';
217
+ this.log('processMessage', message);
218
+ if (this.isEvent(message)) {
219
+ resolve?.();
236
220
  }
237
- isResponse(message) {
238
- return message.type === 'response';
221
+ if (this.isResponse(message)) {
222
+ this.resolveResponse(message, message.request_seq, message.success);
223
+ } else if (this.isEvent(message)) {
224
+ if (this.isRequestCompletedEvent(message)) {
225
+ this.resolveResponse(message, message.body.request_seq, true);
226
+ } else if (this.options.onEvent) {
227
+ this.options.onEvent(message);
228
+ }
239
229
  }
240
- isRequestCompletedEvent(message) {
241
- return this.isEvent(message) && message.event === 'requestCompleted';
230
+ }
231
+ resolveResponse(message, request_seq, success) {
232
+ const deferred = this.deferreds[request_seq];
233
+ this.log('request completed', {
234
+ request_seq,
235
+ success
236
+ });
237
+ if (deferred) {
238
+ if (success) {
239
+ this.deferreds[request_seq].resolve(message);
240
+ } else {
241
+ this.deferreds[request_seq].reject(message);
242
+ }
243
+ delete this.deferreds[request_seq];
242
244
  }
243
- ensureServerIsRunning() {
244
- return __awaiter(this, void 0, void 0, function* () {
245
- if (!this.tsServerProcess) {
246
- yield this.restart();
247
- }
248
- });
245
+ }
246
+ isEvent(message) {
247
+ return message.type === 'event';
248
+ }
249
+ isResponse(message) {
250
+ return message.type === 'response';
251
+ }
252
+ isRequestCompletedEvent(message) {
253
+ return this.isEvent(message) && message.event === 'requestCompleted';
254
+ }
255
+ async ensureServerIsRunning() {
256
+ if (!this.tsServerProcess) {
257
+ await this.restart();
249
258
  }
259
+ }
250
260
  }
251
261
  exports.ProcessBasedTsServer = ProcessBasedTsServer;
262
+
252
263
  //# sourceMappingURL=process-based-tsserver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-based-tsserver.js","sourceRoot":"","sources":["../process-based-tsserver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"names":["fs","data","_interopRequireWildcard","require","path","cp","readline","decoder","_tempy","_interopRequireDefault","_utils","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ProcessBasedTsServer","seq","deferreds","constructor","options","tsServerArgs","logger","restart","kill","start","Promise","resolve","reject","tsServerProcess","Error","tsserverPath","logFile","logVerbosity","maxTsServerMemory","globalPlugins","pluginProbeLocations","args","push","length","join","cancellationPipeName","tempy","file","name","info","tsserverPathIsModule","extname","silent","execArgv","fork","spawn","readlineInterface","createInterface","stdout","stdin","undefined","process","on","line","processMessage","dec","StringDecoder","stderr","addListener","stringMsg","write","error","notify","command","ensureServerIsRunning","sendMessage","request","token","deferred","Deferred","promise","onCancelled","onCancellationRequested","dispose","requestCancellationPipeName","writeFile","err","then","unlink","result","destroy","close","log","msg","obj","logToConsole","console","JSON","stringify","trace","notification","type","arguments","serializedRequest","untrimmedMessageString","messageString","trim","startsWith","message","parse","isEvent","isResponse","resolveResponse","request_seq","success","isRequestCompletedEvent","body","onEvent","event","exports"],"sources":["process-based-tsserver.ts"],"sourcesContent":["/**\n * part of this file was copied over from https://github.com/typescript-language-server/typescript-language-server/blob/master/src/tsp-client.ts\n */\n\n/*\n * Copyright (C) 2017, 2018 TypeFox and others.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as cp from 'child_process';\nimport * as readline from 'readline';\nimport { Logger } from '@teambit/logger';\nimport { Readable, Writable } from 'stream';\nimport * as decoder from 'string_decoder';\nimport type ts from 'typescript/lib/tsserverlibrary';\nimport tempy from 'tempy';\nimport { CancellationToken } from 'vscode-jsonrpc';\nimport { CommandTypes } from './tsp-command-types';\nimport { Deferred } from './utils';\n\nexport interface TspClientOptions {\n logger: Logger;\n tsserverPath: string;\n logToConsole?: boolean;\n onEvent?: (event: ts.server.protocol.Event) => void;\n}\n\nexport interface TsServerArgs {\n logFile?: string;\n logVerbosity?: string;\n maxTsServerMemory?: number;\n globalPlugins?: string[];\n pluginProbeLocations?: string[];\n}\n\nexport interface StandardTsServerRequests {\n [CommandTypes.ApplyCodeActionCommand]: [\n ts.server.protocol.ApplyCodeActionCommandRequestArgs,\n ts.server.protocol.ApplyCodeActionCommandResponse,\n ];\n [CommandTypes.CompletionDetails]: [\n ts.server.protocol.CompletionDetailsRequestArgs,\n ts.server.protocol.CompletionDetailsResponse,\n ];\n [CommandTypes.CompletionInfo]: [ts.server.protocol.CompletionsRequestArgs, ts.server.protocol.CompletionInfoResponse];\n [CommandTypes.Configure]: [ts.server.protocol.ConfigureRequestArguments, ts.server.protocol.ConfigureResponse];\n [CommandTypes.Definition]: [ts.server.protocol.FileLocationRequestArgs, ts.server.protocol.DefinitionResponse];\n [CommandTypes.DefinitionAndBoundSpan]: [\n ts.server.protocol.FileLocationRequestArgs,\n ts.server.protocol.DefinitionInfoAndBoundSpanResponse,\n ];\n [CommandTypes.DocCommentTemplate]: [\n ts.server.protocol.FileLocationRequestArgs,\n ts.server.protocol.DocCommandTemplateResponse,\n ];\n [CommandTypes.DocumentHighlights]: [\n ts.server.protocol.DocumentHighlightsRequestArgs,\n ts.server.protocol.DocumentHighlightsResponse,\n ];\n [CommandTypes.Format]: [ts.server.protocol.FormatRequestArgs, ts.server.protocol.FormatResponse];\n [CommandTypes.Formatonkey]: [ts.server.protocol.FormatOnKeyRequestArgs, ts.server.protocol.FormatResponse];\n [CommandTypes.GetApplicableRefactors]: [\n ts.server.protocol.GetApplicableRefactorsRequestArgs,\n ts.server.protocol.GetApplicableRefactorsResponse,\n ];\n [CommandTypes.GetCodeFixes]: [ts.server.protocol.CodeFixRequestArgs, ts.server.protocol.CodeFixResponse];\n [CommandTypes.GetCombinedCodeFix]: [\n ts.server.protocol.GetCombinedCodeFixRequestArgs,\n ts.server.protocol.GetCombinedCodeFixResponse,\n ];\n [CommandTypes.GetEditsForFileRename]: [\n ts.server.protocol.GetEditsForFileRenameRequestArgs,\n ts.server.protocol.GetEditsForFileRenameResponse,\n ];\n [CommandTypes.GetEditsForRefactor]: [\n ts.server.protocol.GetEditsForRefactorRequestArgs,\n ts.server.protocol.GetEditsForRefactorResponse,\n ];\n [CommandTypes.GetOutliningSpans]: [ts.server.protocol.FileRequestArgs, ts.server.protocol.OutliningSpansResponse];\n [CommandTypes.GetSupportedCodeFixes]: [null, ts.server.protocol.GetSupportedCodeFixesResponse];\n [CommandTypes.Implementation]: [\n ts.server.protocol.FileLocationRequestArgs,\n ts.server.protocol.ImplementationResponse,\n ];\n [CommandTypes.JsxClosingTag]: [ts.server.protocol.JsxClosingTagRequestArgs, ts.server.protocol.JsxClosingTagResponse];\n [CommandTypes.Navto]: [ts.server.protocol.NavtoRequestArgs, ts.server.protocol.NavtoResponse];\n [CommandTypes.NavTree]: [ts.server.protocol.FileRequestArgs, ts.server.protocol.NavTreeResponse];\n [CommandTypes.OrganizeImports]: [\n ts.server.protocol.OrganizeImportsRequestArgs,\n ts.server.protocol.OrganizeImportsResponse,\n ];\n [CommandTypes.PrepareCallHierarchy]: [\n ts.server.protocol.FileLocationRequestArgs,\n ts.server.protocol.PrepareCallHierarchyResponse,\n ];\n [CommandTypes.ProvideCallHierarchyIncomingCalls]: [\n ts.server.protocol.FileLocationRequestArgs,\n ts.server.protocol.ProvideCallHierarchyIncomingCallsResponse,\n ];\n [CommandTypes.ProvideCallHierarchyOutgoingCalls]: [\n ts.server.protocol.FileLocationRequestArgs,\n ts.server.protocol.ProvideCallHierarchyOutgoingCallsResponse,\n ];\n [CommandTypes.ProjectInfo]: [ts.server.protocol.ProjectInfoRequestArgs, ts.server.protocol.ProjectInfoResponse];\n [CommandTypes.ProvideInlayHints]: [ts.server.protocol.InlayHintsRequestArgs, ts.server.protocol.InlayHintsResponse];\n [CommandTypes.Quickinfo]: [ts.server.protocol.FileLocationRequestArgs, ts.server.protocol.QuickInfoResponse];\n [CommandTypes.References]: [ts.server.protocol.FileLocationRequestArgs, ts.server.protocol.ReferencesResponse];\n [CommandTypes.Rename]: [ts.server.protocol.RenameRequestArgs, ts.server.protocol.RenameResponse];\n [CommandTypes.SelectionRange]: [\n ts.server.protocol.SelectionRangeRequestArgs,\n ts.server.protocol.SelectionRangeResponse,\n ];\n [CommandTypes.SignatureHelp]: [ts.server.protocol.SignatureHelpRequestArgs, ts.server.protocol.SignatureHelpResponse];\n [CommandTypes.TypeDefinition]: [\n ts.server.protocol.FileLocationRequestArgs,\n ts.server.protocol.TypeDefinitionResponse,\n ];\n [CommandTypes.UpdateOpen]: [ts.server.protocol.UpdateOpenRequestArgs, ts.server.protocol.Response];\n}\n\nexport interface NoResponseTsServerRequests {\n [CommandTypes.Change]: [ts.server.protocol.ChangeRequestArgs, null];\n [CommandTypes.Close]: [ts.server.protocol.FileRequestArgs, null];\n [CommandTypes.CompilerOptionsForInferredProjects]: [\n ts.server.protocol.SetCompilerOptionsForInferredProjectsArgs,\n ts.server.protocol.SetCompilerOptionsForInferredProjectsResponse,\n ];\n [CommandTypes.Configure]: [ts.server.protocol.ConfigureRequestArguments, ts.server.protocol.ConfigureResponse];\n [CommandTypes.ConfigurePlugin]: [\n ts.server.protocol.ConfigurePluginRequestArguments,\n ts.server.protocol.ConfigurePluginResponse,\n ];\n [CommandTypes.Open]: [ts.server.protocol.OpenRequestArgs, null];\n}\n\nexport interface AsyncTsServerRequests {\n [CommandTypes.Geterr]: [ts.server.protocol.GeterrRequestArgs, ts.server.protocol.Response];\n [CommandTypes.GeterrForProject]: [ts.server.protocol.GeterrForProjectRequestArgs, ts.server.protocol.Response];\n}\n\nexport type TypeScriptRequestTypes = StandardTsServerRequests & NoResponseTsServerRequests & AsyncTsServerRequests;\n\nexport class ProcessBasedTsServer {\n private readlineInterface: readline.ReadLine | null;\n private tsServerProcess: cp.ChildProcess | null;\n private seq = 0;\n\n private readonly deferreds: {\n [seq: number]: Deferred<any>;\n } = {};\n\n private logger: Logger;\n private cancellationPipeName: string | undefined;\n\n constructor(\n private options: TspClientOptions,\n private tsServerArgs: TsServerArgs = {}\n ) {\n this.logger = options.logger;\n }\n\n async restart() {\n this.kill();\n await this.start();\n }\n\n start() {\n return new Promise<void>((resolve, reject) => {\n if (this.tsServerProcess) {\n reject(new Error('server already started'));\n return;\n }\n\n const { tsserverPath } = this.options;\n const { logFile, logVerbosity, maxTsServerMemory, globalPlugins, pluginProbeLocations } = this.tsServerArgs;\n const args: string[] = [];\n if (logFile) {\n args.push('--logFile', logFile);\n }\n if (logVerbosity) {\n args.push('--logVerbosity', logVerbosity);\n }\n if (globalPlugins && globalPlugins.length) {\n args.push('--globalPlugins', globalPlugins.join(','));\n }\n if (pluginProbeLocations && pluginProbeLocations.length) {\n args.push('--pluginProbeLocations', pluginProbeLocations.join(','));\n }\n this.cancellationPipeName = tempy.file({ name: 'tscancellation' });\n args.push('--cancellationPipeName', `${this.cancellationPipeName}*`);\n this.logger.info(`Starting tsserver : '${tsserverPath} ${args.join(' ')}'`);\n const tsserverPathIsModule = path.extname(tsserverPath) === '.js';\n const options = {\n silent: true,\n execArgv: maxTsServerMemory ? [`--max-old-space-size=${maxTsServerMemory}`] : [],\n };\n this.tsServerProcess = tsserverPathIsModule ? cp.fork(tsserverPath, args, options) : cp.spawn(tsserverPath, args);\n\n this.readlineInterface = readline.createInterface(\n this.tsServerProcess.stdout as Readable,\n this.tsServerProcess.stdin as Writable,\n undefined\n );\n process.on('exit', () => {\n this.kill();\n reject(new Error('TSServer was killed'));\n });\n\n this.readlineInterface.on('line', (line) => {\n this.processMessage(line, resolve, reject);\n });\n\n const dec = new decoder.StringDecoder('utf-8');\n this.tsServerProcess.stderr?.addListener('data', (data) => {\n const stringMsg = typeof data === 'string' ? data : dec.write(data);\n this.logger.error(stringMsg);\n reject(new Error(stringMsg));\n });\n });\n }\n\n async notify(command: CommandTypes.Open, args: ts.server.protocol.OpenRequestArgs): Promise<void>;\n async notify(command: CommandTypes.Close, args: ts.server.protocol.FileRequestArgs): Promise<void>;\n async notify(command: CommandTypes.Saveto, args: ts.server.protocol.SavetoRequestArgs): Promise<void>;\n async notify(command: CommandTypes.Change, args: ts.server.protocol.ChangeRequestArgs): Promise<void>;\n async notify(command: string, args: any): Promise<void> {\n await this.ensureServerIsRunning();\n this.sendMessage(command, true, args);\n }\n\n async request<K extends keyof TypeScriptRequestTypes>(\n command: K,\n args: TypeScriptRequestTypes[K][0],\n token?: CancellationToken\n ): Promise<TypeScriptRequestTypes[K][1]> {\n await this.ensureServerIsRunning();\n this.sendMessage(command, false, args);\n const seq = this.seq;\n const deferred = new Deferred<TypeScriptRequestTypes[K][1]>();\n this.deferreds[seq] = deferred;\n const request = deferred.promise;\n\n let onCancelled;\n if (token) {\n onCancelled = token.onCancellationRequested(() => {\n onCancelled.dispose();\n if (this.cancellationPipeName) {\n const requestCancellationPipeName = `${this.cancellationPipeName}${seq}`;\n fs.writeFile(requestCancellationPipeName, '', (err) => {\n if (!err) {\n // eslint-disable-next-line\n request.then(() =>\n fs.unlink(requestCancellationPipeName, () => {\n /* no-op */\n })\n );\n }\n });\n }\n });\n }\n\n try {\n const result = await request;\n onCancelled?.dispose();\n return result;\n } catch (error) {\n this.logger.error(`Error in request: ${error}`);\n throw error;\n }\n }\n\n kill() {\n this.tsServerProcess?.kill();\n this.tsServerProcess?.stdin?.destroy();\n this.readlineInterface?.close();\n this.tsServerProcess = null;\n this.readlineInterface = null;\n }\n\n private log(msg: string, obj: Record<string, any> = {}) {\n msg = `[tsserver] ${msg}`;\n if (this.options.logToConsole) {\n this.logger.console(`${msg} ${JSON.stringify(obj, undefined, 4)}`);\n } else {\n this.logger.trace(msg, obj);\n }\n }\n\n protected sendMessage(command: string, notification: boolean, args?: any): void {\n this.seq += 1;\n const request: ts.server.protocol.Request = {\n command,\n seq: this.seq,\n type: 'request',\n };\n if (args) {\n request.arguments = args;\n }\n const serializedRequest = `${JSON.stringify(request)}\\n`;\n this.tsServerProcess?.stdin?.write(serializedRequest);\n this.log(notification ? 'notify' : 'request', request);\n }\n\n protected processMessage(untrimmedMessageString: string, resolve?: () => void, reject?: (err) => void): void {\n const messageString = untrimmedMessageString.trim();\n if (!messageString || messageString.startsWith('Content-Length:')) {\n return;\n }\n let message: ts.server.protocol.Message;\n\n try {\n message = JSON.parse(messageString);\n } catch {\n // If the message isn't valid JSON, it's not a valid tsserver message. Reject the promise.\n reject?.(new Error(`Received invalid message from TSServer: ${untrimmedMessageString}`));\n return;\n }\n\n this.log('processMessage', message);\n\n if (this.isEvent(message)) {\n resolve?.();\n }\n\n if (this.isResponse(message)) {\n this.resolveResponse(message, message.request_seq, message.success);\n } else if (this.isEvent(message)) {\n if (this.isRequestCompletedEvent(message)) {\n this.resolveResponse(message, message.body.request_seq, true);\n } else if (this.options.onEvent) {\n this.options.onEvent(message);\n }\n }\n }\n\n private resolveResponse(message: ts.server.protocol.Message, request_seq: number, success: boolean) {\n const deferred = this.deferreds[request_seq];\n this.log('request completed', { request_seq, success });\n if (deferred) {\n if (success) {\n this.deferreds[request_seq].resolve(message);\n } else {\n this.deferreds[request_seq].reject(message);\n }\n delete this.deferreds[request_seq];\n }\n }\n\n private isEvent(message: ts.server.protocol.Message): message is ts.server.protocol.Event {\n return message.type === 'event';\n }\n\n private isResponse(message: ts.server.protocol.Message): message is ts.server.protocol.Response {\n return message.type === 'response';\n }\n\n private isRequestCompletedEvent(\n message: ts.server.protocol.Message\n ): message is ts.server.protocol.RequestCompletedEvent {\n return this.isEvent(message) && message.event === 'requestCompleted';\n }\n\n private async ensureServerIsRunning() {\n if (!this.tsServerProcess) {\n await this.restart();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -70,7 +70,7 @@ export declare class TsserverClient {
70
70
  * @param file can be absolute or relative to this.projectRoot.
71
71
  */
72
72
  getTypeDefinition(file: string, position: Position): Promise<ts.server.protocol.TypeDefinitionResponse | undefined>;
73
- getDefinition(file: string, position: Position): Promise<ts.server.protocol.DefinitionResponse>;
73
+ getDefinition(file: string, position: Position): Promise<ts.server.protocol.DefinitionResponse | undefined>;
74
74
  /**
75
75
  * @param file can be absolute or relative to this.projectRoot.
76
76
  */