1 var __create = Object.create;
2 var __defProp = Object.defineProperty;
3 var __getProtoOf = Object.getPrototypeOf;
4 var __hasOwnProp = Object.prototype.hasOwnProperty;
5 var __getOwnPropNames = Object.getOwnPropertyNames;
6 var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7 var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8 var __commonJS = (callback, module2) => () => {
10 module2 = {exports: {}};
11 callback(module2.exports, module2);
13 return module2.exports;
15 var __export = (target, all) => {
16 __markAsModule(target);
18 __defProp(target, name, {get: all[name], enumerable: true});
20 var __exportStar = (target, module2, desc) => {
21 __markAsModule(target);
22 if (module2 && typeof module2 === "object" || typeof module2 === "function") {
23 for (let key of __getOwnPropNames(module2))
24 if (!__hasOwnProp.call(target, key) && key !== "default")
25 __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
29 var __toModule = (module2) => {
30 if (module2 && module2.__esModule)
32 return __exportStar(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", {value: module2, enumerable: true}), module2);
35 // node_modules/vscode-jsonrpc/lib/common/ral.js
36 var require_ral = __commonJS((exports2) => {
38 Object.defineProperty(exports2, "__esModule", {value: true});
41 if (_ral === void 0) {
42 throw new Error(`No runtime abstraction layer installed`);
47 function install(ral) {
49 throw new Error(`No runtime abstraction layer provided`);
53 RAL2.install = install;
54 })(RAL || (RAL = {}));
55 exports2.default = RAL;
58 // node_modules/vscode-jsonrpc/lib/common/disposable.js
59 var require_disposable = __commonJS((exports2) => {
61 Object.defineProperty(exports2, "__esModule", {value: true});
62 exports2.Disposable = void 0;
64 (function(Disposable14) {
65 function create(func) {
70 Disposable14.create = create;
71 })(Disposable13 = exports2.Disposable || (exports2.Disposable = {}));
74 // node_modules/vscode-jsonrpc/lib/common/messageBuffer.js
75 var require_messageBuffer = __commonJS((exports2) => {
77 Object.defineProperty(exports2, "__esModule", {value: true});
78 exports2.AbstractMessageBuffer = void 0;
82 var AbstractMessageBuffer = class {
83 constructor(encoding = "utf-8") {
84 this._encoding = encoding;
86 this._totalLength = 0;
89 return this._encoding;
92 const toAppend = typeof chunk === "string" ? this.fromString(chunk, this._encoding) : chunk;
93 this._chunks.push(toAppend);
94 this._totalLength += toAppend.byteLength;
97 if (this._chunks.length === 0) {
103 let chunkBytesRead = 0;
105 while (chunkIndex < this._chunks.length) {
106 const chunk = this._chunks[chunkIndex];
109 while (offset < chunk.length) {
110 const value = chunk[offset];
142 chunkBytesRead += chunk.byteLength;
148 const buffer = this._read(chunkBytesRead + offset);
149 const result = new Map();
150 const headers = this.toString(buffer, "ascii").split(CRLF);
151 if (headers.length < 2) {
154 for (let i = 0; i < headers.length - 2; i++) {
155 const header = headers[i];
156 const index = header.indexOf(":");
158 throw new Error("Message header must separate key and value using :");
160 const key = header.substr(0, index);
161 const value = header.substr(index + 1).trim();
162 result.set(key, value);
166 tryReadBody(length) {
167 if (this._totalLength < length) {
170 return this._read(length);
172 get numberOfBytes() {
173 return this._totalLength;
176 if (byteCount === 0) {
177 return this.emptyBuffer();
179 if (byteCount > this._totalLength) {
180 throw new Error(`Cannot read so many bytes!`);
182 if (this._chunks[0].byteLength === byteCount) {
183 const chunk = this._chunks[0];
184 this._chunks.shift();
185 this._totalLength -= byteCount;
186 return this.asNative(chunk);
188 if (this._chunks[0].byteLength > byteCount) {
189 const chunk = this._chunks[0];
190 const result2 = this.asNative(chunk, byteCount);
191 this._chunks[0] = chunk.slice(byteCount);
192 this._totalLength -= byteCount;
195 const result = this.allocNative(byteCount);
196 let resultOffset = 0;
198 while (byteCount > 0) {
199 const chunk = this._chunks[chunkIndex];
200 if (chunk.byteLength > byteCount) {
201 const chunkPart = chunk.slice(0, byteCount);
202 result.set(chunkPart, resultOffset);
203 resultOffset += byteCount;
204 this._chunks[chunkIndex] = chunk.slice(byteCount);
205 this._totalLength -= byteCount;
206 byteCount -= byteCount;
208 result.set(chunk, resultOffset);
209 resultOffset += chunk.byteLength;
210 this._chunks.shift();
211 this._totalLength -= chunk.byteLength;
212 byteCount -= chunk.byteLength;
218 exports2.AbstractMessageBuffer = AbstractMessageBuffer;
221 // node_modules/vscode-jsonrpc/lib/node/ril.js
222 var require_ril = __commonJS((exports2) => {
224 Object.defineProperty(exports2, "__esModule", {value: true});
225 var ral_1 = require_ral();
226 var util_1 = require("util");
227 var disposable_1 = require_disposable();
228 var messageBuffer_1 = require_messageBuffer();
229 var MessageBuffer = class extends messageBuffer_1.AbstractMessageBuffer {
230 constructor(encoding = "utf-8") {
234 return MessageBuffer.emptyBuffer;
236 fromString(value, encoding) {
237 return Buffer.from(value, encoding);
239 toString(value, encoding) {
240 if (value instanceof Buffer) {
241 return value.toString(encoding);
243 return new util_1.TextDecoder(encoding).decode(value);
246 asNative(buffer, length) {
247 if (length === void 0) {
248 return buffer instanceof Buffer ? buffer : Buffer.from(buffer);
250 return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);
253 allocNative(length) {
254 return Buffer.allocUnsafe(length);
257 MessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);
258 var ReadableStreamWrapper = class {
259 constructor(stream) {
260 this.stream = stream;
263 this.stream.on("close", listener);
264 return disposable_1.Disposable.create(() => this.stream.off("close", listener));
267 this.stream.on("error", listener);
268 return disposable_1.Disposable.create(() => this.stream.off("error", listener));
271 this.stream.on("end", listener);
272 return disposable_1.Disposable.create(() => this.stream.off("end", listener));
275 this.stream.on("data", listener);
276 return disposable_1.Disposable.create(() => this.stream.off("data", listener));
279 var WritableStreamWrapper = class {
280 constructor(stream) {
281 this.stream = stream;
284 this.stream.on("close", listener);
285 return disposable_1.Disposable.create(() => this.stream.off("close", listener));
288 this.stream.on("error", listener);
289 return disposable_1.Disposable.create(() => this.stream.off("error", listener));
292 this.stream.on("end", listener);
293 return disposable_1.Disposable.create(() => this.stream.off("end", listener));
295 write(data, encoding) {
296 return new Promise((resolve, reject) => {
297 const callback = (error) => {
298 if (error === void 0 || error === null) {
304 if (typeof data === "string") {
305 this.stream.write(data, encoding, callback);
307 this.stream.write(data, callback);
315 var _ril = Object.freeze({
316 messageBuffer: Object.freeze({
317 create: (encoding) => new MessageBuffer(encoding)
319 applicationJson: Object.freeze({
320 encoder: Object.freeze({
321 name: "application/json",
322 encode: (msg, options) => {
324 return Promise.resolve(Buffer.from(JSON.stringify(msg, void 0, 0), options.charset));
326 return Promise.reject(err);
330 decoder: Object.freeze({
331 name: "application/json",
332 decode: (buffer, options) => {
334 if (buffer instanceof Buffer) {
335 return Promise.resolve(JSON.parse(buffer.toString(options.charset)));
337 return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));
340 return Promise.reject(err);
345 stream: Object.freeze({
346 asReadableStream: (stream) => new ReadableStreamWrapper(stream),
347 asWritableStream: (stream) => new WritableStreamWrapper(stream)
350 timer: Object.freeze({
351 setTimeout(callback, ms, ...args) {
352 return setTimeout(callback, ms, ...args);
354 clearTimeout(handle) {
355 clearTimeout(handle);
357 setImmediate(callback, ...args) {
358 return setImmediate(callback, ...args);
360 clearImmediate(handle) {
361 clearImmediate(handle);
370 ral_1.default.install(_ril);
372 RIL2.install = install;
373 })(RIL || (RIL = {}));
374 exports2.default = RIL;
377 // node_modules/vscode-jsonrpc/lib/common/is.js
378 var require_is = __commonJS((exports2) => {
380 Object.defineProperty(exports2, "__esModule", {value: true});
381 exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0;
382 function boolean2(value) {
383 return value === true || value === false;
385 exports2.boolean = boolean2;
386 function string2(value) {
387 return typeof value === "string" || value instanceof String;
389 exports2.string = string2;
390 function number(value) {
391 return typeof value === "number" || value instanceof Number;
393 exports2.number = number;
394 function error(value) {
395 return value instanceof Error;
397 exports2.error = error;
398 function func(value) {
399 return typeof value === "function";
401 exports2.func = func;
402 function array(value) {
403 return Array.isArray(value);
405 exports2.array = array;
406 function stringArray(value) {
407 return array(value) && value.every((elem) => string2(elem));
409 exports2.stringArray = stringArray;
412 // node_modules/vscode-jsonrpc/lib/common/messages.js
413 var require_messages = __commonJS((exports2) => {
415 Object.defineProperty(exports2, "__esModule", {value: true});
416 exports2.isResponseMessage = exports2.isNotificationMessage = exports2.isRequestMessage = exports2.NotificationType9 = exports2.NotificationType8 = exports2.NotificationType7 = exports2.NotificationType6 = exports2.NotificationType5 = exports2.NotificationType4 = exports2.NotificationType3 = exports2.NotificationType2 = exports2.NotificationType1 = exports2.NotificationType0 = exports2.NotificationType = exports2.RequestType9 = exports2.RequestType8 = exports2.RequestType7 = exports2.RequestType6 = exports2.RequestType5 = exports2.RequestType4 = exports2.RequestType3 = exports2.RequestType2 = exports2.RequestType1 = exports2.RequestType = exports2.RequestType0 = exports2.AbstractMessageSignature = exports2.ParameterStructures = exports2.ResponseError = exports2.ErrorCodes = void 0;
417 var is2 = require_is();
419 (function(ErrorCodes2) {
420 ErrorCodes2.ParseError = -32700;
421 ErrorCodes2.InvalidRequest = -32600;
422 ErrorCodes2.MethodNotFound = -32601;
423 ErrorCodes2.InvalidParams = -32602;
424 ErrorCodes2.InternalError = -32603;
425 ErrorCodes2.jsonrpcReservedErrorRangeStart = -32099;
426 ErrorCodes2.serverErrorStart = ErrorCodes2.jsonrpcReservedErrorRangeStart;
427 ErrorCodes2.MessageWriteError = -32099;
428 ErrorCodes2.MessageReadError = -32098;
429 ErrorCodes2.ServerNotInitialized = -32002;
430 ErrorCodes2.UnknownErrorCode = -32001;
431 ErrorCodes2.jsonrpcReservedErrorRangeEnd = -32e3;
432 ErrorCodes2.serverErrorEnd = ErrorCodes2.jsonrpcReservedErrorRangeEnd;
433 })(ErrorCodes = exports2.ErrorCodes || (exports2.ErrorCodes = {}));
434 var ResponseError = class extends Error {
435 constructor(code, message, data) {
437 this.code = is2.number(code) ? code : ErrorCodes.UnknownErrorCode;
439 Object.setPrototypeOf(this, ResponseError.prototype);
444 message: this.message,
449 exports2.ResponseError = ResponseError;
450 var ParameterStructures = class {
455 return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;
461 exports2.ParameterStructures = ParameterStructures;
462 ParameterStructures.auto = new ParameterStructures("auto");
463 ParameterStructures.byPosition = new ParameterStructures("byPosition");
464 ParameterStructures.byName = new ParameterStructures("byName");
465 var AbstractMessageSignature = class {
466 constructor(method, numberOfParams) {
467 this.method = method;
468 this.numberOfParams = numberOfParams;
470 get parameterStructures() {
471 return ParameterStructures.auto;
474 exports2.AbstractMessageSignature = AbstractMessageSignature;
475 var RequestType0 = class extends AbstractMessageSignature {
476 constructor(method) {
480 exports2.RequestType0 = RequestType0;
481 var RequestType = class extends AbstractMessageSignature {
482 constructor(method, _parameterStructures = ParameterStructures.auto) {
484 this._parameterStructures = _parameterStructures;
486 get parameterStructures() {
487 return this._parameterStructures;
490 exports2.RequestType = RequestType;
491 var RequestType1 = class extends AbstractMessageSignature {
492 constructor(method, _parameterStructures = ParameterStructures.auto) {
494 this._parameterStructures = _parameterStructures;
496 get parameterStructures() {
497 return this._parameterStructures;
500 exports2.RequestType1 = RequestType1;
501 var RequestType2 = class extends AbstractMessageSignature {
502 constructor(method) {
506 exports2.RequestType2 = RequestType2;
507 var RequestType3 = class extends AbstractMessageSignature {
508 constructor(method) {
512 exports2.RequestType3 = RequestType3;
513 var RequestType4 = class extends AbstractMessageSignature {
514 constructor(method) {
518 exports2.RequestType4 = RequestType4;
519 var RequestType5 = class extends AbstractMessageSignature {
520 constructor(method) {
524 exports2.RequestType5 = RequestType5;
525 var RequestType6 = class extends AbstractMessageSignature {
526 constructor(method) {
530 exports2.RequestType6 = RequestType6;
531 var RequestType7 = class extends AbstractMessageSignature {
532 constructor(method) {
536 exports2.RequestType7 = RequestType7;
537 var RequestType8 = class extends AbstractMessageSignature {
538 constructor(method) {
542 exports2.RequestType8 = RequestType8;
543 var RequestType9 = class extends AbstractMessageSignature {
544 constructor(method) {
548 exports2.RequestType9 = RequestType9;
549 var NotificationType = class extends AbstractMessageSignature {
550 constructor(method, _parameterStructures = ParameterStructures.auto) {
552 this._parameterStructures = _parameterStructures;
554 get parameterStructures() {
555 return this._parameterStructures;
558 exports2.NotificationType = NotificationType;
559 var NotificationType0 = class extends AbstractMessageSignature {
560 constructor(method) {
564 exports2.NotificationType0 = NotificationType0;
565 var NotificationType1 = class extends AbstractMessageSignature {
566 constructor(method, _parameterStructures = ParameterStructures.auto) {
568 this._parameterStructures = _parameterStructures;
570 get parameterStructures() {
571 return this._parameterStructures;
574 exports2.NotificationType1 = NotificationType1;
575 var NotificationType2 = class extends AbstractMessageSignature {
576 constructor(method) {
580 exports2.NotificationType2 = NotificationType2;
581 var NotificationType3 = class extends AbstractMessageSignature {
582 constructor(method) {
586 exports2.NotificationType3 = NotificationType3;
587 var NotificationType4 = class extends AbstractMessageSignature {
588 constructor(method) {
592 exports2.NotificationType4 = NotificationType4;
593 var NotificationType5 = class extends AbstractMessageSignature {
594 constructor(method) {
598 exports2.NotificationType5 = NotificationType5;
599 var NotificationType6 = class extends AbstractMessageSignature {
600 constructor(method) {
604 exports2.NotificationType6 = NotificationType6;
605 var NotificationType7 = class extends AbstractMessageSignature {
606 constructor(method) {
610 exports2.NotificationType7 = NotificationType7;
611 var NotificationType8 = class extends AbstractMessageSignature {
612 constructor(method) {
616 exports2.NotificationType8 = NotificationType8;
617 var NotificationType9 = class extends AbstractMessageSignature {
618 constructor(method) {
622 exports2.NotificationType9 = NotificationType9;
623 function isRequestMessage(message) {
624 const candidate = message;
625 return candidate && is2.string(candidate.method) && (is2.string(candidate.id) || is2.number(candidate.id));
627 exports2.isRequestMessage = isRequestMessage;
628 function isNotificationMessage(message) {
629 const candidate = message;
630 return candidate && is2.string(candidate.method) && message.id === void 0;
632 exports2.isNotificationMessage = isNotificationMessage;
633 function isResponseMessage(message) {
634 const candidate = message;
635 return candidate && (candidate.result !== void 0 || !!candidate.error) && (is2.string(candidate.id) || is2.number(candidate.id) || candidate.id === null);
637 exports2.isResponseMessage = isResponseMessage;
640 // node_modules/vscode-jsonrpc/lib/common/events.js
641 var require_events = __commonJS((exports2) => {
643 Object.defineProperty(exports2, "__esModule", {value: true});
644 exports2.Emitter = exports2.Event = void 0;
645 var ral_1 = require_ral();
648 const _disposable = {dispose() {
650 Event6.None = function() {
653 })(Event5 = exports2.Event || (exports2.Event = {}));
654 var CallbackList = class {
655 add(callback, context = null, bucket) {
656 if (!this._callbacks) {
657 this._callbacks = [];
660 this._callbacks.push(callback);
661 this._contexts.push(context);
662 if (Array.isArray(bucket)) {
663 bucket.push({dispose: () => this.remove(callback, context)});
666 remove(callback, context = null) {
667 if (!this._callbacks) {
670 let foundCallbackWithDifferentContext = false;
671 for (let i = 0, len = this._callbacks.length; i < len; i++) {
672 if (this._callbacks[i] === callback) {
673 if (this._contexts[i] === context) {
674 this._callbacks.splice(i, 1);
675 this._contexts.splice(i, 1);
678 foundCallbackWithDifferentContext = true;
682 if (foundCallbackWithDifferentContext) {
683 throw new Error("When adding a listener with a context, you should remove it with the same context");
687 if (!this._callbacks) {
690 const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);
691 for (let i = 0, len = callbacks.length; i < len; i++) {
693 ret.push(callbacks[i].apply(contexts[i], args));
695 ral_1.default().console.error(e);
701 return !this._callbacks || this._callbacks.length === 0;
704 this._callbacks = void 0;
705 this._contexts = void 0;
708 var Emitter6 = class {
709 constructor(_options) {
710 this._options = _options;
714 this._event = (listener, thisArgs, disposables) => {
715 if (!this._callbacks) {
716 this._callbacks = new CallbackList();
718 if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {
719 this._options.onFirstListenerAdd(this);
721 this._callbacks.add(listener, thisArgs);
724 if (!this._callbacks) {
727 this._callbacks.remove(listener, thisArgs);
728 result.dispose = Emitter6._noop;
729 if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {
730 this._options.onLastListenerRemove(this);
734 if (Array.isArray(disposables)) {
735 disposables.push(result);
743 if (this._callbacks) {
744 this._callbacks.invoke.call(this._callbacks, event);
748 if (this._callbacks) {
749 this._callbacks.dispose();
750 this._callbacks = void 0;
754 exports2.Emitter = Emitter6;
755 Emitter6._noop = function() {
759 // node_modules/vscode-jsonrpc/lib/common/cancellation.js
760 var require_cancellation = __commonJS((exports2) => {
762 Object.defineProperty(exports2, "__esModule", {value: true});
763 exports2.CancellationTokenSource = exports2.CancellationToken = void 0;
764 var ral_1 = require_ral();
765 var Is = require_is();
766 var events_1 = require_events();
767 var CancellationToken20;
768 (function(CancellationToken21) {
769 CancellationToken21.None = Object.freeze({
770 isCancellationRequested: false,
771 onCancellationRequested: events_1.Event.None
773 CancellationToken21.Cancelled = Object.freeze({
774 isCancellationRequested: true,
775 onCancellationRequested: events_1.Event.None
777 function is2(value) {
778 const candidate = value;
779 return candidate && (candidate === CancellationToken21.None || candidate === CancellationToken21.Cancelled || Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested);
781 CancellationToken21.is = is2;
782 })(CancellationToken20 = exports2.CancellationToken || (exports2.CancellationToken = {}));
783 var shortcutEvent = Object.freeze(function(callback, context) {
784 const handle = ral_1.default().timer.setTimeout(callback.bind(context), 0);
786 ral_1.default().timer.clearTimeout(handle);
789 var MutableToken = class {
791 this._isCancelled = false;
794 if (!this._isCancelled) {
795 this._isCancelled = true;
797 this._emitter.fire(void 0);
802 get isCancellationRequested() {
803 return this._isCancelled;
805 get onCancellationRequested() {
806 if (this._isCancelled) {
807 return shortcutEvent;
809 if (!this._emitter) {
810 this._emitter = new events_1.Emitter();
812 return this._emitter.event;
816 this._emitter.dispose();
817 this._emitter = void 0;
821 var CancellationTokenSource4 = class {
824 this._token = new MutableToken();
830 this._token = CancellationToken20.Cancelled;
832 this._token.cancel();
837 this._token = CancellationToken20.None;
838 } else if (this._token instanceof MutableToken) {
839 this._token.dispose();
843 exports2.CancellationTokenSource = CancellationTokenSource4;
846 // node_modules/vscode-jsonrpc/lib/common/messageReader.js
847 var require_messageReader = __commonJS((exports2) => {
849 Object.defineProperty(exports2, "__esModule", {value: true});
850 exports2.ReadableStreamMessageReader = exports2.AbstractMessageReader = exports2.MessageReader = void 0;
851 var ral_1 = require_ral();
852 var Is = require_is();
853 var events_1 = require_events();
855 (function(MessageReader2) {
856 function is2(value) {
857 let candidate = value;
858 return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) && Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);
860 MessageReader2.is = is2;
861 })(MessageReader = exports2.MessageReader || (exports2.MessageReader = {}));
862 var AbstractMessageReader = class {
864 this.errorEmitter = new events_1.Emitter();
865 this.closeEmitter = new events_1.Emitter();
866 this.partialMessageEmitter = new events_1.Emitter();
869 this.errorEmitter.dispose();
870 this.closeEmitter.dispose();
873 return this.errorEmitter.event;
876 this.errorEmitter.fire(this.asError(error));
879 return this.closeEmitter.event;
882 this.closeEmitter.fire(void 0);
884 get onPartialMessage() {
885 return this.partialMessageEmitter.event;
887 firePartialMessage(info) {
888 this.partialMessageEmitter.fire(info);
891 if (error instanceof Error) {
894 return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : "unknown"}`);
898 exports2.AbstractMessageReader = AbstractMessageReader;
899 var ResolvedMessageReaderOptions;
900 (function(ResolvedMessageReaderOptions2) {
901 function fromOptions(options) {
906 const contentDecoders = new Map();
907 let contentTypeDecoder;
908 const contentTypeDecoders = new Map();
909 if (options === void 0 || typeof options === "string") {
910 charset = options !== null && options !== void 0 ? options : "utf-8";
912 charset = (_a = options.charset) !== null && _a !== void 0 ? _a : "utf-8";
913 if (options.contentDecoder !== void 0) {
914 contentDecoder = options.contentDecoder;
915 contentDecoders.set(contentDecoder.name, contentDecoder);
917 if (options.contentDecoders !== void 0) {
918 for (const decoder of options.contentDecoders) {
919 contentDecoders.set(decoder.name, decoder);
922 if (options.contentTypeDecoder !== void 0) {
923 contentTypeDecoder = options.contentTypeDecoder;
924 contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);
926 if (options.contentTypeDecoders !== void 0) {
927 for (const decoder of options.contentTypeDecoders) {
928 contentTypeDecoders.set(decoder.name, decoder);
932 if (contentTypeDecoder === void 0) {
933 contentTypeDecoder = ral_1.default().applicationJson.decoder;
934 contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);
936 return {charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders};
938 ResolvedMessageReaderOptions2.fromOptions = fromOptions;
939 })(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));
940 var ReadableStreamMessageReader = class extends AbstractMessageReader {
941 constructor(readable, options) {
943 this.readable = readable;
944 this.options = ResolvedMessageReaderOptions.fromOptions(options);
945 this.buffer = ral_1.default().messageBuffer.create(this.options.charset);
946 this._partialMessageTimeout = 1e4;
947 this.nextMessageLength = -1;
948 this.messageToken = 0;
950 set partialMessageTimeout(timeout) {
951 this._partialMessageTimeout = timeout;
953 get partialMessageTimeout() {
954 return this._partialMessageTimeout;
957 this.nextMessageLength = -1;
958 this.messageToken = 0;
959 this.partialMessageTimer = void 0;
960 this.callback = callback;
961 const result = this.readable.onData((data) => {
964 this.readable.onError((error) => this.fireError(error));
965 this.readable.onClose(() => this.fireClose());
969 this.buffer.append(data);
971 if (this.nextMessageLength === -1) {
972 const headers = this.buffer.tryReadHeaders();
976 const contentLength = headers.get("Content-Length");
977 if (!contentLength) {
978 throw new Error("Header must provide a Content-Length property.");
980 const length = parseInt(contentLength);
982 throw new Error("Content-Length value must be a number.");
984 this.nextMessageLength = length;
986 const body = this.buffer.tryReadBody(this.nextMessageLength);
987 if (body === void 0) {
988 this.setPartialMessageTimer();
991 this.clearPartialMessageTimer();
992 this.nextMessageLength = -1;
994 if (this.options.contentDecoder !== void 0) {
995 p = this.options.contentDecoder.decode(body);
997 p = Promise.resolve(body);
1000 this.options.contentTypeDecoder.decode(value, this.options).then((msg) => {
1003 this.fireError(error);
1006 this.fireError(error);
1010 clearPartialMessageTimer() {
1011 if (this.partialMessageTimer) {
1012 ral_1.default().timer.clearTimeout(this.partialMessageTimer);
1013 this.partialMessageTimer = void 0;
1016 setPartialMessageTimer() {
1017 this.clearPartialMessageTimer();
1018 if (this._partialMessageTimeout <= 0) {
1021 this.partialMessageTimer = ral_1.default().timer.setTimeout((token, timeout) => {
1022 this.partialMessageTimer = void 0;
1023 if (token === this.messageToken) {
1024 this.firePartialMessage({messageToken: token, waitingTime: timeout});
1025 this.setPartialMessageTimer();
1027 }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);
1030 exports2.ReadableStreamMessageReader = ReadableStreamMessageReader;
1033 // node_modules/vscode-jsonrpc/lib/common/semaphore.js
1034 var require_semaphore = __commonJS((exports2) => {
1036 Object.defineProperty(exports2, "__esModule", {value: true});
1037 exports2.Semaphore = void 0;
1038 var ral_1 = require_ral();
1039 var Semaphore = class {
1040 constructor(capacity = 1) {
1041 if (capacity <= 0) {
1042 throw new Error("Capacity must be greater than 0");
1044 this._capacity = capacity;
1049 return new Promise((resolve, reject) => {
1050 this._waiting.push({thunk, resolve, reject});
1055 return this._active;
1058 if (this._waiting.length === 0 || this._active === this._capacity) {
1061 ral_1.default().timer.setImmediate(() => this.doRunNext());
1064 if (this._waiting.length === 0 || this._active === this._capacity) {
1067 const next = this._waiting.shift();
1069 if (this._active > this._capacity) {
1070 throw new Error(`To many thunks active`);
1073 const result = next.thunk();
1074 if (result instanceof Promise) {
1075 result.then((value) => {
1077 next.resolve(value);
1086 next.resolve(result);
1096 exports2.Semaphore = Semaphore;
1099 // node_modules/vscode-jsonrpc/lib/common/messageWriter.js
1100 var require_messageWriter = __commonJS((exports2) => {
1102 Object.defineProperty(exports2, "__esModule", {value: true});
1103 exports2.WriteableStreamMessageWriter = exports2.AbstractMessageWriter = exports2.MessageWriter = void 0;
1104 var ral_1 = require_ral();
1105 var Is = require_is();
1106 var semaphore_1 = require_semaphore();
1107 var events_1 = require_events();
1108 var ContentLength2 = "Content-Length: ";
1111 (function(MessageWriter2) {
1112 function is2(value) {
1113 let candidate = value;
1114 return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) && Is.func(candidate.onError) && Is.func(candidate.write);
1116 MessageWriter2.is = is2;
1117 })(MessageWriter = exports2.MessageWriter || (exports2.MessageWriter = {}));
1118 var AbstractMessageWriter = class {
1120 this.errorEmitter = new events_1.Emitter();
1121 this.closeEmitter = new events_1.Emitter();
1124 this.errorEmitter.dispose();
1125 this.closeEmitter.dispose();
1128 return this.errorEmitter.event;
1130 fireError(error, message, count) {
1131 this.errorEmitter.fire([this.asError(error), message, count]);
1134 return this.closeEmitter.event;
1137 this.closeEmitter.fire(void 0);
1140 if (error instanceof Error) {
1143 return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : "unknown"}`);
1147 exports2.AbstractMessageWriter = AbstractMessageWriter;
1148 var ResolvedMessageWriterOptions;
1149 (function(ResolvedMessageWriterOptions2) {
1150 function fromOptions(options) {
1152 if (options === void 0 || typeof options === "string") {
1153 return {charset: options !== null && options !== void 0 ? options : "utf-8", contentTypeEncoder: ral_1.default().applicationJson.encoder};
1155 return {charset: (_a = options.charset) !== null && _a !== void 0 ? _a : "utf-8", contentEncoder: options.contentEncoder, contentTypeEncoder: (_b = options.contentTypeEncoder) !== null && _b !== void 0 ? _b : ral_1.default().applicationJson.encoder};
1158 ResolvedMessageWriterOptions2.fromOptions = fromOptions;
1159 })(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));
1160 var WriteableStreamMessageWriter = class extends AbstractMessageWriter {
1161 constructor(writable, options) {
1163 this.writable = writable;
1164 this.options = ResolvedMessageWriterOptions.fromOptions(options);
1165 this.errorCount = 0;
1166 this.writeSemaphore = new semaphore_1.Semaphore(1);
1167 this.writable.onError((error) => this.fireError(error));
1168 this.writable.onClose(() => this.fireClose());
1171 return this.writeSemaphore.lock(async () => {
1172 const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {
1173 if (this.options.contentEncoder !== void 0) {
1174 return this.options.contentEncoder.encode(buffer);
1179 return payload.then((buffer) => {
1181 headers.push(ContentLength2, buffer.byteLength.toString(), CRLF);
1183 return this.doWrite(msg, headers, buffer);
1185 this.fireError(error);
1190 async doWrite(msg, headers, data) {
1192 await this.writable.write(headers.join(""), "ascii");
1193 return this.writable.write(data);
1195 this.handleError(error, msg);
1196 return Promise.reject(error);
1199 handleError(error, msg) {
1201 this.fireError(error, msg, this.errorCount);
1204 this.writable.end();
1207 exports2.WriteableStreamMessageWriter = WriteableStreamMessageWriter;
1210 // node_modules/vscode-jsonrpc/lib/common/linkedMap.js
1211 var require_linkedMap = __commonJS((exports2) => {
1213 Object.defineProperty(exports2, "__esModule", {value: true});
1214 exports2.LRUCache = exports2.LinkedMap = exports2.Touch = void 0;
1219 Touch2.AsOld = Touch2.First;
1221 Touch2.AsNew = Touch2.Last;
1222 })(Touch = exports2.Touch || (exports2.Touch = {}));
1223 var LinkedMap = class {
1225 this[Symbol.toStringTag] = "LinkedMap";
1226 this._map = new Map();
1227 this._head = void 0;
1228 this._tail = void 0;
1234 this._head = void 0;
1235 this._tail = void 0;
1240 return !this._head && !this._tail;
1247 return (_a = this._head) === null || _a === void 0 ? void 0 : _a.value;
1251 return (_a = this._tail) === null || _a === void 0 ? void 0 : _a.value;
1254 return this._map.has(key);
1256 get(key, touch = Touch.None) {
1257 const item = this._map.get(key);
1261 if (touch !== Touch.None) {
1262 this.touch(item, touch);
1266 set(key, value, touch = Touch.None) {
1267 let item = this._map.get(key);
1270 if (touch !== Touch.None) {
1271 this.touch(item, touch);
1274 item = {key, value, next: void 0, previous: void 0};
1277 this.addItemLast(item);
1280 this.addItemFirst(item);
1283 this.addItemLast(item);
1286 this.addItemLast(item);
1289 this._map.set(key, item);
1295 return !!this.remove(key);
1298 const item = this._map.get(key);
1302 this._map.delete(key);
1303 this.removeItem(item);
1308 if (!this._head && !this._tail) {
1311 if (!this._head || !this._tail) {
1312 throw new Error("Invalid list");
1314 const item = this._head;
1315 this._map.delete(item.key);
1316 this.removeItem(item);
1320 forEach(callbackfn, thisArg) {
1321 const state = this._state;
1322 let current = this._head;
1325 callbackfn.bind(thisArg)(current.value, current.key, this);
1327 callbackfn(current.value, current.key, this);
1329 if (this._state !== state) {
1330 throw new Error(`LinkedMap got modified during iteration.`);
1332 current = current.next;
1337 const state = this._state;
1338 let current = this._head;
1340 [Symbol.iterator]() {
1344 if (map._state !== state) {
1345 throw new Error(`LinkedMap got modified during iteration.`);
1348 const result = {value: current.key, done: false};
1349 current = current.next;
1352 return {value: void 0, done: true};
1360 const state = this._state;
1361 let current = this._head;
1363 [Symbol.iterator]() {
1367 if (map._state !== state) {
1368 throw new Error(`LinkedMap got modified during iteration.`);
1371 const result = {value: current.value, done: false};
1372 current = current.next;
1375 return {value: void 0, done: true};
1383 const state = this._state;
1384 let current = this._head;
1386 [Symbol.iterator]() {
1390 if (map._state !== state) {
1391 throw new Error(`LinkedMap got modified during iteration.`);
1394 const result = {value: [current.key, current.value], done: false};
1395 current = current.next;
1398 return {value: void 0, done: true};
1404 [Symbol.iterator]() {
1405 return this.entries();
1408 if (newSize >= this.size) {
1411 if (newSize === 0) {
1415 let current = this._head;
1416 let currentSize = this.size;
1417 while (current && currentSize > newSize) {
1418 this._map.delete(current.key);
1419 current = current.next;
1422 this._head = current;
1423 this._size = currentSize;
1425 current.previous = void 0;
1429 addItemFirst(item) {
1430 if (!this._head && !this._tail) {
1432 } else if (!this._head) {
1433 throw new Error("Invalid list");
1435 item.next = this._head;
1436 this._head.previous = item;
1442 if (!this._head && !this._tail) {
1444 } else if (!this._tail) {
1445 throw new Error("Invalid list");
1447 item.previous = this._tail;
1448 this._tail.next = item;
1454 if (item === this._head && item === this._tail) {
1455 this._head = void 0;
1456 this._tail = void 0;
1457 } else if (item === this._head) {
1459 throw new Error("Invalid list");
1461 item.next.previous = void 0;
1462 this._head = item.next;
1463 } else if (item === this._tail) {
1464 if (!item.previous) {
1465 throw new Error("Invalid list");
1467 item.previous.next = void 0;
1468 this._tail = item.previous;
1470 const next = item.next;
1471 const previous = item.previous;
1472 if (!next || !previous) {
1473 throw new Error("Invalid list");
1475 next.previous = previous;
1476 previous.next = next;
1479 item.previous = void 0;
1482 touch(item, touch) {
1483 if (!this._head || !this._tail) {
1484 throw new Error("Invalid list");
1486 if (touch !== Touch.First && touch !== Touch.Last) {
1489 if (touch === Touch.First) {
1490 if (item === this._head) {
1493 const next = item.next;
1494 const previous = item.previous;
1495 if (item === this._tail) {
1496 previous.next = void 0;
1497 this._tail = previous;
1499 next.previous = previous;
1500 previous.next = next;
1502 item.previous = void 0;
1503 item.next = this._head;
1504 this._head.previous = item;
1507 } else if (touch === Touch.Last) {
1508 if (item === this._tail) {
1511 const next = item.next;
1512 const previous = item.previous;
1513 if (item === this._head) {
1514 next.previous = void 0;
1517 next.previous = previous;
1518 previous.next = next;
1521 item.previous = this._tail;
1522 this._tail.next = item;
1529 this.forEach((value, key) => {
1530 data.push([key, value]);
1536 for (const [key, value] of data) {
1537 this.set(key, value);
1541 exports2.LinkedMap = LinkedMap;
1542 var LRUCache = class extends LinkedMap {
1543 constructor(limit, ratio = 1) {
1545 this._limit = limit;
1546 this._ratio = Math.min(Math.max(0, ratio), 1);
1552 this._limit = limit;
1559 this._ratio = Math.min(Math.max(0, ratio), 1);
1562 get(key, touch = Touch.AsNew) {
1563 return super.get(key, touch);
1566 return super.get(key, Touch.None);
1569 super.set(key, value, Touch.Last);
1574 if (this.size > this._limit) {
1575 this.trimOld(Math.round(this._limit * this._ratio));
1579 exports2.LRUCache = LRUCache;
1582 // node_modules/vscode-jsonrpc/lib/common/connection.js
1583 var require_connection = __commonJS((exports2) => {
1585 Object.defineProperty(exports2, "__esModule", {value: true});
1586 exports2.createMessageConnection = exports2.ConnectionOptions = exports2.CancellationStrategy = exports2.CancellationSenderStrategy = exports2.CancellationReceiverStrategy = exports2.ConnectionStrategy = exports2.ConnectionError = exports2.ConnectionErrors = exports2.LogTraceNotification = exports2.SetTraceNotification = exports2.TraceFormat = exports2.Trace = exports2.NullLogger = exports2.ProgressType = void 0;
1587 var ral_1 = require_ral();
1588 var Is = require_is();
1589 var messages_1 = require_messages();
1590 var linkedMap_1 = require_linkedMap();
1591 var events_1 = require_events();
1592 var cancellation_1 = require_cancellation();
1593 var CancelNotification;
1594 (function(CancelNotification2) {
1595 CancelNotification2.type = new messages_1.NotificationType("$/cancelRequest");
1596 })(CancelNotification || (CancelNotification = {}));
1597 var ProgressNotification;
1598 (function(ProgressNotification2) {
1599 ProgressNotification2.type = new messages_1.NotificationType("$/progress");
1600 })(ProgressNotification || (ProgressNotification = {}));
1601 var ProgressType = class {
1605 exports2.ProgressType = ProgressType;
1606 var StarRequestHandler;
1607 (function(StarRequestHandler2) {
1608 function is2(value) {
1609 return Is.func(value);
1611 StarRequestHandler2.is = is2;
1612 })(StarRequestHandler || (StarRequestHandler = {}));
1613 exports2.NullLogger = Object.freeze({
1625 Trace3[Trace3["Off"] = 0] = "Off";
1626 Trace3[Trace3["Messages"] = 1] = "Messages";
1627 Trace3[Trace3["Verbose"] = 2] = "Verbose";
1628 })(Trace2 = exports2.Trace || (exports2.Trace = {}));
1630 function fromString(value) {
1631 if (!Is.string(value)) {
1634 value = value.toLowerCase();
1639 return Trace3.Messages;
1641 return Trace3.Verbose;
1646 Trace3.fromString = fromString;
1647 function toString2(value) {
1651 case Trace3.Messages:
1653 case Trace3.Verbose:
1659 Trace3.toString = toString2;
1660 })(Trace2 = exports2.Trace || (exports2.Trace = {}));
1662 (function(TraceFormat2) {
1663 TraceFormat2["Text"] = "text";
1664 TraceFormat2["JSON"] = "json";
1665 })(TraceFormat = exports2.TraceFormat || (exports2.TraceFormat = {}));
1666 (function(TraceFormat2) {
1667 function fromString(value) {
1668 value = value.toLowerCase();
1669 if (value === "json") {
1670 return TraceFormat2.JSON;
1672 return TraceFormat2.Text;
1675 TraceFormat2.fromString = fromString;
1676 })(TraceFormat = exports2.TraceFormat || (exports2.TraceFormat = {}));
1677 var SetTraceNotification;
1678 (function(SetTraceNotification2) {
1679 SetTraceNotification2.type = new messages_1.NotificationType("$/setTrace");
1680 })(SetTraceNotification = exports2.SetTraceNotification || (exports2.SetTraceNotification = {}));
1681 var LogTraceNotification;
1682 (function(LogTraceNotification2) {
1683 LogTraceNotification2.type = new messages_1.NotificationType("$/logTrace");
1684 })(LogTraceNotification = exports2.LogTraceNotification || (exports2.LogTraceNotification = {}));
1685 var ConnectionErrors;
1686 (function(ConnectionErrors2) {
1687 ConnectionErrors2[ConnectionErrors2["Closed"] = 1] = "Closed";
1688 ConnectionErrors2[ConnectionErrors2["Disposed"] = 2] = "Disposed";
1689 ConnectionErrors2[ConnectionErrors2["AlreadyListening"] = 3] = "AlreadyListening";
1690 })(ConnectionErrors = exports2.ConnectionErrors || (exports2.ConnectionErrors = {}));
1691 var ConnectionError = class extends Error {
1692 constructor(code, message) {
1695 Object.setPrototypeOf(this, ConnectionError.prototype);
1698 exports2.ConnectionError = ConnectionError;
1699 var ConnectionStrategy;
1700 (function(ConnectionStrategy2) {
1701 function is2(value) {
1702 const candidate = value;
1703 return candidate && Is.func(candidate.cancelUndispatched);
1705 ConnectionStrategy2.is = is2;
1706 })(ConnectionStrategy = exports2.ConnectionStrategy || (exports2.ConnectionStrategy = {}));
1707 var CancellationReceiverStrategy;
1708 (function(CancellationReceiverStrategy2) {
1709 CancellationReceiverStrategy2.Message = Object.freeze({
1710 createCancellationTokenSource(_) {
1711 return new cancellation_1.CancellationTokenSource();
1714 function is2(value) {
1715 const candidate = value;
1716 return candidate && Is.func(candidate.createCancellationTokenSource);
1718 CancellationReceiverStrategy2.is = is2;
1719 })(CancellationReceiverStrategy = exports2.CancellationReceiverStrategy || (exports2.CancellationReceiverStrategy = {}));
1720 var CancellationSenderStrategy;
1721 (function(CancellationSenderStrategy2) {
1722 CancellationSenderStrategy2.Message = Object.freeze({
1723 sendCancellation(conn, id) {
1724 conn.sendNotification(CancelNotification.type, {id});
1729 function is2(value) {
1730 const candidate = value;
1731 return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);
1733 CancellationSenderStrategy2.is = is2;
1734 })(CancellationSenderStrategy = exports2.CancellationSenderStrategy || (exports2.CancellationSenderStrategy = {}));
1735 var CancellationStrategy;
1736 (function(CancellationStrategy2) {
1737 CancellationStrategy2.Message = Object.freeze({
1738 receiver: CancellationReceiverStrategy.Message,
1739 sender: CancellationSenderStrategy.Message
1741 function is2(value) {
1742 const candidate = value;
1743 return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);
1745 CancellationStrategy2.is = is2;
1746 })(CancellationStrategy = exports2.CancellationStrategy || (exports2.CancellationStrategy = {}));
1747 var ConnectionOptions;
1748 (function(ConnectionOptions2) {
1749 function is2(value) {
1750 const candidate = value;
1751 return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy));
1753 ConnectionOptions2.is = is2;
1754 })(ConnectionOptions = exports2.ConnectionOptions || (exports2.ConnectionOptions = {}));
1755 var ConnectionState;
1756 (function(ConnectionState2) {
1757 ConnectionState2[ConnectionState2["New"] = 1] = "New";
1758 ConnectionState2[ConnectionState2["Listening"] = 2] = "Listening";
1759 ConnectionState2[ConnectionState2["Closed"] = 3] = "Closed";
1760 ConnectionState2[ConnectionState2["Disposed"] = 4] = "Disposed";
1761 })(ConnectionState || (ConnectionState = {}));
1762 function createMessageConnection(messageReader, messageWriter, _logger, options) {
1763 const logger = _logger !== void 0 ? _logger : exports2.NullLogger;
1764 let sequenceNumber = 0;
1765 let notificationSquenceNumber = 0;
1766 let unknownResponseSquenceNumber = 0;
1767 const version = "2.0";
1768 let starRequestHandler = void 0;
1769 const requestHandlers = Object.create(null);
1770 let starNotificationHandler = void 0;
1771 const notificationHandlers = Object.create(null);
1772 const progressHandlers = new Map();
1774 let messageQueue = new linkedMap_1.LinkedMap();
1775 let responsePromises = Object.create(null);
1776 let requestTokens = Object.create(null);
1777 let trace = Trace2.Off;
1778 let traceFormat = TraceFormat.Text;
1780 let state = ConnectionState.New;
1781 const errorEmitter = new events_1.Emitter();
1782 const closeEmitter = new events_1.Emitter();
1783 const unhandledNotificationEmitter = new events_1.Emitter();
1784 const unhandledProgressEmitter = new events_1.Emitter();
1785 const disposeEmitter = new events_1.Emitter();
1786 const cancellationStrategy = options && options.cancellationStrategy ? options.cancellationStrategy : CancellationStrategy.Message;
1787 function createRequestQueueKey(id) {
1789 throw new Error(`Can't send requests with id null since the response can't be correlated.`);
1791 return "req-" + id.toString();
1793 function createResponseQueueKey(id) {
1795 return "res-unknown-" + (++unknownResponseSquenceNumber).toString();
1797 return "res-" + id.toString();
1800 function createNotificationQueueKey() {
1801 return "not-" + (++notificationSquenceNumber).toString();
1803 function addMessageToQueue(queue, message) {
1804 if (messages_1.isRequestMessage(message)) {
1805 queue.set(createRequestQueueKey(message.id), message);
1806 } else if (messages_1.isResponseMessage(message)) {
1807 queue.set(createResponseQueueKey(message.id), message);
1809 queue.set(createNotificationQueueKey(), message);
1812 function cancelUndispatched(_message) {
1815 function isListening() {
1816 return state === ConnectionState.Listening;
1818 function isClosed() {
1819 return state === ConnectionState.Closed;
1821 function isDisposed() {
1822 return state === ConnectionState.Disposed;
1824 function closeHandler() {
1825 if (state === ConnectionState.New || state === ConnectionState.Listening) {
1826 state = ConnectionState.Closed;
1827 closeEmitter.fire(void 0);
1830 function readErrorHandler(error) {
1831 errorEmitter.fire([error, void 0, void 0]);
1833 function writeErrorHandler(data) {
1834 errorEmitter.fire(data);
1836 messageReader.onClose(closeHandler);
1837 messageReader.onError(readErrorHandler);
1838 messageWriter.onClose(closeHandler);
1839 messageWriter.onError(writeErrorHandler);
1840 function triggerMessageQueue() {
1841 if (timer || messageQueue.size === 0) {
1844 timer = ral_1.default().timer.setImmediate(() => {
1846 processMessageQueue();
1849 function processMessageQueue() {
1850 if (messageQueue.size === 0) {
1853 const message = messageQueue.shift();
1855 if (messages_1.isRequestMessage(message)) {
1856 handleRequest(message);
1857 } else if (messages_1.isNotificationMessage(message)) {
1858 handleNotification(message);
1859 } else if (messages_1.isResponseMessage(message)) {
1860 handleResponse(message);
1862 handleInvalidMessage(message);
1865 triggerMessageQueue();
1868 const callback = (message) => {
1870 if (messages_1.isNotificationMessage(message) && message.method === CancelNotification.type.method) {
1871 const key = createRequestQueueKey(message.params.id);
1872 const toCancel = messageQueue.get(key);
1873 if (messages_1.isRequestMessage(toCancel)) {
1874 const strategy = options === null || options === void 0 ? void 0 : options.connectionStrategy;
1875 const response = strategy && strategy.cancelUndispatched ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);
1876 if (response && (response.error !== void 0 || response.result !== void 0)) {
1877 messageQueue.delete(key);
1878 response.id = toCancel.id;
1879 traceSendingResponse(response, message.method, Date.now());
1880 messageWriter.write(response);
1885 addMessageToQueue(messageQueue, message);
1887 triggerMessageQueue();
1890 function handleRequest(requestMessage) {
1894 function reply(resultOrError, method, startTime2) {
1897 id: requestMessage.id
1899 if (resultOrError instanceof messages_1.ResponseError) {
1900 message.error = resultOrError.toJson();
1902 message.result = resultOrError === void 0 ? null : resultOrError;
1904 traceSendingResponse(message, method, startTime2);
1905 messageWriter.write(message);
1907 function replyError(error, method, startTime2) {
1910 id: requestMessage.id,
1911 error: error.toJson()
1913 traceSendingResponse(message, method, startTime2);
1914 messageWriter.write(message);
1916 function replySuccess(result, method, startTime2) {
1917 if (result === void 0) {
1922 id: requestMessage.id,
1925 traceSendingResponse(message, method, startTime2);
1926 messageWriter.write(message);
1928 traceReceivedRequest(requestMessage);
1929 const element = requestHandlers[requestMessage.method];
1933 type = element.type;
1934 requestHandler = element.handler;
1936 const startTime = Date.now();
1937 if (requestHandler || starRequestHandler) {
1938 const tokenKey = String(requestMessage.id);
1939 const cancellationSource = cancellationStrategy.receiver.createCancellationTokenSource(tokenKey);
1940 requestTokens[tokenKey] = cancellationSource;
1943 if (requestHandler) {
1944 if (requestMessage.params === void 0) {
1945 if (type !== void 0 && type.numberOfParams !== 0) {
1946 replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but recevied none.`), requestMessage.method, startTime);
1949 handlerResult = requestHandler(cancellationSource.token);
1950 } else if (Array.isArray(requestMessage.params)) {
1951 if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byName) {
1952 replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);
1955 handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);
1957 if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byPosition) {
1958 replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);
1961 handlerResult = requestHandler(requestMessage.params, cancellationSource.token);
1963 } else if (starRequestHandler) {
1964 handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);
1966 const promise = handlerResult;
1967 if (!handlerResult) {
1968 delete requestTokens[tokenKey];
1969 replySuccess(handlerResult, requestMessage.method, startTime);
1970 } else if (promise.then) {
1971 promise.then((resultOrError) => {
1972 delete requestTokens[tokenKey];
1973 reply(resultOrError, requestMessage.method, startTime);
1975 delete requestTokens[tokenKey];
1976 if (error instanceof messages_1.ResponseError) {
1977 replyError(error, requestMessage.method, startTime);
1978 } else if (error && Is.string(error.message)) {
1979 replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);
1981 replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);
1985 delete requestTokens[tokenKey];
1986 reply(handlerResult, requestMessage.method, startTime);
1989 delete requestTokens[tokenKey];
1990 if (error instanceof messages_1.ResponseError) {
1991 reply(error, requestMessage.method, startTime);
1992 } else if (error && Is.string(error.message)) {
1993 replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);
1995 replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);
1999 replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);
2002 function handleResponse(responseMessage) {
2006 if (responseMessage.id === null) {
2007 if (responseMessage.error) {
2008 logger.error(`Received response message without id: Error is:
2009 ${JSON.stringify(responseMessage.error, void 0, 4)}`);
2011 logger.error(`Received response message without id. No further error information provided.`);
2014 const key = String(responseMessage.id);
2015 const responsePromise = responsePromises[key];
2016 traceReceivedResponse(responseMessage, responsePromise);
2017 if (responsePromise) {
2018 delete responsePromises[key];
2020 if (responseMessage.error) {
2021 const error = responseMessage.error;
2022 responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));
2023 } else if (responseMessage.result !== void 0) {
2024 responsePromise.resolve(responseMessage.result);
2026 throw new Error("Should never happen.");
2029 if (error.message) {
2030 logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);
2032 logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);
2038 function handleNotification(message) {
2043 let notificationHandler;
2044 if (message.method === CancelNotification.type.method) {
2045 notificationHandler = (params) => {
2046 const id = params.id;
2047 const source = requestTokens[String(id)];
2053 const element = notificationHandlers[message.method];
2055 notificationHandler = element.handler;
2056 type = element.type;
2059 if (notificationHandler || starNotificationHandler) {
2061 traceReceivedNotification(message);
2062 if (notificationHandler) {
2063 if (message.params === void 0) {
2064 if (type !== void 0) {
2065 if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {
2066 logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but recevied none.`);
2069 notificationHandler();
2070 } else if (Array.isArray(message.params)) {
2071 if (type !== void 0) {
2072 if (type.parameterStructures === messages_1.ParameterStructures.byName) {
2073 logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);
2075 if (type.numberOfParams !== message.params.length) {
2076 logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${message.params.length} argumennts`);
2079 notificationHandler(...message.params);
2081 if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byPosition) {
2082 logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);
2084 notificationHandler(message.params);
2086 } else if (starNotificationHandler) {
2087 starNotificationHandler(message.method, message.params);
2090 if (error.message) {
2091 logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);
2093 logger.error(`Notification handler '${message.method}' failed unexpectedly.`);
2097 unhandledNotificationEmitter.fire(message);
2100 function handleInvalidMessage(message) {
2102 logger.error("Received empty message.");
2105 logger.error(`Received message which is neither a response nor a notification message:
2106 ${JSON.stringify(message, null, 4)}`);
2107 const responseMessage = message;
2108 if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {
2109 const key = String(responseMessage.id);
2110 const responseHandler = responsePromises[key];
2111 if (responseHandler) {
2112 responseHandler.reject(new Error("The received response has neither a result nor an error property."));
2116 function traceSendingRequest(message) {
2117 if (trace === Trace2.Off || !tracer) {
2120 if (traceFormat === TraceFormat.Text) {
2122 if (trace === Trace2.Verbose && message.params) {
2123 data = `Params: ${JSON.stringify(message.params, null, 4)}
2127 tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);
2129 logLSPMessage("send-request", message);
2132 function traceSendingNotification(message) {
2133 if (trace === Trace2.Off || !tracer) {
2136 if (traceFormat === TraceFormat.Text) {
2138 if (trace === Trace2.Verbose) {
2139 if (message.params) {
2140 data = `Params: ${JSON.stringify(message.params, null, 4)}
2144 data = "No parameters provided.\n\n";
2147 tracer.log(`Sending notification '${message.method}'.`, data);
2149 logLSPMessage("send-notification", message);
2152 function traceSendingResponse(message, method, startTime) {
2153 if (trace === Trace2.Off || !tracer) {
2156 if (traceFormat === TraceFormat.Text) {
2158 if (trace === Trace2.Verbose) {
2159 if (message.error && message.error.data) {
2160 data = `Error data: ${JSON.stringify(message.error.data, null, 4)}
2164 if (message.result) {
2165 data = `Result: ${JSON.stringify(message.result, null, 4)}
2168 } else if (message.error === void 0) {
2169 data = "No result returned.\n\n";
2173 tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);
2175 logLSPMessage("send-response", message);
2178 function traceReceivedRequest(message) {
2179 if (trace === Trace2.Off || !tracer) {
2182 if (traceFormat === TraceFormat.Text) {
2184 if (trace === Trace2.Verbose && message.params) {
2185 data = `Params: ${JSON.stringify(message.params, null, 4)}
2189 tracer.log(`Received request '${message.method} - (${message.id})'.`, data);
2191 logLSPMessage("receive-request", message);
2194 function traceReceivedNotification(message) {
2195 if (trace === Trace2.Off || !tracer || message.method === LogTraceNotification.type.method) {
2198 if (traceFormat === TraceFormat.Text) {
2200 if (trace === Trace2.Verbose) {
2201 if (message.params) {
2202 data = `Params: ${JSON.stringify(message.params, null, 4)}
2206 data = "No parameters provided.\n\n";
2209 tracer.log(`Received notification '${message.method}'.`, data);
2211 logLSPMessage("receive-notification", message);
2214 function traceReceivedResponse(message, responsePromise) {
2215 if (trace === Trace2.Off || !tracer) {
2218 if (traceFormat === TraceFormat.Text) {
2220 if (trace === Trace2.Verbose) {
2221 if (message.error && message.error.data) {
2222 data = `Error data: ${JSON.stringify(message.error.data, null, 4)}
2226 if (message.result) {
2227 data = `Result: ${JSON.stringify(message.result, null, 4)}
2230 } else if (message.error === void 0) {
2231 data = "No result returned.\n\n";
2235 if (responsePromise) {
2236 const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : "";
2237 tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);
2239 tracer.log(`Received response ${message.id} without active response promise.`, data);
2242 logLSPMessage("receive-response", message);
2245 function logLSPMessage(type, message) {
2246 if (!tracer || trace === Trace2.Off) {
2249 const lspMessage = {
2253 timestamp: Date.now()
2255 tracer.log(lspMessage);
2257 function throwIfClosedOrDisposed() {
2259 throw new ConnectionError(ConnectionErrors.Closed, "Connection is closed.");
2262 throw new ConnectionError(ConnectionErrors.Disposed, "Connection is disposed.");
2265 function throwIfListening() {
2266 if (isListening()) {
2267 throw new ConnectionError(ConnectionErrors.AlreadyListening, "Connection is already listening");
2270 function throwIfNotListening() {
2271 if (!isListening()) {
2272 throw new Error("Call listen() first.");
2275 function undefinedToNull(param) {
2276 if (param === void 0) {
2282 function nullToUndefined(param) {
2283 if (param === null) {
2289 function isNamedParam(param) {
2290 return param !== void 0 && param !== null && !Array.isArray(param) && typeof param === "object";
2292 function computeSingleParam(parameterStructures, param) {
2293 switch (parameterStructures) {
2294 case messages_1.ParameterStructures.auto:
2295 if (isNamedParam(param)) {
2296 return nullToUndefined(param);
2298 return [undefinedToNull(param)];
2301 case messages_1.ParameterStructures.byName:
2302 if (!isNamedParam(param)) {
2303 throw new Error(`Recevied parameters by name but param is not an object literal.`);
2305 return nullToUndefined(param);
2306 case messages_1.ParameterStructures.byPosition:
2307 return [undefinedToNull(param)];
2309 throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);
2312 function computeMessageParams(type, params) {
2314 const numberOfParams = type.numberOfParams;
2315 switch (numberOfParams) {
2320 result = computeSingleParam(type.parameterStructures, params[0]);
2324 for (let i = 0; i < params.length && i < numberOfParams; i++) {
2325 result.push(undefinedToNull(params[i]));
2327 if (params.length < numberOfParams) {
2328 for (let i = params.length; i < numberOfParams; i++) {
2336 const connection = {
2337 sendNotification: (type, ...args) => {
2338 throwIfClosedOrDisposed();
2341 if (Is.string(type)) {
2343 const first = args[0];
2345 let parameterStructures = messages_1.ParameterStructures.auto;
2346 if (messages_1.ParameterStructures.is(first)) {
2348 parameterStructures = first;
2350 let paramEnd = args.length;
2351 const numberOfParams = paramEnd - paramStart;
2352 switch (numberOfParams) {
2354 messageParams = void 0;
2357 messageParams = computeSingleParam(parameterStructures, args[paramStart]);
2360 if (parameterStructures === messages_1.ParameterStructures.byName) {
2361 throw new Error(`Recevied ${numberOfParams} parameters for 'by Name' notification parameter structure.`);
2363 messageParams = args.slice(paramStart, paramEnd).map((value) => undefinedToNull(value));
2367 const params = args;
2368 method = type.method;
2369 messageParams = computeMessageParams(type, params);
2371 const notificationMessage = {
2374 params: messageParams
2376 traceSendingNotification(notificationMessage);
2377 messageWriter.write(notificationMessage);
2379 onNotification: (type, handler) => {
2380 throwIfClosedOrDisposed();
2382 if (Is.func(type)) {
2383 starNotificationHandler = type;
2384 } else if (handler) {
2385 if (Is.string(type)) {
2387 notificationHandlers[type] = {type: void 0, handler};
2389 method = type.method;
2390 notificationHandlers[type.method] = {type, handler};
2395 if (method !== void 0) {
2396 delete notificationHandlers[method];
2398 starNotificationHandler = void 0;
2403 onProgress: (_type, token, handler) => {
2404 if (progressHandlers.has(token)) {
2405 throw new Error(`Progress handler for token ${token} already registered`);
2407 progressHandlers.set(token, handler);
2410 progressHandlers.delete(token);
2414 sendProgress: (_type, token, value) => {
2415 connection.sendNotification(ProgressNotification.type, {token, value});
2417 onUnhandledProgress: unhandledProgressEmitter.event,
2418 sendRequest: (type, ...args) => {
2419 throwIfClosedOrDisposed();
2420 throwIfNotListening();
2424 if (Is.string(type)) {
2426 const first = args[0];
2427 const last = args[args.length - 1];
2429 let parameterStructures = messages_1.ParameterStructures.auto;
2430 if (messages_1.ParameterStructures.is(first)) {
2432 parameterStructures = first;
2434 let paramEnd = args.length;
2435 if (cancellation_1.CancellationToken.is(last)) {
2436 paramEnd = paramEnd - 1;
2439 const numberOfParams = paramEnd - paramStart;
2440 switch (numberOfParams) {
2442 messageParams = void 0;
2445 messageParams = computeSingleParam(parameterStructures, args[paramStart]);
2448 if (parameterStructures === messages_1.ParameterStructures.byName) {
2449 throw new Error(`Recevied ${numberOfParams} parameters for 'by Name' request parameter structure.`);
2451 messageParams = args.slice(paramStart, paramEnd).map((value) => undefinedToNull(value));
2455 const params = args;
2456 method = type.method;
2457 messageParams = computeMessageParams(type, params);
2458 const numberOfParams = type.numberOfParams;
2459 token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : void 0;
2461 const id = sequenceNumber++;
2464 disposable = token.onCancellationRequested(() => {
2465 cancellationStrategy.sender.sendCancellation(connection, id);
2468 const result = new Promise((resolve, reject) => {
2469 const requestMessage = {
2473 params: messageParams
2475 const resolveWithCleanup = (r) => {
2477 cancellationStrategy.sender.cleanup(id);
2478 disposable === null || disposable === void 0 ? void 0 : disposable.dispose();
2480 const rejectWithCleanup = (r) => {
2482 cancellationStrategy.sender.cleanup(id);
2483 disposable === null || disposable === void 0 ? void 0 : disposable.dispose();
2485 let responsePromise = {method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup};
2486 traceSendingRequest(requestMessage);
2488 messageWriter.write(requestMessage);
2490 responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, e.message ? e.message : "Unknown reason"));
2491 responsePromise = null;
2493 if (responsePromise) {
2494 responsePromises[String(id)] = responsePromise;
2499 onRequest: (type, handler) => {
2500 throwIfClosedOrDisposed();
2502 if (StarRequestHandler.is(type)) {
2504 starRequestHandler = type;
2505 } else if (Is.string(type)) {
2507 if (handler !== void 0) {
2509 requestHandlers[type] = {handler, type: void 0};
2512 if (handler !== void 0) {
2513 method = type.method;
2514 requestHandlers[type.method] = {type, handler};
2519 if (method === null) {
2522 if (method !== void 0) {
2523 delete requestHandlers[method];
2525 starRequestHandler = void 0;
2530 trace: (_value, _tracer, sendNotificationOrTraceOptions) => {
2531 let _sendNotification = false;
2532 let _traceFormat = TraceFormat.Text;
2533 if (sendNotificationOrTraceOptions !== void 0) {
2534 if (Is.boolean(sendNotificationOrTraceOptions)) {
2535 _sendNotification = sendNotificationOrTraceOptions;
2537 _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;
2538 _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;
2542 traceFormat = _traceFormat;
2543 if (trace === Trace2.Off) {
2548 if (_sendNotification && !isClosed() && !isDisposed()) {
2549 connection.sendNotification(SetTraceNotification.type, {value: Trace2.toString(_value)});
2552 onError: errorEmitter.event,
2553 onClose: closeEmitter.event,
2554 onUnhandledNotification: unhandledNotificationEmitter.event,
2555 onDispose: disposeEmitter.event,
2557 messageWriter.end();
2563 state = ConnectionState.Disposed;
2564 disposeEmitter.fire(void 0);
2565 const error = new Error("Connection got disposed.");
2566 Object.keys(responsePromises).forEach((key) => {
2567 responsePromises[key].reject(error);
2569 responsePromises = Object.create(null);
2570 requestTokens = Object.create(null);
2571 messageQueue = new linkedMap_1.LinkedMap();
2572 if (Is.func(messageWriter.dispose)) {
2573 messageWriter.dispose();
2575 if (Is.func(messageReader.dispose)) {
2576 messageReader.dispose();
2580 throwIfClosedOrDisposed();
2582 state = ConnectionState.Listening;
2583 messageReader.listen(callback);
2586 ral_1.default().console.log("inspect");
2589 connection.onNotification(LogTraceNotification.type, (params) => {
2590 if (trace === Trace2.Off || !tracer) {
2593 tracer.log(params.message, trace === Trace2.Verbose ? params.verbose : void 0);
2595 connection.onNotification(ProgressNotification.type, (params) => {
2596 const handler = progressHandlers.get(params.token);
2598 handler(params.value);
2600 unhandledProgressEmitter.fire(params);
2605 exports2.createMessageConnection = createMessageConnection;
2608 // node_modules/vscode-jsonrpc/lib/common/api.js
2609 var require_api = __commonJS((exports2) => {
2611 Object.defineProperty(exports2, "__esModule", {value: true});
2612 exports2.CancellationSenderStrategy = exports2.CancellationReceiverStrategy = exports2.ConnectionError = exports2.ConnectionErrors = exports2.LogTraceNotification = exports2.SetTraceNotification = exports2.TraceFormat = exports2.Trace = exports2.ProgressType = exports2.createMessageConnection = exports2.NullLogger = exports2.ConnectionOptions = exports2.ConnectionStrategy = exports2.WriteableStreamMessageWriter = exports2.AbstractMessageWriter = exports2.MessageWriter = exports2.ReadableStreamMessageReader = exports2.AbstractMessageReader = exports2.MessageReader = exports2.CancellationToken = exports2.CancellationTokenSource = exports2.Emitter = exports2.Event = exports2.Disposable = exports2.ParameterStructures = exports2.NotificationType9 = exports2.NotificationType8 = exports2.NotificationType7 = exports2.NotificationType6 = exports2.NotificationType5 = exports2.NotificationType4 = exports2.NotificationType3 = exports2.NotificationType2 = exports2.NotificationType1 = exports2.NotificationType0 = exports2.NotificationType = exports2.ErrorCodes = exports2.ResponseError = exports2.RequestType9 = exports2.RequestType8 = exports2.RequestType7 = exports2.RequestType6 = exports2.RequestType5 = exports2.RequestType4 = exports2.RequestType3 = exports2.RequestType2 = exports2.RequestType1 = exports2.RequestType0 = exports2.RequestType = exports2.RAL = void 0;
2613 exports2.CancellationStrategy = void 0;
2614 var messages_1 = require_messages();
2615 Object.defineProperty(exports2, "RequestType", {enumerable: true, get: function() {
2616 return messages_1.RequestType;
2618 Object.defineProperty(exports2, "RequestType0", {enumerable: true, get: function() {
2619 return messages_1.RequestType0;
2621 Object.defineProperty(exports2, "RequestType1", {enumerable: true, get: function() {
2622 return messages_1.RequestType1;
2624 Object.defineProperty(exports2, "RequestType2", {enumerable: true, get: function() {
2625 return messages_1.RequestType2;
2627 Object.defineProperty(exports2, "RequestType3", {enumerable: true, get: function() {
2628 return messages_1.RequestType3;
2630 Object.defineProperty(exports2, "RequestType4", {enumerable: true, get: function() {
2631 return messages_1.RequestType4;
2633 Object.defineProperty(exports2, "RequestType5", {enumerable: true, get: function() {
2634 return messages_1.RequestType5;
2636 Object.defineProperty(exports2, "RequestType6", {enumerable: true, get: function() {
2637 return messages_1.RequestType6;
2639 Object.defineProperty(exports2, "RequestType7", {enumerable: true, get: function() {
2640 return messages_1.RequestType7;
2642 Object.defineProperty(exports2, "RequestType8", {enumerable: true, get: function() {
2643 return messages_1.RequestType8;
2645 Object.defineProperty(exports2, "RequestType9", {enumerable: true, get: function() {
2646 return messages_1.RequestType9;
2648 Object.defineProperty(exports2, "ResponseError", {enumerable: true, get: function() {
2649 return messages_1.ResponseError;
2651 Object.defineProperty(exports2, "ErrorCodes", {enumerable: true, get: function() {
2652 return messages_1.ErrorCodes;
2654 Object.defineProperty(exports2, "NotificationType", {enumerable: true, get: function() {
2655 return messages_1.NotificationType;
2657 Object.defineProperty(exports2, "NotificationType0", {enumerable: true, get: function() {
2658 return messages_1.NotificationType0;
2660 Object.defineProperty(exports2, "NotificationType1", {enumerable: true, get: function() {
2661 return messages_1.NotificationType1;
2663 Object.defineProperty(exports2, "NotificationType2", {enumerable: true, get: function() {
2664 return messages_1.NotificationType2;
2666 Object.defineProperty(exports2, "NotificationType3", {enumerable: true, get: function() {
2667 return messages_1.NotificationType3;
2669 Object.defineProperty(exports2, "NotificationType4", {enumerable: true, get: function() {
2670 return messages_1.NotificationType4;
2672 Object.defineProperty(exports2, "NotificationType5", {enumerable: true, get: function() {
2673 return messages_1.NotificationType5;
2675 Object.defineProperty(exports2, "NotificationType6", {enumerable: true, get: function() {
2676 return messages_1.NotificationType6;
2678 Object.defineProperty(exports2, "NotificationType7", {enumerable: true, get: function() {
2679 return messages_1.NotificationType7;
2681 Object.defineProperty(exports2, "NotificationType8", {enumerable: true, get: function() {
2682 return messages_1.NotificationType8;
2684 Object.defineProperty(exports2, "NotificationType9", {enumerable: true, get: function() {
2685 return messages_1.NotificationType9;
2687 Object.defineProperty(exports2, "ParameterStructures", {enumerable: true, get: function() {
2688 return messages_1.ParameterStructures;
2690 var disposable_1 = require_disposable();
2691 Object.defineProperty(exports2, "Disposable", {enumerable: true, get: function() {
2692 return disposable_1.Disposable;
2694 var events_1 = require_events();
2695 Object.defineProperty(exports2, "Event", {enumerable: true, get: function() {
2696 return events_1.Event;
2698 Object.defineProperty(exports2, "Emitter", {enumerable: true, get: function() {
2699 return events_1.Emitter;
2701 var cancellation_1 = require_cancellation();
2702 Object.defineProperty(exports2, "CancellationTokenSource", {enumerable: true, get: function() {
2703 return cancellation_1.CancellationTokenSource;
2705 Object.defineProperty(exports2, "CancellationToken", {enumerable: true, get: function() {
2706 return cancellation_1.CancellationToken;
2708 var messageReader_1 = require_messageReader();
2709 Object.defineProperty(exports2, "MessageReader", {enumerable: true, get: function() {
2710 return messageReader_1.MessageReader;
2712 Object.defineProperty(exports2, "AbstractMessageReader", {enumerable: true, get: function() {
2713 return messageReader_1.AbstractMessageReader;
2715 Object.defineProperty(exports2, "ReadableStreamMessageReader", {enumerable: true, get: function() {
2716 return messageReader_1.ReadableStreamMessageReader;
2718 var messageWriter_1 = require_messageWriter();
2719 Object.defineProperty(exports2, "MessageWriter", {enumerable: true, get: function() {
2720 return messageWriter_1.MessageWriter;
2722 Object.defineProperty(exports2, "AbstractMessageWriter", {enumerable: true, get: function() {
2723 return messageWriter_1.AbstractMessageWriter;
2725 Object.defineProperty(exports2, "WriteableStreamMessageWriter", {enumerable: true, get: function() {
2726 return messageWriter_1.WriteableStreamMessageWriter;
2728 var connection_1 = require_connection();
2729 Object.defineProperty(exports2, "ConnectionStrategy", {enumerable: true, get: function() {
2730 return connection_1.ConnectionStrategy;
2732 Object.defineProperty(exports2, "ConnectionOptions", {enumerable: true, get: function() {
2733 return connection_1.ConnectionOptions;
2735 Object.defineProperty(exports2, "NullLogger", {enumerable: true, get: function() {
2736 return connection_1.NullLogger;
2738 Object.defineProperty(exports2, "createMessageConnection", {enumerable: true, get: function() {
2739 return connection_1.createMessageConnection;
2741 Object.defineProperty(exports2, "ProgressType", {enumerable: true, get: function() {
2742 return connection_1.ProgressType;
2744 Object.defineProperty(exports2, "Trace", {enumerable: true, get: function() {
2745 return connection_1.Trace;
2747 Object.defineProperty(exports2, "TraceFormat", {enumerable: true, get: function() {
2748 return connection_1.TraceFormat;
2750 Object.defineProperty(exports2, "SetTraceNotification", {enumerable: true, get: function() {
2751 return connection_1.SetTraceNotification;
2753 Object.defineProperty(exports2, "LogTraceNotification", {enumerable: true, get: function() {
2754 return connection_1.LogTraceNotification;
2756 Object.defineProperty(exports2, "ConnectionErrors", {enumerable: true, get: function() {
2757 return connection_1.ConnectionErrors;
2759 Object.defineProperty(exports2, "ConnectionError", {enumerable: true, get: function() {
2760 return connection_1.ConnectionError;
2762 Object.defineProperty(exports2, "CancellationReceiverStrategy", {enumerable: true, get: function() {
2763 return connection_1.CancellationReceiverStrategy;
2765 Object.defineProperty(exports2, "CancellationSenderStrategy", {enumerable: true, get: function() {
2766 return connection_1.CancellationSenderStrategy;
2768 Object.defineProperty(exports2, "CancellationStrategy", {enumerable: true, get: function() {
2769 return connection_1.CancellationStrategy;
2771 var ral_1 = require_ral();
2772 exports2.RAL = ral_1.default;
2775 // node_modules/vscode-jsonrpc/lib/node/main.js
2776 var require_main = __commonJS((exports2) => {
2778 var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
2781 Object.defineProperty(o, k2, {enumerable: true, get: function() {
2784 } : function(o, m, k, k2) {
2789 var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) {
2791 if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p))
2792 __createBinding(exports3, m, p);
2794 Object.defineProperty(exports2, "__esModule", {value: true});
2795 exports2.createMessageConnection = exports2.createServerSocketTransport = exports2.createClientSocketTransport = exports2.createServerPipeTransport = exports2.createClientPipeTransport = exports2.generateRandomPipeName = exports2.StreamMessageWriter = exports2.StreamMessageReader = exports2.SocketMessageWriter = exports2.SocketMessageReader = exports2.IPCMessageWriter = exports2.IPCMessageReader = void 0;
2796 var ril_1 = require_ril();
2797 ril_1.default.install();
2798 var api_1 = require_api();
2799 var path9 = require("path");
2800 var os3 = require("os");
2801 var crypto_1 = require("crypto");
2802 var net_1 = require("net");
2803 __exportStar2(require_api(), exports2);
2804 var IPCMessageReader = class extends api_1.AbstractMessageReader {
2805 constructor(process2) {
2807 this.process = process2;
2808 let eventEmitter = this.process;
2809 eventEmitter.on("error", (error) => this.fireError(error));
2810 eventEmitter.on("close", () => this.fireClose());
2813 this.process.on("message", callback);
2814 return api_1.Disposable.create(() => this.process.off("message", callback));
2817 exports2.IPCMessageReader = IPCMessageReader;
2818 var IPCMessageWriter = class extends api_1.AbstractMessageWriter {
2819 constructor(process2) {
2821 this.process = process2;
2822 this.errorCount = 0;
2823 let eventEmitter = this.process;
2824 eventEmitter.on("error", (error) => this.fireError(error));
2825 eventEmitter.on("close", () => this.fireClose);
2829 if (typeof this.process.send === "function") {
2830 this.process.send(msg, void 0, void 0, (error) => {
2833 this.handleError(error, msg);
2835 this.errorCount = 0;
2839 return Promise.resolve();
2841 this.handleError(error, msg);
2842 return Promise.reject(error);
2845 handleError(error, msg) {
2847 this.fireError(error, msg, this.errorCount);
2852 exports2.IPCMessageWriter = IPCMessageWriter;
2853 var SocketMessageReader = class extends api_1.ReadableStreamMessageReader {
2854 constructor(socket, encoding = "utf-8") {
2855 super(ril_1.default().stream.asReadableStream(socket), encoding);
2858 exports2.SocketMessageReader = SocketMessageReader;
2859 var SocketMessageWriter = class extends api_1.WriteableStreamMessageWriter {
2860 constructor(socket, options) {
2861 super(ril_1.default().stream.asWritableStream(socket), options);
2862 this.socket = socket;
2866 this.socket.destroy();
2869 exports2.SocketMessageWriter = SocketMessageWriter;
2870 var StreamMessageReader = class extends api_1.ReadableStreamMessageReader {
2871 constructor(readble, encoding) {
2872 super(ril_1.default().stream.asReadableStream(readble), encoding);
2875 exports2.StreamMessageReader = StreamMessageReader;
2876 var StreamMessageWriter = class extends api_1.WriteableStreamMessageWriter {
2877 constructor(writable, options) {
2878 super(ril_1.default().stream.asWritableStream(writable), options);
2881 exports2.StreamMessageWriter = StreamMessageWriter;
2882 var XDG_RUNTIME_DIR = process.env["XDG_RUNTIME_DIR"];
2883 var safeIpcPathLengths = new Map([
2887 function generateRandomPipeName() {
2888 const randomSuffix = crypto_1.randomBytes(21).toString("hex");
2889 if (process.platform === "win32") {
2890 return `\\\\.\\pipe\\vscode-jsonrpc-${randomSuffix}-sock`;
2893 if (XDG_RUNTIME_DIR) {
2894 result = path9.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);
2896 result = path9.join(os3.tmpdir(), `vscode-${randomSuffix}.sock`);
2898 const limit = safeIpcPathLengths.get(process.platform);
2899 if (limit !== void 0 && result.length >= limit) {
2900 ril_1.default().console.warn(`WARNING: IPC handle "${result}" is longer than ${limit} characters.`);
2904 exports2.generateRandomPipeName = generateRandomPipeName;
2905 function createClientPipeTransport(pipeName, encoding = "utf-8") {
2907 const connected = new Promise((resolve, _reject) => {
2908 connectResolve = resolve;
2910 return new Promise((resolve, reject) => {
2911 let server = net_1.createServer((socket) => {
2914 new SocketMessageReader(socket, encoding),
2915 new SocketMessageWriter(socket, encoding)
2918 server.on("error", reject);
2919 server.listen(pipeName, () => {
2920 server.removeListener("error", reject);
2922 onConnected: () => {
2929 exports2.createClientPipeTransport = createClientPipeTransport;
2930 function createServerPipeTransport(pipeName, encoding = "utf-8") {
2931 const socket = net_1.createConnection(pipeName);
2933 new SocketMessageReader(socket, encoding),
2934 new SocketMessageWriter(socket, encoding)
2937 exports2.createServerPipeTransport = createServerPipeTransport;
2938 function createClientSocketTransport(port, encoding = "utf-8") {
2940 const connected = new Promise((resolve, _reject) => {
2941 connectResolve = resolve;
2943 return new Promise((resolve, reject) => {
2944 const server = net_1.createServer((socket) => {
2947 new SocketMessageReader(socket, encoding),
2948 new SocketMessageWriter(socket, encoding)
2951 server.on("error", reject);
2952 server.listen(port, "127.0.0.1", () => {
2953 server.removeListener("error", reject);
2955 onConnected: () => {
2962 exports2.createClientSocketTransport = createClientSocketTransport;
2963 function createServerSocketTransport(port, encoding = "utf-8") {
2964 const socket = net_1.createConnection(port, "127.0.0.1");
2966 new SocketMessageReader(socket, encoding),
2967 new SocketMessageWriter(socket, encoding)
2970 exports2.createServerSocketTransport = createServerSocketTransport;
2971 function isReadableStream(value) {
2972 const candidate = value;
2973 return candidate.read !== void 0 && candidate.addListener !== void 0;
2975 function isWritableStream(value) {
2976 const candidate = value;
2977 return candidate.write !== void 0 && candidate.addListener !== void 0;
2979 function createMessageConnection(input, output, logger, options) {
2981 logger = api_1.NullLogger;
2983 const reader = isReadableStream(input) ? new StreamMessageReader(input) : input;
2984 const writer = isWritableStream(output) ? new StreamMessageWriter(output) : output;
2985 if (api_1.ConnectionStrategy.is(options)) {
2986 options = {connectionStrategy: options};
2988 return api_1.createMessageConnection(reader, writer, logger, options);
2990 exports2.createMessageConnection = createMessageConnection;
2993 // node_modules/vscode-jsonrpc/node.js
2994 var require_node = __commonJS((exports2, module2) => {
2996 module2.exports = require_main();
2999 // node_modules/vscode-languageserver-types/lib/esm/main.js
3000 var require_main2 = __commonJS((exports2) => {
3001 __export(exports2, {
3002 AnnotatedTextEdit: () => AnnotatedTextEdit,
3003 ChangeAnnotation: () => ChangeAnnotation,
3004 ChangeAnnotationIdentifier: () => ChangeAnnotationIdentifier,
3005 CodeAction: () => CodeAction6,
3006 CodeActionContext: () => CodeActionContext6,
3007 CodeActionKind: () => CodeActionKind6,
3008 CodeDescription: () => CodeDescription,
3009 CodeLens: () => CodeLens2,
3011 ColorInformation: () => ColorInformation,
3012 ColorPresentation: () => ColorPresentation,
3013 Command: () => Command5,
3014 CompletionItem: () => CompletionItem4,
3015 CompletionItemKind: () => CompletionItemKind3,
3016 CompletionItemTag: () => CompletionItemTag2,
3017 CompletionList: () => CompletionList3,
3018 CreateFile: () => CreateFile,
3019 DeleteFile: () => DeleteFile,
3020 Diagnostic: () => Diagnostic6,
3021 DiagnosticRelatedInformation: () => DiagnosticRelatedInformation2,
3022 DiagnosticSeverity: () => DiagnosticSeverity3,
3023 DiagnosticTag: () => DiagnosticTag3,
3024 DocumentHighlight: () => DocumentHighlight2,
3025 DocumentHighlightKind: () => DocumentHighlightKind2,
3026 DocumentLink: () => DocumentLink,
3027 DocumentSymbol: () => DocumentSymbol2,
3029 FoldingRange: () => FoldingRange2,
3030 FoldingRangeKind: () => FoldingRangeKind,
3031 FormattingOptions: () => FormattingOptions,
3033 InsertReplaceEdit: () => InsertReplaceEdit,
3034 InsertTextFormat: () => InsertTextFormat3,
3035 InsertTextMode: () => InsertTextMode,
3036 Location: () => Location4,
3037 LocationLink: () => LocationLink,
3038 MarkedString: () => MarkedString,
3039 MarkupContent: () => MarkupContent3,
3040 MarkupKind: () => MarkupKind3,
3041 OptionalVersionedTextDocumentIdentifier: () => OptionalVersionedTextDocumentIdentifier,
3042 ParameterInformation: () => ParameterInformation,
3043 Position: () => Position10,
3044 Range: () => Range17,
3045 RenameFile: () => RenameFile,
3046 SelectionRange: () => SelectionRange,
3047 SignatureInformation: () => SignatureInformation,
3048 SymbolInformation: () => SymbolInformation2,
3049 SymbolKind: () => SymbolKind5,
3050 SymbolTag: () => SymbolTag4,
3051 TextDocument: () => TextDocument13,
3052 TextDocumentEdit: () => TextDocumentEdit,
3053 TextDocumentIdentifier: () => TextDocumentIdentifier,
3054 TextDocumentItem: () => TextDocumentItem,
3055 TextEdit: () => TextEdit6,
3056 VersionedTextDocumentIdentifier: () => VersionedTextDocumentIdentifier,
3057 WorkspaceChange: () => WorkspaceChange,
3058 WorkspaceEdit: () => WorkspaceEdit6,
3059 integer: () => integer,
3060 uinteger: () => uinteger
3064 (function(integer2) {
3065 integer2.MIN_VALUE = -2147483648;
3066 integer2.MAX_VALUE = 2147483647;
3067 })(integer || (integer = {}));
3069 (function(uinteger2) {
3070 uinteger2.MIN_VALUE = 0;
3071 uinteger2.MAX_VALUE = 2147483647;
3072 })(uinteger || (uinteger = {}));
3074 (function(Position11) {
3075 function create(line, character) {
3076 if (line === Number.MAX_VALUE) {
3077 line = uinteger.MAX_VALUE;
3079 if (character === Number.MAX_VALUE) {
3080 character = uinteger.MAX_VALUE;
3082 return {line, character};
3084 Position11.create = create;
3085 function is2(value) {
3086 var candidate = value;
3087 return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);
3089 Position11.is = is2;
3090 })(Position10 || (Position10 = {}));
3092 (function(Range18) {
3093 function create(one, two, three, four) {
3094 if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {
3095 return {start: Position10.create(one, two), end: Position10.create(three, four)};
3096 } else if (Position10.is(one) && Position10.is(two)) {
3097 return {start: one, end: two};
3099 throw new Error("Range#create called with invalid arguments[" + one + ", " + two + ", " + three + ", " + four + "]");
3102 Range18.create = create;
3103 function is2(value) {
3104 var candidate = value;
3105 return Is.objectLiteral(candidate) && Position10.is(candidate.start) && Position10.is(candidate.end);
3108 })(Range17 || (Range17 = {}));
3110 (function(Location5) {
3111 function create(uri, range) {
3112 return {uri, range};
3114 Location5.create = create;
3115 function is2(value) {
3116 var candidate = value;
3117 return Is.defined(candidate) && Range17.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));
3120 })(Location4 || (Location4 = {}));
3122 (function(LocationLink2) {
3123 function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {
3124 return {targetUri, targetRange, targetSelectionRange, originSelectionRange};
3126 LocationLink2.create = create;
3127 function is2(value) {
3128 var candidate = value;
3129 return Is.defined(candidate) && Range17.is(candidate.targetRange) && Is.string(candidate.targetUri) && (Range17.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange)) && (Range17.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));
3131 LocationLink2.is = is2;
3132 })(LocationLink || (LocationLink = {}));
3135 function create(red, green, blue, alpha) {
3143 Color2.create = create;
3144 function is2(value) {
3145 var candidate = value;
3146 return Is.numberRange(candidate.red, 0, 1) && Is.numberRange(candidate.green, 0, 1) && Is.numberRange(candidate.blue, 0, 1) && Is.numberRange(candidate.alpha, 0, 1);
3149 })(Color || (Color = {}));
3150 var ColorInformation;
3151 (function(ColorInformation2) {
3152 function create(range, color) {
3158 ColorInformation2.create = create;
3159 function is2(value) {
3160 var candidate = value;
3161 return Range17.is(candidate.range) && Color.is(candidate.color);
3163 ColorInformation2.is = is2;
3164 })(ColorInformation || (ColorInformation = {}));
3165 var ColorPresentation;
3166 (function(ColorPresentation2) {
3167 function create(label, textEdit, additionalTextEdits) {
3174 ColorPresentation2.create = create;
3175 function is2(value) {
3176 var candidate = value;
3177 return Is.string(candidate.label) && (Is.undefined(candidate.textEdit) || TextEdit6.is(candidate)) && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit6.is));
3179 ColorPresentation2.is = is2;
3180 })(ColorPresentation || (ColorPresentation = {}));
3181 var FoldingRangeKind;
3182 (function(FoldingRangeKind2) {
3183 FoldingRangeKind2["Comment"] = "comment";
3184 FoldingRangeKind2["Imports"] = "imports";
3185 FoldingRangeKind2["Region"] = "region";
3186 })(FoldingRangeKind || (FoldingRangeKind = {}));
3188 (function(FoldingRange3) {
3189 function create(startLine, endLine, startCharacter, endCharacter, kind) {
3194 if (Is.defined(startCharacter)) {
3195 result.startCharacter = startCharacter;
3197 if (Is.defined(endCharacter)) {
3198 result.endCharacter = endCharacter;
3200 if (Is.defined(kind)) {
3205 FoldingRange3.create = create;
3206 function is2(value) {
3207 var candidate = value;
3208 return Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind));
3210 FoldingRange3.is = is2;
3211 })(FoldingRange2 || (FoldingRange2 = {}));
3212 var DiagnosticRelatedInformation2;
3213 (function(DiagnosticRelatedInformation3) {
3214 function create(location, message) {
3220 DiagnosticRelatedInformation3.create = create;
3221 function is2(value) {
3222 var candidate = value;
3223 return Is.defined(candidate) && Location4.is(candidate.location) && Is.string(candidate.message);
3225 DiagnosticRelatedInformation3.is = is2;
3226 })(DiagnosticRelatedInformation2 || (DiagnosticRelatedInformation2 = {}));
3227 var DiagnosticSeverity3;
3228 (function(DiagnosticSeverity4) {
3229 DiagnosticSeverity4.Error = 1;
3230 DiagnosticSeverity4.Warning = 2;
3231 DiagnosticSeverity4.Information = 3;
3232 DiagnosticSeverity4.Hint = 4;
3233 })(DiagnosticSeverity3 || (DiagnosticSeverity3 = {}));
3235 (function(DiagnosticTag4) {
3236 DiagnosticTag4.Unnecessary = 1;
3237 DiagnosticTag4.Deprecated = 2;
3238 })(DiagnosticTag3 || (DiagnosticTag3 = {}));
3239 var CodeDescription;
3240 (function(CodeDescription2) {
3241 function is2(value) {
3242 var candidate = value;
3243 return candidate !== void 0 && candidate !== null && Is.string(candidate.href);
3245 CodeDescription2.is = is2;
3246 })(CodeDescription || (CodeDescription = {}));
3248 (function(Diagnostic7) {
3249 function create(range, message, severity, code, source, relatedInformation) {
3250 var result = {range, message};
3251 if (Is.defined(severity)) {
3252 result.severity = severity;
3254 if (Is.defined(code)) {
3257 if (Is.defined(source)) {
3258 result.source = source;
3260 if (Is.defined(relatedInformation)) {
3261 result.relatedInformation = relatedInformation;
3265 Diagnostic7.create = create;
3266 function is2(value) {
3268 var candidate = value;
3269 return Is.defined(candidate) && Range17.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.undefined(candidate.codeDescription) || Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation2.is));
3271 Diagnostic7.is = is2;
3272 })(Diagnostic6 || (Diagnostic6 = {}));
3274 (function(Command6) {
3275 function create(title, command) {
3277 for (var _i = 2; _i < arguments.length; _i++) {
3278 args[_i - 2] = arguments[_i];
3280 var result = {title, command};
3281 if (Is.defined(args) && args.length > 0) {
3282 result.arguments = args;
3286 Command6.create = create;
3287 function is2(value) {
3288 var candidate = value;
3289 return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);
3292 })(Command5 || (Command5 = {}));
3294 (function(TextEdit7) {
3295 function replace(range, newText) {
3296 return {range, newText};
3298 TextEdit7.replace = replace;
3299 function insert(position, newText) {
3300 return {range: {start: position, end: position}, newText};
3302 TextEdit7.insert = insert;
3303 function del(range) {
3304 return {range, newText: ""};
3306 TextEdit7.del = del;
3307 function is2(value) {
3308 var candidate = value;
3309 return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range17.is(candidate.range);
3312 })(TextEdit6 || (TextEdit6 = {}));
3313 var ChangeAnnotation;
3314 (function(ChangeAnnotation2) {
3315 function create(label, needsConfirmation, description) {
3316 var result = {label};
3317 if (needsConfirmation !== void 0) {
3318 result.needsConfirmation = needsConfirmation;
3320 if (description !== void 0) {
3321 result.description = description;
3325 ChangeAnnotation2.create = create;
3326 function is2(value) {
3327 var candidate = value;
3328 return candidate !== void 0 && Is.objectLiteral(candidate) && Is.string(candidate.label) && (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === void 0) && (Is.string(candidate.description) || candidate.description === void 0);
3330 ChangeAnnotation2.is = is2;
3331 })(ChangeAnnotation || (ChangeAnnotation = {}));
3332 var ChangeAnnotationIdentifier;
3333 (function(ChangeAnnotationIdentifier2) {
3334 function is2(value) {
3335 var candidate = value;
3336 return typeof candidate === "string";
3338 ChangeAnnotationIdentifier2.is = is2;
3339 })(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));
3340 var AnnotatedTextEdit;
3341 (function(AnnotatedTextEdit2) {
3342 function replace(range, newText, annotation) {
3343 return {range, newText, annotationId: annotation};
3345 AnnotatedTextEdit2.replace = replace;
3346 function insert(position, newText, annotation) {
3347 return {range: {start: position, end: position}, newText, annotationId: annotation};
3349 AnnotatedTextEdit2.insert = insert;
3350 function del(range, annotation) {
3351 return {range, newText: "", annotationId: annotation};
3353 AnnotatedTextEdit2.del = del;
3354 function is2(value) {
3355 var candidate = value;
3356 return TextEdit6.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));
3358 AnnotatedTextEdit2.is = is2;
3359 })(AnnotatedTextEdit || (AnnotatedTextEdit = {}));
3360 var TextDocumentEdit;
3361 (function(TextDocumentEdit2) {
3362 function create(textDocument, edits) {
3363 return {textDocument, edits};
3365 TextDocumentEdit2.create = create;
3366 function is2(value) {
3367 var candidate = value;
3368 return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits);
3370 TextDocumentEdit2.is = is2;
3371 })(TextDocumentEdit || (TextDocumentEdit = {}));
3373 (function(CreateFile2) {
3374 function create(uri, options, annotation) {
3379 if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {
3380 result.options = options;
3382 if (annotation !== void 0) {
3383 result.annotationId = annotation;
3387 CreateFile2.create = create;
3388 function is2(value) {
3389 var candidate = value;
3390 return candidate && candidate.kind === "create" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));
3392 CreateFile2.is = is2;
3393 })(CreateFile || (CreateFile = {}));
3395 (function(RenameFile2) {
3396 function create(oldUri, newUri, options, annotation) {
3402 if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {
3403 result.options = options;
3405 if (annotation !== void 0) {
3406 result.annotationId = annotation;
3410 RenameFile2.create = create;
3411 function is2(value) {
3412 var candidate = value;
3413 return candidate && candidate.kind === "rename" && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === void 0 || (candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));
3415 RenameFile2.is = is2;
3416 })(RenameFile || (RenameFile = {}));
3418 (function(DeleteFile2) {
3419 function create(uri, options, annotation) {
3424 if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {
3425 result.options = options;
3427 if (annotation !== void 0) {
3428 result.annotationId = annotation;
3432 DeleteFile2.create = create;
3433 function is2(value) {
3434 var candidate = value;
3435 return candidate && candidate.kind === "delete" && Is.string(candidate.uri) && (candidate.options === void 0 || (candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))) && (candidate.annotationId === void 0 || ChangeAnnotationIdentifier.is(candidate.annotationId));
3437 DeleteFile2.is = is2;
3438 })(DeleteFile || (DeleteFile = {}));
3440 (function(WorkspaceEdit7) {
3441 function is2(value) {
3442 var candidate = value;
3443 return candidate && (candidate.changes !== void 0 || candidate.documentChanges !== void 0) && (candidate.documentChanges === void 0 || candidate.documentChanges.every(function(change) {
3444 if (Is.string(change.kind)) {
3445 return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);
3447 return TextDocumentEdit.is(change);
3451 WorkspaceEdit7.is = is2;
3452 })(WorkspaceEdit6 || (WorkspaceEdit6 = {}));
3453 var TextEditChangeImpl = function() {
3454 function TextEditChangeImpl2(edits, changeAnnotations) {
3456 this.changeAnnotations = changeAnnotations;
3458 TextEditChangeImpl2.prototype.insert = function(position, newText, annotation) {
3461 if (annotation === void 0) {
3462 edit = TextEdit6.insert(position, newText);
3463 } else if (ChangeAnnotationIdentifier.is(annotation)) {
3465 edit = AnnotatedTextEdit.insert(position, newText, annotation);
3467 this.assertChangeAnnotations(this.changeAnnotations);
3468 id = this.changeAnnotations.manage(annotation);
3469 edit = AnnotatedTextEdit.insert(position, newText, id);
3471 this.edits.push(edit);
3472 if (id !== void 0) {
3476 TextEditChangeImpl2.prototype.replace = function(range, newText, annotation) {
3479 if (annotation === void 0) {
3480 edit = TextEdit6.replace(range, newText);
3481 } else if (ChangeAnnotationIdentifier.is(annotation)) {
3483 edit = AnnotatedTextEdit.replace(range, newText, annotation);
3485 this.assertChangeAnnotations(this.changeAnnotations);
3486 id = this.changeAnnotations.manage(annotation);
3487 edit = AnnotatedTextEdit.replace(range, newText, id);
3489 this.edits.push(edit);
3490 if (id !== void 0) {
3494 TextEditChangeImpl2.prototype.delete = function(range, annotation) {
3497 if (annotation === void 0) {
3498 edit = TextEdit6.del(range);
3499 } else if (ChangeAnnotationIdentifier.is(annotation)) {
3501 edit = AnnotatedTextEdit.del(range, annotation);
3503 this.assertChangeAnnotations(this.changeAnnotations);
3504 id = this.changeAnnotations.manage(annotation);
3505 edit = AnnotatedTextEdit.del(range, id);
3507 this.edits.push(edit);
3508 if (id !== void 0) {
3512 TextEditChangeImpl2.prototype.add = function(edit) {
3513 this.edits.push(edit);
3515 TextEditChangeImpl2.prototype.all = function() {
3518 TextEditChangeImpl2.prototype.clear = function() {
3519 this.edits.splice(0, this.edits.length);
3521 TextEditChangeImpl2.prototype.assertChangeAnnotations = function(value) {
3522 if (value === void 0) {
3523 throw new Error("Text edit change is not configured to manage change annotations.");
3526 return TextEditChangeImpl2;
3528 var ChangeAnnotations = function() {
3529 function ChangeAnnotations2(annotations) {
3530 this._annotations = annotations === void 0 ? Object.create(null) : annotations;
3534 ChangeAnnotations2.prototype.all = function() {
3535 return this._annotations;
3537 Object.defineProperty(ChangeAnnotations2.prototype, "size", {
3544 ChangeAnnotations2.prototype.manage = function(idOrAnnotation, annotation) {
3546 if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {
3547 id = idOrAnnotation;
3550 annotation = idOrAnnotation;
3552 if (this._annotations[id] !== void 0) {
3553 throw new Error("Id " + id + " is already in use.");
3555 if (annotation === void 0) {
3556 throw new Error("No annotation provided for id " + id);
3558 this._annotations[id] = annotation;
3562 ChangeAnnotations2.prototype.nextId = function() {
3564 return this._counter.toString();
3566 return ChangeAnnotations2;
3568 var WorkspaceChange = function() {
3569 function WorkspaceChange2(workspaceEdit) {
3571 this._textEditChanges = Object.create(null);
3572 if (workspaceEdit !== void 0) {
3573 this._workspaceEdit = workspaceEdit;
3574 if (workspaceEdit.documentChanges) {
3575 this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);
3576 workspaceEdit.changeAnnotations = this._changeAnnotations.all();
3577 workspaceEdit.documentChanges.forEach(function(change) {
3578 if (TextDocumentEdit.is(change)) {
3579 var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations);
3580 _this._textEditChanges[change.textDocument.uri] = textEditChange;
3583 } else if (workspaceEdit.changes) {
3584 Object.keys(workspaceEdit.changes).forEach(function(key) {
3585 var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);
3586 _this._textEditChanges[key] = textEditChange;
3590 this._workspaceEdit = {};
3593 Object.defineProperty(WorkspaceChange2.prototype, "edit", {
3595 this.initDocumentChanges();
3596 if (this._changeAnnotations !== void 0) {
3597 if (this._changeAnnotations.size === 0) {
3598 this._workspaceEdit.changeAnnotations = void 0;
3600 this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();
3603 return this._workspaceEdit;
3608 WorkspaceChange2.prototype.getTextEditChange = function(key) {
3609 if (OptionalVersionedTextDocumentIdentifier.is(key)) {
3610 this.initDocumentChanges();
3611 if (this._workspaceEdit.documentChanges === void 0) {
3612 throw new Error("Workspace edit is not configured for document changes.");
3614 var textDocument = {uri: key.uri, version: key.version};
3615 var result = this._textEditChanges[textDocument.uri];
3618 var textDocumentEdit = {
3622 this._workspaceEdit.documentChanges.push(textDocumentEdit);
3623 result = new TextEditChangeImpl(edits, this._changeAnnotations);
3624 this._textEditChanges[textDocument.uri] = result;
3629 if (this._workspaceEdit.changes === void 0) {
3630 throw new Error("Workspace edit is not configured for normal text edit changes.");
3632 var result = this._textEditChanges[key];
3635 this._workspaceEdit.changes[key] = edits;
3636 result = new TextEditChangeImpl(edits);
3637 this._textEditChanges[key] = result;
3642 WorkspaceChange2.prototype.initDocumentChanges = function() {
3643 if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {
3644 this._changeAnnotations = new ChangeAnnotations();
3645 this._workspaceEdit.documentChanges = [];
3646 this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();
3649 WorkspaceChange2.prototype.initChanges = function() {
3650 if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) {
3651 this._workspaceEdit.changes = Object.create(null);
3654 WorkspaceChange2.prototype.createFile = function(uri, optionsOrAnnotation, options) {
3655 this.initDocumentChanges();
3656 if (this._workspaceEdit.documentChanges === void 0) {
3657 throw new Error("Workspace edit is not configured for document changes.");
3660 if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {
3661 annotation = optionsOrAnnotation;
3663 options = optionsOrAnnotation;
3667 if (annotation === void 0) {
3668 operation = CreateFile.create(uri, options);
3670 id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);
3671 operation = CreateFile.create(uri, options, id);
3673 this._workspaceEdit.documentChanges.push(operation);
3674 if (id !== void 0) {
3678 WorkspaceChange2.prototype.renameFile = function(oldUri, newUri, optionsOrAnnotation, options) {
3679 this.initDocumentChanges();
3680 if (this._workspaceEdit.documentChanges === void 0) {
3681 throw new Error("Workspace edit is not configured for document changes.");
3684 if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {
3685 annotation = optionsOrAnnotation;
3687 options = optionsOrAnnotation;
3691 if (annotation === void 0) {
3692 operation = RenameFile.create(oldUri, newUri, options);
3694 id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);
3695 operation = RenameFile.create(oldUri, newUri, options, id);
3697 this._workspaceEdit.documentChanges.push(operation);
3698 if (id !== void 0) {
3702 WorkspaceChange2.prototype.deleteFile = function(uri, optionsOrAnnotation, options) {
3703 this.initDocumentChanges();
3704 if (this._workspaceEdit.documentChanges === void 0) {
3705 throw new Error("Workspace edit is not configured for document changes.");
3708 if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {
3709 annotation = optionsOrAnnotation;
3711 options = optionsOrAnnotation;
3715 if (annotation === void 0) {
3716 operation = DeleteFile.create(uri, options);
3718 id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);
3719 operation = DeleteFile.create(uri, options, id);
3721 this._workspaceEdit.documentChanges.push(operation);
3722 if (id !== void 0) {
3726 return WorkspaceChange2;
3728 var TextDocumentIdentifier;
3729 (function(TextDocumentIdentifier2) {
3730 function create(uri) {
3733 TextDocumentIdentifier2.create = create;
3734 function is2(value) {
3735 var candidate = value;
3736 return Is.defined(candidate) && Is.string(candidate.uri);
3738 TextDocumentIdentifier2.is = is2;
3739 })(TextDocumentIdentifier || (TextDocumentIdentifier = {}));
3740 var VersionedTextDocumentIdentifier;
3741 (function(VersionedTextDocumentIdentifier2) {
3742 function create(uri, version) {
3743 return {uri, version};
3745 VersionedTextDocumentIdentifier2.create = create;
3746 function is2(value) {
3747 var candidate = value;
3748 return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);
3750 VersionedTextDocumentIdentifier2.is = is2;
3751 })(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));
3752 var OptionalVersionedTextDocumentIdentifier;
3753 (function(OptionalVersionedTextDocumentIdentifier2) {
3754 function create(uri, version) {
3755 return {uri, version};
3757 OptionalVersionedTextDocumentIdentifier2.create = create;
3758 function is2(value) {
3759 var candidate = value;
3760 return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));
3762 OptionalVersionedTextDocumentIdentifier2.is = is2;
3763 })(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {}));
3764 var TextDocumentItem;
3765 (function(TextDocumentItem2) {
3766 function create(uri, languageId, version, text) {
3767 return {uri, languageId, version, text};
3769 TextDocumentItem2.create = create;
3770 function is2(value) {
3771 var candidate = value;
3772 return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);
3774 TextDocumentItem2.is = is2;
3775 })(TextDocumentItem || (TextDocumentItem = {}));
3777 (function(MarkupKind4) {
3778 MarkupKind4.PlainText = "plaintext";
3779 MarkupKind4.Markdown = "markdown";
3780 })(MarkupKind3 || (MarkupKind3 = {}));
3781 (function(MarkupKind4) {
3782 function is2(value) {
3783 var candidate = value;
3784 return candidate === MarkupKind4.PlainText || candidate === MarkupKind4.Markdown;
3786 MarkupKind4.is = is2;
3787 })(MarkupKind3 || (MarkupKind3 = {}));
3789 (function(MarkupContent4) {
3790 function is2(value) {
3791 var candidate = value;
3792 return Is.objectLiteral(value) && MarkupKind3.is(candidate.kind) && Is.string(candidate.value);
3794 MarkupContent4.is = is2;
3795 })(MarkupContent3 || (MarkupContent3 = {}));
3796 var CompletionItemKind3;
3797 (function(CompletionItemKind4) {
3798 CompletionItemKind4.Text = 1;
3799 CompletionItemKind4.Method = 2;
3800 CompletionItemKind4.Function = 3;
3801 CompletionItemKind4.Constructor = 4;
3802 CompletionItemKind4.Field = 5;
3803 CompletionItemKind4.Variable = 6;
3804 CompletionItemKind4.Class = 7;
3805 CompletionItemKind4.Interface = 8;
3806 CompletionItemKind4.Module = 9;
3807 CompletionItemKind4.Property = 10;
3808 CompletionItemKind4.Unit = 11;
3809 CompletionItemKind4.Value = 12;
3810 CompletionItemKind4.Enum = 13;
3811 CompletionItemKind4.Keyword = 14;
3812 CompletionItemKind4.Snippet = 15;
3813 CompletionItemKind4.Color = 16;
3814 CompletionItemKind4.File = 17;
3815 CompletionItemKind4.Reference = 18;
3816 CompletionItemKind4.Folder = 19;
3817 CompletionItemKind4.EnumMember = 20;
3818 CompletionItemKind4.Constant = 21;
3819 CompletionItemKind4.Struct = 22;
3820 CompletionItemKind4.Event = 23;
3821 CompletionItemKind4.Operator = 24;
3822 CompletionItemKind4.TypeParameter = 25;
3823 })(CompletionItemKind3 || (CompletionItemKind3 = {}));
3824 var InsertTextFormat3;
3825 (function(InsertTextFormat4) {
3826 InsertTextFormat4.PlainText = 1;
3827 InsertTextFormat4.Snippet = 2;
3828 })(InsertTextFormat3 || (InsertTextFormat3 = {}));
3829 var CompletionItemTag2;
3830 (function(CompletionItemTag3) {
3831 CompletionItemTag3.Deprecated = 1;
3832 })(CompletionItemTag2 || (CompletionItemTag2 = {}));
3833 var InsertReplaceEdit;
3834 (function(InsertReplaceEdit2) {
3835 function create(newText, insert, replace) {
3836 return {newText, insert, replace};
3838 InsertReplaceEdit2.create = create;
3839 function is2(value) {
3840 var candidate = value;
3841 return candidate && Is.string(candidate.newText) && Range17.is(candidate.insert) && Range17.is(candidate.replace);
3843 InsertReplaceEdit2.is = is2;
3844 })(InsertReplaceEdit || (InsertReplaceEdit = {}));
3846 (function(InsertTextMode2) {
3847 InsertTextMode2.asIs = 1;
3848 InsertTextMode2.adjustIndentation = 2;
3849 })(InsertTextMode || (InsertTextMode = {}));
3850 var CompletionItem4;
3851 (function(CompletionItem5) {
3852 function create(label) {
3855 CompletionItem5.create = create;
3856 })(CompletionItem4 || (CompletionItem4 = {}));
3857 var CompletionList3;
3858 (function(CompletionList4) {
3859 function create(items, isIncomplete) {
3860 return {items: items ? items : [], isIncomplete: !!isIncomplete};
3862 CompletionList4.create = create;
3863 })(CompletionList3 || (CompletionList3 = {}));
3865 (function(MarkedString2) {
3866 function fromPlainText(plainText) {
3867 return plainText.replace(/[\\`*_{}[\]()#+\-.!]/g, "\\$&");
3869 MarkedString2.fromPlainText = fromPlainText;
3870 function is2(value) {
3871 var candidate = value;
3872 return Is.string(candidate) || Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value);
3874 MarkedString2.is = is2;
3875 })(MarkedString || (MarkedString = {}));
3878 function is2(value) {
3879 var candidate = value;
3880 return !!candidate && Is.objectLiteral(candidate) && (MarkupContent3.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range17.is(value.range));
3883 })(Hover || (Hover = {}));
3884 var ParameterInformation;
3885 (function(ParameterInformation2) {
3886 function create(label, documentation) {
3887 return documentation ? {label, documentation} : {label};
3889 ParameterInformation2.create = create;
3890 })(ParameterInformation || (ParameterInformation = {}));
3891 var SignatureInformation;
3892 (function(SignatureInformation2) {
3893 function create(label, documentation) {
3894 var parameters = [];
3895 for (var _i = 2; _i < arguments.length; _i++) {
3896 parameters[_i - 2] = arguments[_i];
3898 var result = {label};
3899 if (Is.defined(documentation)) {
3900 result.documentation = documentation;
3902 if (Is.defined(parameters)) {
3903 result.parameters = parameters;
3905 result.parameters = [];
3909 SignatureInformation2.create = create;
3910 })(SignatureInformation || (SignatureInformation = {}));
3911 var DocumentHighlightKind2;
3912 (function(DocumentHighlightKind3) {
3913 DocumentHighlightKind3.Text = 1;
3914 DocumentHighlightKind3.Read = 2;
3915 DocumentHighlightKind3.Write = 3;
3916 })(DocumentHighlightKind2 || (DocumentHighlightKind2 = {}));
3917 var DocumentHighlight2;
3918 (function(DocumentHighlight3) {
3919 function create(range, kind) {
3920 var result = {range};
3921 if (Is.number(kind)) {
3926 DocumentHighlight3.create = create;
3927 })(DocumentHighlight2 || (DocumentHighlight2 = {}));
3929 (function(SymbolKind6) {
3930 SymbolKind6.File = 1;
3931 SymbolKind6.Module = 2;
3932 SymbolKind6.Namespace = 3;
3933 SymbolKind6.Package = 4;
3934 SymbolKind6.Class = 5;
3935 SymbolKind6.Method = 6;
3936 SymbolKind6.Property = 7;
3937 SymbolKind6.Field = 8;
3938 SymbolKind6.Constructor = 9;
3939 SymbolKind6.Enum = 10;
3940 SymbolKind6.Interface = 11;
3941 SymbolKind6.Function = 12;
3942 SymbolKind6.Variable = 13;
3943 SymbolKind6.Constant = 14;
3944 SymbolKind6.String = 15;
3945 SymbolKind6.Number = 16;
3946 SymbolKind6.Boolean = 17;
3947 SymbolKind6.Array = 18;
3948 SymbolKind6.Object = 19;
3949 SymbolKind6.Key = 20;
3950 SymbolKind6.Null = 21;
3951 SymbolKind6.EnumMember = 22;
3952 SymbolKind6.Struct = 23;
3953 SymbolKind6.Event = 24;
3954 SymbolKind6.Operator = 25;
3955 SymbolKind6.TypeParameter = 26;
3956 })(SymbolKind5 || (SymbolKind5 = {}));
3958 (function(SymbolTag5) {
3959 SymbolTag5.Deprecated = 1;
3960 })(SymbolTag4 || (SymbolTag4 = {}));
3961 var SymbolInformation2;
3962 (function(SymbolInformation3) {
3963 function create(name, kind, range, uri, containerName) {
3967 location: {uri, range}
3969 if (containerName) {
3970 result.containerName = containerName;
3974 SymbolInformation3.create = create;
3975 })(SymbolInformation2 || (SymbolInformation2 = {}));
3976 var DocumentSymbol2;
3977 (function(DocumentSymbol3) {
3978 function create(name, detail, kind, range, selectionRange, children) {
3986 if (children !== void 0) {
3987 result.children = children;
3991 DocumentSymbol3.create = create;
3992 function is2(value) {
3993 var candidate = value;
3994 return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range17.is(candidate.range) && Range17.is(candidate.selectionRange) && (candidate.detail === void 0 || Is.string(candidate.detail)) && (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) && (candidate.children === void 0 || Array.isArray(candidate.children)) && (candidate.tags === void 0 || Array.isArray(candidate.tags));
3996 DocumentSymbol3.is = is2;
3997 })(DocumentSymbol2 || (DocumentSymbol2 = {}));
3998 var CodeActionKind6;
3999 (function(CodeActionKind7) {
4000 CodeActionKind7.Empty = "";
4001 CodeActionKind7.QuickFix = "quickfix";
4002 CodeActionKind7.Refactor = "refactor";
4003 CodeActionKind7.RefactorExtract = "refactor.extract";
4004 CodeActionKind7.RefactorInline = "refactor.inline";
4005 CodeActionKind7.RefactorRewrite = "refactor.rewrite";
4006 CodeActionKind7.Source = "source";
4007 CodeActionKind7.SourceOrganizeImports = "source.organizeImports";
4008 CodeActionKind7.SourceFixAll = "source.fixAll";
4009 })(CodeActionKind6 || (CodeActionKind6 = {}));
4010 var CodeActionContext6;
4011 (function(CodeActionContext7) {
4012 function create(diagnostics, only) {
4013 var result = {diagnostics};
4014 if (only !== void 0 && only !== null) {
4019 CodeActionContext7.create = create;
4020 function is2(value) {
4021 var candidate = value;
4022 return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic6.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string));
4024 CodeActionContext7.is = is2;
4025 })(CodeActionContext6 || (CodeActionContext6 = {}));
4027 (function(CodeAction7) {
4028 function create(title, kindOrCommandOrEdit, kind) {
4029 var result = {title};
4030 var checkKind = true;
4031 if (typeof kindOrCommandOrEdit === "string") {
4033 result.kind = kindOrCommandOrEdit;
4034 } else if (Command5.is(kindOrCommandOrEdit)) {
4035 result.command = kindOrCommandOrEdit;
4037 result.edit = kindOrCommandOrEdit;
4039 if (checkKind && kind !== void 0) {
4044 CodeAction7.create = create;
4045 function is2(value) {
4046 var candidate = value;
4047 return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic6.is)) && (candidate.kind === void 0 || Is.string(candidate.kind)) && (candidate.edit !== void 0 || candidate.command !== void 0) && (candidate.command === void 0 || Command5.is(candidate.command)) && (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) && (candidate.edit === void 0 || WorkspaceEdit6.is(candidate.edit));
4049 CodeAction7.is = is2;
4050 })(CodeAction6 || (CodeAction6 = {}));
4052 (function(CodeLens3) {
4053 function create(range, data) {
4054 var result = {range};
4055 if (Is.defined(data)) {
4060 CodeLens3.create = create;
4061 function is2(value) {
4062 var candidate = value;
4063 return Is.defined(candidate) && Range17.is(candidate.range) && (Is.undefined(candidate.command) || Command5.is(candidate.command));
4066 })(CodeLens2 || (CodeLens2 = {}));
4067 var FormattingOptions;
4068 (function(FormattingOptions2) {
4069 function create(tabSize, insertSpaces) {
4070 return {tabSize, insertSpaces};
4072 FormattingOptions2.create = create;
4073 function is2(value) {
4074 var candidate = value;
4075 return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);
4077 FormattingOptions2.is = is2;
4078 })(FormattingOptions || (FormattingOptions = {}));
4080 (function(DocumentLink2) {
4081 function create(range, target, data) {
4082 return {range, target, data};
4084 DocumentLink2.create = create;
4085 function is2(value) {
4086 var candidate = value;
4087 return Is.defined(candidate) && Range17.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));
4089 DocumentLink2.is = is2;
4090 })(DocumentLink || (DocumentLink = {}));
4092 (function(SelectionRange2) {
4093 function create(range, parent) {
4094 return {range, parent};
4096 SelectionRange2.create = create;
4097 function is2(value) {
4098 var candidate = value;
4099 return candidate !== void 0 && Range17.is(candidate.range) && (candidate.parent === void 0 || SelectionRange2.is(candidate.parent));
4101 SelectionRange2.is = is2;
4102 })(SelectionRange || (SelectionRange = {}));
4103 var EOL = ["\n", "\r\n", "\r"];
4105 (function(TextDocument14) {
4106 function create(uri, languageId, version, content) {
4107 return new FullTextDocument(uri, languageId, version, content);
4109 TextDocument14.create = create;
4110 function is2(value) {
4111 var candidate = value;
4112 return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;
4114 TextDocument14.is = is2;
4115 function applyEdits(document, edits) {
4116 var text = document.getText();
4117 var sortedEdits = mergeSort(edits, function(a, b) {
4118 var diff = a.range.start.line - b.range.start.line;
4120 return a.range.start.character - b.range.start.character;
4124 var lastModifiedOffset = text.length;
4125 for (var i = sortedEdits.length - 1; i >= 0; i--) {
4126 var e = sortedEdits[i];
4127 var startOffset = document.offsetAt(e.range.start);
4128 var endOffset = document.offsetAt(e.range.end);
4129 if (endOffset <= lastModifiedOffset) {
4130 text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);
4132 throw new Error("Overlapping edit");
4134 lastModifiedOffset = startOffset;
4138 TextDocument14.applyEdits = applyEdits;
4139 function mergeSort(data, compare) {
4140 if (data.length <= 1) {
4143 var p = data.length / 2 | 0;
4144 var left = data.slice(0, p);
4145 var right = data.slice(p);
4146 mergeSort(left, compare);
4147 mergeSort(right, compare);
4151 while (leftIdx < left.length && rightIdx < right.length) {
4152 var ret = compare(left[leftIdx], right[rightIdx]);
4154 data[i++] = left[leftIdx++];
4156 data[i++] = right[rightIdx++];
4159 while (leftIdx < left.length) {
4160 data[i++] = left[leftIdx++];
4162 while (rightIdx < right.length) {
4163 data[i++] = right[rightIdx++];
4167 })(TextDocument13 || (TextDocument13 = {}));
4168 var FullTextDocument = function() {
4169 function FullTextDocument2(uri, languageId, version, content) {
4171 this._languageId = languageId;
4172 this._version = version;
4173 this._content = content;
4174 this._lineOffsets = void 0;
4176 Object.defineProperty(FullTextDocument2.prototype, "uri", {
4183 Object.defineProperty(FullTextDocument2.prototype, "languageId", {
4185 return this._languageId;
4190 Object.defineProperty(FullTextDocument2.prototype, "version", {
4192 return this._version;
4197 FullTextDocument2.prototype.getText = function(range) {
4199 var start = this.offsetAt(range.start);
4200 var end = this.offsetAt(range.end);
4201 return this._content.substring(start, end);
4203 return this._content;
4205 FullTextDocument2.prototype.update = function(event, version) {
4206 this._content = event.text;
4207 this._version = version;
4208 this._lineOffsets = void 0;
4210 FullTextDocument2.prototype.getLineOffsets = function() {
4211 if (this._lineOffsets === void 0) {
4212 var lineOffsets = [];
4213 var text = this._content;
4214 var isLineStart = true;
4215 for (var i = 0; i < text.length; i++) {
4217 lineOffsets.push(i);
4218 isLineStart = false;
4220 var ch = text.charAt(i);
4221 isLineStart = ch === "\r" || ch === "\n";
4222 if (ch === "\r" && i + 1 < text.length && text.charAt(i + 1) === "\n") {
4226 if (isLineStart && text.length > 0) {
4227 lineOffsets.push(text.length);
4229 this._lineOffsets = lineOffsets;
4231 return this._lineOffsets;
4233 FullTextDocument2.prototype.positionAt = function(offset) {
4234 offset = Math.max(Math.min(offset, this._content.length), 0);
4235 var lineOffsets = this.getLineOffsets();
4236 var low = 0, high = lineOffsets.length;
4238 return Position10.create(0, offset);
4240 while (low < high) {
4241 var mid = Math.floor((low + high) / 2);
4242 if (lineOffsets[mid] > offset) {
4249 return Position10.create(line, offset - lineOffsets[line]);
4251 FullTextDocument2.prototype.offsetAt = function(position) {
4252 var lineOffsets = this.getLineOffsets();
4253 if (position.line >= lineOffsets.length) {
4254 return this._content.length;
4255 } else if (position.line < 0) {
4258 var lineOffset = lineOffsets[position.line];
4259 var nextLineOffset = position.line + 1 < lineOffsets.length ? lineOffsets[position.line + 1] : this._content.length;
4260 return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);
4262 Object.defineProperty(FullTextDocument2.prototype, "lineCount", {
4264 return this.getLineOffsets().length;
4269 return FullTextDocument2;
4273 var toString2 = Object.prototype.toString;
4274 function defined(value) {
4275 return typeof value !== "undefined";
4277 Is2.defined = defined;
4278 function undefined2(value) {
4279 return typeof value === "undefined";
4281 Is2.undefined = undefined2;
4282 function boolean2(value) {
4283 return value === true || value === false;
4285 Is2.boolean = boolean2;
4286 function string2(value) {
4287 return toString2.call(value) === "[object String]";
4289 Is2.string = string2;
4290 function number(value) {
4291 return toString2.call(value) === "[object Number]";
4293 Is2.number = number;
4294 function numberRange(value, min, max) {
4295 return toString2.call(value) === "[object Number]" && min <= value && value <= max;
4297 Is2.numberRange = numberRange;
4298 function integer2(value) {
4299 return toString2.call(value) === "[object Number]" && -2147483648 <= value && value <= 2147483647;
4301 Is2.integer = integer2;
4302 function uinteger2(value) {
4303 return toString2.call(value) === "[object Number]" && 0 <= value && value <= 2147483647;
4305 Is2.uinteger = uinteger2;
4306 function func(value) {
4307 return toString2.call(value) === "[object Function]";
4310 function objectLiteral(value) {
4311 return value !== null && typeof value === "object";
4313 Is2.objectLiteral = objectLiteral;
4314 function typedArray(value, check) {
4315 return Array.isArray(value) && value.every(check);
4317 Is2.typedArray = typedArray;
4318 })(Is || (Is = {}));
4321 // node_modules/vscode-languageserver-protocol/lib/common/messages.js
4322 var require_messages2 = __commonJS((exports2) => {
4324 Object.defineProperty(exports2, "__esModule", {value: true});
4325 exports2.ProtocolNotificationType = exports2.ProtocolNotificationType0 = exports2.ProtocolRequestType = exports2.ProtocolRequestType0 = exports2.RegistrationType = void 0;
4326 var vscode_jsonrpc_1 = require_main();
4327 var RegistrationType = class {
4328 constructor(method) {
4329 this.method = method;
4332 exports2.RegistrationType = RegistrationType;
4333 var ProtocolRequestType0 = class extends vscode_jsonrpc_1.RequestType0 {
4334 constructor(method) {
4338 exports2.ProtocolRequestType0 = ProtocolRequestType0;
4339 var ProtocolRequestType = class extends vscode_jsonrpc_1.RequestType {
4340 constructor(method) {
4341 super(method, vscode_jsonrpc_1.ParameterStructures.byName);
4344 exports2.ProtocolRequestType = ProtocolRequestType;
4345 var ProtocolNotificationType0 = class extends vscode_jsonrpc_1.NotificationType0 {
4346 constructor(method) {
4350 exports2.ProtocolNotificationType0 = ProtocolNotificationType0;
4351 var ProtocolNotificationType = class extends vscode_jsonrpc_1.NotificationType {
4352 constructor(method) {
4353 super(method, vscode_jsonrpc_1.ParameterStructures.byName);
4356 exports2.ProtocolNotificationType = ProtocolNotificationType;
4359 // node_modules/vscode-languageserver-protocol/lib/common/utils/is.js
4360 var require_is2 = __commonJS((exports2) => {
4362 Object.defineProperty(exports2, "__esModule", {value: true});
4363 exports2.objectLiteral = exports2.typedArray = exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0;
4364 function boolean2(value) {
4365 return value === true || value === false;
4367 exports2.boolean = boolean2;
4368 function string2(value) {
4369 return typeof value === "string" || value instanceof String;
4371 exports2.string = string2;
4372 function number(value) {
4373 return typeof value === "number" || value instanceof Number;
4375 exports2.number = number;
4376 function error(value) {
4377 return value instanceof Error;
4379 exports2.error = error;
4380 function func(value) {
4381 return typeof value === "function";
4383 exports2.func = func;
4384 function array(value) {
4385 return Array.isArray(value);
4387 exports2.array = array;
4388 function stringArray(value) {
4389 return array(value) && value.every((elem) => string2(elem));
4391 exports2.stringArray = stringArray;
4392 function typedArray(value, check) {
4393 return Array.isArray(value) && value.every(check);
4395 exports2.typedArray = typedArray;
4396 function objectLiteral(value) {
4397 return value !== null && typeof value === "object";
4399 exports2.objectLiteral = objectLiteral;
4402 // node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js
4403 var require_protocol_implementation = __commonJS((exports2) => {
4405 Object.defineProperty(exports2, "__esModule", {value: true});
4406 exports2.ImplementationRequest = void 0;
4407 var messages_1 = require_messages2();
4408 var ImplementationRequest;
4409 (function(ImplementationRequest2) {
4410 ImplementationRequest2.method = "textDocument/implementation";
4411 ImplementationRequest2.type = new messages_1.ProtocolRequestType(ImplementationRequest2.method);
4412 })(ImplementationRequest = exports2.ImplementationRequest || (exports2.ImplementationRequest = {}));
4415 // node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js
4416 var require_protocol_typeDefinition = __commonJS((exports2) => {
4418 Object.defineProperty(exports2, "__esModule", {value: true});
4419 exports2.TypeDefinitionRequest = void 0;
4420 var messages_1 = require_messages2();
4421 var TypeDefinitionRequest;
4422 (function(TypeDefinitionRequest2) {
4423 TypeDefinitionRequest2.method = "textDocument/typeDefinition";
4424 TypeDefinitionRequest2.type = new messages_1.ProtocolRequestType(TypeDefinitionRequest2.method);
4425 })(TypeDefinitionRequest = exports2.TypeDefinitionRequest || (exports2.TypeDefinitionRequest = {}));
4428 // node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolders.js
4429 var require_protocol_workspaceFolders = __commonJS((exports2) => {
4431 Object.defineProperty(exports2, "__esModule", {value: true});
4432 exports2.DidChangeWorkspaceFoldersNotification = exports2.WorkspaceFoldersRequest = void 0;
4433 var messages_1 = require_messages2();
4434 var WorkspaceFoldersRequest;
4435 (function(WorkspaceFoldersRequest2) {
4436 WorkspaceFoldersRequest2.type = new messages_1.ProtocolRequestType0("workspace/workspaceFolders");
4437 })(WorkspaceFoldersRequest = exports2.WorkspaceFoldersRequest || (exports2.WorkspaceFoldersRequest = {}));
4438 var DidChangeWorkspaceFoldersNotification;
4439 (function(DidChangeWorkspaceFoldersNotification2) {
4440 DidChangeWorkspaceFoldersNotification2.type = new messages_1.ProtocolNotificationType("workspace/didChangeWorkspaceFolders");
4441 })(DidChangeWorkspaceFoldersNotification = exports2.DidChangeWorkspaceFoldersNotification || (exports2.DidChangeWorkspaceFoldersNotification = {}));
4444 // node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js
4445 var require_protocol_configuration = __commonJS((exports2) => {
4447 Object.defineProperty(exports2, "__esModule", {value: true});
4448 exports2.ConfigurationRequest = void 0;
4449 var messages_1 = require_messages2();
4450 var ConfigurationRequest;
4451 (function(ConfigurationRequest2) {
4452 ConfigurationRequest2.type = new messages_1.ProtocolRequestType("workspace/configuration");
4453 })(ConfigurationRequest = exports2.ConfigurationRequest || (exports2.ConfigurationRequest = {}));
4456 // node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js
4457 var require_protocol_colorProvider = __commonJS((exports2) => {
4459 Object.defineProperty(exports2, "__esModule", {value: true});
4460 exports2.ColorPresentationRequest = exports2.DocumentColorRequest = void 0;
4461 var messages_1 = require_messages2();
4462 var DocumentColorRequest;
4463 (function(DocumentColorRequest2) {
4464 DocumentColorRequest2.method = "textDocument/documentColor";
4465 DocumentColorRequest2.type = new messages_1.ProtocolRequestType(DocumentColorRequest2.method);
4466 })(DocumentColorRequest = exports2.DocumentColorRequest || (exports2.DocumentColorRequest = {}));
4467 var ColorPresentationRequest;
4468 (function(ColorPresentationRequest2) {
4469 ColorPresentationRequest2.type = new messages_1.ProtocolRequestType("textDocument/colorPresentation");
4470 })(ColorPresentationRequest = exports2.ColorPresentationRequest || (exports2.ColorPresentationRequest = {}));
4473 // node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js
4474 var require_protocol_foldingRange = __commonJS((exports2) => {
4476 Object.defineProperty(exports2, "__esModule", {value: true});
4477 exports2.FoldingRangeRequest = exports2.FoldingRangeKind = void 0;
4478 var messages_1 = require_messages2();
4479 var FoldingRangeKind;
4480 (function(FoldingRangeKind2) {
4481 FoldingRangeKind2["Comment"] = "comment";
4482 FoldingRangeKind2["Imports"] = "imports";
4483 FoldingRangeKind2["Region"] = "region";
4484 })(FoldingRangeKind = exports2.FoldingRangeKind || (exports2.FoldingRangeKind = {}));
4485 var FoldingRangeRequest;
4486 (function(FoldingRangeRequest2) {
4487 FoldingRangeRequest2.method = "textDocument/foldingRange";
4488 FoldingRangeRequest2.type = new messages_1.ProtocolRequestType(FoldingRangeRequest2.method);
4489 })(FoldingRangeRequest = exports2.FoldingRangeRequest || (exports2.FoldingRangeRequest = {}));
4492 // node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js
4493 var require_protocol_declaration = __commonJS((exports2) => {
4495 Object.defineProperty(exports2, "__esModule", {value: true});
4496 exports2.DeclarationRequest = void 0;
4497 var messages_1 = require_messages2();
4498 var DeclarationRequest;
4499 (function(DeclarationRequest2) {
4500 DeclarationRequest2.method = "textDocument/declaration";
4501 DeclarationRequest2.type = new messages_1.ProtocolRequestType(DeclarationRequest2.method);
4502 })(DeclarationRequest = exports2.DeclarationRequest || (exports2.DeclarationRequest = {}));
4505 // node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js
4506 var require_protocol_selectionRange = __commonJS((exports2) => {
4508 Object.defineProperty(exports2, "__esModule", {value: true});
4509 exports2.SelectionRangeRequest = void 0;
4510 var messages_1 = require_messages2();
4511 var SelectionRangeRequest;
4512 (function(SelectionRangeRequest2) {
4513 SelectionRangeRequest2.method = "textDocument/selectionRange";
4514 SelectionRangeRequest2.type = new messages_1.ProtocolRequestType(SelectionRangeRequest2.method);
4515 })(SelectionRangeRequest = exports2.SelectionRangeRequest || (exports2.SelectionRangeRequest = {}));
4518 // node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js
4519 var require_protocol_progress = __commonJS((exports2) => {
4521 Object.defineProperty(exports2, "__esModule", {value: true});
4522 exports2.WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCreateRequest = exports2.WorkDoneProgress = void 0;
4523 var vscode_jsonrpc_1 = require_main();
4524 var messages_1 = require_messages2();
4525 var WorkDoneProgress;
4526 (function(WorkDoneProgress2) {
4527 WorkDoneProgress2.type = new vscode_jsonrpc_1.ProgressType();
4528 function is2(value) {
4529 return value === WorkDoneProgress2.type;
4531 WorkDoneProgress2.is = is2;
4532 })(WorkDoneProgress = exports2.WorkDoneProgress || (exports2.WorkDoneProgress = {}));
4533 var WorkDoneProgressCreateRequest;
4534 (function(WorkDoneProgressCreateRequest2) {
4535 WorkDoneProgressCreateRequest2.type = new messages_1.ProtocolRequestType("window/workDoneProgress/create");
4536 })(WorkDoneProgressCreateRequest = exports2.WorkDoneProgressCreateRequest || (exports2.WorkDoneProgressCreateRequest = {}));
4537 var WorkDoneProgressCancelNotification;
4538 (function(WorkDoneProgressCancelNotification2) {
4539 WorkDoneProgressCancelNotification2.type = new messages_1.ProtocolNotificationType("window/workDoneProgress/cancel");
4540 })(WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCancelNotification || (exports2.WorkDoneProgressCancelNotification = {}));
4543 // node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js
4544 var require_protocol_callHierarchy = __commonJS((exports2) => {
4546 Object.defineProperty(exports2, "__esModule", {value: true});
4547 exports2.CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyIncomingCallsRequest = exports2.CallHierarchyPrepareRequest = void 0;
4548 var messages_1 = require_messages2();
4549 var CallHierarchyPrepareRequest;
4550 (function(CallHierarchyPrepareRequest2) {
4551 CallHierarchyPrepareRequest2.method = "textDocument/prepareCallHierarchy";
4552 CallHierarchyPrepareRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest2.method);
4553 })(CallHierarchyPrepareRequest = exports2.CallHierarchyPrepareRequest || (exports2.CallHierarchyPrepareRequest = {}));
4554 var CallHierarchyIncomingCallsRequest;
4555 (function(CallHierarchyIncomingCallsRequest2) {
4556 CallHierarchyIncomingCallsRequest2.method = "callHierarchy/incomingCalls";
4557 CallHierarchyIncomingCallsRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest2.method);
4558 })(CallHierarchyIncomingCallsRequest = exports2.CallHierarchyIncomingCallsRequest || (exports2.CallHierarchyIncomingCallsRequest = {}));
4559 var CallHierarchyOutgoingCallsRequest;
4560 (function(CallHierarchyOutgoingCallsRequest2) {
4561 CallHierarchyOutgoingCallsRequest2.method = "callHierarchy/outgoingCalls";
4562 CallHierarchyOutgoingCallsRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest2.method);
4563 })(CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyOutgoingCallsRequest || (exports2.CallHierarchyOutgoingCallsRequest = {}));
4566 // node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js
4567 var require_protocol_semanticTokens = __commonJS((exports2) => {
4569 Object.defineProperty(exports2, "__esModule", {value: true});
4570 exports2.SemanticTokensRefreshRequest = exports2.SemanticTokensRangeRequest = exports2.SemanticTokensDeltaRequest = exports2.SemanticTokensRequest = exports2.SemanticTokensRegistrationType = exports2.TokenFormat = exports2.SemanticTokens = exports2.SemanticTokenModifiers = exports2.SemanticTokenTypes = void 0;
4571 var messages_1 = require_messages2();
4572 var SemanticTokenTypes;
4573 (function(SemanticTokenTypes2) {
4574 SemanticTokenTypes2["namespace"] = "namespace";
4575 SemanticTokenTypes2["type"] = "type";
4576 SemanticTokenTypes2["class"] = "class";
4577 SemanticTokenTypes2["enum"] = "enum";
4578 SemanticTokenTypes2["interface"] = "interface";
4579 SemanticTokenTypes2["struct"] = "struct";
4580 SemanticTokenTypes2["typeParameter"] = "typeParameter";
4581 SemanticTokenTypes2["parameter"] = "parameter";
4582 SemanticTokenTypes2["variable"] = "variable";
4583 SemanticTokenTypes2["property"] = "property";
4584 SemanticTokenTypes2["enumMember"] = "enumMember";
4585 SemanticTokenTypes2["event"] = "event";
4586 SemanticTokenTypes2["function"] = "function";
4587 SemanticTokenTypes2["method"] = "method";
4588 SemanticTokenTypes2["macro"] = "macro";
4589 SemanticTokenTypes2["keyword"] = "keyword";
4590 SemanticTokenTypes2["modifier"] = "modifier";
4591 SemanticTokenTypes2["comment"] = "comment";
4592 SemanticTokenTypes2["string"] = "string";
4593 SemanticTokenTypes2["number"] = "number";
4594 SemanticTokenTypes2["regexp"] = "regexp";
4595 SemanticTokenTypes2["operator"] = "operator";
4596 })(SemanticTokenTypes = exports2.SemanticTokenTypes || (exports2.SemanticTokenTypes = {}));
4597 var SemanticTokenModifiers;
4598 (function(SemanticTokenModifiers2) {
4599 SemanticTokenModifiers2["declaration"] = "declaration";
4600 SemanticTokenModifiers2["definition"] = "definition";
4601 SemanticTokenModifiers2["readonly"] = "readonly";
4602 SemanticTokenModifiers2["static"] = "static";
4603 SemanticTokenModifiers2["deprecated"] = "deprecated";
4604 SemanticTokenModifiers2["abstract"] = "abstract";
4605 SemanticTokenModifiers2["async"] = "async";
4606 SemanticTokenModifiers2["modification"] = "modification";
4607 SemanticTokenModifiers2["documentation"] = "documentation";
4608 SemanticTokenModifiers2["defaultLibrary"] = "defaultLibrary";
4609 })(SemanticTokenModifiers = exports2.SemanticTokenModifiers || (exports2.SemanticTokenModifiers = {}));
4611 (function(SemanticTokens2) {
4612 function is2(value) {
4613 const candidate = value;
4614 return candidate !== void 0 && (candidate.resultId === void 0 || typeof candidate.resultId === "string") && Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === "number");
4616 SemanticTokens2.is = is2;
4617 })(SemanticTokens = exports2.SemanticTokens || (exports2.SemanticTokens = {}));
4619 (function(TokenFormat2) {
4620 TokenFormat2.Relative = "relative";
4621 })(TokenFormat = exports2.TokenFormat || (exports2.TokenFormat = {}));
4622 var SemanticTokensRegistrationType;
4623 (function(SemanticTokensRegistrationType2) {
4624 SemanticTokensRegistrationType2.method = "textDocument/semanticTokens";
4625 SemanticTokensRegistrationType2.type = new messages_1.RegistrationType(SemanticTokensRegistrationType2.method);
4626 })(SemanticTokensRegistrationType = exports2.SemanticTokensRegistrationType || (exports2.SemanticTokensRegistrationType = {}));
4627 var SemanticTokensRequest;
4628 (function(SemanticTokensRequest2) {
4629 SemanticTokensRequest2.method = "textDocument/semanticTokens/full";
4630 SemanticTokensRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensRequest2.method);
4631 })(SemanticTokensRequest = exports2.SemanticTokensRequest || (exports2.SemanticTokensRequest = {}));
4632 var SemanticTokensDeltaRequest;
4633 (function(SemanticTokensDeltaRequest2) {
4634 SemanticTokensDeltaRequest2.method = "textDocument/semanticTokens/full/delta";
4635 SemanticTokensDeltaRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensDeltaRequest2.method);
4636 })(SemanticTokensDeltaRequest = exports2.SemanticTokensDeltaRequest || (exports2.SemanticTokensDeltaRequest = {}));
4637 var SemanticTokensRangeRequest;
4638 (function(SemanticTokensRangeRequest2) {
4639 SemanticTokensRangeRequest2.method = "textDocument/semanticTokens/range";
4640 SemanticTokensRangeRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest2.method);
4641 })(SemanticTokensRangeRequest = exports2.SemanticTokensRangeRequest || (exports2.SemanticTokensRangeRequest = {}));
4642 var SemanticTokensRefreshRequest;
4643 (function(SemanticTokensRefreshRequest2) {
4644 SemanticTokensRefreshRequest2.method = `workspace/semanticTokens/refresh`;
4645 SemanticTokensRefreshRequest2.type = new messages_1.ProtocolRequestType0(SemanticTokensRefreshRequest2.method);
4646 })(SemanticTokensRefreshRequest = exports2.SemanticTokensRefreshRequest || (exports2.SemanticTokensRefreshRequest = {}));
4649 // node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js
4650 var require_protocol_showDocument = __commonJS((exports2) => {
4652 Object.defineProperty(exports2, "__esModule", {value: true});
4653 exports2.ShowDocumentRequest = void 0;
4654 var messages_1 = require_messages2();
4655 var ShowDocumentRequest;
4656 (function(ShowDocumentRequest2) {
4657 ShowDocumentRequest2.method = "window/showDocument";
4658 ShowDocumentRequest2.type = new messages_1.ProtocolRequestType(ShowDocumentRequest2.method);
4659 })(ShowDocumentRequest = exports2.ShowDocumentRequest || (exports2.ShowDocumentRequest = {}));
4662 // node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js
4663 var require_protocol_linkedEditingRange = __commonJS((exports2) => {
4665 Object.defineProperty(exports2, "__esModule", {value: true});
4666 exports2.LinkedEditingRangeRequest = void 0;
4667 var messages_1 = require_messages2();
4668 var LinkedEditingRangeRequest;
4669 (function(LinkedEditingRangeRequest2) {
4670 LinkedEditingRangeRequest2.method = "textDocument/linkedEditingRange";
4671 LinkedEditingRangeRequest2.type = new messages_1.ProtocolRequestType(LinkedEditingRangeRequest2.method);
4672 })(LinkedEditingRangeRequest = exports2.LinkedEditingRangeRequest || (exports2.LinkedEditingRangeRequest = {}));
4675 // node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js
4676 var require_protocol_fileOperations = __commonJS((exports2) => {
4678 Object.defineProperty(exports2, "__esModule", {value: true});
4679 exports2.WillDeleteFilesRequest = exports2.DidDeleteFilesNotification = exports2.DidRenameFilesNotification = exports2.WillRenameFilesRequest = exports2.DidCreateFilesNotification = exports2.WillCreateFilesRequest = exports2.FileOperationPatternKind = void 0;
4680 var messages_1 = require_messages2();
4681 var FileOperationPatternKind;
4682 (function(FileOperationPatternKind2) {
4683 FileOperationPatternKind2.file = "file";
4684 FileOperationPatternKind2.folder = "folder";
4685 })(FileOperationPatternKind = exports2.FileOperationPatternKind || (exports2.FileOperationPatternKind = {}));
4686 var WillCreateFilesRequest;
4687 (function(WillCreateFilesRequest2) {
4688 WillCreateFilesRequest2.method = "workspace/willCreateFiles";
4689 WillCreateFilesRequest2.type = new messages_1.ProtocolRequestType(WillCreateFilesRequest2.method);
4690 })(WillCreateFilesRequest = exports2.WillCreateFilesRequest || (exports2.WillCreateFilesRequest = {}));
4691 var DidCreateFilesNotification;
4692 (function(DidCreateFilesNotification2) {
4693 DidCreateFilesNotification2.method = "workspace/didCreateFiles";
4694 DidCreateFilesNotification2.type = new messages_1.ProtocolNotificationType(DidCreateFilesNotification2.method);
4695 })(DidCreateFilesNotification = exports2.DidCreateFilesNotification || (exports2.DidCreateFilesNotification = {}));
4696 var WillRenameFilesRequest;
4697 (function(WillRenameFilesRequest2) {
4698 WillRenameFilesRequest2.method = "workspace/willRenameFiles";
4699 WillRenameFilesRequest2.type = new messages_1.ProtocolRequestType(WillRenameFilesRequest2.method);
4700 })(WillRenameFilesRequest = exports2.WillRenameFilesRequest || (exports2.WillRenameFilesRequest = {}));
4701 var DidRenameFilesNotification;
4702 (function(DidRenameFilesNotification2) {
4703 DidRenameFilesNotification2.method = "workspace/didRenameFiles";
4704 DidRenameFilesNotification2.type = new messages_1.ProtocolNotificationType(DidRenameFilesNotification2.method);
4705 })(DidRenameFilesNotification = exports2.DidRenameFilesNotification || (exports2.DidRenameFilesNotification = {}));
4706 var DidDeleteFilesNotification;
4707 (function(DidDeleteFilesNotification2) {
4708 DidDeleteFilesNotification2.method = "workspace/didDeleteFiles";
4709 DidDeleteFilesNotification2.type = new messages_1.ProtocolNotificationType(DidDeleteFilesNotification2.method);
4710 })(DidDeleteFilesNotification = exports2.DidDeleteFilesNotification || (exports2.DidDeleteFilesNotification = {}));
4711 var WillDeleteFilesRequest;
4712 (function(WillDeleteFilesRequest2) {
4713 WillDeleteFilesRequest2.method = "workspace/willDeleteFiles";
4714 WillDeleteFilesRequest2.type = new messages_1.ProtocolRequestType(WillDeleteFilesRequest2.method);
4715 })(WillDeleteFilesRequest = exports2.WillDeleteFilesRequest || (exports2.WillDeleteFilesRequest = {}));
4718 // node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js
4719 var require_protocol_moniker = __commonJS((exports2) => {
4721 Object.defineProperty(exports2, "__esModule", {value: true});
4722 exports2.MonikerRequest = exports2.MonikerKind = exports2.UniquenessLevel = void 0;
4723 var messages_1 = require_messages2();
4724 var UniquenessLevel;
4725 (function(UniquenessLevel2) {
4726 UniquenessLevel2["document"] = "document";
4727 UniquenessLevel2["project"] = "project";
4728 UniquenessLevel2["group"] = "group";
4729 UniquenessLevel2["scheme"] = "scheme";
4730 UniquenessLevel2["global"] = "global";
4731 })(UniquenessLevel = exports2.UniquenessLevel || (exports2.UniquenessLevel = {}));
4733 (function(MonikerKind2) {
4734 MonikerKind2["import"] = "import";
4735 MonikerKind2["export"] = "export";
4736 MonikerKind2["local"] = "local";
4737 })(MonikerKind = exports2.MonikerKind || (exports2.MonikerKind = {}));
4739 (function(MonikerRequest2) {
4740 MonikerRequest2.method = "textDocument/moniker";
4741 MonikerRequest2.type = new messages_1.ProtocolRequestType(MonikerRequest2.method);
4742 })(MonikerRequest = exports2.MonikerRequest || (exports2.MonikerRequest = {}));
4745 // node_modules/vscode-languageserver-protocol/lib/common/protocol.js
4746 var require_protocol = __commonJS((exports2) => {
4748 Object.defineProperty(exports2, "__esModule", {value: true});
4749 exports2.DocumentLinkRequest = exports2.CodeLensRefreshRequest = exports2.CodeLensResolveRequest = exports2.CodeLensRequest = exports2.WorkspaceSymbolRequest = exports2.CodeActionResolveRequest = exports2.CodeActionRequest = exports2.DocumentSymbolRequest = exports2.DocumentHighlightRequest = exports2.ReferencesRequest = exports2.DefinitionRequest = exports2.SignatureHelpRequest = exports2.SignatureHelpTriggerKind = exports2.HoverRequest = exports2.CompletionResolveRequest = exports2.CompletionRequest = exports2.CompletionTriggerKind = exports2.PublishDiagnosticsNotification = exports2.WatchKind = exports2.FileChangeType = exports2.DidChangeWatchedFilesNotification = exports2.WillSaveTextDocumentWaitUntilRequest = exports2.WillSaveTextDocumentNotification = exports2.TextDocumentSaveReason = exports2.DidSaveTextDocumentNotification = exports2.DidCloseTextDocumentNotification = exports2.DidChangeTextDocumentNotification = exports2.TextDocumentContentChangeEvent = exports2.DidOpenTextDocumentNotification = exports2.TextDocumentSyncKind = exports2.TelemetryEventNotification = exports2.LogMessageNotification = exports2.ShowMessageRequest = exports2.ShowMessageNotification = exports2.MessageType = exports2.DidChangeConfigurationNotification = exports2.ExitNotification = exports2.ShutdownRequest = exports2.InitializedNotification = exports2.InitializeError = exports2.InitializeRequest = exports2.WorkDoneProgressOptions = exports2.TextDocumentRegistrationOptions = exports2.StaticRegistrationOptions = exports2.FailureHandlingKind = exports2.ResourceOperationKind = exports2.UnregistrationRequest = exports2.RegistrationRequest = exports2.DocumentSelector = exports2.DocumentFilter = void 0;
4750 exports2.MonikerRequest = exports2.MonikerKind = exports2.UniquenessLevel = exports2.WillDeleteFilesRequest = exports2.DidDeleteFilesNotification = exports2.WillRenameFilesRequest = exports2.DidRenameFilesNotification = exports2.WillCreateFilesRequest = exports2.DidCreateFilesNotification = exports2.FileOperationPatternKind = exports2.LinkedEditingRangeRequest = exports2.ShowDocumentRequest = exports2.SemanticTokensRegistrationType = exports2.SemanticTokensRefreshRequest = exports2.SemanticTokensRangeRequest = exports2.SemanticTokensDeltaRequest = exports2.SemanticTokensRequest = exports2.TokenFormat = exports2.SemanticTokens = exports2.SemanticTokenModifiers = exports2.SemanticTokenTypes = exports2.CallHierarchyPrepareRequest = exports2.CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyIncomingCallsRequest = exports2.WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCreateRequest = exports2.WorkDoneProgress = exports2.SelectionRangeRequest = exports2.DeclarationRequest = exports2.FoldingRangeRequest = exports2.ColorPresentationRequest = exports2.DocumentColorRequest = exports2.ConfigurationRequest = exports2.DidChangeWorkspaceFoldersNotification = exports2.WorkspaceFoldersRequest = exports2.TypeDefinitionRequest = exports2.ImplementationRequest = exports2.ApplyWorkspaceEditRequest = exports2.ExecuteCommandRequest = exports2.PrepareRenameRequest = exports2.RenameRequest = exports2.PrepareSupportDefaultBehavior = exports2.DocumentOnTypeFormattingRequest = exports2.DocumentRangeFormattingRequest = exports2.DocumentFormattingRequest = exports2.DocumentLinkResolveRequest = void 0;
4751 var Is = require_is2();
4752 var messages_1 = require_messages2();
4753 var protocol_implementation_1 = require_protocol_implementation();
4754 Object.defineProperty(exports2, "ImplementationRequest", {enumerable: true, get: function() {
4755 return protocol_implementation_1.ImplementationRequest;
4757 var protocol_typeDefinition_1 = require_protocol_typeDefinition();
4758 Object.defineProperty(exports2, "TypeDefinitionRequest", {enumerable: true, get: function() {
4759 return protocol_typeDefinition_1.TypeDefinitionRequest;
4761 var protocol_workspaceFolders_1 = require_protocol_workspaceFolders();
4762 Object.defineProperty(exports2, "WorkspaceFoldersRequest", {enumerable: true, get: function() {
4763 return protocol_workspaceFolders_1.WorkspaceFoldersRequest;
4765 Object.defineProperty(exports2, "DidChangeWorkspaceFoldersNotification", {enumerable: true, get: function() {
4766 return protocol_workspaceFolders_1.DidChangeWorkspaceFoldersNotification;
4768 var protocol_configuration_1 = require_protocol_configuration();
4769 Object.defineProperty(exports2, "ConfigurationRequest", {enumerable: true, get: function() {
4770 return protocol_configuration_1.ConfigurationRequest;
4772 var protocol_colorProvider_1 = require_protocol_colorProvider();
4773 Object.defineProperty(exports2, "DocumentColorRequest", {enumerable: true, get: function() {
4774 return protocol_colorProvider_1.DocumentColorRequest;
4776 Object.defineProperty(exports2, "ColorPresentationRequest", {enumerable: true, get: function() {
4777 return protocol_colorProvider_1.ColorPresentationRequest;
4779 var protocol_foldingRange_1 = require_protocol_foldingRange();
4780 Object.defineProperty(exports2, "FoldingRangeRequest", {enumerable: true, get: function() {
4781 return protocol_foldingRange_1.FoldingRangeRequest;
4783 var protocol_declaration_1 = require_protocol_declaration();
4784 Object.defineProperty(exports2, "DeclarationRequest", {enumerable: true, get: function() {
4785 return protocol_declaration_1.DeclarationRequest;
4787 var protocol_selectionRange_1 = require_protocol_selectionRange();
4788 Object.defineProperty(exports2, "SelectionRangeRequest", {enumerable: true, get: function() {
4789 return protocol_selectionRange_1.SelectionRangeRequest;
4791 var protocol_progress_1 = require_protocol_progress();
4792 Object.defineProperty(exports2, "WorkDoneProgress", {enumerable: true, get: function() {
4793 return protocol_progress_1.WorkDoneProgress;
4795 Object.defineProperty(exports2, "WorkDoneProgressCreateRequest", {enumerable: true, get: function() {
4796 return protocol_progress_1.WorkDoneProgressCreateRequest;
4798 Object.defineProperty(exports2, "WorkDoneProgressCancelNotification", {enumerable: true, get: function() {
4799 return protocol_progress_1.WorkDoneProgressCancelNotification;
4801 var protocol_callHierarchy_1 = require_protocol_callHierarchy();
4802 Object.defineProperty(exports2, "CallHierarchyIncomingCallsRequest", {enumerable: true, get: function() {
4803 return protocol_callHierarchy_1.CallHierarchyIncomingCallsRequest;
4805 Object.defineProperty(exports2, "CallHierarchyOutgoingCallsRequest", {enumerable: true, get: function() {
4806 return protocol_callHierarchy_1.CallHierarchyOutgoingCallsRequest;
4808 Object.defineProperty(exports2, "CallHierarchyPrepareRequest", {enumerable: true, get: function() {
4809 return protocol_callHierarchy_1.CallHierarchyPrepareRequest;
4811 var protocol_semanticTokens_1 = require_protocol_semanticTokens();
4812 Object.defineProperty(exports2, "SemanticTokenTypes", {enumerable: true, get: function() {
4813 return protocol_semanticTokens_1.SemanticTokenTypes;
4815 Object.defineProperty(exports2, "SemanticTokenModifiers", {enumerable: true, get: function() {
4816 return protocol_semanticTokens_1.SemanticTokenModifiers;
4818 Object.defineProperty(exports2, "SemanticTokens", {enumerable: true, get: function() {
4819 return protocol_semanticTokens_1.SemanticTokens;
4821 Object.defineProperty(exports2, "TokenFormat", {enumerable: true, get: function() {
4822 return protocol_semanticTokens_1.TokenFormat;
4824 Object.defineProperty(exports2, "SemanticTokensRequest", {enumerable: true, get: function() {
4825 return protocol_semanticTokens_1.SemanticTokensRequest;
4827 Object.defineProperty(exports2, "SemanticTokensDeltaRequest", {enumerable: true, get: function() {
4828 return protocol_semanticTokens_1.SemanticTokensDeltaRequest;
4830 Object.defineProperty(exports2, "SemanticTokensRangeRequest", {enumerable: true, get: function() {
4831 return protocol_semanticTokens_1.SemanticTokensRangeRequest;
4833 Object.defineProperty(exports2, "SemanticTokensRefreshRequest", {enumerable: true, get: function() {
4834 return protocol_semanticTokens_1.SemanticTokensRefreshRequest;
4836 Object.defineProperty(exports2, "SemanticTokensRegistrationType", {enumerable: true, get: function() {
4837 return protocol_semanticTokens_1.SemanticTokensRegistrationType;
4839 var protocol_showDocument_1 = require_protocol_showDocument();
4840 Object.defineProperty(exports2, "ShowDocumentRequest", {enumerable: true, get: function() {
4841 return protocol_showDocument_1.ShowDocumentRequest;
4843 var protocol_linkedEditingRange_1 = require_protocol_linkedEditingRange();
4844 Object.defineProperty(exports2, "LinkedEditingRangeRequest", {enumerable: true, get: function() {
4845 return protocol_linkedEditingRange_1.LinkedEditingRangeRequest;
4847 var protocol_fileOperations_1 = require_protocol_fileOperations();
4848 Object.defineProperty(exports2, "FileOperationPatternKind", {enumerable: true, get: function() {
4849 return protocol_fileOperations_1.FileOperationPatternKind;
4851 Object.defineProperty(exports2, "DidCreateFilesNotification", {enumerable: true, get: function() {
4852 return protocol_fileOperations_1.DidCreateFilesNotification;
4854 Object.defineProperty(exports2, "WillCreateFilesRequest", {enumerable: true, get: function() {
4855 return protocol_fileOperations_1.WillCreateFilesRequest;
4857 Object.defineProperty(exports2, "DidRenameFilesNotification", {enumerable: true, get: function() {
4858 return protocol_fileOperations_1.DidRenameFilesNotification;
4860 Object.defineProperty(exports2, "WillRenameFilesRequest", {enumerable: true, get: function() {
4861 return protocol_fileOperations_1.WillRenameFilesRequest;
4863 Object.defineProperty(exports2, "DidDeleteFilesNotification", {enumerable: true, get: function() {
4864 return protocol_fileOperations_1.DidDeleteFilesNotification;
4866 Object.defineProperty(exports2, "WillDeleteFilesRequest", {enumerable: true, get: function() {
4867 return protocol_fileOperations_1.WillDeleteFilesRequest;
4869 var protocol_moniker_1 = require_protocol_moniker();
4870 Object.defineProperty(exports2, "UniquenessLevel", {enumerable: true, get: function() {
4871 return protocol_moniker_1.UniquenessLevel;
4873 Object.defineProperty(exports2, "MonikerKind", {enumerable: true, get: function() {
4874 return protocol_moniker_1.MonikerKind;
4876 Object.defineProperty(exports2, "MonikerRequest", {enumerable: true, get: function() {
4877 return protocol_moniker_1.MonikerRequest;
4880 (function(DocumentFilter2) {
4881 function is2(value) {
4882 const candidate = value;
4883 return Is.string(candidate.language) || Is.string(candidate.scheme) || Is.string(candidate.pattern);
4885 DocumentFilter2.is = is2;
4886 })(DocumentFilter = exports2.DocumentFilter || (exports2.DocumentFilter = {}));
4887 var DocumentSelector2;
4888 (function(DocumentSelector3) {
4889 function is2(value) {
4890 if (!Array.isArray(value)) {
4893 for (let elem of value) {
4894 if (!Is.string(elem) && !DocumentFilter.is(elem)) {
4900 DocumentSelector3.is = is2;
4901 })(DocumentSelector2 = exports2.DocumentSelector || (exports2.DocumentSelector = {}));
4902 var RegistrationRequest;
4903 (function(RegistrationRequest2) {
4904 RegistrationRequest2.type = new messages_1.ProtocolRequestType("client/registerCapability");
4905 })(RegistrationRequest = exports2.RegistrationRequest || (exports2.RegistrationRequest = {}));
4906 var UnregistrationRequest;
4907 (function(UnregistrationRequest2) {
4908 UnregistrationRequest2.type = new messages_1.ProtocolRequestType("client/unregisterCapability");
4909 })(UnregistrationRequest = exports2.UnregistrationRequest || (exports2.UnregistrationRequest = {}));
4910 var ResourceOperationKind;
4911 (function(ResourceOperationKind2) {
4912 ResourceOperationKind2.Create = "create";
4913 ResourceOperationKind2.Rename = "rename";
4914 ResourceOperationKind2.Delete = "delete";
4915 })(ResourceOperationKind = exports2.ResourceOperationKind || (exports2.ResourceOperationKind = {}));
4916 var FailureHandlingKind;
4917 (function(FailureHandlingKind2) {
4918 FailureHandlingKind2.Abort = "abort";
4919 FailureHandlingKind2.Transactional = "transactional";
4920 FailureHandlingKind2.TextOnlyTransactional = "textOnlyTransactional";
4921 FailureHandlingKind2.Undo = "undo";
4922 })(FailureHandlingKind = exports2.FailureHandlingKind || (exports2.FailureHandlingKind = {}));
4923 var StaticRegistrationOptions;
4924 (function(StaticRegistrationOptions2) {
4925 function hasId(value) {
4926 const candidate = value;
4927 return candidate && Is.string(candidate.id) && candidate.id.length > 0;
4929 StaticRegistrationOptions2.hasId = hasId;
4930 })(StaticRegistrationOptions = exports2.StaticRegistrationOptions || (exports2.StaticRegistrationOptions = {}));
4931 var TextDocumentRegistrationOptions;
4932 (function(TextDocumentRegistrationOptions2) {
4933 function is2(value) {
4934 const candidate = value;
4935 return candidate && (candidate.documentSelector === null || DocumentSelector2.is(candidate.documentSelector));
4937 TextDocumentRegistrationOptions2.is = is2;
4938 })(TextDocumentRegistrationOptions = exports2.TextDocumentRegistrationOptions || (exports2.TextDocumentRegistrationOptions = {}));
4939 var WorkDoneProgressOptions;
4940 (function(WorkDoneProgressOptions2) {
4941 function is2(value) {
4942 const candidate = value;
4943 return Is.objectLiteral(candidate) && (candidate.workDoneProgress === void 0 || Is.boolean(candidate.workDoneProgress));
4945 WorkDoneProgressOptions2.is = is2;
4946 function hasWorkDoneProgress(value) {
4947 const candidate = value;
4948 return candidate && Is.boolean(candidate.workDoneProgress);
4950 WorkDoneProgressOptions2.hasWorkDoneProgress = hasWorkDoneProgress;
4951 })(WorkDoneProgressOptions = exports2.WorkDoneProgressOptions || (exports2.WorkDoneProgressOptions = {}));
4952 var InitializeRequest;
4953 (function(InitializeRequest2) {
4954 InitializeRequest2.type = new messages_1.ProtocolRequestType("initialize");
4955 })(InitializeRequest = exports2.InitializeRequest || (exports2.InitializeRequest = {}));
4956 var InitializeError;
4957 (function(InitializeError2) {
4958 InitializeError2.unknownProtocolVersion = 1;
4959 })(InitializeError = exports2.InitializeError || (exports2.InitializeError = {}));
4960 var InitializedNotification;
4961 (function(InitializedNotification2) {
4962 InitializedNotification2.type = new messages_1.ProtocolNotificationType("initialized");
4963 })(InitializedNotification = exports2.InitializedNotification || (exports2.InitializedNotification = {}));
4964 var ShutdownRequest;
4965 (function(ShutdownRequest2) {
4966 ShutdownRequest2.type = new messages_1.ProtocolRequestType0("shutdown");
4967 })(ShutdownRequest = exports2.ShutdownRequest || (exports2.ShutdownRequest = {}));
4968 var ExitNotification;
4969 (function(ExitNotification2) {
4970 ExitNotification2.type = new messages_1.ProtocolNotificationType0("exit");
4971 })(ExitNotification = exports2.ExitNotification || (exports2.ExitNotification = {}));
4972 var DidChangeConfigurationNotification;
4973 (function(DidChangeConfigurationNotification2) {
4974 DidChangeConfigurationNotification2.type = new messages_1.ProtocolNotificationType("workspace/didChangeConfiguration");
4975 })(DidChangeConfigurationNotification = exports2.DidChangeConfigurationNotification || (exports2.DidChangeConfigurationNotification = {}));
4977 (function(MessageType2) {
4978 MessageType2.Error = 1;
4979 MessageType2.Warning = 2;
4980 MessageType2.Info = 3;
4981 MessageType2.Log = 4;
4982 })(MessageType = exports2.MessageType || (exports2.MessageType = {}));
4983 var ShowMessageNotification;
4984 (function(ShowMessageNotification2) {
4985 ShowMessageNotification2.type = new messages_1.ProtocolNotificationType("window/showMessage");
4986 })(ShowMessageNotification = exports2.ShowMessageNotification || (exports2.ShowMessageNotification = {}));
4987 var ShowMessageRequest;
4988 (function(ShowMessageRequest2) {
4989 ShowMessageRequest2.type = new messages_1.ProtocolRequestType("window/showMessageRequest");
4990 })(ShowMessageRequest = exports2.ShowMessageRequest || (exports2.ShowMessageRequest = {}));
4991 var LogMessageNotification;
4992 (function(LogMessageNotification2) {
4993 LogMessageNotification2.type = new messages_1.ProtocolNotificationType("window/logMessage");
4994 })(LogMessageNotification = exports2.LogMessageNotification || (exports2.LogMessageNotification = {}));
4995 var TelemetryEventNotification;
4996 (function(TelemetryEventNotification2) {
4997 TelemetryEventNotification2.type = new messages_1.ProtocolNotificationType("telemetry/event");
4998 })(TelemetryEventNotification = exports2.TelemetryEventNotification || (exports2.TelemetryEventNotification = {}));
4999 var TextDocumentSyncKind;
5000 (function(TextDocumentSyncKind2) {
5001 TextDocumentSyncKind2.None = 0;
5002 TextDocumentSyncKind2.Full = 1;
5003 TextDocumentSyncKind2.Incremental = 2;
5004 })(TextDocumentSyncKind = exports2.TextDocumentSyncKind || (exports2.TextDocumentSyncKind = {}));
5005 var DidOpenTextDocumentNotification;
5006 (function(DidOpenTextDocumentNotification2) {
5007 DidOpenTextDocumentNotification2.method = "textDocument/didOpen";
5008 DidOpenTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidOpenTextDocumentNotification2.method);
5009 })(DidOpenTextDocumentNotification = exports2.DidOpenTextDocumentNotification || (exports2.DidOpenTextDocumentNotification = {}));
5010 var TextDocumentContentChangeEvent2;
5011 (function(TextDocumentContentChangeEvent3) {
5012 function isIncremental(event) {
5013 let candidate = event;
5014 return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range !== void 0 && (candidate.rangeLength === void 0 || typeof candidate.rangeLength === "number");
5016 TextDocumentContentChangeEvent3.isIncremental = isIncremental;
5017 function isFull(event) {
5018 let candidate = event;
5019 return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range === void 0 && candidate.rangeLength === void 0;
5021 TextDocumentContentChangeEvent3.isFull = isFull;
5022 })(TextDocumentContentChangeEvent2 = exports2.TextDocumentContentChangeEvent || (exports2.TextDocumentContentChangeEvent = {}));
5023 var DidChangeTextDocumentNotification;
5024 (function(DidChangeTextDocumentNotification2) {
5025 DidChangeTextDocumentNotification2.method = "textDocument/didChange";
5026 DidChangeTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidChangeTextDocumentNotification2.method);
5027 })(DidChangeTextDocumentNotification = exports2.DidChangeTextDocumentNotification || (exports2.DidChangeTextDocumentNotification = {}));
5028 var DidCloseTextDocumentNotification;
5029 (function(DidCloseTextDocumentNotification2) {
5030 DidCloseTextDocumentNotification2.method = "textDocument/didClose";
5031 DidCloseTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidCloseTextDocumentNotification2.method);
5032 })(DidCloseTextDocumentNotification = exports2.DidCloseTextDocumentNotification || (exports2.DidCloseTextDocumentNotification = {}));
5033 var DidSaveTextDocumentNotification;
5034 (function(DidSaveTextDocumentNotification2) {
5035 DidSaveTextDocumentNotification2.method = "textDocument/didSave";
5036 DidSaveTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidSaveTextDocumentNotification2.method);
5037 })(DidSaveTextDocumentNotification = exports2.DidSaveTextDocumentNotification || (exports2.DidSaveTextDocumentNotification = {}));
5038 var TextDocumentSaveReason;
5039 (function(TextDocumentSaveReason2) {
5040 TextDocumentSaveReason2.Manual = 1;
5041 TextDocumentSaveReason2.AfterDelay = 2;
5042 TextDocumentSaveReason2.FocusOut = 3;
5043 })(TextDocumentSaveReason = exports2.TextDocumentSaveReason || (exports2.TextDocumentSaveReason = {}));
5044 var WillSaveTextDocumentNotification;
5045 (function(WillSaveTextDocumentNotification2) {
5046 WillSaveTextDocumentNotification2.method = "textDocument/willSave";
5047 WillSaveTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(WillSaveTextDocumentNotification2.method);
5048 })(WillSaveTextDocumentNotification = exports2.WillSaveTextDocumentNotification || (exports2.WillSaveTextDocumentNotification = {}));
5049 var WillSaveTextDocumentWaitUntilRequest;
5050 (function(WillSaveTextDocumentWaitUntilRequest2) {
5051 WillSaveTextDocumentWaitUntilRequest2.method = "textDocument/willSaveWaitUntil";
5052 WillSaveTextDocumentWaitUntilRequest2.type = new messages_1.ProtocolRequestType(WillSaveTextDocumentWaitUntilRequest2.method);
5053 })(WillSaveTextDocumentWaitUntilRequest = exports2.WillSaveTextDocumentWaitUntilRequest || (exports2.WillSaveTextDocumentWaitUntilRequest = {}));
5054 var DidChangeWatchedFilesNotification;
5055 (function(DidChangeWatchedFilesNotification2) {
5056 DidChangeWatchedFilesNotification2.type = new messages_1.ProtocolNotificationType("workspace/didChangeWatchedFiles");
5057 })(DidChangeWatchedFilesNotification = exports2.DidChangeWatchedFilesNotification || (exports2.DidChangeWatchedFilesNotification = {}));
5059 (function(FileChangeType2) {
5060 FileChangeType2.Created = 1;
5061 FileChangeType2.Changed = 2;
5062 FileChangeType2.Deleted = 3;
5063 })(FileChangeType = exports2.FileChangeType || (exports2.FileChangeType = {}));
5065 (function(WatchKind2) {
5066 WatchKind2.Create = 1;
5067 WatchKind2.Change = 2;
5068 WatchKind2.Delete = 4;
5069 })(WatchKind = exports2.WatchKind || (exports2.WatchKind = {}));
5070 var PublishDiagnosticsNotification;
5071 (function(PublishDiagnosticsNotification2) {
5072 PublishDiagnosticsNotification2.type = new messages_1.ProtocolNotificationType("textDocument/publishDiagnostics");
5073 })(PublishDiagnosticsNotification = exports2.PublishDiagnosticsNotification || (exports2.PublishDiagnosticsNotification = {}));
5074 var CompletionTriggerKind;
5075 (function(CompletionTriggerKind2) {
5076 CompletionTriggerKind2.Invoked = 1;
5077 CompletionTriggerKind2.TriggerCharacter = 2;
5078 CompletionTriggerKind2.TriggerForIncompleteCompletions = 3;
5079 })(CompletionTriggerKind = exports2.CompletionTriggerKind || (exports2.CompletionTriggerKind = {}));
5080 var CompletionRequest;
5081 (function(CompletionRequest2) {
5082 CompletionRequest2.method = "textDocument/completion";
5083 CompletionRequest2.type = new messages_1.ProtocolRequestType(CompletionRequest2.method);
5084 })(CompletionRequest = exports2.CompletionRequest || (exports2.CompletionRequest = {}));
5085 var CompletionResolveRequest;
5086 (function(CompletionResolveRequest2) {
5087 CompletionResolveRequest2.method = "completionItem/resolve";
5088 CompletionResolveRequest2.type = new messages_1.ProtocolRequestType(CompletionResolveRequest2.method);
5089 })(CompletionResolveRequest = exports2.CompletionResolveRequest || (exports2.CompletionResolveRequest = {}));
5091 (function(HoverRequest2) {
5092 HoverRequest2.method = "textDocument/hover";
5093 HoverRequest2.type = new messages_1.ProtocolRequestType(HoverRequest2.method);
5094 })(HoverRequest = exports2.HoverRequest || (exports2.HoverRequest = {}));
5095 var SignatureHelpTriggerKind;
5096 (function(SignatureHelpTriggerKind2) {
5097 SignatureHelpTriggerKind2.Invoked = 1;
5098 SignatureHelpTriggerKind2.TriggerCharacter = 2;
5099 SignatureHelpTriggerKind2.ContentChange = 3;
5100 })(SignatureHelpTriggerKind = exports2.SignatureHelpTriggerKind || (exports2.SignatureHelpTriggerKind = {}));
5101 var SignatureHelpRequest;
5102 (function(SignatureHelpRequest2) {
5103 SignatureHelpRequest2.method = "textDocument/signatureHelp";
5104 SignatureHelpRequest2.type = new messages_1.ProtocolRequestType(SignatureHelpRequest2.method);
5105 })(SignatureHelpRequest = exports2.SignatureHelpRequest || (exports2.SignatureHelpRequest = {}));
5106 var DefinitionRequest;
5107 (function(DefinitionRequest2) {
5108 DefinitionRequest2.method = "textDocument/definition";
5109 DefinitionRequest2.type = new messages_1.ProtocolRequestType(DefinitionRequest2.method);
5110 })(DefinitionRequest = exports2.DefinitionRequest || (exports2.DefinitionRequest = {}));
5111 var ReferencesRequest;
5112 (function(ReferencesRequest2) {
5113 ReferencesRequest2.method = "textDocument/references";
5114 ReferencesRequest2.type = new messages_1.ProtocolRequestType(ReferencesRequest2.method);
5115 })(ReferencesRequest = exports2.ReferencesRequest || (exports2.ReferencesRequest = {}));
5116 var DocumentHighlightRequest;
5117 (function(DocumentHighlightRequest2) {
5118 DocumentHighlightRequest2.method = "textDocument/documentHighlight";
5119 DocumentHighlightRequest2.type = new messages_1.ProtocolRequestType(DocumentHighlightRequest2.method);
5120 })(DocumentHighlightRequest = exports2.DocumentHighlightRequest || (exports2.DocumentHighlightRequest = {}));
5121 var DocumentSymbolRequest;
5122 (function(DocumentSymbolRequest2) {
5123 DocumentSymbolRequest2.method = "textDocument/documentSymbol";
5124 DocumentSymbolRequest2.type = new messages_1.ProtocolRequestType(DocumentSymbolRequest2.method);
5125 })(DocumentSymbolRequest = exports2.DocumentSymbolRequest || (exports2.DocumentSymbolRequest = {}));
5126 var CodeActionRequest;
5127 (function(CodeActionRequest2) {
5128 CodeActionRequest2.method = "textDocument/codeAction";
5129 CodeActionRequest2.type = new messages_1.ProtocolRequestType(CodeActionRequest2.method);
5130 })(CodeActionRequest = exports2.CodeActionRequest || (exports2.CodeActionRequest = {}));
5131 var CodeActionResolveRequest;
5132 (function(CodeActionResolveRequest2) {
5133 CodeActionResolveRequest2.method = "codeAction/resolve";
5134 CodeActionResolveRequest2.type = new messages_1.ProtocolRequestType(CodeActionResolveRequest2.method);
5135 })(CodeActionResolveRequest = exports2.CodeActionResolveRequest || (exports2.CodeActionResolveRequest = {}));
5136 var WorkspaceSymbolRequest;
5137 (function(WorkspaceSymbolRequest2) {
5138 WorkspaceSymbolRequest2.method = "workspace/symbol";
5139 WorkspaceSymbolRequest2.type = new messages_1.ProtocolRequestType(WorkspaceSymbolRequest2.method);
5140 })(WorkspaceSymbolRequest = exports2.WorkspaceSymbolRequest || (exports2.WorkspaceSymbolRequest = {}));
5141 var CodeLensRequest;
5142 (function(CodeLensRequest2) {
5143 CodeLensRequest2.method = "textDocument/codeLens";
5144 CodeLensRequest2.type = new messages_1.ProtocolRequestType(CodeLensRequest2.method);
5145 })(CodeLensRequest = exports2.CodeLensRequest || (exports2.CodeLensRequest = {}));
5146 var CodeLensResolveRequest;
5147 (function(CodeLensResolveRequest2) {
5148 CodeLensResolveRequest2.method = "codeLens/resolve";
5149 CodeLensResolveRequest2.type = new messages_1.ProtocolRequestType(CodeLensResolveRequest2.method);
5150 })(CodeLensResolveRequest = exports2.CodeLensResolveRequest || (exports2.CodeLensResolveRequest = {}));
5151 var CodeLensRefreshRequest;
5152 (function(CodeLensRefreshRequest2) {
5153 CodeLensRefreshRequest2.method = `workspace/codeLens/refresh`;
5154 CodeLensRefreshRequest2.type = new messages_1.ProtocolRequestType0(CodeLensRefreshRequest2.method);
5155 })(CodeLensRefreshRequest = exports2.CodeLensRefreshRequest || (exports2.CodeLensRefreshRequest = {}));
5156 var DocumentLinkRequest;
5157 (function(DocumentLinkRequest2) {
5158 DocumentLinkRequest2.method = "textDocument/documentLink";
5159 DocumentLinkRequest2.type = new messages_1.ProtocolRequestType(DocumentLinkRequest2.method);
5160 })(DocumentLinkRequest = exports2.DocumentLinkRequest || (exports2.DocumentLinkRequest = {}));
5161 var DocumentLinkResolveRequest;
5162 (function(DocumentLinkResolveRequest2) {
5163 DocumentLinkResolveRequest2.method = "documentLink/resolve";
5164 DocumentLinkResolveRequest2.type = new messages_1.ProtocolRequestType(DocumentLinkResolveRequest2.method);
5165 })(DocumentLinkResolveRequest = exports2.DocumentLinkResolveRequest || (exports2.DocumentLinkResolveRequest = {}));
5166 var DocumentFormattingRequest;
5167 (function(DocumentFormattingRequest2) {
5168 DocumentFormattingRequest2.method = "textDocument/formatting";
5169 DocumentFormattingRequest2.type = new messages_1.ProtocolRequestType(DocumentFormattingRequest2.method);
5170 })(DocumentFormattingRequest = exports2.DocumentFormattingRequest || (exports2.DocumentFormattingRequest = {}));
5171 var DocumentRangeFormattingRequest;
5172 (function(DocumentRangeFormattingRequest2) {
5173 DocumentRangeFormattingRequest2.method = "textDocument/rangeFormatting";
5174 DocumentRangeFormattingRequest2.type = new messages_1.ProtocolRequestType(DocumentRangeFormattingRequest2.method);
5175 })(DocumentRangeFormattingRequest = exports2.DocumentRangeFormattingRequest || (exports2.DocumentRangeFormattingRequest = {}));
5176 var DocumentOnTypeFormattingRequest;
5177 (function(DocumentOnTypeFormattingRequest2) {
5178 DocumentOnTypeFormattingRequest2.method = "textDocument/onTypeFormatting";
5179 DocumentOnTypeFormattingRequest2.type = new messages_1.ProtocolRequestType(DocumentOnTypeFormattingRequest2.method);
5180 })(DocumentOnTypeFormattingRequest = exports2.DocumentOnTypeFormattingRequest || (exports2.DocumentOnTypeFormattingRequest = {}));
5181 var PrepareSupportDefaultBehavior;
5182 (function(PrepareSupportDefaultBehavior2) {
5183 PrepareSupportDefaultBehavior2.Identifier = 1;
5184 })(PrepareSupportDefaultBehavior = exports2.PrepareSupportDefaultBehavior || (exports2.PrepareSupportDefaultBehavior = {}));
5186 (function(RenameRequest2) {
5187 RenameRequest2.method = "textDocument/rename";
5188 RenameRequest2.type = new messages_1.ProtocolRequestType(RenameRequest2.method);
5189 })(RenameRequest = exports2.RenameRequest || (exports2.RenameRequest = {}));
5190 var PrepareRenameRequest;
5191 (function(PrepareRenameRequest2) {
5192 PrepareRenameRequest2.method = "textDocument/prepareRename";
5193 PrepareRenameRequest2.type = new messages_1.ProtocolRequestType(PrepareRenameRequest2.method);
5194 })(PrepareRenameRequest = exports2.PrepareRenameRequest || (exports2.PrepareRenameRequest = {}));
5195 var ExecuteCommandRequest;
5196 (function(ExecuteCommandRequest2) {
5197 ExecuteCommandRequest2.type = new messages_1.ProtocolRequestType("workspace/executeCommand");
5198 })(ExecuteCommandRequest = exports2.ExecuteCommandRequest || (exports2.ExecuteCommandRequest = {}));
5199 var ApplyWorkspaceEditRequest;
5200 (function(ApplyWorkspaceEditRequest2) {
5201 ApplyWorkspaceEditRequest2.type = new messages_1.ProtocolRequestType("workspace/applyEdit");
5202 })(ApplyWorkspaceEditRequest = exports2.ApplyWorkspaceEditRequest || (exports2.ApplyWorkspaceEditRequest = {}));
5205 // node_modules/vscode-languageserver-protocol/lib/common/connection.js
5206 var require_connection2 = __commonJS((exports2) => {
5208 Object.defineProperty(exports2, "__esModule", {value: true});
5209 exports2.createProtocolConnection = void 0;
5210 var vscode_jsonrpc_1 = require_main();
5211 function createProtocolConnection(input, output, logger, options) {
5212 if (vscode_jsonrpc_1.ConnectionStrategy.is(options)) {
5213 options = {connectionStrategy: options};
5215 return vscode_jsonrpc_1.createMessageConnection(input, output, logger, options);
5217 exports2.createProtocolConnection = createProtocolConnection;
5220 // node_modules/vscode-languageserver-protocol/lib/common/api.js
5221 var require_api2 = __commonJS((exports2) => {
5223 var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
5226 Object.defineProperty(o, k2, {enumerable: true, get: function() {
5229 } : function(o, m, k, k2) {
5234 var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) {
5236 if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p))
5237 __createBinding(exports3, m, p);
5239 Object.defineProperty(exports2, "__esModule", {value: true});
5240 exports2.LSPErrorCodes = exports2.createProtocolConnection = void 0;
5241 __exportStar2(require_main(), exports2);
5242 __exportStar2(require_main2(), exports2);
5243 __exportStar2(require_messages2(), exports2);
5244 __exportStar2(require_protocol(), exports2);
5245 var connection_1 = require_connection2();
5246 Object.defineProperty(exports2, "createProtocolConnection", {enumerable: true, get: function() {
5247 return connection_1.createProtocolConnection;
5250 (function(LSPErrorCodes2) {
5251 LSPErrorCodes2.lspReservedErrorRangeStart = -32899;
5252 LSPErrorCodes2.ContentModified = -32801;
5253 LSPErrorCodes2.RequestCancelled = -32800;
5254 LSPErrorCodes2.lspReservedErrorRangeEnd = -32800;
5255 })(LSPErrorCodes = exports2.LSPErrorCodes || (exports2.LSPErrorCodes = {}));
5258 // node_modules/vscode-languageserver-protocol/lib/node/main.js
5259 var require_main3 = __commonJS((exports2) => {
5261 var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
5264 Object.defineProperty(o, k2, {enumerable: true, get: function() {
5267 } : function(o, m, k, k2) {
5272 var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) {
5274 if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p))
5275 __createBinding(exports3, m, p);
5277 Object.defineProperty(exports2, "__esModule", {value: true});
5278 exports2.createProtocolConnection = void 0;
5279 var node_1 = require_node();
5280 __exportStar2(require_node(), exports2);
5281 __exportStar2(require_api2(), exports2);
5282 function createProtocolConnection(input, output, logger, options) {
5283 return node_1.createMessageConnection(input, output, logger, options);
5285 exports2.createProtocolConnection = createProtocolConnection;
5288 // node_modules/semver/internal/constants.js
5289 var require_constants = __commonJS((exports2, module2) => {
5290 var SEMVER_SPEC_VERSION = "2.0.0";
5291 var MAX_LENGTH = 256;
5292 var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
5293 var MAX_SAFE_COMPONENT_LENGTH = 16;
5295 SEMVER_SPEC_VERSION,
5298 MAX_SAFE_COMPONENT_LENGTH
5302 // node_modules/semver/internal/debug.js
5303 var require_debug = __commonJS((exports2, module2) => {
5304 var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error("SEMVER", ...args) : () => {
5306 module2.exports = debug;
5309 // node_modules/semver/internal/re.js
5310 var require_re = __commonJS((exports2, module2) => {
5311 var {MAX_SAFE_COMPONENT_LENGTH} = require_constants();
5312 var debug = require_debug();
5313 exports2 = module2.exports = {};
5314 var re = exports2.re = [];
5315 var src = exports2.src = [];
5316 var t = exports2.t = {};
5318 var createToken = (name, value, isGlobal) => {
5320 debug(index, value);
5323 re[index] = new RegExp(value, isGlobal ? "g" : void 0);
5325 createToken("NUMERICIDENTIFIER", "0|[1-9]\\d*");
5326 createToken("NUMERICIDENTIFIERLOOSE", "[0-9]+");
5327 createToken("NONNUMERICIDENTIFIER", "\\d*[a-zA-Z-][a-zA-Z0-9-]*");
5328 createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`);
5329 createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);
5330 createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`);
5331 createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`);
5332 createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);
5333 createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);
5334 createToken("BUILDIDENTIFIER", "[0-9A-Za-z-]+");
5335 createToken("BUILD", `(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`);
5336 createToken("FULLPLAIN", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);
5337 createToken("FULL", `^${src[t.FULLPLAIN]}$`);
5338 createToken("LOOSEPLAIN", `[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);
5339 createToken("LOOSE", `^${src[t.LOOSEPLAIN]}$`);
5340 createToken("GTLT", "((?:<|>)?=?)");
5341 createToken("XRANGEIDENTIFIERLOOSE", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);
5342 createToken("XRANGEIDENTIFIER", `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`);
5343 createToken("XRANGEPLAIN", `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);
5344 createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);
5345 createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);
5346 createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);
5347 createToken("COERCE", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:$|[^\\d])`);
5348 createToken("COERCERTL", src[t.COERCE], true);
5349 createToken("LONETILDE", "(?:~>?)");
5350 createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
5351 exports2.tildeTrimReplace = "$1~";
5352 createToken("TILDE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
5353 createToken("TILDELOOSE", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
5354 createToken("LONECARET", "(?:\\^)");
5355 createToken("CARETTRIM", `(\\s*)${src[t.LONECARET]}\\s+`, true);
5356 exports2.caretTrimReplace = "$1^";
5357 createToken("CARET", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
5358 createToken("CARETLOOSE", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
5359 createToken("COMPARATORLOOSE", `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);
5360 createToken("COMPARATOR", `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);
5361 createToken("COMPARATORTRIM", `(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
5362 exports2.comparatorTrimReplace = "$1$2$3";
5363 createToken("HYPHENRANGE", `^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);
5364 createToken("HYPHENRANGELOOSE", `^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);
5365 createToken("STAR", "(<|>)?=?\\s*\\*");
5366 createToken("GTE0", "^\\s*>=\\s*0.0.0\\s*$");
5367 createToken("GTE0PRE", "^\\s*>=\\s*0.0.0-0\\s*$");
5370 // node_modules/semver/internal/identifiers.js
5371 var require_identifiers = __commonJS((exports2, module2) => {
5372 var numeric = /^[0-9]+$/;
5373 var compareIdentifiers = (a, b) => {
5374 const anum = numeric.test(a);
5375 const bnum = numeric.test(b);
5380 return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
5382 var rcompareIdentifiers = (a, b) => compareIdentifiers(b, a);
5389 // node_modules/semver/classes/semver.js
5390 var require_semver = __commonJS((exports2, module2) => {
5391 var debug = require_debug();
5392 var {MAX_LENGTH, MAX_SAFE_INTEGER} = require_constants();
5393 var {re, t} = require_re();
5394 var {compareIdentifiers} = require_identifiers();
5395 var SemVer = class {
5396 constructor(version, options) {
5397 if (!options || typeof options !== "object") {
5400 includePrerelease: false
5403 if (version instanceof SemVer) {
5404 if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {
5407 version = version.version;
5409 } else if (typeof version !== "string") {
5410 throw new TypeError(`Invalid Version: ${version}`);
5412 if (version.length > MAX_LENGTH) {
5413 throw new TypeError(`version is longer than ${MAX_LENGTH} characters`);
5415 debug("SemVer", version, options);
5416 this.options = options;
5417 this.loose = !!options.loose;
5418 this.includePrerelease = !!options.includePrerelease;
5419 const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
5421 throw new TypeError(`Invalid Version: ${version}`);
5427 if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
5428 throw new TypeError("Invalid major version");
5430 if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
5431 throw new TypeError("Invalid minor version");
5433 if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
5434 throw new TypeError("Invalid patch version");
5437 this.prerelease = [];
5439 this.prerelease = m[4].split(".").map((id) => {
5440 if (/^[0-9]+$/.test(id)) {
5442 if (num >= 0 && num < MAX_SAFE_INTEGER) {
5449 this.build = m[5] ? m[5].split(".") : [];
5453 this.version = `${this.major}.${this.minor}.${this.patch}`;
5454 if (this.prerelease.length) {
5455 this.version += `-${this.prerelease.join(".")}`;
5457 return this.version;
5460 return this.version;
5463 debug("SemVer.compare", this.version, this.options, other);
5464 if (!(other instanceof SemVer)) {
5465 if (typeof other === "string" && other === this.version) {
5468 other = new SemVer(other, this.options);
5470 if (other.version === this.version) {
5473 return this.compareMain(other) || this.comparePre(other);
5475 compareMain(other) {
5476 if (!(other instanceof SemVer)) {
5477 other = new SemVer(other, this.options);
5479 return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
5482 if (!(other instanceof SemVer)) {
5483 other = new SemVer(other, this.options);
5485 if (this.prerelease.length && !other.prerelease.length) {
5487 } else if (!this.prerelease.length && other.prerelease.length) {
5489 } else if (!this.prerelease.length && !other.prerelease.length) {
5494 const a = this.prerelease[i];
5495 const b = other.prerelease[i];
5496 debug("prerelease compare", i, a, b);
5497 if (a === void 0 && b === void 0) {
5499 } else if (b === void 0) {
5501 } else if (a === void 0) {
5503 } else if (a === b) {
5506 return compareIdentifiers(a, b);
5510 compareBuild(other) {
5511 if (!(other instanceof SemVer)) {
5512 other = new SemVer(other, this.options);
5516 const a = this.build[i];
5517 const b = other.build[i];
5518 debug("prerelease compare", i, a, b);
5519 if (a === void 0 && b === void 0) {
5521 } else if (b === void 0) {
5523 } else if (a === void 0) {
5525 } else if (a === b) {
5528 return compareIdentifiers(a, b);
5532 inc(release, identifier) {
5535 this.prerelease.length = 0;
5539 this.inc("pre", identifier);
5542 this.prerelease.length = 0;
5545 this.inc("pre", identifier);
5548 this.prerelease.length = 0;
5549 this.inc("patch", identifier);
5550 this.inc("pre", identifier);
5553 if (this.prerelease.length === 0) {
5554 this.inc("patch", identifier);
5556 this.inc("pre", identifier);
5559 if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
5564 this.prerelease = [];
5567 if (this.patch !== 0 || this.prerelease.length === 0) {
5571 this.prerelease = [];
5574 if (this.prerelease.length === 0) {
5577 this.prerelease = [];
5580 if (this.prerelease.length === 0) {
5581 this.prerelease = [0];
5583 let i = this.prerelease.length;
5585 if (typeof this.prerelease[i] === "number") {
5586 this.prerelease[i]++;
5591 this.prerelease.push(0);
5595 if (this.prerelease[0] === identifier) {
5596 if (isNaN(this.prerelease[1])) {
5597 this.prerelease = [identifier, 0];
5600 this.prerelease = [identifier, 0];
5605 throw new Error(`invalid increment argument: ${release}`);
5608 this.raw = this.version;
5612 module2.exports = SemVer;
5615 // node_modules/semver/functions/parse.js
5616 var require_parse = __commonJS((exports2, module2) => {
5617 var {MAX_LENGTH} = require_constants();
5618 var {re, t} = require_re();
5619 var SemVer = require_semver();
5620 var parse = (version, options) => {
5621 if (!options || typeof options !== "object") {
5624 includePrerelease: false
5627 if (version instanceof SemVer) {
5630 if (typeof version !== "string") {
5633 if (version.length > MAX_LENGTH) {
5636 const r = options.loose ? re[t.LOOSE] : re[t.FULL];
5637 if (!r.test(version)) {
5641 return new SemVer(version, options);
5646 module2.exports = parse;
5649 // node_modules/semver/functions/valid.js
5650 var require_valid = __commonJS((exports2, module2) => {
5651 var parse = require_parse();
5652 var valid2 = (version, options) => {
5653 const v = parse(version, options);
5654 return v ? v.version : null;
5656 module2.exports = valid2;
5659 // node_modules/semver/functions/clean.js
5660 var require_clean = __commonJS((exports2, module2) => {
5661 var parse = require_parse();
5662 var clean = (version, options) => {
5663 const s = parse(version.trim().replace(/^[=v]+/, ""), options);
5664 return s ? s.version : null;
5666 module2.exports = clean;
5669 // node_modules/semver/functions/inc.js
5670 var require_inc = __commonJS((exports2, module2) => {
5671 var SemVer = require_semver();
5672 var inc = (version, release, options, identifier) => {
5673 if (typeof options === "string") {
5674 identifier = options;
5678 return new SemVer(version, options).inc(release, identifier).version;
5683 module2.exports = inc;
5686 // node_modules/semver/functions/compare.js
5687 var require_compare = __commonJS((exports2, module2) => {
5688 var SemVer = require_semver();
5689 var compare = (a, b, loose) => new SemVer(a, loose).compare(new SemVer(b, loose));
5690 module2.exports = compare;
5693 // node_modules/semver/functions/eq.js
5694 var require_eq = __commonJS((exports2, module2) => {
5695 var compare = require_compare();
5696 var eq = (a, b, loose) => compare(a, b, loose) === 0;
5697 module2.exports = eq;
5700 // node_modules/semver/functions/diff.js
5701 var require_diff = __commonJS((exports2, module2) => {
5702 var parse = require_parse();
5703 var eq = require_eq();
5704 var diff = (version1, version2) => {
5705 if (eq(version1, version2)) {
5708 const v1 = parse(version1);
5709 const v2 = parse(version2);
5710 const hasPre = v1.prerelease.length || v2.prerelease.length;
5711 const prefix = hasPre ? "pre" : "";
5712 const defaultResult = hasPre ? "prerelease" : "";
5713 for (const key in v1) {
5714 if (key === "major" || key === "minor" || key === "patch") {
5715 if (v1[key] !== v2[key]) {
5716 return prefix + key;
5720 return defaultResult;
5723 module2.exports = diff;
5726 // node_modules/semver/functions/major.js
5727 var require_major = __commonJS((exports2, module2) => {
5728 var SemVer = require_semver();
5729 var major = (a, loose) => new SemVer(a, loose).major;
5730 module2.exports = major;
5733 // node_modules/semver/functions/minor.js
5734 var require_minor = __commonJS((exports2, module2) => {
5735 var SemVer = require_semver();
5736 var minor = (a, loose) => new SemVer(a, loose).minor;
5737 module2.exports = minor;
5740 // node_modules/semver/functions/patch.js
5741 var require_patch = __commonJS((exports2, module2) => {
5742 var SemVer = require_semver();
5743 var patch = (a, loose) => new SemVer(a, loose).patch;
5744 module2.exports = patch;
5747 // node_modules/semver/functions/prerelease.js
5748 var require_prerelease = __commonJS((exports2, module2) => {
5749 var parse = require_parse();
5750 var prerelease = (version, options) => {
5751 const parsed = parse(version, options);
5752 return parsed && parsed.prerelease.length ? parsed.prerelease : null;
5754 module2.exports = prerelease;
5757 // node_modules/semver/functions/rcompare.js
5758 var require_rcompare = __commonJS((exports2, module2) => {
5759 var compare = require_compare();
5760 var rcompare = (a, b, loose) => compare(b, a, loose);
5761 module2.exports = rcompare;
5764 // node_modules/semver/functions/compare-loose.js
5765 var require_compare_loose = __commonJS((exports2, module2) => {
5766 var compare = require_compare();
5767 var compareLoose = (a, b) => compare(a, b, true);
5768 module2.exports = compareLoose;
5771 // node_modules/semver/functions/compare-build.js
5772 var require_compare_build = __commonJS((exports2, module2) => {
5773 var SemVer = require_semver();
5774 var compareBuild = (a, b, loose) => {
5775 const versionA = new SemVer(a, loose);
5776 const versionB = new SemVer(b, loose);
5777 return versionA.compare(versionB) || versionA.compareBuild(versionB);
5779 module2.exports = compareBuild;
5782 // node_modules/semver/functions/sort.js
5783 var require_sort = __commonJS((exports2, module2) => {
5784 var compareBuild = require_compare_build();
5785 var sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
5786 module2.exports = sort;
5789 // node_modules/semver/functions/rsort.js
5790 var require_rsort = __commonJS((exports2, module2) => {
5791 var compareBuild = require_compare_build();
5792 var rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
5793 module2.exports = rsort;
5796 // node_modules/semver/functions/gt.js
5797 var require_gt = __commonJS((exports2, module2) => {
5798 var compare = require_compare();
5799 var gt = (a, b, loose) => compare(a, b, loose) > 0;
5800 module2.exports = gt;
5803 // node_modules/semver/functions/lt.js
5804 var require_lt = __commonJS((exports2, module2) => {
5805 var compare = require_compare();
5806 var lt = (a, b, loose) => compare(a, b, loose) < 0;
5807 module2.exports = lt;
5810 // node_modules/semver/functions/neq.js
5811 var require_neq = __commonJS((exports2, module2) => {
5812 var compare = require_compare();
5813 var neq = (a, b, loose) => compare(a, b, loose) !== 0;
5814 module2.exports = neq;
5817 // node_modules/semver/functions/gte.js
5818 var require_gte = __commonJS((exports2, module2) => {
5819 var compare = require_compare();
5820 var gte2 = (a, b, loose) => compare(a, b, loose) >= 0;
5821 module2.exports = gte2;
5824 // node_modules/semver/functions/lte.js
5825 var require_lte = __commonJS((exports2, module2) => {
5826 var compare = require_compare();
5827 var lte = (a, b, loose) => compare(a, b, loose) <= 0;
5828 module2.exports = lte;
5831 // node_modules/semver/functions/cmp.js
5832 var require_cmp = __commonJS((exports2, module2) => {
5833 var eq = require_eq();
5834 var neq = require_neq();
5835 var gt = require_gt();
5836 var gte2 = require_gte();
5837 var lt = require_lt();
5838 var lte = require_lte();
5839 var cmp = (a, op, b, loose) => {
5842 if (typeof a === "object")
5844 if (typeof b === "object")
5848 if (typeof a === "object")
5850 if (typeof b === "object")
5856 return eq(a, b, loose);
5858 return neq(a, b, loose);
5860 return gt(a, b, loose);
5862 return gte2(a, b, loose);
5864 return lt(a, b, loose);
5866 return lte(a, b, loose);
5868 throw new TypeError(`Invalid operator: ${op}`);
5871 module2.exports = cmp;
5874 // node_modules/semver/functions/coerce.js
5875 var require_coerce = __commonJS((exports2, module2) => {
5876 var SemVer = require_semver();
5877 var parse = require_parse();
5878 var {re, t} = require_re();
5879 var coerce = (version, options) => {
5880 if (version instanceof SemVer) {
5883 if (typeof version === "number") {
5884 version = String(version);
5886 if (typeof version !== "string") {
5889 options = options || {};
5892 match = version.match(re[t.COERCE]);
5895 while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
5896 if (!match || next.index + next[0].length !== match.index + match[0].length) {
5899 re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
5901 re[t.COERCERTL].lastIndex = -1;
5905 return parse(`${match[2]}.${match[3] || "0"}.${match[4] || "0"}`, options);
5907 module2.exports = coerce;
5910 // node_modules/semver/classes/range.js
5911 var require_range = __commonJS((exports2, module2) => {
5912 var Range17 = class {
5913 constructor(range, options) {
5914 if (!options || typeof options !== "object") {
5917 includePrerelease: false
5920 if (range instanceof Range17) {
5921 if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
5924 return new Range17(range.raw, options);
5927 if (range instanceof Comparator) {
5928 this.raw = range.value;
5929 this.set = [[range]];
5933 this.options = options;
5934 this.loose = !!options.loose;
5935 this.includePrerelease = !!options.includePrerelease;
5937 this.set = range.split(/\s*\|\|\s*/).map((range2) => this.parseRange(range2.trim())).filter((c) => c.length);
5938 if (!this.set.length) {
5939 throw new TypeError(`Invalid SemVer Range: ${range}`);
5944 this.range = this.set.map((comps) => {
5945 return comps.join(" ").trim();
5946 }).join("||").trim();
5953 const loose = this.options.loose;
5954 range = range.trim();
5955 const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
5956 range = range.replace(hr, hyphenReplace(this.options.includePrerelease));
5957 debug("hyphen replace", range);
5958 range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
5959 debug("comparator trim", range, re[t.COMPARATORTRIM]);
5960 range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
5961 range = range.replace(re[t.CARETTRIM], caretTrimReplace);
5962 range = range.split(/\s+/).join(" ");
5963 const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
5964 return range.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)).filter(this.options.loose ? (comp) => !!comp.match(compRe) : () => true).map((comp) => new Comparator(comp, this.options));
5966 intersects(range, options) {
5967 if (!(range instanceof Range17)) {
5968 throw new TypeError("a Range is required");
5970 return this.set.some((thisComparators) => {
5971 return isSatisfiable(thisComparators, options) && range.set.some((rangeComparators) => {
5972 return isSatisfiable(rangeComparators, options) && thisComparators.every((thisComparator) => {
5973 return rangeComparators.every((rangeComparator) => {
5974 return thisComparator.intersects(rangeComparator, options);
5984 if (typeof version === "string") {
5986 version = new SemVer(version, this.options);
5991 for (let i = 0; i < this.set.length; i++) {
5992 if (testSet(this.set[i], version, this.options)) {
5999 module2.exports = Range17;
6000 var Comparator = require_comparator();
6001 var debug = require_debug();
6002 var SemVer = require_semver();
6006 comparatorTrimReplace,
6010 var isSatisfiable = (comparators, options) => {
6012 const remainingComparators = comparators.slice();
6013 let testComparator = remainingComparators.pop();
6014 while (result && remainingComparators.length) {
6015 result = remainingComparators.every((otherComparator) => {
6016 return testComparator.intersects(otherComparator, options);
6018 testComparator = remainingComparators.pop();
6022 var parseComparator = (comp, options) => {
6023 debug("comp", comp, options);
6024 comp = replaceCarets(comp, options);
6025 debug("caret", comp);
6026 comp = replaceTildes(comp, options);
6027 debug("tildes", comp);
6028 comp = replaceXRanges(comp, options);
6029 debug("xrange", comp);
6030 comp = replaceStars(comp, options);
6031 debug("stars", comp);
6034 var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
6035 var replaceTildes = (comp, options) => comp.trim().split(/\s+/).map((comp2) => {
6036 return replaceTilde(comp2, options);
6038 var replaceTilde = (comp, options) => {
6039 const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
6040 return comp.replace(r, (_, M, m, p, pr) => {
6041 debug("tilde", comp, _, M, m, p, pr);
6045 } else if (isX(m)) {
6046 ret = `>=${M}.0.0 <${+M + 1}.0.0-0`;
6047 } else if (isX(p)) {
6048 ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
6050 debug("replaceTilde pr", pr);
6051 ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
6053 ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
6055 debug("tilde return", ret);
6059 var replaceCarets = (comp, options) => comp.trim().split(/\s+/).map((comp2) => {
6060 return replaceCaret(comp2, options);
6062 var replaceCaret = (comp, options) => {
6063 debug("caret", comp, options);
6064 const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
6065 const z = options.includePrerelease ? "-0" : "";
6066 return comp.replace(r, (_, M, m, p, pr) => {
6067 debug("caret", comp, _, M, m, p, pr);
6071 } else if (isX(m)) {
6072 ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`;
6073 } else if (isX(p)) {
6075 ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`;
6077 ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
6080 debug("replaceCaret pr", pr);
6083 ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
6085 ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
6088 ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
6094 ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
6096 ret = `>=${M}.${m}.${p}${z} <${M}.${+m + 1}.0-0`;
6099 ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
6102 debug("caret return", ret);
6106 var replaceXRanges = (comp, options) => {
6107 debug("replaceXRanges", comp, options);
6108 return comp.split(/\s+/).map((comp2) => {
6109 return replaceXRange(comp2, options);
6112 var replaceXRange = (comp, options) => {
6114 const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
6115 return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
6116 debug("xRange", comp, ret, gtlt, M, m, p, pr);
6118 const xm = xM || isX(m);
6119 const xp = xm || isX(p);
6121 if (gtlt === "=" && anyX) {
6124 pr = options.includePrerelease ? "-0" : "";
6126 if (gtlt === ">" || gtlt === "<") {
6131 } else if (gtlt && anyX) {
6146 } else if (gtlt === "<=") {
6156 ret = `${gtlt + M}.${m}.${p}${pr}`;
6158 ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`;
6160 ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
6162 debug("xRange return", ret);
6166 var replaceStars = (comp, options) => {
6167 debug("replaceStars", comp, options);
6168 return comp.trim().replace(re[t.STAR], "");
6170 var replaceGTE0 = (comp, options) => {
6171 debug("replaceGTE0", comp, options);
6172 return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
6174 var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) => {
6177 } else if (isX(fm)) {
6178 from = `>=${fM}.0.0${incPr ? "-0" : ""}`;
6179 } else if (isX(fp)) {
6180 from = `>=${fM}.${fm}.0${incPr ? "-0" : ""}`;
6184 from = `>=${from}${incPr ? "-0" : ""}`;
6188 } else if (isX(tm)) {
6189 to = `<${+tM + 1}.0.0-0`;
6190 } else if (isX(tp)) {
6191 to = `<${tM}.${+tm + 1}.0-0`;
6193 to = `<=${tM}.${tm}.${tp}-${tpr}`;
6195 to = `<${tM}.${tm}.${+tp + 1}-0`;
6199 return `${from} ${to}`.trim();
6201 var testSet = (set, version, options) => {
6202 for (let i = 0; i < set.length; i++) {
6203 if (!set[i].test(version)) {
6207 if (version.prerelease.length && !options.includePrerelease) {
6208 for (let i = 0; i < set.length; i++) {
6209 debug(set[i].semver);
6210 if (set[i].semver === Comparator.ANY) {
6213 if (set[i].semver.prerelease.length > 0) {
6214 const allowed = set[i].semver;
6215 if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
6226 // node_modules/semver/classes/comparator.js
6227 var require_comparator = __commonJS((exports2, module2) => {
6228 var ANY = Symbol("SemVer ANY");
6229 var Comparator = class {
6233 constructor(comp, options) {
6234 if (!options || typeof options !== "object") {
6237 includePrerelease: false
6240 if (comp instanceof Comparator) {
6241 if (comp.loose === !!options.loose) {
6247 debug("comparator", comp, options);
6248 this.options = options;
6249 this.loose = !!options.loose;
6251 if (this.semver === ANY) {
6254 this.value = this.operator + this.semver.version;
6256 debug("comp", this);
6259 const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
6260 const m = comp.match(r);
6262 throw new TypeError(`Invalid comparator: ${comp}`);
6264 this.operator = m[1] !== void 0 ? m[1] : "";
6265 if (this.operator === "=") {
6271 this.semver = new SemVer(m[2], this.options.loose);
6278 debug("Comparator.test", version, this.options.loose);
6279 if (this.semver === ANY || version === ANY) {
6282 if (typeof version === "string") {
6284 version = new SemVer(version, this.options);
6289 return cmp(version, this.operator, this.semver, this.options);
6291 intersects(comp, options) {
6292 if (!(comp instanceof Comparator)) {
6293 throw new TypeError("a Comparator is required");
6295 if (!options || typeof options !== "object") {
6298 includePrerelease: false
6301 if (this.operator === "") {
6302 if (this.value === "") {
6305 return new Range17(comp.value, options).test(this.value);
6306 } else if (comp.operator === "") {
6307 if (comp.value === "") {
6310 return new Range17(this.value, options).test(comp.semver);
6312 const sameDirectionIncreasing = (this.operator === ">=" || this.operator === ">") && (comp.operator === ">=" || comp.operator === ">");
6313 const sameDirectionDecreasing = (this.operator === "<=" || this.operator === "<") && (comp.operator === "<=" || comp.operator === "<");
6314 const sameSemVer = this.semver.version === comp.semver.version;
6315 const differentDirectionsInclusive = (this.operator === ">=" || this.operator === "<=") && (comp.operator === ">=" || comp.operator === "<=");
6316 const oppositeDirectionsLessThan = cmp(this.semver, "<", comp.semver, options) && (this.operator === ">=" || this.operator === ">") && (comp.operator === "<=" || comp.operator === "<");
6317 const oppositeDirectionsGreaterThan = cmp(this.semver, ">", comp.semver, options) && (this.operator === "<=" || this.operator === "<") && (comp.operator === ">=" || comp.operator === ">");
6318 return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
6321 module2.exports = Comparator;
6322 var {re, t} = require_re();
6323 var cmp = require_cmp();
6324 var debug = require_debug();
6325 var SemVer = require_semver();
6326 var Range17 = require_range();
6329 // node_modules/semver/functions/satisfies.js
6330 var require_satisfies = __commonJS((exports2, module2) => {
6331 var Range17 = require_range();
6332 var satisfies = (version, range, options) => {
6334 range = new Range17(range, options);
6338 return range.test(version);
6340 module2.exports = satisfies;
6343 // node_modules/semver/ranges/to-comparators.js
6344 var require_to_comparators = __commonJS((exports2, module2) => {
6345 var Range17 = require_range();
6346 var toComparators = (range, options) => new Range17(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" "));
6347 module2.exports = toComparators;
6350 // node_modules/semver/ranges/max-satisfying.js
6351 var require_max_satisfying = __commonJS((exports2, module2) => {
6352 var SemVer = require_semver();
6353 var Range17 = require_range();
6354 var maxSatisfying = (versions, range, options) => {
6357 let rangeObj = null;
6359 rangeObj = new Range17(range, options);
6363 versions.forEach((v) => {
6364 if (rangeObj.test(v)) {
6365 if (!max || maxSV.compare(v) === -1) {
6367 maxSV = new SemVer(max, options);
6373 module2.exports = maxSatisfying;
6376 // node_modules/semver/ranges/min-satisfying.js
6377 var require_min_satisfying = __commonJS((exports2, module2) => {
6378 var SemVer = require_semver();
6379 var Range17 = require_range();
6380 var minSatisfying = (versions, range, options) => {
6383 let rangeObj = null;
6385 rangeObj = new Range17(range, options);
6389 versions.forEach((v) => {
6390 if (rangeObj.test(v)) {
6391 if (!min || minSV.compare(v) === 1) {
6393 minSV = new SemVer(min, options);
6399 module2.exports = minSatisfying;
6402 // node_modules/semver/ranges/min-version.js
6403 var require_min_version = __commonJS((exports2, module2) => {
6404 var SemVer = require_semver();
6405 var Range17 = require_range();
6406 var gt = require_gt();
6407 var minVersion = (range, loose) => {
6408 range = new Range17(range, loose);
6409 let minver = new SemVer("0.0.0");
6410 if (range.test(minver)) {
6413 minver = new SemVer("0.0.0-0");
6414 if (range.test(minver)) {
6418 for (let i = 0; i < range.set.length; ++i) {
6419 const comparators = range.set[i];
6420 comparators.forEach((comparator) => {
6421 const compver = new SemVer(comparator.semver.version);
6422 switch (comparator.operator) {
6424 if (compver.prerelease.length === 0) {
6427 compver.prerelease.push(0);
6429 compver.raw = compver.format();
6432 if (!minver || gt(minver, compver)) {
6440 throw new Error(`Unexpected operation: ${comparator.operator}`);
6444 if (minver && range.test(minver)) {
6449 module2.exports = minVersion;
6452 // node_modules/semver/ranges/valid.js
6453 var require_valid2 = __commonJS((exports2, module2) => {
6454 var Range17 = require_range();
6455 var validRange = (range, options) => {
6457 return new Range17(range, options).range || "*";
6462 module2.exports = validRange;
6465 // node_modules/semver/ranges/outside.js
6466 var require_outside = __commonJS((exports2, module2) => {
6467 var SemVer = require_semver();
6468 var Comparator = require_comparator();
6469 var {ANY} = Comparator;
6470 var Range17 = require_range();
6471 var satisfies = require_satisfies();
6472 var gt = require_gt();
6473 var lt = require_lt();
6474 var lte = require_lte();
6475 var gte2 = require_gte();
6476 var outside = (version, range, hilo, options) => {
6477 version = new SemVer(version, options);
6478 range = new Range17(range, options);
6479 let gtfn, ltefn, ltfn, comp, ecomp;
6496 throw new TypeError('Must provide a hilo val of "<" or ">"');
6498 if (satisfies(version, range, options)) {
6501 for (let i = 0; i < range.set.length; ++i) {
6502 const comparators = range.set[i];
6505 comparators.forEach((comparator) => {
6506 if (comparator.semver === ANY) {
6507 comparator = new Comparator(">=0.0.0");
6509 high = high || comparator;
6510 low = low || comparator;
6511 if (gtfn(comparator.semver, high.semver, options)) {
6513 } else if (ltfn(comparator.semver, low.semver, options)) {
6517 if (high.operator === comp || high.operator === ecomp) {
6520 if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
6522 } else if (low.operator === ecomp && ltfn(version, low.semver)) {
6528 module2.exports = outside;
6531 // node_modules/semver/ranges/gtr.js
6532 var require_gtr = __commonJS((exports2, module2) => {
6533 var outside = require_outside();
6534 var gtr = (version, range, options) => outside(version, range, ">", options);
6535 module2.exports = gtr;
6538 // node_modules/semver/ranges/ltr.js
6539 var require_ltr = __commonJS((exports2, module2) => {
6540 var outside = require_outside();
6541 var ltr = (version, range, options) => outside(version, range, "<", options);
6542 module2.exports = ltr;
6545 // node_modules/semver/ranges/intersects.js
6546 var require_intersects = __commonJS((exports2, module2) => {
6547 var Range17 = require_range();
6548 var intersects = (r1, r2, options) => {
6549 r1 = new Range17(r1, options);
6550 r2 = new Range17(r2, options);
6551 return r1.intersects(r2);
6553 module2.exports = intersects;
6556 // node_modules/semver/ranges/simplify.js
6557 var require_simplify = __commonJS((exports2, module2) => {
6558 var satisfies = require_satisfies();
6559 var compare = require_compare();
6560 module2.exports = (versions, range, options) => {
6564 const v = versions.sort((a, b) => compare(a, b, options));
6565 for (const version of v) {
6566 const included = satisfies(version, range, options);
6573 set.push([min, prev]);
6580 set.push([min, null]);
6582 for (const [min2, max] of set) {
6585 else if (!max && min2 === v[0])
6588 ranges.push(`>=${min2}`);
6589 else if (min2 === v[0])
6590 ranges.push(`<=${max}`);
6592 ranges.push(`${min2} - ${max}`);
6594 const simplified = ranges.join(" || ");
6595 const original = typeof range.raw === "string" ? range.raw : String(range);
6596 return simplified.length < original.length ? simplified : range;
6600 // node_modules/semver/ranges/subset.js
6601 var require_subset = __commonJS((exports2, module2) => {
6602 var Range17 = require_range();
6603 var {ANY} = require_comparator();
6604 var satisfies = require_satisfies();
6605 var compare = require_compare();
6606 var subset = (sub, dom, options) => {
6607 sub = new Range17(sub, options);
6608 dom = new Range17(dom, options);
6609 let sawNonNull = false;
6611 for (const simpleSub of sub.set) {
6612 for (const simpleDom of dom.set) {
6613 const isSub = simpleSubset(simpleSub, simpleDom, options);
6614 sawNonNull = sawNonNull || isSub !== null;
6623 var simpleSubset = (sub, dom, options) => {
6624 if (sub.length === 1 && sub[0].semver === ANY)
6625 return dom.length === 1 && dom[0].semver === ANY;
6626 const eqSet = new Set();
6628 for (const c of sub) {
6629 if (c.operator === ">" || c.operator === ">=")
6630 gt = higherGT(gt, c, options);
6631 else if (c.operator === "<" || c.operator === "<=")
6632 lt = lowerLT(lt, c, options);
6634 eqSet.add(c.semver);
6640 gtltComp = compare(gt.semver, lt.semver, options);
6643 else if (gtltComp === 0 && (gt.operator !== ">=" || lt.operator !== "<="))
6646 for (const eq of eqSet) {
6647 if (gt && !satisfies(eq, String(gt), options))
6649 if (lt && !satisfies(eq, String(lt), options))
6651 for (const c of dom) {
6652 if (!satisfies(eq, String(c), options))
6658 let hasDomLT, hasDomGT;
6659 for (const c of dom) {
6660 hasDomGT = hasDomGT || c.operator === ">" || c.operator === ">=";
6661 hasDomLT = hasDomLT || c.operator === "<" || c.operator === "<=";
6663 if (c.operator === ">" || c.operator === ">=") {
6664 higher = higherGT(gt, c, options);
6667 } else if (gt.operator === ">=" && !satisfies(gt.semver, String(c), options))
6671 if (c.operator === "<" || c.operator === "<=") {
6672 lower = lowerLT(lt, c, options);
6675 } else if (lt.operator === "<=" && !satisfies(lt.semver, String(c), options))
6678 if (!c.operator && (lt || gt) && gtltComp !== 0)
6681 if (gt && hasDomLT && !lt && gtltComp !== 0)
6683 if (lt && hasDomGT && !gt && gtltComp !== 0)
6687 var higherGT = (a, b, options) => {
6690 const comp = compare(a.semver, b.semver, options);
6691 return comp > 0 ? a : comp < 0 ? b : b.operator === ">" && a.operator === ">=" ? b : a;
6693 var lowerLT = (a, b, options) => {
6696 const comp = compare(a.semver, b.semver, options);
6697 return comp < 0 ? a : comp > 0 ? b : b.operator === "<" && a.operator === "<=" ? b : a;
6699 module2.exports = subset;
6702 // node_modules/semver/index.js
6703 var require_semver2 = __commonJS((exports2, module2) => {
6704 var internalRe = require_re();
6707 src: internalRe.src,
6708 tokens: internalRe.t,
6709 SEMVER_SPEC_VERSION: require_constants().SEMVER_SPEC_VERSION,
6710 SemVer: require_semver(),
6711 compareIdentifiers: require_identifiers().compareIdentifiers,
6712 rcompareIdentifiers: require_identifiers().rcompareIdentifiers,
6713 parse: require_parse(),
6714 valid: require_valid(),
6715 clean: require_clean(),
6717 diff: require_diff(),
6718 major: require_major(),
6719 minor: require_minor(),
6720 patch: require_patch(),
6721 prerelease: require_prerelease(),
6722 compare: require_compare(),
6723 rcompare: require_rcompare(),
6724 compareLoose: require_compare_loose(),
6725 compareBuild: require_compare_build(),
6726 sort: require_sort(),
6727 rsort: require_rsort(),
6735 coerce: require_coerce(),
6736 Comparator: require_comparator(),
6737 Range: require_range(),
6738 satisfies: require_satisfies(),
6739 toComparators: require_to_comparators(),
6740 maxSatisfying: require_max_satisfying(),
6741 minSatisfying: require_min_satisfying(),
6742 minVersion: require_min_version(),
6743 validRange: require_valid2(),
6744 outside: require_outside(),
6747 intersects: require_intersects(),
6748 simplifyRange: require_simplify(),
6749 subset: require_subset()
6753 // node_modules/isexe/windows.js
6754 var require_windows = __commonJS((exports2, module2) => {
6755 module2.exports = isexe;
6757 var fs5 = require("fs");
6758 function checkPathExt(path9, options) {
6759 var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT;
6763 pathext = pathext.split(";");
6764 if (pathext.indexOf("") !== -1) {
6767 for (var i = 0; i < pathext.length; i++) {
6768 var p = pathext[i].toLowerCase();
6769 if (p && path9.substr(-p.length).toLowerCase() === p) {
6775 function checkStat(stat, path9, options) {
6776 if (!stat.isSymbolicLink() && !stat.isFile()) {
6779 return checkPathExt(path9, options);
6781 function isexe(path9, options, cb) {
6782 fs5.stat(path9, function(er, stat) {
6783 cb(er, er ? false : checkStat(stat, path9, options));
6786 function sync(path9, options) {
6787 return checkStat(fs5.statSync(path9), path9, options);
6791 // node_modules/isexe/mode.js
6792 var require_mode = __commonJS((exports2, module2) => {
6793 module2.exports = isexe;
6795 var fs5 = require("fs");
6796 function isexe(path9, options, cb) {
6797 fs5.stat(path9, function(er, stat) {
6798 cb(er, er ? false : checkStat(stat, options));
6801 function sync(path9, options) {
6802 return checkStat(fs5.statSync(path9), options);
6804 function checkStat(stat, options) {
6805 return stat.isFile() && checkMode(stat, options);
6807 function checkMode(stat, options) {
6808 var mod = stat.mode;
6811 var myUid = options.uid !== void 0 ? options.uid : process.getuid && process.getuid();
6812 var myGid = options.gid !== void 0 ? options.gid : process.getgid && process.getgid();
6813 var u = parseInt("100", 8);
6814 var g = parseInt("010", 8);
6815 var o = parseInt("001", 8);
6817 var ret = mod & o || mod & g && gid === myGid || mod & u && uid === myUid || mod & ug && myUid === 0;
6822 // node_modules/isexe/index.js
6823 var require_isexe = __commonJS((exports2, module2) => {
6824 var fs5 = require("fs");
6826 if (process.platform === "win32" || global.TESTING_WINDOWS) {
6827 core = require_windows();
6829 core = require_mode();
6831 module2.exports = isexe;
6833 function isexe(path9, options, cb) {
6834 if (typeof options === "function") {
6839 if (typeof Promise !== "function") {
6840 throw new TypeError("callback not provided");
6842 return new Promise(function(resolve, reject) {
6843 isexe(path9, options || {}, function(er, is2) {
6852 core(path9, options || {}, function(er, is2) {
6854 if (er.code === "EACCES" || options && options.ignoreErrors) {
6862 function sync(path9, options) {
6864 return core.sync(path9, options || {});
6866 if (options && options.ignoreErrors || er.code === "EACCES") {
6875 // node_modules/which/which.js
6876 var require_which = __commonJS((exports2, module2) => {
6877 var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys";
6878 var path9 = require("path");
6879 var COLON = isWindows ? ";" : ":";
6880 var isexe = require_isexe();
6881 var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), {code: "ENOENT"});
6882 var getPathInfo = (cmd, opt) => {
6883 const colon = opt.colon || COLON;
6884 const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [""] : [
6885 ...isWindows ? [process.cwd()] : [],
6886 ...(opt.path || process.env.PATH || "").split(colon)
6888 const pathExtExe = isWindows ? opt.pathExt || process.env.PATHEXT || ".EXE;.CMD;.BAT;.COM" : "";
6889 const pathExt = isWindows ? pathExtExe.split(colon) : [""];
6891 if (cmd.indexOf(".") !== -1 && pathExt[0] !== "")
6892 pathExt.unshift("");
6900 var which2 = (cmd, opt, cb) => {
6901 if (typeof opt === "function") {
6907 const {pathEnv, pathExt, pathExtExe} = getPathInfo(cmd, opt);
6909 const step = (i) => new Promise((resolve, reject) => {
6910 if (i === pathEnv.length)
6911 return opt.all && found.length ? resolve(found) : reject(getNotFoundError(cmd));
6912 const ppRaw = pathEnv[i];
6913 const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
6914 const pCmd = path9.join(pathPart, cmd);
6915 const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
6916 resolve(subStep(p, i, 0));
6918 const subStep = (p, i, ii) => new Promise((resolve, reject) => {
6919 if (ii === pathExt.length)
6920 return resolve(step(i + 1));
6921 const ext = pathExt[ii];
6922 isexe(p + ext, {pathExt: pathExtExe}, (er, is2) => {
6925 found.push(p + ext);
6927 return resolve(p + ext);
6929 return resolve(subStep(p, i, ii + 1));
6932 return cb ? step(0).then((res) => cb(null, res), cb) : step(0);
6934 var whichSync = (cmd, opt) => {
6936 const {pathEnv, pathExt, pathExtExe} = getPathInfo(cmd, opt);
6938 for (let i = 0; i < pathEnv.length; i++) {
6939 const ppRaw = pathEnv[i];
6940 const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw;
6941 const pCmd = path9.join(pathPart, cmd);
6942 const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd;
6943 for (let j = 0; j < pathExt.length; j++) {
6944 const cur = p + pathExt[j];
6946 const is2 = isexe.sync(cur, {pathExt: pathExtExe});
6957 if (opt.all && found.length)
6961 throw getNotFoundError(cmd);
6963 module2.exports = which2;
6964 which2.sync = whichSync;
6969 activate: () => activate
6971 var import_coc37 = __toModule(require("coc.nvim"));
6973 // src/server/index.ts
6974 var import_coc35 = __toModule(require("coc.nvim"));
6975 var import_vscode_languageserver_protocol24 = __toModule(require_main3());
6977 // src/server/typescriptServiceClientHost.ts
6978 var import_coc34 = __toModule(require("coc.nvim"));
6979 var import_vscode_languageserver_protocol23 = __toModule(require_main3());
6981 // src/utils/arrays.ts
6982 function equals(one, other, itemEquals = (a, b) => a === b) {
6983 if (one.length !== other.length) {
6986 for (let i = 0, len = one.length; i < len; i++) {
6987 if (!itemEquals(one[i], other[i])) {
6993 function flatten(arr) {
6994 return [].concat.apply([], arr);
6997 // src/server/features/fileConfigurationManager.ts
6998 var import_coc = __toModule(require("coc.nvim"));
6999 var import_vscode_languageserver_protocol = __toModule(require_main3());
7001 // src/server/utils/api.ts
7002 var semver = __toModule(require_semver2());
7004 constructor(versionString, version) {
7005 this.versionString = versionString;
7006 this.version = version;
7008 static fromSimpleString(value) {
7009 return new API2(value, value);
7011 static fromVersionString(versionString) {
7012 let version = semver.valid(versionString);
7014 return new API2("invalid version", "1.0.0");
7016 const index = versionString.indexOf("-");
7018 version = version.substr(0, index);
7020 return new API2(versionString, version);
7023 return semver.gte(this.version, other.version);
7026 return !this.gte(other);
7030 API.defaultVersion = API2.fromSimpleString("1.0.0");
7031 API.v203 = API2.fromSimpleString("2.0.3");
7032 API.v206 = API2.fromSimpleString("2.0.6");
7033 API.v208 = API2.fromSimpleString("2.0.8");
7034 API.v213 = API2.fromSimpleString("2.1.3");
7035 API.v220 = API2.fromSimpleString("2.2.0");
7036 API.v222 = API2.fromSimpleString("2.2.2");
7037 API.v230 = API2.fromSimpleString("2.3.0");
7038 API.v234 = API2.fromSimpleString("2.3.4");
7039 API.v240 = API2.fromSimpleString("2.4.0");
7040 API.v250 = API2.fromSimpleString("2.5.0");
7041 API.v260 = API2.fromSimpleString("2.6.0");
7042 API.v270 = API2.fromSimpleString("2.7.0");
7043 API.v280 = API2.fromSimpleString("2.8.0");
7044 API.v290 = API2.fromSimpleString("2.9.0");
7045 API.v291 = API2.fromSimpleString("2.9.1");
7046 API.v292 = API2.fromSimpleString("2.9.2");
7047 API.v300 = API2.fromSimpleString("3.0.0");
7048 API.v310 = API2.fromSimpleString("3.1.0");
7049 API.v314 = API2.fromSimpleString("3.1.4");
7050 API.v320 = API2.fromSimpleString("3.2.0");
7051 API.v330 = API2.fromSimpleString("3.3.0");
7052 API.v333 = API2.fromSimpleString("3.3.3");
7053 API.v340 = API2.fromSimpleString("3.4.0");
7054 API.v345 = API2.fromSimpleString("3.4.5");
7055 API.v350 = API2.fromSimpleString("3.5.0");
7056 API.v380 = API2.fromSimpleString("3.8.0");
7057 API.v381 = API2.fromSimpleString("3.8.1");
7058 API.v390 = API2.fromSimpleString("3.9.0");
7059 API.v400 = API2.fromSimpleString("4.0.0");
7060 API.v401 = API2.fromSimpleString("4.0.1");
7061 API.v420 = API2.fromSimpleString("4.2.0");
7062 API.v430 = API2.fromSimpleString("4.3.0");
7063 var api_default = API;
7065 // src/server/features/fileConfigurationManager.ts
7066 function objAreEqual(a, b) {
7067 let keys = Object.keys(a);
7068 for (let i = 0; i < keys.length; i++) {
7070 if (a[key] !== b[key]) {
7076 var FileConfigurationManager = class {
7077 constructor(client) {
7078 this.client = client;
7079 this.cachedMap = new Map();
7080 this.disposables = [];
7081 import_coc.workspace.onDidCloseTextDocument((textDocument) => {
7082 this.cachedMap.delete(textDocument.uri);
7083 }, void 0, this.disposables);
7085 async ensureConfigurationOptions(document, insertSpaces, tabSize, token) {
7086 const file2 = this.client.toPath(document.uri);
7091 let cachedOption = this.cachedMap.get(document.uri);
7092 const currentOptions = this.getFileOptions(options, document);
7093 if (cachedOption && objAreEqual(cachedOption.formatOptions, currentOptions.formatOptions) && objAreEqual(cachedOption.preferences, currentOptions.preferences))
7095 this.cachedMap.set(document.uri, currentOptions);
7100 await this.client.execute("configure", args, import_vscode_languageserver_protocol.CancellationToken.None);
7102 const response = await this.client.execute("configure", args, token);
7103 if (response.type !== "response") {
7104 this.cachedMap.delete(document.uri);
7107 this.cachedMap.delete(document.uri);
7110 async ensureConfigurationForDocument(document, token) {
7111 let opts = await import_coc.workspace.getFormatOptions(document.uri);
7112 return this.ensureConfigurationOptions(document, opts.insertSpaces, opts.tabSize, token);
7115 this.cachedMap.clear();
7117 getLanguageConfiguration(languageId) {
7118 return import_coc.workspace.getConfiguration(languageId);
7120 isTypeScriptDocument(languageId) {
7121 return languageId.startsWith("typescript");
7123 formatEnabled(document) {
7124 let {languageId, uri} = document;
7125 let language2 = languageId.startsWith("typescript") ? "typescript" : "javascript";
7126 const config = import_coc.workspace.getConfiguration(`${language2}.format`, uri);
7127 return config.get("enabled");
7129 enableJavascript() {
7130 const config = import_coc.workspace.getConfiguration("tsserver");
7131 return !!config.get("enableJavascript");
7133 getFileOptions(options, document) {
7134 const lang = this.isTypeScriptDocument(document.languageId) ? "typescript" : "javascript";
7136 formatOptions: this.getFormatOptions(options, lang, document.uri),
7137 preferences: this.getPreferences(lang, document.uri)
7140 getFormatOptions(options, language2, uri) {
7141 const config = import_coc.workspace.getConfiguration(`${language2}.format`, uri);
7143 tabSize: options.tabSize,
7144 indentSize: options.tabSize,
7145 convertTabsToSpaces: options.insertSpaces,
7146 newLineCharacter: "\n",
7147 insertSpaceAfterCommaDelimiter: config.get("insertSpaceAfterCommaDelimiter"),
7148 insertSpaceAfterConstructor: config.get("insertSpaceAfterConstructor"),
7149 insertSpaceAfterSemicolonInForStatements: config.get("insertSpaceAfterSemicolonInForStatements"),
7150 insertSpaceBeforeAndAfterBinaryOperators: config.get("insertSpaceBeforeAndAfterBinaryOperators"),
7151 insertSpaceAfterKeywordsInControlFlowStatements: config.get("insertSpaceAfterKeywordsInControlFlowStatements"),
7152 insertSpaceAfterFunctionKeywordForAnonymousFunctions: config.get("insertSpaceAfterFunctionKeywordForAnonymousFunctions"),
7153 insertSpaceBeforeFunctionParenthesis: config.get("insertSpaceBeforeFunctionParenthesis"),
7154 insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: config.get("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"),
7155 insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: config.get("insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets"),
7156 insertSpaceAfterOpeningAndBeforeClosingEmptyBraces: config.get("insertSpaceAfterOpeningAndBeforeClosingEmptyBraces"),
7157 insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces: config.get("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"),
7158 insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: config.get("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"),
7159 insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces: config.get("insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces"),
7160 insertSpaceAfterTypeAssertion: config.get("insertSpaceAfterTypeAssertion"),
7161 placeOpenBraceOnNewLineForFunctions: config.get("placeOpenBraceOnNewLineForFunctions"),
7162 placeOpenBraceOnNewLineForControlBlocks: config.get("placeOpenBraceOnNewLineForControlBlocks"),
7163 semicolons: config.get("semicolons", void 0)
7166 getCompleteOptions(languageId) {
7167 const lang = this.isTypeScriptDocument(languageId) ? "typescript" : "javascript";
7168 const config = import_coc.workspace.getConfiguration(`${lang}.suggest`);
7170 enabled: config.get("enabled", true),
7171 names: config.get("names", true),
7172 paths: config.get("paths", true),
7173 completeFunctionCalls: config.get("completeFunctionCalls", true),
7174 autoImports: config.get("autoImports", true),
7175 importStatementSuggestions: config.get("importStatements", true),
7176 includeCompletionsForImportStatements: config.get("includeCompletionsForImportStatements", true),
7177 includeCompletionsWithSnippetText: config.get("includeCompletionsWithSnippetText", true),
7178 includeAutomaticOptionalChainCompletions: config.get("includeAutomaticOptionalChainCompletions", true)
7181 getPreferences(language2, uri) {
7182 if (this.client.apiVersion.lt(api_default.v290)) {
7185 const config = import_coc.workspace.getConfiguration(`${language2}.preferences`, uri);
7186 const preferences = {
7187 quotePreference: this.getQuoteStyle(config),
7188 importModuleSpecifierPreference: getImportModuleSpecifier(config),
7189 importModuleSpecifierEnding: getImportModuleSpecifierEndingPreference(config),
7190 allowTextChangesInNewFiles: uri.startsWith("file:"),
7191 allowRenameOfImportPath: true,
7192 providePrefixAndSuffixTextForRename: config.get("renameShorthandProperties", true) === false ? false : config.get("useAliasesForRenames", true),
7193 includeCompletionsForImportStatements: this.getCompleteOptions(language2).includeCompletionsForImportStatements,
7194 includeCompletionsWithSnippetText: this.getCompleteOptions(language2).includeCompletionsWithSnippetText
7198 getQuoteStyle(config) {
7199 let quoteStyle = config.get("quoteStyle", "auto");
7200 if (this.client.apiVersion.gte(api_default.v333) || quoteStyle != "auto")
7205 import_coc.disposeAll(this.disposables);
7208 var fileConfigurationManager_default = FileConfigurationManager;
7209 function getImportModuleSpecifier(config) {
7210 let val = config.get("importModuleSpecifier");
7212 case "project-relative":
7213 return "project-relative";
7216 case "non-relative":
7217 return "non-relative";
7222 function getImportModuleSpecifierEndingPreference(config) {
7223 switch (config.get("importModuleSpecifierEnding")) {
7235 // src/server/features/watchBuild.ts
7236 var import_coc2 = __toModule(require("coc.nvim"));
7237 var import_path = __toModule(require("path"));
7238 var import_vscode_languageserver_protocol2 = __toModule(require_main3());
7239 var countRegex = /Found\s+(\d+)\s+error/;
7240 var errorRegex = /^(.+)\((\d+),(\d+)\):\s(\w+)\sTS(\d+):\s*(.+)$/;
7242 (function(TscStatus2) {
7243 TscStatus2[TscStatus2["INIT"] = 0] = "INIT";
7244 TscStatus2[TscStatus2["COMPILING"] = 1] = "COMPILING";
7245 TscStatus2[TscStatus2["RUNNING"] = 2] = "RUNNING";
7246 TscStatus2[TscStatus2["ERROR"] = 3] = "ERROR";
7247 })(TscStatus || (TscStatus = {}));
7248 var WatchProject2 = class {
7249 constructor(client) {
7250 this.client = client;
7251 this.disposables = [];
7252 this.statusItem = import_coc2.window.createStatusBarItem(1, {progress: true});
7253 let task = this.task = import_coc2.workspace.createTask("TSC");
7254 this.disposables.push(import_coc2.commands.registerCommand(WatchProject2.id, async () => {
7255 let opts = this.options = await this.getOptions();
7256 await this.start(opts);
7258 task.onExit((code) => {
7260 import_coc2.window.showMessage(`TSC exit with code ${code}`, "warning");
7264 task.onStdout((lines) => {
7265 for (let line of lines) {
7269 task.onStderr((lines) => {
7270 import_coc2.window.showMessage(`TSC error: ` + lines.join("\n"), "error");
7272 this.disposables.push(import_vscode_languageserver_protocol2.Disposable.create(() => {
7275 this.check().catch((_e) => {
7279 let running = await this.task.running;
7281 this.options = await this.getOptions();
7282 this.statusItem.isProgress = false;
7283 this.statusItem.text = "?";
7284 this.statusItem.show();
7289 async start(options) {
7290 await this.task.start(options);
7293 this.statusItem.hide();
7296 this.statusItem.text = "compiling";
7297 this.statusItem.isProgress = true;
7298 this.statusItem.show();
7299 import_coc2.workspace.nvim.call("setqflist", [[]], true);
7302 if (countRegex.test(line)) {
7303 let ms = line.match(countRegex);
7304 this.statusItem.text = ms[1] == "0" ? "\u2713" : "\u2717";
7305 this.statusItem.isProgress = false;
7306 } else if (WatchProject2.startTexts.findIndex((s) => line.indexOf(s) !== -1) != -1) {
7309 let ms = line.match(errorRegex);
7312 let fullpath = import_path.default.join(this.options.cwd, ms[1]);
7313 let uri = import_coc2.Uri.file(fullpath).toString();
7314 let doc = import_coc2.workspace.getDocument(uri);
7315 let bufnr = doc ? doc.bufnr : null;
7318 lnum: Number(ms[2]),
7320 text: `[tsc ${ms[5]}] ${ms[6]}`,
7321 type: /error/i.test(ms[4]) ? "E" : "W"
7325 import_coc2.workspace.nvim.call("setqflist", [[item], "a"]);
7328 async getOptions() {
7329 let {tscPath} = this.client;
7331 import_coc2.window.showMessage(`Local & global tsc not found`, "error");
7334 const tsconfigPath = import_coc2.workspace.getConfiguration("tsserver").get("tsconfigPath", "tsconfig.json");
7335 let find = await import_coc2.workspace.findUp([tsconfigPath]);
7337 import_coc2.window.showMessage(`${tsconfigPath} not found!`, "error");
7340 let root = import_path.default.dirname(find);
7343 args: ["-p", tsconfigPath, "--watch", "true", "--pretty", "false"],
7348 import_coc2.disposeAll(this.disposables);
7351 var WatchProject = WatchProject2;
7352 WatchProject.id = "tsserver.watchBuild";
7353 WatchProject.startTexts = ["Starting compilation in watch mode", "Starting incremental compilation"];
7354 var watchBuild_default = WatchProject;
7356 // src/server/features/workspaceSymbols.ts
7357 var import_coc3 = __toModule(require("coc.nvim"));
7358 var import_vscode_languageserver_protocol3 = __toModule(require_main3());
7360 // src/server/protocol.const.ts
7363 Kind.alias = "alias";
7364 Kind.callSignature = "call";
7365 Kind.class = "class";
7366 Kind.const = "const";
7367 Kind.constructorImplementation = "constructor";
7368 Kind.constructSignature = "construct";
7369 Kind.directory = "directory";
7371 Kind.enumMember = "enum member";
7372 Kind.externalModuleName = "external module name";
7373 Kind.function = "function";
7374 Kind.indexSignature = "index";
7375 Kind.interface = "interface";
7376 Kind.keyword = "keyword";
7378 Kind.localFunction = "local function";
7379 Kind.localVariable = "local var";
7380 Kind.method = "method";
7381 Kind.memberGetAccessor = "getter";
7382 Kind.memberSetAccessor = "setter";
7383 Kind.memberVariable = "property";
7384 Kind.module = "module";
7385 Kind.primitiveType = "primitive type";
7386 Kind.script = "script";
7388 Kind.variable = "var";
7389 Kind.warning = "warning";
7390 Kind.string = "string";
7391 Kind.parameter = "parameter";
7392 Kind.typeParameter = "type parameter";
7393 var DiagnosticCategory = class {
7395 DiagnosticCategory.error = "error";
7396 DiagnosticCategory.warning = "warning";
7397 DiagnosticCategory.suggestion = "suggestion";
7398 var KindModifiers2 = class {
7400 var KindModifiers = KindModifiers2;
7401 KindModifiers.optional = "optional";
7402 KindModifiers.deprecated = "deprecated";
7403 KindModifiers.color = "color";
7404 KindModifiers.dtsFile = ".d.ts";
7405 KindModifiers.tsFile = ".ts";
7406 KindModifiers.tsxFile = ".tsx";
7407 KindModifiers.jsFile = ".js";
7408 KindModifiers.jsxFile = ".jsx";
7409 KindModifiers.jsonFile = ".json";
7410 KindModifiers.fileExtensionKindModifiers = [
7411 KindModifiers2.dtsFile,
7412 KindModifiers2.tsFile,
7413 KindModifiers2.tsxFile,
7414 KindModifiers2.jsFile,
7415 KindModifiers2.jsxFile,
7416 KindModifiers2.jsonFile
7418 var DisplayPartKind = class {
7420 DisplayPartKind.functionName = "functionName";
7421 DisplayPartKind.methodName = "methodName";
7422 DisplayPartKind.parameterName = "parameterName";
7423 DisplayPartKind.propertyName = "propertyName";
7424 DisplayPartKind.punctuation = "punctuation";
7425 DisplayPartKind.text = "text";
7427 (function(EventName2) {
7428 EventName2["syntaxDiag"] = "syntaxDiag";
7429 EventName2["semanticDiag"] = "semanticDiag";
7430 EventName2["suggestionDiag"] = "suggestionDiag";
7431 EventName2["configFileDiag"] = "configFileDiag";
7432 EventName2["telemetry"] = "telemetry";
7433 EventName2["projectLanguageServiceState"] = "projectLanguageServiceState";
7434 EventName2["projectsUpdatedInBackground"] = "projectsUpdatedInBackground";
7435 EventName2["beginInstallTypes"] = "beginInstallTypes";
7436 EventName2["endInstallTypes"] = "endInstallTypes";
7437 EventName2["typesInstallerInitializationFailed"] = "typesInstallerInitializationFailed";
7438 EventName2["surveyReady"] = "surveyReady";
7439 EventName2["projectLoadingStart"] = "projectLoadingStart";
7440 EventName2["projectLoadingFinish"] = "projectLoadingFinish";
7441 })(EventName || (EventName = {}));
7443 // src/server/utils/typeConverters.ts
7444 var language = __toModule(require_main3());
7446 (function(Range17) {
7447 Range17.fromTextSpan = (span) => {
7450 line: span.start.line - 1,
7451 character: span.start.offset - 1
7454 line: span.end.line - 1,
7455 character: span.end.offset - 1
7459 Range17.fromLocations = (start, end) => language.Range.create(Math.max(0, start.line - 1), Math.max(start.offset - 1, 0), Math.max(0, end.line - 1), Math.max(0, end.offset - 1));
7460 Range17.toFormattingRequestArgs = (file2, range) => ({
7462 line: range.start.line + 1,
7463 offset: range.start.character + 1,
7464 endLine: range.end.line + 1,
7465 endOffset: range.end.character + 1
7467 Range17.toFileRangeRequestArgs = (file2, range) => ({
7469 startLine: range.start.line + 1,
7470 startOffset: range.start.character + 1,
7471 endLine: range.end.line + 1,
7472 endOffset: range.end.character + 1
7474 })(Range2 || (Range2 = {}));
7476 (function(Position10) {
7477 Position10.fromLocation = (tslocation) => {
7479 line: tslocation.line - 1,
7480 character: tslocation.offset - 1
7483 Position10.toLocation = (position) => ({
7484 line: position.line + 1,
7485 offset: position.character + 1
7487 Position10.toFileLocationRequestArgs = (file2, position) => ({
7489 line: position.line + 1,
7490 offset: position.character + 1
7492 })(Position || (Position = {}));
7494 (function(Location4) {
7495 Location4.fromTextSpan = (uri, tsTextSpan) => {
7498 range: Range2.fromTextSpan(tsTextSpan)
7501 })(Location2 || (Location2 = {}));
7503 (function(TextEdit6) {
7504 TextEdit6.fromCodeEdit = (edit) => {
7506 range: Range2.fromTextSpan(edit),
7507 newText: edit.newText
7510 })(TextEdit || (TextEdit = {}));
7512 (function(WorkspaceEdit6) {
7513 function fromFileCodeEdits(client, edits) {
7515 for (const edit of edits) {
7516 let uri = client.toResource(edit.fileName);
7517 changes[uri] = edit.textChanges.map((change) => {
7518 return TextEdit.fromCodeEdit(change);
7523 WorkspaceEdit6.fromFileCodeEdits = fromFileCodeEdits;
7524 })(WorkspaceEdit || (WorkspaceEdit = {}));
7526 (function(SymbolKind5) {
7527 function fromProtocolScriptElementKind(kind) {
7530 return language.SymbolKind.Module;
7532 return language.SymbolKind.Class;
7534 return language.SymbolKind.Enum;
7535 case Kind.enumMember:
7536 return language.SymbolKind.EnumMember;
7537 case Kind.interface:
7538 return language.SymbolKind.Interface;
7539 case Kind.indexSignature:
7540 return language.SymbolKind.Method;
7541 case Kind.callSignature:
7542 return language.SymbolKind.Method;
7544 return language.SymbolKind.Method;
7545 case Kind.memberVariable:
7546 return language.SymbolKind.Property;
7547 case Kind.memberGetAccessor:
7548 return language.SymbolKind.Property;
7549 case Kind.memberSetAccessor:
7550 return language.SymbolKind.Property;
7552 return language.SymbolKind.Variable;
7554 return language.SymbolKind.Variable;
7556 return language.SymbolKind.Variable;
7557 case Kind.localVariable:
7558 return language.SymbolKind.Variable;
7560 return language.SymbolKind.Variable;
7562 return language.SymbolKind.Function;
7563 case Kind.localFunction:
7564 return language.SymbolKind.Function;
7565 case Kind.constructSignature:
7566 return language.SymbolKind.Constructor;
7567 case Kind.constructorImplementation:
7568 return language.SymbolKind.Constructor;
7569 case Kind.typeParameter:
7570 return language.SymbolKind.TypeParameter;
7572 return language.SymbolKind.String;
7574 return language.SymbolKind.Variable;
7577 SymbolKind5.fromProtocolScriptElementKind = fromProtocolScriptElementKind;
7578 })(SymbolKind2 || (SymbolKind2 = {}));
7580 // src/server/features/workspaceSymbols.ts
7581 function parseKindModifier(kindModifiers) {
7582 return new Set(kindModifiers.split(/,|\s+/g));
7584 function getSymbolKind(item) {
7585 switch (item.kind) {
7587 return import_vscode_languageserver_protocol3.SymbolKind.Method;
7589 return import_vscode_languageserver_protocol3.SymbolKind.Enum;
7591 return import_vscode_languageserver_protocol3.SymbolKind.Function;
7593 return import_vscode_languageserver_protocol3.SymbolKind.Class;
7595 return import_vscode_languageserver_protocol3.SymbolKind.Interface;
7597 return import_vscode_languageserver_protocol3.SymbolKind.Variable;
7599 return import_vscode_languageserver_protocol3.SymbolKind.Variable;
7602 var TypeScriptWorkspaceSymbolProvider = class {
7603 constructor(client, languageIds) {
7604 this.client = client;
7605 this.languageIds = languageIds;
7607 async provideWorkspaceSymbols(search, token) {
7609 if (this.searchAllOpenProjects) {
7612 let uri = this.getUri();
7613 filepath = uri ? this.client.toPath(uri) : void 0;
7614 if (!filepath && this.client.apiVersion.lt(api_default.v390)) {
7620 searchValue: search,
7623 const response = await this.client.execute("navto", args, token);
7624 if (response.type !== "response" || response.body == null)
7627 for (const item of response.body) {
7628 if (!item.containerName && item.kind === "alias") {
7631 const label = TypeScriptWorkspaceSymbolProvider.getLabel(item);
7633 start: Position.fromLocation(item.start),
7634 end: Position.fromLocation(item.end)
7636 const symbolInfo = import_vscode_languageserver_protocol3.SymbolInformation.create(label, getSymbolKind(item), range, this.client.toResource(item.file));
7637 const kindModifiers = item.kindModifiers ? parseKindModifier(item.kindModifiers) : void 0;
7638 if (kindModifiers == null ? void 0 : kindModifiers.has(KindModifiers.deprecated)) {
7639 symbolInfo.tags = [import_vscode_languageserver_protocol3.SymbolTag.Deprecated];
7641 result.push(symbolInfo);
7645 static getLabel(item) {
7646 let label = item.name;
7647 if (item.kind === "method" || item.kind === "function") {
7653 const documents = import_coc3.workspace.textDocuments;
7654 for (const document of documents) {
7655 if (this.languageIds.indexOf(document.languageId) >= 0) {
7656 return document.uri;
7661 get searchAllOpenProjects() {
7662 return this.client.apiVersion.gte(api_default.v390) && import_coc3.workspace.getConfiguration("typescript").get("workspaceSymbols.scope", "allOpenProjects") === "allOpenProjects";
7665 var workspaceSymbols_default = TypeScriptWorkspaceSymbolProvider;
7667 // src/server/languageProvider.ts
7668 var import_coc23 = __toModule(require("coc.nvim"));
7669 var import_path5 = __toModule(require("path"));
7670 var import_vscode_languageserver_protocol18 = __toModule(require_main3());
7672 // src/server/features/baseCodeLensProvider.ts
7673 var import_vscode_languageserver_protocol4 = __toModule(require_main3());
7675 // src/server/utils/regexp.ts
7676 function escapeRegExp(text) {
7677 return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
7680 // src/server/features/baseCodeLensProvider.ts
7681 var CachedNavTreeResponse = class {
7686 execute(document, f) {
7687 if (this.matches(document)) {
7688 return this.response;
7690 return this.update(document, f());
7693 return this.version === document.version && this.document === document.uri.toString();
7695 update(document, response) {
7696 this.response = response;
7697 this.version = document.version;
7698 this.document = document.uri.toString();
7702 var TypeScriptBaseCodeLensProvider = class {
7703 constructor(client, cachedResponse) {
7704 this.client = client;
7705 this.cachedResponse = cachedResponse;
7706 this.onDidChangeCodeLensesEmitter = new import_vscode_languageserver_protocol4.Emitter();
7708 get onDidChangeCodeLenses() {
7709 return this.onDidChangeCodeLensesEmitter.event;
7711 async provideCodeLenses(document, token) {
7712 const filepath = this.client.toPath(document.uri);
7717 const response = await this.cachedResponse.execute(document, () => this.client.execute("navtree", {file: filepath}, token));
7721 const tree = response.body;
7722 const referenceableSpans = [];
7723 if (tree && tree.childItems) {
7724 tree.childItems.forEach((item) => this.walkNavTree(document, item, null, referenceableSpans));
7726 return referenceableSpans.map((range) => {
7729 data: {uri: document.uri}
7736 walkNavTree(document, item, parent, results) {
7740 const range = this.extractSymbol(document, item, parent);
7742 results.push(range);
7744 if (item.childItems) {
7745 item.childItems.forEach((child) => this.walkNavTree(document, child, item, results));
7748 getSymbolRange(document, item) {
7752 if (item.nameSpan) {
7753 return Range2.fromTextSpan(item.nameSpan);
7755 const span = item.spans && item.spans[0];
7759 const range = Range2.fromTextSpan(span);
7760 const text = document.getText(range);
7761 const identifierMatch = new RegExp(`^(.*?(\\b|\\W))${escapeRegExp(item.text || "")}(\\b|\\W)`, "gm");
7762 const match = identifierMatch.exec(text);
7763 const prefixLength = match ? match.index + match[1].length : 0;
7764 const startOffset = document.offsetAt(range.start) + prefixLength;
7766 start: document.positionAt(startOffset),
7767 end: document.positionAt(startOffset + item.text.length)
7772 // src/server/features/callHierarchy.ts
7773 var import_coc4 = __toModule(require("coc.nvim"));
7774 var import_path2 = __toModule(require("path"));
7775 var import_vscode_languageserver_protocol5 = __toModule(require_main3());
7776 var TypeScriptCallHierarchySupport = class {
7777 constructor(client) {
7778 this.client = client;
7780 async prepareCallHierarchy(document, position, token) {
7781 const filepath = this.client.toOpenedFilePath(document.uri);
7785 const args = Position.toFileLocationRequestArgs(filepath, position);
7786 const response = await this.client.execute("prepareCallHierarchy", args, token);
7787 if (response.type !== "response" || !response.body) {
7790 return Array.isArray(response.body) ? response.body.map(fromProtocolCallHierarchyItem) : fromProtocolCallHierarchyItem(response.body);
7792 async provideCallHierarchyIncomingCalls(item, token) {
7793 const filepath = this.client.toPath(item.uri);
7797 const args = Position.toFileLocationRequestArgs(filepath, item.selectionRange.start);
7798 const response = await this.client.execute("provideCallHierarchyIncomingCalls", args, token);
7799 if (response.type !== "response" || !response.body) {
7802 return response.body.map(fromProtocolCallHierarchyIncomingCall);
7804 async provideCallHierarchyOutgoingCalls(item, token) {
7805 const filepath = this.client.toPath(item.uri);
7809 const args = Position.toFileLocationRequestArgs(filepath, item.selectionRange.start);
7810 const response = await this.client.execute("provideCallHierarchyOutgoingCalls", args, token);
7811 if (response.type !== "response" || !response.body) {
7814 return response.body.map(fromProtocolCallHierarchyOutgoingCall);
7817 TypeScriptCallHierarchySupport.minVersion = api_default.v380;
7818 var callHierarchy_default = TypeScriptCallHierarchySupport;
7819 function isSourceFileItem(item) {
7820 return item.kind === Kind.script || item.kind === Kind.module && item.selectionSpan.start.line === 1 && item.selectionSpan.start.offset === 1;
7822 function parseKindModifier2(kindModifiers) {
7823 return new Set(kindModifiers.split(/,|\s+/g));
7825 function fromProtocolCallHierarchyItem(item) {
7827 const useFileName = isSourceFileItem(item);
7828 const name = useFileName ? import_path2.default.basename(item.file) : item.name;
7829 const detail = useFileName ? import_path2.default.relative(import_coc4.workspace.cwd, import_path2.default.dirname(item.file)) : (_a = item.containerName) != null ? _a : "";
7833 uri: import_coc4.Uri.file(item.file).toString(),
7834 kind: SymbolKind2.fromProtocolScriptElementKind(item.kind),
7835 range: Range2.fromTextSpan(item.span),
7836 selectionRange: Range2.fromTextSpan(item.selectionSpan)
7838 const kindModifiers = item.kindModifiers ? parseKindModifier2(item.kindModifiers) : void 0;
7839 if (kindModifiers == null ? void 0 : kindModifiers.has(KindModifiers.deprecated)) {
7840 result.tags = [import_vscode_languageserver_protocol5.SymbolTag.Deprecated];
7844 function fromProtocolCallHierarchyIncomingCall(item) {
7846 from: fromProtocolCallHierarchyItem(item.from),
7847 fromRanges: item.fromSpans.map(Range2.fromTextSpan)
7850 function fromProtocolCallHierarchyOutgoingCall(item) {
7852 to: fromProtocolCallHierarchyItem(item.to),
7853 fromRanges: item.fromSpans.map(Range2.fromTextSpan)
7857 // src/server/features/completionItemProvider.ts
7858 var import_coc8 = __toModule(require("coc.nvim"));
7859 var import_vscode_languageserver_protocol9 = __toModule(require_main3());
7861 // src/server/utils/codeAction.ts
7862 var import_vscode_languageserver_protocol6 = __toModule(require_main3());
7863 var import_coc5 = __toModule(require("coc.nvim"));
7864 function getEditForCodeAction(client, action) {
7865 return action.changes && action.changes.length ? WorkspaceEdit.fromFileCodeEdits(client, action.changes) : void 0;
7867 async function applyCodeAction(client, action) {
7868 const workspaceEdit = getEditForCodeAction(client, action);
7869 if (workspaceEdit) {
7870 if (!await import_coc5.workspace.applyEdit(workspaceEdit)) {
7874 return applyCodeActionCommands(client, action);
7876 async function applyCodeActionCommands(client, action) {
7877 if (action.commands && action.commands.length) {
7878 for (const command of action.commands) {
7879 const response = await client.execute("applyCodeActionCommand", {command}, import_vscode_languageserver_protocol6.CancellationToken.None);
7880 if (!response || response.type != "response" || !response.body) {
7888 // src/server/utils/completionItem.ts
7889 var import_coc6 = __toModule(require("coc.nvim"));
7890 var import_vscode_languageserver_protocol7 = __toModule(require_main3());
7891 function convertCompletionEntry(tsEntry, uri, position, context) {
7892 let label = tsEntry.name;
7893 let sortText = tsEntry.sortText;
7894 let preselect = false;
7896 if (tsEntry.isRecommended) {
7899 if (tsEntry.source && tsEntry.hasAction) {
7900 sortText = "\uFFFF" + sortText;
7902 sortText = tsEntry.sortText;
7904 let kind = convertKind(tsEntry.kind);
7905 let insertTextFormat = context.enableCallCompletions && (kind === import_coc6.CompletionItemKind.Function || kind === import_coc6.CompletionItemKind.Method) ? import_coc6.InsertTextFormat.Snippet : import_coc6.InsertTextFormat.PlainText;
7906 let insertText = tsEntry.insertText;
7907 let commitCharacters = getCommitCharacters(tsEntry, context);
7909 if (tsEntry.isImportStatementCompletion) {
7911 insertTextFormat = import_coc6.InsertTextFormat.Snippet;
7913 let textEdit = null;
7914 if (tsEntry.replacementSpan) {
7915 let {start, end} = tsEntry.replacementSpan;
7916 if (start.line == end.line) {
7918 range: import_coc6.Range.create(start.line - 1, start.offset - 1, end.line - 1, end.offset - 1),
7919 newText: tsEntry.insertText || label
7923 if (tsEntry.kindModifiers) {
7924 const kindModifiers = new Set(tsEntry.kindModifiers.split(/,|\s+/g));
7925 if (kindModifiers.has(KindModifiers.optional)) {
7929 if (kindModifiers.has(KindModifiers.deprecated)) {
7930 tags = [import_vscode_languageserver_protocol7.CompletionItemTag.Deprecated];
7932 if (kindModifiers.has(KindModifiers.color)) {
7933 kind = import_coc6.CompletionItemKind.Color;
7935 if (tsEntry.kind === Kind.script) {
7936 for (const extModifier of KindModifiers.fileExtensionKindModifiers) {
7937 if (kindModifiers.has(extModifier)) {
7938 if (tsEntry.name.toLowerCase().endsWith(extModifier)) {
7939 detail = tsEntry.name;
7941 detail = tsEntry.name + extModifier;
7964 source: tsEntry.source || ""
7968 function convertKind(kind) {
7970 case Kind.primitiveType:
7972 return import_coc6.CompletionItemKind.Keyword;
7974 return import_coc6.CompletionItemKind.Constant;
7977 case Kind.localVariable:
7979 return import_coc6.CompletionItemKind.Variable;
7980 case Kind.memberVariable:
7981 case Kind.memberGetAccessor:
7982 case Kind.memberSetAccessor:
7983 return import_coc6.CompletionItemKind.Field;
7985 return import_coc6.CompletionItemKind.Function;
7987 case Kind.constructSignature:
7988 case Kind.callSignature:
7989 case Kind.indexSignature:
7990 return import_coc6.CompletionItemKind.Method;
7992 return import_coc6.CompletionItemKind.Enum;
7994 case Kind.externalModuleName:
7995 return import_coc6.CompletionItemKind.Module;
7998 return import_coc6.CompletionItemKind.Class;
7999 case Kind.interface:
8000 return import_coc6.CompletionItemKind.Interface;
8003 return import_coc6.CompletionItemKind.File;
8004 case Kind.directory:
8005 return import_coc6.CompletionItemKind.Folder;
8007 return import_coc6.CompletionItemKind.Variable;
8009 function getCommitCharacters(tsEntry, context) {
8010 if (context.isNewIdentifierLocation || !context.isInValidCommitCharacterContext) {
8013 const commitCharacters = [];
8014 switch (tsEntry.kind) {
8015 case Kind.memberGetAccessor:
8016 case Kind.memberSetAccessor:
8017 case Kind.constructSignature:
8018 case Kind.callSignature:
8019 case Kind.indexSignature:
8021 case Kind.interface:
8022 commitCharacters.push(".", ";");
8029 case Kind.localVariable:
8030 case Kind.memberVariable:
8035 case Kind.parameter:
8036 commitCharacters.push(".", ",", ";");
8037 if (context.enableCallCompletions) {
8038 commitCharacters.push("(");
8042 return commitCharacters.length === 0 ? void 0 : commitCharacters;
8044 function getParameterListParts(displayParts) {
8046 let isInMethod = false;
8047 let hasOptionalParameters = false;
8051 for (let i = 0; i < displayParts.length; ++i) {
8052 const part = displayParts[i];
8053 switch (part.kind) {
8054 case DisplayPartKind.methodName:
8055 case DisplayPartKind.functionName:
8056 case DisplayPartKind.text:
8057 case DisplayPartKind.propertyName:
8058 if (parenCount === 0 && braceCount === 0) {
8062 case DisplayPartKind.parameterName:
8063 if (parenCount === 1 && braceCount === 0 && isInMethod) {
8064 const next = displayParts[i + 1];
8065 const nameIsFollowedByOptionalIndicator = next && next.text === "?";
8066 const nameIsThis = part.text === "this";
8067 if (!nameIsFollowedByOptionalIndicator && !nameIsThis) {
8070 hasOptionalParameters = hasOptionalParameters || nameIsFollowedByOptionalIndicator;
8073 case DisplayPartKind.punctuation:
8074 if (part.text === "(") {
8076 } else if (part.text === ")") {
8078 if (parenCount <= 0 && isInMethod) {
8081 } else if (part.text === "..." && parenCount === 1) {
8082 hasOptionalParameters = true;
8084 } else if (part.text === "{") {
8086 } else if (part.text === "}") {
8092 return {hasOptionalParameters, parts};
8095 // src/server/utils/previewer.ts
8096 var import_vscode_languageserver_protocol8 = __toModule(require_main3());
8097 var import_coc7 = __toModule(require("coc.nvim"));
8098 function toResource(filepath) {
8099 return import_coc7.Uri.file(filepath);
8101 function replaceLinks(text) {
8102 return text.replace(/\{@(link|linkplain|linkcode) (https?:\/\/[^ |}]+?)(?:[| ]([^{}\n]+?))?\}/gi, (_, tag, link, text2) => {
8105 return `[\`${text2 ? text2.trim() : link}\`](${link})`;
8107 return `[${text2 ? text2.trim() : link}](${link})`;
8111 function processInlineTags(text) {
8112 return replaceLinks(text);
8114 function getTagBodyText(tag) {
8118 function makeCodeblock(text2) {
8119 if (text2.match(/^\s*[~`]{3}/g)) {
8122 return "```\n" + text2 + "\n```";
8124 const text = convertLinkTags(tag.text);
8127 const captionTagMatches = text.match(/<caption>(.*?)<\/caption>\s*(\r\n|\n)/);
8128 if (captionTagMatches && captionTagMatches.index === 0) {
8129 return captionTagMatches[1] + "\n\n" + makeCodeblock(text.substr(captionTagMatches[0].length));
8131 return makeCodeblock(text);
8134 const emailMatch = text.match(/(.+)\s<([-.\w]+@[-.\w]+)>/);
8135 if (emailMatch === null) {
8138 return `${emailMatch[1]} ${emailMatch[2]}`;
8141 return makeCodeblock(text);
8143 return processInlineTags(text);
8145 function getTagDocumentation(tag) {
8151 const body = convertLinkTags(tag.text).split(/^(\S+)\s*-?\s*/);
8152 if ((body == null ? void 0 : body.length) === 3) {
8153 const param = body[1];
8154 const doc = body[2];
8155 const label2 = `*@${tag.name}* \`${param}\``;
8159 return label2 + (doc.match(/\r\n|\n/g) ? " \n" + processInlineTags(doc) : ` \u2014 ${processInlineTags(doc)}`);
8162 const label = `*@${tag.name}*`;
8163 const text = getTagBodyText(tag);
8167 return label + (text.match(/\r\n|\n/g) ? " \n" + text : ` \u2014 ${text}`);
8169 function plain(parts) {
8170 if (!parts || !parts.length)
8172 return parts.map((part) => part.text).join("");
8174 function tagsMarkdownPreview(tags) {
8175 return (tags || []).map(getTagDocumentation).join(" \n\n");
8177 function markdownDocumentation(documentation, tags) {
8178 let out = plain(documentation);
8179 const tagsPreview = tagsMarkdownPreview(tags);
8181 out = out + ("\n\n" + tagsPreview);
8184 kind: import_vscode_languageserver_protocol8.MarkupKind.Markdown,
8188 function convertLinkTags(parts) {
8193 if (typeof parts === "string") {
8198 for (const part of parts) {
8199 switch (part.kind) {
8202 const text = (_a = currentLink.text) != null ? _a : currentLink.name;
8203 if (currentLink.target) {
8204 const link = toResource(currentLink.target.file).with({
8205 fragment: `L${currentLink.target.start.line},${currentLink.target.start.offset}`
8207 out.push(`[${text}](${link.toString()})`);
8210 if (/^https?:/.test(text)) {
8211 const parts2 = text.split(" ");
8212 if (parts2.length === 1) {
8213 out.push(parts2[0]);
8214 } else if (parts2.length > 1) {
8215 out.push(`[${parts2.slice(1).join(" ")}](${parts2[0]})`);
8222 currentLink = void 0;
8229 currentLink.name = part.text;
8230 currentLink.target = part.target;
8235 currentLink.text = part.text;
8239 out.push(part.text);
8243 return processInlineTags(out.join(""));
8246 // src/server/utils/SnippetString.ts
8247 var SnippetString = class {
8248 constructor(value) {
8250 this.value = value || "";
8252 static isSnippetString(thing) {
8253 if (thing instanceof SnippetString) {
8259 return typeof thing.value === "string";
8261 static _escape(value) {
8262 return value.replace(/\$|}|\\/g, "\\$&");
8265 this.value += SnippetString._escape(str);
8268 appendTabstop(n = this._tabstop++) {
8273 appendPlaceholder(value, n = this._tabstop++) {
8274 if (typeof value === "function") {
8275 const nested = new SnippetString();
8276 nested._tabstop = this._tabstop;
8278 this._tabstop = nested._tabstop;
8279 value = nested.value;
8281 value = SnippetString._escape(value);
8286 this.value += value;
8290 appendVariable(name, defaultValue) {
8291 if (typeof defaultValue === "function") {
8292 const nested = new SnippetString();
8293 nested._tabstop = this._tabstop;
8294 defaultValue(nested);
8295 this._tabstop = nested._tabstop;
8296 defaultValue = nested.value;
8297 } else if (typeof defaultValue === "string") {
8298 defaultValue = defaultValue.replace(/\$|}/g, "\\$&");
8304 this.value += defaultValue;
8310 var SnippetString_default = SnippetString;
8312 // src/server/features/completionItemProvider.ts
8313 var ApplyCompletionCodeActionCommand2 = class {
8314 constructor(client) {
8315 this.client = client;
8316 this.id = ApplyCompletionCodeActionCommand2.ID;
8318 async execute(codeActions) {
8319 if (codeActions.length === 0) {
8322 if (codeActions.length === 1) {
8323 await applyCodeAction(this.client, codeActions[0]);
8326 const idx = await import_coc8.window.showQuickpick(codeActions.map((o) => o.description), "Select code action to apply");
8329 const action = codeActions[idx];
8330 await applyCodeAction(this.client, action);
8334 var ApplyCompletionCodeActionCommand = ApplyCompletionCodeActionCommand2;
8335 ApplyCompletionCodeActionCommand.ID = "_typescript.applyCompletionCodeAction";
8336 var TypeScriptCompletionItemProvider = class {
8337 constructor(client, typingsStatus, fileConfigurationManager, languageId) {
8338 this.client = client;
8339 this.typingsStatus = typingsStatus;
8340 this.fileConfigurationManager = fileConfigurationManager;
8341 this.setCompleteOption(languageId);
8342 import_coc8.commands.registerCommand(ApplyCompletionCodeActionCommand.ID, async (codeActions) => {
8343 let cmd = new ApplyCompletionCodeActionCommand(this.client);
8344 await cmd.execute(codeActions);
8346 import_coc8.workspace.onDidChangeConfiguration((_e) => {
8347 this.setCompleteOption(languageId);
8350 setCompleteOption(languageId) {
8351 this.completeOption = this.fileConfigurationManager.getCompleteOptions(languageId);
8353 async provideCompletionItems(document, position, token, context) {
8354 if (this.typingsStatus.isAcquiringTypings) {
8355 return Promise.resolve({
8358 label: "Acquiring typings...",
8359 detail: "Acquiring typings definitions for IntelliSense."
8363 let {uri} = document;
8364 const file2 = this.client.toPath(document.uri);
8367 let preText = document.getText({
8368 start: {line: position.line, character: 0},
8371 let {triggerCharacter, option} = context;
8372 if (!this.shouldTrigger(triggerCharacter, preText, option)) {
8375 await this.client.interruptGetErr(() => this.fileConfigurationManager.ensureConfigurationForDocument(document, token));
8376 const {completeOption} = this;
8378 ...Position.toFileLocationRequestArgs(file2, position),
8379 includeExternalModuleExports: completeOption.autoImports,
8380 includeInsertTextCompletions: true,
8381 triggerCharacter: this.getTsTriggerCharacter(context),
8382 includeAutomaticOptionalChainCompletions: completeOption.includeAutomaticOptionalChainCompletions
8385 let dotAccessorContext;
8386 let isNewIdentifierLocation = true;
8387 let isMemberCompletion = false;
8388 let isIncomplete = false;
8389 const isInValidCommitCharacterContext = this.isInValidCommitCharacterContext(document, position);
8390 if (this.client.apiVersion.gte(api_default.v300)) {
8392 const response = await this.client.interruptGetErr(() => this.client.execute("completionInfo", args, token));
8393 if (response.type !== "response" || !response.body) {
8396 isNewIdentifierLocation = response.body.isNewIdentifierLocation;
8397 isMemberCompletion = response.body.isMemberCompletion;
8398 if (isMemberCompletion) {
8399 const dotMatch = preText.slice(0, position.character).match(/\??\.\s*$/) || void 0;
8401 const range = import_vscode_languageserver_protocol9.Range.create({
8402 line: position.line,
8403 character: position.character - dotMatch.length
8405 const text = document.getText(range);
8406 dotAccessorContext = {range, text};
8409 isIncomplete = !!response.body.isIncomplete || response.metadata && response.metadata.isIncomplete;
8410 entries = response.body.entries;
8412 if (e.message == "No content available.") {
8418 const response = await this.client.interruptGetErr(() => this.client.execute("completions", args, token));
8419 if (response.type !== "response" || !response.body) {
8422 entries = response.body;
8424 const completionItems = [];
8425 for (const element of entries) {
8426 if (shouldExcludeCompletionEntry(element, completeOption)) {
8429 const item = convertCompletionEntry(element, uri, position, {
8430 isNewIdentifierLocation,
8432 enableCallCompletions: completeOption.completeFunctionCalls,
8433 isInValidCommitCharacterContext,
8436 completionItems.push(item);
8438 return {isIncomplete, items: completionItems};
8440 getTsTriggerCharacter(context) {
8441 switch (context.triggerCharacter) {
8443 return this.client.apiVersion.gte(api_default.v310) && this.client.apiVersion.lt(api_default.v320) ? void 0 : "@";
8445 return this.client.apiVersion.lt(api_default.v381) ? void 0 : "#";
8447 return this.client.apiVersion.gte(api_default.v430) ? " " : void 0;
8454 return context.triggerCharacter;
8458 async resolveCompletionItem(item, token) {
8461 let {uri, position, source, name, data} = item.data;
8462 const filepath = this.client.toPath(uri);
8465 let document = import_coc8.workspace.getDocument(uri);
8469 ...Position.toFileLocationRequestArgs(filepath, position),
8470 entryNames: [source ? {name, source, data} : name]
8474 response = await this.client.interruptGetErr(() => this.client.execute("completionEntryDetails", args, token));
8478 if (response.type !== "response" || !response.body || !response.body.length) {
8481 const details = response.body;
8482 if (!details || !details.length || !details[0]) {
8485 const detail = details[0];
8486 if (!item.detail && detail.displayParts.length) {
8487 item.detail = plain(detail.displayParts);
8489 item.documentation = this.getDocumentation(detail);
8490 const {command, additionalTextEdits} = this.getCodeActions(detail, filepath);
8492 item.command = command;
8493 item.additionalTextEdits = additionalTextEdits;
8494 if (detail && item.insertTextFormat == import_vscode_languageserver_protocol9.InsertTextFormat.Snippet) {
8495 const shouldCompleteFunction = await this.isValidFunctionCompletionContext(filepath, position, token);
8496 if (shouldCompleteFunction) {
8497 this.createSnippetOfFunctionCall(item, detail);
8502 getCodeActions(detail, filepath) {
8503 if (!detail.codeActions || !detail.codeActions.length) {
8506 const additionalTextEdits = [];
8507 let hasRemainingCommandsOrEdits = false;
8508 for (const tsAction of detail.codeActions) {
8509 if (tsAction.commands) {
8510 hasRemainingCommandsOrEdits = true;
8512 if (tsAction.changes) {
8513 for (const change of tsAction.changes) {
8514 if (change.fileName === filepath) {
8515 additionalTextEdits.push(...change.textChanges.map(TextEdit.fromCodeEdit));
8517 hasRemainingCommandsOrEdits = true;
8523 if (hasRemainingCommandsOrEdits) {
8526 command: ApplyCompletionCodeActionCommand.ID,
8528 detail.codeActions.map((x) => ({
8529 commands: x.commands,
8530 description: x.description,
8531 changes: x.changes.filter((x2) => x2.fileName !== filepath)
8538 additionalTextEdits: additionalTextEdits.length ? additionalTextEdits : void 0
8541 shouldTrigger(triggerCharacter, pre, option) {
8542 if (triggerCharacter && this.client.apiVersion.lt(api_default.v290)) {
8543 if (triggerCharacter === "@") {
8544 if (option.synname && /string/i.test(option.synname)) {
8547 if (!pre.match(/^\s*\*[ ]?@/) && !pre.match(/\/\*\*+[ ]?@/)) {
8550 } else if (triggerCharacter === "<") {
8554 if (triggerCharacter === " ") {
8555 if (!this.completeOption.importStatementSuggestions || !this.client.apiVersion.lt(api_default.v430)) {
8558 return pre === "import ";
8562 getDocumentation(detail) {
8563 let documentation = "";
8564 if (detail.source) {
8565 const importPath = `'${plain(detail.source)}'`;
8566 const autoImportLabel = `Auto import from ${importPath}`;
8567 documentation += `${autoImportLabel}
8571 plain(detail.documentation),
8572 tagsMarkdownPreview(detail.tags)
8574 parts = parts.filter((s) => s && s.trim() != "");
8575 documentation += parts.join("\n\n");
8576 if (documentation.length) {
8578 kind: import_vscode_languageserver_protocol9.MarkupKind.Markdown,
8579 value: documentation
8584 createSnippetOfFunctionCall(item, detail) {
8585 let {displayParts} = detail;
8586 const parameterListParts = getParameterListParts(displayParts);
8587 const snippet = new SnippetString_default();
8588 snippet.appendText(`${item.insertText || item.label}(`);
8589 appendJoinedPlaceholders(snippet, parameterListParts.parts, ", ");
8590 if (parameterListParts.hasOptionalParameters) {
8591 snippet.appendTabstop();
8593 snippet.appendText(")");
8594 snippet.appendTabstop(0);
8595 item.insertText = snippet.value;
8597 async isValidFunctionCompletionContext(filepath, position, token) {
8599 const args = Position.toFileLocationRequestArgs(filepath, position);
8600 const response = await this.client.execute("quickinfo", args, token);
8601 if (response.type !== "response") {
8604 const {body} = response;
8605 switch (body && body.kind) {
8618 isInValidCommitCharacterContext(document, position) {
8619 if (this.client.apiVersion.lt(api_default.v320)) {
8620 if (position.character > 1) {
8621 const preText = document.getText(import_vscode_languageserver_protocol9.Range.create(position.line, 0, position.line, position.character));
8622 return preText.match(/(\s|^)\.$/ig) === null;
8628 TypeScriptCompletionItemProvider.triggerCharacters = [".", '"', "'", "`", "/", "@", "<", "#", " "];
8629 var completionItemProvider_default = TypeScriptCompletionItemProvider;
8630 function shouldExcludeCompletionEntry(element, completionConfiguration) {
8631 return !completionConfiguration.names && element.kind === Kind.warning || !completionConfiguration.paths && (element.kind === Kind.directory || element.kind === Kind.script || element.kind === Kind.externalModuleName) || !completionConfiguration.autoImports && element.hasAction;
8633 function appendJoinedPlaceholders(snippet, parts, joiner) {
8634 for (let i = 0; i < parts.length; ++i) {
8635 const paramterPart = parts[i];
8636 snippet.appendPlaceholder(paramterPart.text);
8637 if (i !== parts.length - 1) {
8638 snippet.appendText(joiner);
8643 // src/server/features/definitionProvider.ts
8644 var TypeScriptDefinitionProvider = class {
8645 constructor(client) {
8646 this.client = client;
8648 async getSymbolLocations(definitionType, document, position, token) {
8649 const filepath = this.client.toPath(document.uri);
8653 const args = Position.toFileLocationRequestArgs(filepath, position);
8655 const response = await this.client.execute(definitionType, args, token);
8656 const locations = response.type == "response" && response.body || [];
8657 return locations.map((location) => Location2.fromTextSpan(this.client.toResource(location.file), location));
8662 async provideDefinition(document, position, token) {
8663 if (this.client.apiVersion.gte(api_default.v270)) {
8664 const filepath = this.client.toOpenedFilePath(document.uri);
8668 const args = Position.toFileLocationRequestArgs(filepath, position);
8669 const response = await this.client.execute("definitionAndBoundSpan", args, token);
8670 if (response.type !== "response" || !response.body) {
8673 const span = response.body.textSpan ? Range2.fromTextSpan(response.body.textSpan) : void 0;
8674 return response.body.definitions.map((location) => {
8675 const target = Location2.fromTextSpan(this.client.toResource(location.file), location);
8676 if (location.contextStart && location.contextEnd) {
8678 originSelectionRange: span,
8679 targetRange: Range2.fromLocations(location.contextStart, location.contextEnd),
8680 targetUri: target.uri,
8681 targetSelectionRange: target.range
8685 originSelectionRange: span,
8686 targetRange: target.range,
8687 targetUri: target.uri,
8688 targetSelectionRange: target.range
8692 return await this.getSymbolLocations("definition", document, position, token);
8694 provideTypeDefinition(document, position, token) {
8695 return this.getSymbolLocations("typeDefinition", document, position, token);
8697 provideImplementation(document, position, token) {
8698 return this.getSymbolLocations("implementation", document, position, token);
8701 var definitionProvider_default = TypeScriptDefinitionProvider;
8703 // src/server/features/directiveCommentCompletions.ts
8704 var import_coc9 = __toModule(require("coc.nvim"));
8705 var import_coc10 = __toModule(require("coc.nvim"));
8706 var tsDirectives = [
8709 description: "Enables semantic checking in a JavaScript file. Must be at the top of a file."
8712 value: "@ts-nocheck",
8713 description: "Disables semantic checking in a JavaScript file. Must be at the top of a file."
8716 value: "@ts-ignore",
8717 description: "Suppresses @ts-check errors on the next line of a file."
8720 var tsDirectives390 = [
8723 value: "@ts-expect-error",
8724 description: "Suppresses @ts-check errors on the next line of a file, expecting at least one to exist."
8727 var DirectiveCommentCompletionProvider = class {
8728 constructor(client) {
8729 this.client = client;
8731 provideCompletionItems(document, position, _token, context) {
8732 if (context.triggerCharacter != "@") {
8735 const file2 = this.client.toPath(document.uri);
8739 const doc = import_coc10.workspace.getDocument(document.uri);
8740 const line = doc.getline(position.line);
8741 const prefix = line.slice(0, position.character);
8742 const match = prefix.match(/^\s*\/\/+\s?(@[a-zA-Z\-]*)?$/);
8744 const directives = this.client.apiVersion.gte(api_default.v390) ? tsDirectives390 : tsDirectives;
8745 let items = directives.map((directive) => {
8746 const item = {label: directive.value};
8747 item.kind = import_coc9.CompletionItemKind.Snippet;
8748 item.detail = directive.description;
8750 range: import_coc9.Range.create(position.line, Math.max(0, position.character - (match[1] ? match[1].length : 0)), position.line, position.character),
8751 newText: directive.value
8756 isIncomplete: false,
8759 res.startcol = doc.fixStartcol(position, ["@"]);
8765 var directiveCommentCompletions_default = DirectiveCommentCompletionProvider;
8767 // src/server/features/documentHighlight.ts
8768 var import_vscode_languageserver_protocol10 = __toModule(require_main3());
8769 var TypeScriptDocumentHighlightProvider = class {
8770 constructor(client) {
8771 this.client = client;
8773 async provideDocumentHighlights(resource, position, token) {
8774 const file2 = this.client.toPath(resource.uri);
8778 ...Position.toFileLocationRequestArgs(file2, position),
8779 filesToSearch: [file2]
8782 const response = await this.client.execute("documentHighlights", args, token);
8783 if (response.type !== "response" || !response.body) {
8786 return flatten(response.body.filter((highlight) => highlight.file === file2).map(convertDocumentHighlight));
8792 var documentHighlight_default = TypeScriptDocumentHighlightProvider;
8793 function convertDocumentHighlight(highlight) {
8794 return highlight.highlightSpans.map((span) => {
8796 range: Range2.fromTextSpan(span),
8797 kind: span.kind === "writtenReference" ? import_vscode_languageserver_protocol10.DocumentHighlightKind.Write : import_vscode_languageserver_protocol10.DocumentHighlightKind.Read
8802 // src/server/features/documentSymbol.ts
8803 var import_vscode_languageserver_protocol11 = __toModule(require_main3());
8804 var getSymbolKind2 = (kind) => {
8807 return import_vscode_languageserver_protocol11.SymbolKind.Module;
8809 return import_vscode_languageserver_protocol11.SymbolKind.Class;
8811 return import_vscode_languageserver_protocol11.SymbolKind.Enum;
8812 case Kind.interface:
8813 return import_vscode_languageserver_protocol11.SymbolKind.Interface;
8815 return import_vscode_languageserver_protocol11.SymbolKind.Method;
8816 case Kind.memberVariable:
8817 return import_vscode_languageserver_protocol11.SymbolKind.Property;
8818 case Kind.memberGetAccessor:
8819 return import_vscode_languageserver_protocol11.SymbolKind.Property;
8820 case Kind.memberSetAccessor:
8821 return import_vscode_languageserver_protocol11.SymbolKind.Property;
8823 return import_vscode_languageserver_protocol11.SymbolKind.Variable;
8825 return import_vscode_languageserver_protocol11.SymbolKind.Variable;
8826 case Kind.localVariable:
8827 return import_vscode_languageserver_protocol11.SymbolKind.Variable;
8829 return import_vscode_languageserver_protocol11.SymbolKind.Variable;
8830 case Kind.constructSignature:
8831 case Kind.constructorImplementation:
8833 case Kind.localFunction:
8834 return import_vscode_languageserver_protocol11.SymbolKind.Function;
8836 return import_vscode_languageserver_protocol11.SymbolKind.Variable;
8838 var TypeScriptDocumentSymbolProvider = class {
8839 constructor(client) {
8840 this.client = client;
8842 async provideDocumentSymbols(resource, token) {
8843 const filepath = this.client.toPath(resource.uri);
8850 const response = await this.client.execute("navtree", args, token);
8851 if (response.type == "response" && response.body) {
8852 const tree = response.body;
8853 if (tree.childItems) {
8854 const result = new Array();
8855 tree.childItems.forEach((item) => TypeScriptDocumentSymbolProvider.convertNavTree(result, item));
8864 static convertNavTree(output, item) {
8865 let shouldInclude = TypeScriptDocumentSymbolProvider.shouldInclueEntry(item);
8866 const children = new Set(item.childItems || []);
8867 for (const span of item.spans) {
8868 const range = Range2.fromTextSpan(span);
8869 const symbolInfo = TypeScriptDocumentSymbolProvider.convertSymbol(item, range);
8871 symbolInfo.children = [];
8872 for (const child of children) {
8873 if (child.spans.some((span2) => !!containsRange(range, Range2.fromTextSpan(span2)))) {
8874 const includedChild = TypeScriptDocumentSymbolProvider.convertNavTree(symbolInfo.children, child);
8875 shouldInclude = shouldInclude || includedChild;
8876 children.delete(child);
8879 if (shouldInclude) {
8880 output.push(symbolInfo);
8883 return shouldInclude;
8885 static convertSymbol(item, range) {
8886 const selectionRange = item.nameSpan ? Range2.fromTextSpan(item.nameSpan) : range;
8887 let label = item.text;
8888 switch (item.kind) {
8889 case Kind.memberGetAccessor:
8890 label = `(get) ${label}`;
8892 case Kind.memberSetAccessor:
8893 label = `(set) ${label}`;
8896 const symbolInfo = import_vscode_languageserver_protocol11.DocumentSymbol.create(label, "", getSymbolKind2(item.kind), range, containsRange(range, selectionRange) ? selectionRange : range);
8897 const kindModifiers = parseKindModifier3(item.kindModifiers);
8898 if (kindModifiers.has(KindModifiers.deprecated)) {
8899 symbolInfo.tags = [import_vscode_languageserver_protocol11.SymbolTag.Deprecated];
8903 static shouldInclueEntry(item) {
8904 if (item.kind === Kind.alias) {
8907 return !!(item.text && item.text !== "<function>" && item.text !== "<class>");
8910 var documentSymbol_default = TypeScriptDocumentSymbolProvider;
8911 function containsRange(range, otherRange) {
8912 if (otherRange.start.line < range.start.line || otherRange.end.line < range.start.line) {
8915 if (otherRange.start.line > range.end.line || otherRange.end.line > range.end.line) {
8918 if (otherRange.start.line === range.start.line && otherRange.start.character < range.start.character) {
8921 if (otherRange.end.line === range.end.line && otherRange.end.character > range.end.character) {
8926 function parseKindModifier3(kindModifiers) {
8927 return new Set(kindModifiers.split(/,|\s+/g));
8930 // src/server/features/folding.ts
8931 var import_coc11 = __toModule(require("coc.nvim"));
8932 var import_vscode_languageserver_types = __toModule(require_main2());
8933 var TypeScriptFoldingProvider = class {
8934 constructor(client) {
8935 this.client = client;
8937 async provideFoldingRanges(document, _context, token) {
8938 const file2 = this.client.toPath(document.uri);
8942 const args = {file: file2};
8943 const res = await this.client.execute("getOutliningSpans", args, token);
8944 if (res.type != "response") {
8951 return body.map((span) => this.convertOutliningSpan(span, document)).filter((foldingRange) => !!foldingRange);
8953 convertOutliningSpan(span, document) {
8954 const range = Range2.fromTextSpan(span.textSpan);
8955 const kind = TypeScriptFoldingProvider.getFoldingRangeKind(span);
8956 if (span.kind === "comment") {
8957 let doc = import_coc11.workspace.getDocument(document.uri);
8958 const line = doc.getline(range.start.line);
8959 if (line.match(/\/\/\s*#endregion/gi)) {
8963 let {start, end} = range;
8964 return import_vscode_languageserver_types.FoldingRange.create(start.line, end.line, start.character, end.character, kind);
8966 static getFoldingRangeKind(span) {
8967 switch (span.kind) {
8978 var folding_default = TypeScriptFoldingProvider;
8980 // src/server/features/formatting.ts
8981 var import_coc12 = __toModule(require("coc.nvim"));
8982 var TypeScriptFormattingProvider = class {
8983 constructor(client, formattingOptionsManager) {
8984 this.client = client;
8985 this.formattingOptionsManager = formattingOptionsManager;
8988 return this.formattingOptionsManager.formatEnabled(document);
8990 async doFormat(document, options, args, token) {
8991 if (!this.enabled(document))
8993 await this.formattingOptionsManager.ensureConfigurationOptions(document, options.insertSpaces, options.tabSize, token);
8995 const response = await this.client.execute("format", args, token);
8996 if (response.type == "response" && response.body) {
8997 let edits = response.body.map(TextEdit.fromCodeEdit);
9004 async provideDocumentRangeFormattingEdits(document, range, options, token) {
9005 if (!this.enabled(document))
9007 const filepath = this.client.toPath(document.uri);
9012 line: range.start.line + 1,
9013 offset: range.start.character + 1,
9014 endLine: range.end.line + 1,
9015 endOffset: range.end.character + 1
9017 return this.doFormat(document, options, args, token);
9019 async provideDocumentFormattingEdits(document, options, token) {
9020 if (!this.enabled(document))
9022 const filepath = this.client.toPath(document.uri);
9029 endLine: document.lineCount + 1,
9032 return this.doFormat(document, options, args, token);
9034 async provideOnTypeFormattingEdits(document, position, ch, options, token) {
9035 if (!this.enabled(document))
9037 if (!this.client.configuration.formatOnType)
9039 const file2 = this.client.toPath(document.uri);
9042 await this.formattingOptionsManager.ensureConfigurationOptions(document, options.insertSpaces, options.tabSize, token);
9043 const doc = import_coc12.workspace.getDocument(document.uri);
9045 ...Position.toFileLocationRequestArgs(file2, position),
9049 const res = await this.client.execute("formatonkey", args, token);
9050 if (res.type != "response") {
9059 for (const edit of edits) {
9060 const textEdit = TextEdit.fromCodeEdit(edit);
9061 const range = textEdit.range;
9062 if (range.start.character === 0 && range.start.line === range.end.line && textEdit.newText === "") {
9063 const lText = doc.getline(range.start.line);
9064 if (lText.trim().length > 0 || lText.length > range.end.character) {
9065 result.push(textEdit);
9068 result.push(textEdit);
9077 var formatting_default = TypeScriptFormattingProvider;
9079 // src/server/features/hover.ts
9080 var TypeScriptHoverProvider = class {
9081 constructor(client) {
9082 this.client = client;
9084 async provideHover(document, position, token) {
9085 const filepath = this.client.toPath(document.uri);
9089 const args = Position.toFileLocationRequestArgs(filepath, position);
9091 const response = await this.client.interruptGetErr(() => this.client.execute("quickinfo", args, token));
9092 if (response && response.type == "response" && response.body) {
9093 const data = response.body;
9095 contents: TypeScriptHoverProvider.getContents(data),
9096 range: Range2.fromTextSpan(data)
9103 static getContents(data) {
9105 if (data.displayString) {
9106 parts.push({language: "typescript", value: data.displayString});
9108 const tags = tagsMarkdownPreview(data.tags);
9109 parts.push(data.documentation + (tags ? "\n\n" + tags : ""));
9113 var hover_default = TypeScriptHoverProvider;
9115 // src/server/features/implementationsCodeLens.ts
9116 var TypeScriptImplementationsCodeLensProvider = class extends TypeScriptBaseCodeLensProvider {
9117 async resolveCodeLens(codeLens, token) {
9118 let {uri} = codeLens.data;
9119 let filepath = this.client.toPath(uri);
9120 const args = Position.toFileLocationRequestArgs(filepath, codeLens.range.start);
9122 const response = await this.client.execute("implementation", args, token, {lowPriority: true});
9123 if (response && response.type == "response" && response.body) {
9124 const locations = response.body.map((reference) => {
9126 uri: this.client.toResource(reference.file),
9128 start: Position.fromLocation(reference.start),
9130 line: reference.start.line,
9135 }).filter((location) => !(location.uri.toString() === uri && location.range.start.line === codeLens.range.start.line && location.range.start.character === codeLens.range.start.character));
9136 codeLens.command = this.getCommand(locations, codeLens);
9141 codeLens.command = {
9142 title: "0 implementations",
9147 getCommand(locations, codeLens) {
9148 let {uri} = codeLens.data;
9150 title: this.getTitle(locations),
9151 command: locations.length ? "editor.action.showReferences" : "",
9152 arguments: [uri, codeLens.range.start, locations]
9155 getTitle(locations) {
9156 return locations.length === 1 ? "1 implementation" : `${locations.length} implementations`;
9158 extractSymbol(document, item, _parent) {
9159 switch (item.kind) {
9160 case Kind.interface:
9161 return super.getSymbolRange(document, item);
9164 case Kind.memberVariable:
9165 case Kind.memberGetAccessor:
9166 case Kind.memberSetAccessor:
9167 if (item.kindModifiers.match(/\babstract\b/g)) {
9168 return super.getSymbolRange(document, item);
9175 var implementationsCodeLens_default = TypeScriptImplementationsCodeLensProvider;
9177 // src/server/features/importFix.ts
9178 var import_coc13 = __toModule(require("coc.nvim"));
9179 var import_vscode_languageserver_protocol12 = __toModule(require_main3());
9181 // src/server/utils/helper.ts
9213 // src/server/features/importFix.ts
9214 var ImportFixProvider = class {
9215 constructor(bufferSyncSupport) {
9216 this.bufferSyncSupport = bufferSyncSupport;
9218 async provideCodeActions(document, _range, context, _token) {
9219 if (this.bufferSyncSupport.hasPendingDiagnostics(document.uri)) {
9222 let diagnostics = context.diagnostics.filter((d) => d.code == 2304);
9223 if (!diagnostics.length)
9227 let doc = import_coc13.workspace.getDocument(document.uri);
9229 for (const diagnostic of diagnostics) {
9230 let {range} = diagnostic;
9231 let line = doc.getline(range.start.line);
9232 let name = line.slice(range.start.character, range.end.character);
9233 if (names.indexOf(name) !== -1)
9235 if (nodeModules.indexOf(name) !== -1) {
9238 range: import_vscode_languageserver_protocol12.Range.create(0, 0, 0, 0),
9239 newText: `import ${name} from '${name}'
9242 command = "tsserver.organizeImports";
9247 [document.uri]: edits
9253 title: `fix import`,
9254 command: "tsserver.organizeImports"
9257 title: `Add import ${names.join(", ")}`,
9263 var importFix_default = ImportFixProvider;
9265 // src/server/features/moduleInstall.ts
9266 var import_coc15 = __toModule(require("coc.nvim"));
9267 var import_vscode_languageserver_protocol13 = __toModule(require_main3());
9269 // src/server/utils/modules.ts
9270 var import_child_process = __toModule(require("child_process"));
9271 var import_coc14 = __toModule(require("coc.nvim"));
9272 var import_fs = __toModule(require("fs"));
9273 var import_path3 = __toModule(require("path"));
9274 function runCommand(cmd, cwd, timeout) {
9275 return new Promise((resolve, reject) => {
9278 timer = setTimeout(() => {
9279 reject(new Error(`timeout after ${timeout}s`));
9282 import_child_process.exec(cmd, {cwd}, (err, stdout) => {
9284 clearTimeout(timer);
9286 reject(new Error(`exited with ${err.code}`));
9293 async function getManager() {
9294 let res = await import_coc14.workspace.findUp(["yarn.lock", "package-lock.json"]);
9297 return res.endsWith("yarn.lock") ? "yarn" : "npm";
9299 async function moduleExists(name) {
9301 let content = await runCommand(`npm info ${name} --json`, process.cwd());
9304 let obj = JSON.parse(content);
9305 if (obj.error != null)
9313 function distinct(array, keyFn) {
9315 return array.filter((element, position) => {
9316 return array.indexOf(element) === position;
9319 const seen = Object.create(null);
9320 return array.filter((elem) => {
9321 const key = keyFn(elem);
9329 async function installModules(uri, names) {
9330 names = distinct(names);
9331 let workspaceFolder = import_coc14.workspace.getWorkspaceFolder(uri);
9332 let root = workspaceFolder ? import_coc14.Uri.parse(workspaceFolder.uri).fsPath : void 0;
9333 if (!root || !import_fs.default.existsSync(import_path3.default.join(root, "package.json"))) {
9334 import_coc14.window.showMessage(`package.json not found from workspaceFolder: ${root}`, "error");
9337 let arr = names.concat(names.map((s) => `@types/${s}`));
9338 let statusItem = import_coc14.window.createStatusBarItem(99, {progress: true});
9339 statusItem.text = `Checking module ${arr.join(" ")}`;
9341 let exists = await Promise.all(arr.map((name) => {
9342 return moduleExists(name).then((exists2) => {
9343 return exists2 ? name : null;
9346 let manager = await getManager();
9347 exists = exists.filter((s) => s != null);
9350 let devs = exists.filter((s) => s.startsWith("@types"));
9351 let deps = exists.filter((s) => devs.indexOf(s) == -1);
9352 statusItem.text = `Installing ${exists.join(" ")}`;
9354 let cmd = manager == "npm" ? `npm i ${deps.join(" ")}` : `yarn add ${deps.join(" ")}`;
9355 await runCommand(cmd, root);
9356 cmd = manager == "npm" ? `npm i ${deps.join(" ")} --save-dev` : `yarn add ${deps.join(" ")} --save-dev`;
9357 await runCommand(cmd, root);
9359 statusItem.dispose();
9360 import_coc14.window.showMessage(`Install error ${e.message}`, "error");
9363 statusItem.dispose();
9364 import_coc14.window.showMessage(`Installed: ${exists.join(" ")}`, "more");
9367 // src/server/features/moduleInstall.ts
9368 var InstallModuleProvider = class {
9369 constructor(client) {
9370 this.client = client;
9371 import_coc15.commands.registerCommand("_tsserver.installModule", async (uri, name) => {
9372 await installModules(uri, [name]);
9375 async provideCodeActions(document, _range, context, _token) {
9376 const uri = import_coc15.Uri.parse(document.uri);
9377 if (uri.scheme != "file")
9379 let {diagnostics} = context;
9380 let diags = diagnostics.filter((s) => s.code == 2307);
9381 let names = diags.map((o) => {
9382 let ms = o.message.match(/module\s'(.+)'/);
9383 return ms ? ms[1] : null;
9385 names = names.filter((s) => s != null);
9389 for (let name of names) {
9390 let title = `install ${name}`;
9392 title: `install ${name}`,
9393 command: "_tsserver.installModule",
9394 arguments: [document.uri, name]
9396 let codeAction = import_vscode_languageserver_protocol13.CodeAction.create(title, command, import_vscode_languageserver_protocol13.CodeActionKind.QuickFix);
9397 actions.push(codeAction);
9402 var moduleInstall_default = InstallModuleProvider;
9404 // src/server/features/quickfix.ts
9405 var import_coc17 = __toModule(require("coc.nvim"));
9406 var import_vscode_languageserver_protocol14 = __toModule(require_main3());
9408 // src/server/commands.ts
9409 var import_coc16 = __toModule(require("coc.nvim"));
9410 var import_vscode_languageserver_types2 = __toModule(require_main2());
9411 var ReloadProjectsCommand = class {
9412 constructor(service) {
9413 this.service = service;
9414 this.id = "tsserver.reloadProjects";
9417 let client = await this.service.getClientHost();
9418 client.reloadProjects();
9419 import_coc16.window.showMessage("projects reloaded");
9422 var OpenTsServerLogCommand = class {
9423 constructor(service) {
9424 this.service = service;
9425 this.id = "tsserver.openTsServerLog";
9428 let client = await this.service.getClientHost();
9429 client.serviceClient.openTsServerLogFile();
9432 var TypeScriptGoToProjectConfigCommand = class {
9433 constructor(service) {
9434 this.service = service;
9435 this.id = "tsserver.goToProjectConfig";
9438 let client = await this.service.getClientHost();
9439 let doc = await import_coc16.workspace.document;
9440 let {languageId} = doc.textDocument;
9441 if (client.serviceClient.modeIds.indexOf(languageId) == -1) {
9442 throw new Error(`Could not determine TypeScript or JavaScript project. Unsupported file type: ${languageId}`);
9445 await goToProjectConfig(client, doc.uri);
9448 async function goToProjectConfig(clientHost, uri) {
9449 const client = clientHost.serviceClient;
9450 const file2 = client.toPath(uri);
9453 res = await client.execute("projectInfo", {file: file2, needFileNameList: false}, import_coc16.CancellationToken.None);
9456 if (!res || !res.body) {
9457 import_coc16.window.showMessage("Could not determine TypeScript or JavaScript project.", "warning");
9460 const {configFileName} = res.body;
9461 if (configFileName && !isImplicitProjectConfigFile(configFileName)) {
9462 await import_coc16.workspace.openResource(import_coc16.Uri.file(configFileName).toString());
9465 import_coc16.window.showMessage("Config file not found", "warning");
9467 function isImplicitProjectConfigFile(configFileName) {
9468 return configFileName.indexOf("/dev/null/") === 0;
9470 var autoFixableDiagnosticCodes = new Set([
9475 var AutoFixCommand = class {
9476 constructor(service) {
9477 this.service = service;
9478 this.id = "tsserver.executeAutofix";
9481 if (this.service.state != import_coc16.ServiceStat.Running) {
9482 throw new Error("service not running");
9485 let client = await this.service.getClientHost();
9486 let document = await import_coc16.workspace.document;
9487 let handles = await client.handles(document.textDocument);
9489 throw new Error(`Document ${document.uri} is not handled by tsserver.`);
9492 let file2 = client.serviceClient.toPath(document.uri);
9493 let diagnostics = client.serviceClient.diagnosticsManager.getDiagnostics(document.uri);
9494 let missingDiagnostics = diagnostics.filter((o) => o.code == 2307);
9495 if (missingDiagnostics.length) {
9496 let names2 = missingDiagnostics.map((o) => {
9497 let ms = o.message.match(/module\s'(.+)'\./);
9498 return ms ? ms[1] : null;
9500 names2 = names2.filter((s) => s != null);
9501 if (names2.length) {
9502 installModules(document.uri, names2).catch((e) => {
9503 console.error(e.message);
9507 diagnostics = diagnostics.filter((x) => autoFixableDiagnosticCodes.has(x.code));
9508 if (diagnostics.length == 0)
9510 diagnostics = diagnostics.reduce((arr, curr) => {
9511 if (curr.code == 2304 && arr.findIndex((o) => o.message == curr.message) != -1)
9519 for (let diagnostic of diagnostics) {
9521 ...Range2.toFileRangeRequestArgs(file2, diagnostic.range),
9522 errorCodes: [+diagnostic.code]
9524 const response = await client.serviceClient.execute("getCodeFixes", args, import_coc16.CancellationToken.None);
9525 if (response.type !== "response" || !response.body || response.body.length < 1) {
9526 if (diagnostic.code == 2304) {
9527 let {range} = diagnostic;
9528 let line = document.getline(range.start.line);
9529 let name = line.slice(range.start.character, range.end.character);
9530 if (nodeModules.indexOf(name) !== -1 && names.indexOf(name) == -1) {
9533 range: import_vscode_languageserver_types2.Range.create(0, 0, 0, 0),
9534 newText: `import ${name} from '${name}'
9537 command = "tsserver.organizeImports";
9542 const fix = response.body[0];
9543 for (let change of fix.changes) {
9544 if (change.fileName != file2)
9546 for (let ch of change.textChanges) {
9548 range: Range2.fromTextSpan(ch),
9555 await document.applyEdits(edits);
9557 import_coc16.commands.executeCommand(command);
9560 var ConfigurePluginCommand = class {
9561 constructor(pluginManager) {
9562 this.pluginManager = pluginManager;
9563 this.id = "_typescript.configurePlugin";
9565 execute(pluginId, configuration) {
9566 this.pluginManager.setConfiguration(pluginId, configuration);
9569 var FileReferencesCommand2 = class {
9570 constructor(service) {
9571 this.service = service;
9572 this.id = "tsserver.findAllFileReferences";
9575 const client = await this.service.getClientHost();
9576 if (client.serviceClient.apiVersion.lt(FileReferencesCommand2.minVersion)) {
9577 import_coc16.window.showMessage("Find file references failed. Requires TypeScript 4.2+.", "error");
9580 const doc = await import_coc16.workspace.document;
9581 let {languageId} = doc.textDocument;
9582 if (client.serviceClient.modeIds.indexOf(languageId) == -1)
9584 const openedFiledPath = client.serviceClient.toOpenedFilePath(doc.uri);
9585 if (!openedFiledPath)
9587 const response = await client.serviceClient.execute("fileReferences", {file: openedFiledPath}, import_coc16.CancellationToken.None);
9588 if (response.type !== "response" || !response.body)
9590 const locations = response.body.refs.map((r) => Location2.fromTextSpan(client.serviceClient.toResource(r.file), r));
9591 await import_coc16.commands.executeCommand("editor.action.showReferences", doc.uri, import_vscode_languageserver_types2.Position.create(0, 0), locations);
9594 var FileReferencesCommand = FileReferencesCommand2;
9595 FileReferencesCommand.minVersion = api_default.v420;
9596 function registCommand(cmd) {
9597 let {id, execute} = cmd;
9598 return import_coc16.commands.registerCommand(id, execute, cmd);
9601 // src/server/features/quickfix.ts
9602 var ApplyCodeActionCommand2 = class {
9603 constructor(client, formattingConfigurationManager) {
9604 this.client = client;
9605 this.formattingConfigurationManager = formattingConfigurationManager;
9606 this.id = ApplyCodeActionCommand2.ID;
9608 async execute(action) {
9609 return applyCodeActionCommands(this.client, action);
9612 var ApplyCodeActionCommand = ApplyCodeActionCommand2;
9613 ApplyCodeActionCommand.ID = "_typescript.applyCodeActionCommand";
9614 var ApplyFixAllCodeAction2 = class {
9615 constructor(client, formattingConfigurationManager) {
9616 this.client = client;
9617 this.formattingConfigurationManager = formattingConfigurationManager;
9618 this.id = ApplyFixAllCodeAction2.ID;
9620 async execute(document, file2, tsAction) {
9621 if (!tsAction.fixId) {
9624 await this.formattingConfigurationManager.ensureConfigurationForDocument(document, import_vscode_languageserver_protocol14.CancellationToken.None);
9630 fixId: tsAction.fixId
9633 const res = await this.client.execute("getCombinedCodeFix", args, import_vscode_languageserver_protocol14.CancellationToken.None);
9634 if (res.type != "response") {
9638 const edit = WorkspaceEdit.fromFileCodeEdits(this.client, body.changes);
9639 await import_coc17.workspace.applyEdit(edit);
9640 const token = import_vscode_languageserver_protocol14.CancellationToken.None;
9641 const {commands: commands7} = body;
9642 if (commands7 && commands7.length) {
9643 for (const command of commands7) {
9644 await this.client.execute("applyCodeActionCommand", {command}, token);
9651 var ApplyFixAllCodeAction = ApplyFixAllCodeAction2;
9652 ApplyFixAllCodeAction.ID = "_typescript.applyFixAllCodeAction";
9653 var DiagnosticsSet = class {
9654 constructor(_values) {
9655 this._values = _values;
9657 static from(diagnostics) {
9658 const values = new Map();
9659 for (const diagnostic of diagnostics) {
9660 values.set(DiagnosticsSet.key(diagnostic), diagnostic);
9662 return new DiagnosticsSet(values);
9664 static key(diagnostic) {
9665 const {start, end} = diagnostic.range;
9666 return `${diagnostic.code}-${start.line},${start.character}-${end.line},${end.character}`;
9669 return this._values.values();
9672 var SupportedCodeActionProvider = class {
9673 constructor(client) {
9674 this.client = client;
9676 async getFixableDiagnosticsForContext(context) {
9677 const supportedActions = await this.supportedCodeActions;
9678 const fixableDiagnostics = DiagnosticsSet.from(context.diagnostics.filter((diagnostic) => supportedActions.has(+diagnostic.code)));
9679 return Array.from(fixableDiagnostics.values);
9681 get supportedCodeActions() {
9682 if (!this._supportedCodeActions) {
9683 return new Promise((resolve, reject) => {
9684 this.client.execute("getSupportedCodeFixes", null, import_vscode_languageserver_protocol14.CancellationToken.None).then((res) => {
9685 if (res.type !== "response") {
9689 let codes = res.body.map((code) => +code).filter((code) => !isNaN(code));
9690 resolve(new Set(codes));
9694 return Promise.resolve(this._supportedCodeActions);
9697 var TypeScriptQuickFixProvider = class {
9698 constructor(client, formattingConfigurationManager) {
9699 this.client = client;
9700 this.formattingConfigurationManager = formattingConfigurationManager;
9701 registCommand(new ApplyCodeActionCommand(client, formattingConfigurationManager));
9702 registCommand(new ApplyFixAllCodeAction(client, formattingConfigurationManager));
9703 this.supportedCodeActionProvider = new SupportedCodeActionProvider(client);
9705 async provideCodeActions(document, _range, context, token) {
9706 const file2 = this.client.toPath(document.uri);
9710 await this.formattingConfigurationManager.ensureConfigurationForDocument(document, token);
9711 const fixableDiagnostics = await this.supportedCodeActionProvider.getFixableDiagnosticsForContext(context);
9712 if (!fixableDiagnostics.length) {
9715 if (this.client.bufferSyncSupport.hasPendingDiagnostics(document.uri)) {
9719 for (const diagnostic of fixableDiagnostics) {
9720 results.push(...await this.getFixesForDiagnostic(document, file2, diagnostic, token));
9724 async getFixesForDiagnostic(document, file2, diagnostic, token) {
9726 ...Range2.toFileRangeRequestArgs(file2, diagnostic.range),
9727 errorCodes: [+diagnostic.code]
9729 const codeFixesResponse = await this.client.execute("getCodeFixes", args, token);
9730 if (codeFixesResponse.type != "response") {
9733 if (codeFixesResponse.body) {
9735 for (const tsCodeFix of codeFixesResponse.body) {
9736 results.push(...await this.getAllFixesForTsCodeAction(document, file2, diagnostic, tsCodeFix));
9742 async getAllFixesForTsCodeAction(document, file2, diagnostic, tsAction) {
9743 const singleFix = this.getSingleFixForTsCodeAction(diagnostic, tsAction);
9744 const fixAll = await this.getFixAllForTsCodeAction(document, file2, diagnostic, tsAction);
9745 return fixAll ? [singleFix, fixAll] : [singleFix];
9747 getSingleFixForTsCodeAction(diagnostic, tsAction) {
9748 const codeAction = {
9749 title: tsAction.description,
9750 kind: import_vscode_languageserver_protocol14.CodeActionKind.QuickFix
9752 codeAction.edit = getEditForCodeAction(this.client, tsAction);
9753 codeAction.diagnostics = [diagnostic];
9754 codeAction.isPreferred = true;
9755 if (tsAction.commands) {
9756 codeAction.command = {
9757 command: ApplyCodeActionCommand.ID,
9758 arguments: [tsAction],
9759 title: tsAction.description
9764 async getFixAllForTsCodeAction(document, file2, diagnostic, tsAction) {
9765 if (!tsAction.fixId || !this.client.apiVersion.gte(api_default.v270)) {
9768 if (!this.client.diagnosticsManager.getDiagnostics(document.uri).some((x) => x.code === diagnostic.code && x !== diagnostic)) {
9772 title: tsAction.fixAllDescription || "Fix all in file",
9773 kind: import_vscode_languageserver_protocol14.CodeActionKind.QuickFix
9775 action.diagnostics = [diagnostic];
9777 command: ApplyFixAllCodeAction.ID,
9778 arguments: [document, file2, tsAction],
9784 var quickfix_default = TypeScriptQuickFixProvider;
9786 // src/server/features/refactor.ts
9787 var import_coc18 = __toModule(require("coc.nvim"));
9788 var import_vscode_languageserver_protocol15 = __toModule(require_main3());
9789 var ApplyRefactoringCommand2 = class {
9790 constructor(client) {
9791 this.client = client;
9792 this.id = ApplyRefactoringCommand2.ID;
9794 async execute(document, file2, refactor, action, range) {
9796 ...Range2.toFileRangeRequestArgs(file2, range),
9800 const response = await this.client.execute("getEditsForRefactor", args, import_vscode_languageserver_protocol15.CancellationToken.None);
9801 const body = response && response.body;
9802 if (!body || !body.edits.length) {
9805 const workspaceEdit = await this.toWorkspaceEdit(body);
9806 if (!await import_coc18.workspace.applyEdit(workspaceEdit)) {
9809 const renameLocation = body.renameLocation;
9810 if (renameLocation) {
9811 import_coc18.commands.executeCommand("editor.action.rename", document.uri, Position.fromLocation(renameLocation));
9815 async toWorkspaceEdit(body) {
9816 for (const edit of body.edits) {
9817 await import_coc18.workspace.createFile(edit.fileName, {ignoreIfExists: true});
9819 let workspaceEdit = WorkspaceEdit.fromFileCodeEdits(this.client, body.edits);
9820 return workspaceEdit;
9823 var ApplyRefactoringCommand = ApplyRefactoringCommand2;
9824 ApplyRefactoringCommand.ID = "_typescript.applyRefactoring";
9825 var SelectRefactorCommand2 = class {
9826 constructor(doRefactoring) {
9827 this.doRefactoring = doRefactoring;
9828 this.id = SelectRefactorCommand2.ID;
9830 async execute(document, file2, info, range) {
9831 let {actions} = info;
9832 const idx = actions.length == 1 ? 0 : await import_coc18.window.showQuickpick(actions.map((action) => action.description || action.name));
9835 let label = info.actions[idx].name;
9838 return this.doRefactoring.execute(document, file2, info.name, label, range);
9841 var SelectRefactorCommand = SelectRefactorCommand2;
9842 SelectRefactorCommand.ID = "_typescript.selectRefactoring";
9843 var TypeScriptRefactorProvider2 = class {
9844 constructor(client, formattingOptionsManager) {
9845 this.client = client;
9846 this.formattingOptionsManager = formattingOptionsManager;
9847 const doRefactoringCommand = new ApplyRefactoringCommand(this.client);
9848 registCommand(doRefactoringCommand);
9849 registCommand(new SelectRefactorCommand(doRefactoringCommand));
9851 async provideCodeActions(document, range, context, token) {
9852 if (!this.shouldTrigger(context)) {
9855 const file2 = this.client.toPath(document.uri);
9858 await this.formattingOptionsManager.ensureConfigurationForDocument(document, token);
9859 const args = Range2.toFileRangeRequestArgs(file2, range);
9862 response = await this.client.interruptGetErr(() => {
9863 return this.client.execute("getApplicableRefactors", args, token);
9865 if (!response || !response.body) {
9871 return this.convertApplicableRefactors(response.body, document, file2, range, context.only && context.only.some((v) => v.includes(import_vscode_languageserver_protocol15.CodeActionKind.Refactor)));
9873 convertApplicableRefactors(body, document, file2, rangeOrSelection, setPrefrred) {
9875 for (const info of body) {
9876 if (info.notApplicableReason)
9878 if (!info.inlineable) {
9879 const codeAction = {
9880 title: info.description,
9881 kind: import_vscode_languageserver_protocol15.CodeActionKind.Refactor
9883 codeAction.command = {
9884 title: info.description,
9885 command: SelectRefactorCommand.ID,
9886 arguments: [document, file2, info, rangeOrSelection]
9888 actions.push(codeAction);
9890 for (const action of info.actions) {
9891 let codeAction = this.refactorActionToCodeAction(action, document, file2, info, rangeOrSelection);
9893 codeAction.isPreferred = TypeScriptRefactorProvider2.isPreferred(action, info.actions);
9895 actions.push(codeAction);
9901 refactorActionToCodeAction(action, document, file2, info, rangeOrSelection) {
9902 const codeAction = {
9903 title: action.description,
9904 kind: TypeScriptRefactorProvider2.getKind(action)
9906 codeAction.command = {
9907 title: action.description,
9908 command: ApplyRefactoringCommand.ID,
9909 arguments: [document, file2, info.name, action.name, rangeOrSelection]
9913 shouldTrigger(context) {
9914 if (context.only && context.only.every((o) => !o.includes(import_vscode_languageserver_protocol15.CodeActionKind.Refactor))) {
9919 static getKind(refactor) {
9920 if (refactor.name.startsWith("function_")) {
9921 return TypeScriptRefactorProvider2.extractFunctionKind;
9922 } else if (refactor.name.startsWith("constant_")) {
9923 return TypeScriptRefactorProvider2.extractConstantKind;
9924 } else if (refactor.name.startsWith("Move")) {
9925 return TypeScriptRefactorProvider2.moveKind;
9927 return import_vscode_languageserver_protocol15.CodeActionKind.Refactor;
9929 static isPreferred(action, allActions) {
9930 let kind = TypeScriptRefactorProvider2.getKind(action);
9931 if (TypeScriptRefactorProvider2.extractConstantKind == kind) {
9932 const getScope = (name2) => {
9934 const scope2 = (_a = name2.match(/scope_(\d)/)) == null ? void 0 : _a[1];
9935 return scope2 ? +scope2 : void 0;
9937 const scope = getScope(action.name);
9938 if (typeof scope !== "number") {
9941 return allActions.filter((otherAtion) => otherAtion !== action && otherAtion.name.startsWith("constant_")).every((otherAction) => {
9942 const otherScope = getScope(otherAction.name);
9943 return typeof otherScope === "number" ? scope < otherScope : true;
9946 let {name} = action;
9947 if (name.startsWith("Extract to type alias") || name.startsWith("Extract to interface")) {
9953 var TypeScriptRefactorProvider = TypeScriptRefactorProvider2;
9954 TypeScriptRefactorProvider.extractFunctionKind = import_vscode_languageserver_protocol15.CodeActionKind.RefactorExtract + ".function";
9955 TypeScriptRefactorProvider.extractConstantKind = import_vscode_languageserver_protocol15.CodeActionKind.RefactorExtract + ".constant";
9956 TypeScriptRefactorProvider.moveKind = import_vscode_languageserver_protocol15.CodeActionKind.Refactor + ".move";
9957 TypeScriptRefactorProvider.metadata = {
9958 providedCodeActionKinds: [import_vscode_languageserver_protocol15.CodeActionKind.Refactor]
9960 var refactor_default = TypeScriptRefactorProvider;
9962 // src/server/features/references.ts
9963 var TypeScriptReferences = class {
9964 constructor(client) {
9965 this.client = client;
9967 async provideReferences(document, position, context, token) {
9968 const filepath = this.client.toPath(document.uri);
9971 const args = Position.toFileLocationRequestArgs(filepath, position);
9973 const msg = await this.client.execute("references", args, token);
9974 if (!msg || msg.type != "response" || !msg.body) {
9978 for (const ref of msg.body.refs) {
9979 if (!context.includeDeclaration && ref.isDefinition) {
9982 const url = this.client.toResource(ref.file);
9983 const location = Location2.fromTextSpan(url, ref);
9984 result.push(location);
9992 var references_default = TypeScriptReferences;
9994 // src/server/features/referencesCodeLens.ts
9995 var TypeScriptReferencesCodeLensProvider = class extends TypeScriptBaseCodeLensProvider {
9996 resolveCodeLens(codeLens, token) {
9997 let {uri} = codeLens.data;
9998 let filepath = this.client.toPath(uri);
9999 const args = Position.toFileLocationRequestArgs(filepath, codeLens.range.start);
10000 return this.client.execute("references", args, token, {
10002 }).then((response) => {
10003 if (!response || response.type != "response" || !response.body) {
10006 const locations = response.body.refs.map((reference) => Location2.fromTextSpan(this.client.toResource(reference.file), reference)).filter((location) => !(location.uri.toString() === uri && location.range.start.line === codeLens.range.start.line && location.range.start.character === codeLens.range.start.character));
10007 codeLens.command = {
10008 title: locations.length === 1 ? "1 reference" : `${locations.length} references`,
10009 command: locations.length ? "editor.action.showReferences" : "",
10010 arguments: [uri, codeLens.range.start, locations]
10014 codeLens.command = {
10015 title: "0 references",
10021 extractSymbol(document, item, parent) {
10022 if (parent && parent.kind === Kind.enum) {
10023 return super.getSymbolRange(document, item);
10025 switch (item.kind) {
10028 case Kind.variable:
10029 case Kind.function:
10030 if (!item.kindModifiers.match(/\bexport\b/)) {
10034 if (item.text === "<class>") {
10038 case Kind.memberVariable:
10039 case Kind.memberGetAccessor:
10040 case Kind.memberSetAccessor:
10041 case Kind.constructorImplementation:
10042 case Kind.interface:
10045 return super.getSymbolRange(document, item);
10050 var referencesCodeLens_default = TypeScriptReferencesCodeLensProvider;
10052 // src/server/features/rename.ts
10053 var import_coc19 = __toModule(require("coc.nvim"));
10054 var import_path4 = __toModule(require("path"));
10055 var TypeScriptRenameProvider = class {
10056 constructor(client, fileConfigurationManager) {
10057 this.client = client;
10058 this.fileConfigurationManager = fileConfigurationManager;
10060 async prepareRename(document, position, token) {
10061 const response = await this.execRename(document, position, token);
10062 if (!response || response.type !== "response" || !response.body) {
10065 const renameInfo = response.body.info;
10066 if (!renameInfo.canRename) {
10067 return Promise.reject(new Error("Invalid location for rename."));
10069 if (this.client.apiVersion.gte(api_default.v310)) {
10070 const triggerSpan = renameInfo.triggerSpan;
10072 const range = Range2.fromTextSpan(triggerSpan);
10078 async provideRenameEdits(document, position, newName, token) {
10079 const response = await this.execRename(document, position, token);
10080 if (!response || response.type !== "response" || !response.body) {
10083 const renameInfo = response.body.info;
10084 if (!renameInfo.canRename) {
10085 return Promise.reject(new Error("Invalid location for rename."));
10087 if (this.client.apiVersion.gte(api_default.v310)) {
10088 if (renameInfo.fileToRename) {
10089 const edits = await this.renameFile(renameInfo.fileToRename, newName, token);
10093 return Promise.reject(new Error("An error occurred while renaming file"));
10097 return this.toWorkspaceEdit(response.body.locs, newName);
10099 async execRename(document, position, token) {
10100 const file2 = this.client.toPath(document.uri);
10104 ...Position.toFileLocationRequestArgs(file2, position),
10105 findInStrings: false,
10106 findInComments: false
10108 await this.fileConfigurationManager.ensureConfigurationForDocument(document, token);
10109 return this.client.interruptGetErr(() => {
10110 return this.client.execute("rename", args, token);
10113 toWorkspaceEdit(locations, newName) {
10115 for (const spanGroup of locations) {
10116 const uri = this.client.toResource(spanGroup.file);
10119 for (const textSpan of spanGroup.locs) {
10120 changes[uri].push({
10121 range: Range2.fromTextSpan(textSpan),
10122 newText: (textSpan.prefixText || "") + newName + (textSpan.suffixText || "")
10129 async renameFile(fileToRename, newName, token) {
10130 if (!import_path4.default.extname(newName)) {
10131 newName += import_path4.default.extname(fileToRename);
10133 const dirname = import_path4.default.dirname(fileToRename);
10134 const newFilePath = import_path4.default.join(dirname, newName);
10136 file: fileToRename,
10137 oldFilePath: fileToRename,
10140 const response = await this.client.execute("getEditsForFileRename", args, token);
10141 if (response.type !== "response" || !response.body) {
10144 const edits = WorkspaceEdit.fromFileCodeEdits(this.client, response.body);
10145 edits.documentChanges = edits.documentChanges || [];
10146 edits.documentChanges.push({
10148 oldUri: import_coc19.Uri.file(fileToRename).toString(),
10149 newUri: import_coc19.Uri.file(newFilePath).toString(),
10152 ignoreIfExists: true
10158 var rename_default = TypeScriptRenameProvider;
10160 // src/server/features/signatureHelp.ts
10161 var TypeScriptSignatureHelpProvider = class {
10162 constructor(client) {
10163 this.client = client;
10165 async provideSignatureHelp(document, position, token) {
10166 const filepath = this.client.toPath(document.uri);
10170 const args = Position.toFileLocationRequestArgs(filepath, position);
10173 response = await this.client.interruptGetErr(() => this.client.execute("signatureHelp", args, token));
10177 if (response.type !== "response" || !response.body) {
10180 let info = response.body;
10182 activeSignature: info.selectedItemIndex,
10183 activeParameter: this.getActiveParmeter(info),
10184 signatures: info.items.map((signature) => {
10185 return this.convertSignature(signature);
10190 getActiveParmeter(info) {
10191 const activeSignature = info.items[info.selectedItemIndex];
10192 if (activeSignature && activeSignature.isVariadic) {
10193 return Math.min(info.argumentIndex, activeSignature.parameters.length - 1);
10195 return info.argumentIndex;
10197 convertSignature(item) {
10199 let parameters = item.parameters.map((p) => {
10201 label: plain(p.displayParts),
10202 documentation: markdownDocumentation(p.documentation, [])
10205 let label = plain(item.prefixDisplayParts);
10206 label += parameters.map((parameter) => parameter.label).join(plain(item.separatorDisplayParts));
10207 label += plain(item.suffixDisplayParts);
10210 documentation: markdownDocumentation(item.documentation, (_a = item.tags) == null ? void 0 : _a.filter((x) => x.name !== "param")),
10215 TypeScriptSignatureHelpProvider.triggerCharacters = ["(", ",", "<"];
10216 var signatureHelp_default = TypeScriptSignatureHelpProvider;
10218 // src/server/features/smartSelect.ts
10219 var SmartSelection = class {
10220 constructor(client) {
10221 this.client = client;
10223 async provideSelectionRanges(document, positions, token) {
10224 const file2 = this.client.toPath(document.uri);
10230 locations: positions.map(Position.toLocation)
10232 const response = await this.client.execute("selectionRange", args, token);
10233 if (response.type !== "response" || !response.body) {
10236 return response.body.map(SmartSelection.convertSelectionRange);
10238 static convertSelectionRange(selectionRange) {
10240 range: Range2.fromTextSpan(selectionRange.textSpan),
10241 parent: selectionRange.parent ? SmartSelection.convertSelectionRange(selectionRange.parent) : void 0
10245 var smartSelect_default = SmartSelection;
10247 // src/server/features/tagClosing.ts
10248 var import_coc20 = __toModule(require("coc.nvim"));
10249 var TagClosing2 = class {
10250 constructor(client, descriptionLanguageId) {
10251 this.client = client;
10252 this.descriptionLanguageId = descriptionLanguageId;
10253 this._disposables = [];
10254 this._disposed = false;
10255 this._timeout = void 0;
10256 this._cancel = void 0;
10257 import_coc20.events.on("InsertCharPre", (character) => {
10258 this.lastInsert = character;
10259 }, null, this._disposables);
10260 import_coc20.events.on("TextChangedI", this.onChange, this, this._disposables);
10261 import_coc20.events.on("TextChangedP", this.onChange, this, this._disposables);
10263 async onChange(bufnr, change) {
10264 let doc = import_coc20.workspace.getDocument(bufnr);
10265 if (!doc || !doc.attached)
10267 let enabled = this.isEnabled(doc.filetype, doc.uri);
10270 let {pre, changedtick, lnum} = change;
10271 if (!pre.endsWith("/") && !pre.endsWith(">"))
10273 if (!pre.endsWith(this.lastInsert))
10275 if (pre.length > 1 && pre[pre.length - 2] == ">")
10277 const filepath = this.client.toOpenedFilePath(doc.uri);
10280 if (this._timeout) {
10281 clearTimeout(this._timeout);
10283 if (this._cancel) {
10284 this._cancel.cancel();
10285 this._cancel.dispose();
10286 this._cancel = void 0;
10288 await doc.patchChange();
10289 this._timeout = setTimeout(async () => {
10290 this._timeout = void 0;
10291 if (this._disposed)
10293 if (doc.changedtick > changedtick)
10295 const position = import_coc20.Position.create(lnum - 1, pre.length);
10296 const args = Position.toFileLocationRequestArgs(filepath, position);
10297 this._cancel = new import_coc20.CancellationTokenSource();
10298 const response = await this.client.execute("jsxClosingTag", args, this._cancel.token);
10299 if (response.type !== "response" || !response.body) {
10302 if (this._disposed)
10304 const insertion = response.body;
10305 if (doc.changedtick === changedtick) {
10306 import_coc20.snippetManager.insertSnippet(this.getTagSnippet(insertion).value, false, import_coc20.Range.create(position, position));
10310 isEnabled(languageId, uri) {
10311 const configLang = TagClosing2._configurationLanguages[languageId];
10312 if (!configLang || configLang !== this.descriptionLanguageId) {
10315 if (!import_coc20.workspace.getConfiguration(void 0, uri).get(`${configLang}.autoClosingTags`)) {
10321 this._disposed = true;
10322 if (this._timeout) {
10323 clearTimeout(this._timeout);
10324 this._timeout = void 0;
10326 if (this._cancel) {
10327 this._cancel.cancel();
10328 this._cancel.dispose();
10329 this._cancel = void 0;
10331 import_coc20.disposeAll(this._disposables);
10332 this._disposables = [];
10334 getTagSnippet(closingTag) {
10335 const snippet = new SnippetString_default();
10336 snippet.appendPlaceholder("", 0);
10337 snippet.appendText(closingTag.newText);
10341 var TagClosing = TagClosing2;
10342 TagClosing.minVersion = api_default.v300;
10343 TagClosing._configurationLanguages = {
10344 javascriptreact: "javascript",
10345 typescriptreact: "typescript"
10347 var tagClosing_default = TagClosing;
10349 // src/server/features/updatePathOnRename.ts
10350 var import_coc21 = __toModule(require("coc.nvim"));
10351 var import_vscode_languageserver_protocol16 = __toModule(require_main3());
10353 // src/server/utils/mutex.ts
10354 var Mutex = class {
10360 if (this.count > 0 && this.tasks.length > 0) {
10362 let next = this.tasks.shift();
10367 return this.count == 0;
10370 return new Promise((res) => {
10372 let released = false;
10381 this.tasks.push(task);
10382 process.nextTick(this.sched.bind(this));
10386 return this.acquire().then((release) => {
10387 return f().then((res) => {
10390 }).catch((err) => {
10398 // src/server/features/updatePathOnRename.ts
10399 function wait(ms) {
10400 return new Promise((resolve) => {
10406 var UpdateImportsOnFileRenameHandler = class {
10407 constructor(client, fileConfigurationManager, languageId) {
10408 this.client = client;
10409 this.fileConfigurationManager = fileConfigurationManager;
10410 this.disposables = [];
10411 let glob = languageId == "typescript" ? "**/*.{ts,tsx}" : "**/*.{js,jsx}";
10412 const watcher = import_coc21.workspace.createFileSystemWatcher(glob);
10413 this.disposables.push(watcher);
10414 let mutex = new Mutex();
10415 watcher.onDidRename(async (e) => {
10416 let release = await mutex.acquire();
10418 await this.doRename(e.oldUri, e.newUri);
10421 this.client.logger.error("Error on rename:", e2);
10424 }, null, this.disposables);
10427 import_coc21.disposeAll(this.disposables);
10429 async doRename(oldResource, newResource) {
10430 if (oldResource.scheme !== "file" || newResource.scheme !== "file") {
10433 const targetFile = newResource.fsPath;
10434 const oldFile = oldResource.fsPath;
10435 const newUri = newResource.toString();
10436 let oldDocument = import_coc21.workspace.getDocument(oldResource.toString());
10438 await import_coc21.workspace.nvim.command(`silent ${oldDocument.bufnr}bwipeout!`);
10440 let document = import_coc21.workspace.getDocument(newUri);
10442 await import_coc21.workspace.nvim.command(`silent ${document.bufnr}bwipeout!`);
10445 document = await import_coc21.workspace.loadFile(newUri);
10449 const edits = await this.getEditsForFileRename(document.textDocument, oldFile, targetFile);
10452 if (await this.promptUser(newResource)) {
10453 await import_coc21.workspace.applyEdit(edits);
10456 async promptUser(newResource) {
10457 return await import_coc21.window.showPrompt(`Update imports for moved file: ${newResource.fsPath}?`);
10459 async getEditsForFileRename(document, oldFile, newFile) {
10460 await this.fileConfigurationManager.ensureConfigurationForDocument(document, import_vscode_languageserver_protocol16.CancellationToken.None);
10461 const response = await this.client.interruptGetErr(() => {
10463 oldFilePath: oldFile,
10464 newFilePath: newFile
10466 return this.client.execute("getEditsForFileRename", args, import_vscode_languageserver_protocol16.CancellationToken.None);
10468 if (!response || response.type != "response" || !response.body) {
10472 for (const edit of response.body) {
10473 if (edit.fileName.match(/[\/\\]node_modules[\/\\]/gi)) {
10476 for (const change of edit.textChanges) {
10477 if (change.newText.match(/\/node_modules\//gi)) {
10483 return WorkspaceEdit.fromFileCodeEdits(this.client, edits);
10486 var updatePathOnRename_default = UpdateImportsOnFileRenameHandler;
10488 // src/server/organizeImports.ts
10489 var import_coc22 = __toModule(require("coc.nvim"));
10490 var import_vscode_languageserver_protocol17 = __toModule(require_main3());
10491 var OrganizeImportsCommand = class {
10492 constructor(service) {
10493 this.service = service;
10494 this.id = "tsserver.organizeImports";
10496 async _execute(client, document) {
10497 let file2 = client.toPath(document.uri);
10506 const response = await client.interruptGetErr(() => client.execute("organizeImports", args, import_vscode_languageserver_protocol17.CancellationToken.None));
10507 if (!response || response.type != "response" || !response.success) {
10510 const edit = WorkspaceEdit.fromFileCodeEdits(client, response.body);
10511 let keys = Object.keys(edit.changes);
10512 if (keys.length == 1) {
10513 let doc = import_coc22.workspace.getDocument(keys[0]);
10515 await doc.applyEdits(edit.changes[keys[0]]);
10520 await import_coc22.workspace.applyEdit(edit);
10522 async execute(document) {
10523 let client = await this.service.getClientHost();
10525 let doc = await import_coc22.workspace.document;
10526 if (!doc.attached) {
10527 throw new Error(`Document not attached.`);
10529 if (client.serviceClient.modeIds.indexOf(doc.filetype) == -1) {
10530 throw new Error(`filetype "${doc.filetype}" not supported by tsserver.`);
10532 document = doc.textDocument;
10534 await this._execute(client.serviceClient, document);
10537 var OrganizeImportsCodeActionProvider = class {
10538 constructor(client, fileConfigManager) {
10539 this.client = client;
10540 this.fileConfigManager = fileConfigManager;
10542 providedCodeActionKinds: [import_vscode_languageserver_protocol17.CodeActionKind.SourceOrganizeImports]
10545 async provideCodeActions(document, _range, context, token) {
10546 if (this.client.modeIds.indexOf(document.languageId) == -1)
10548 if (!context.only || !context.only.includes(import_vscode_languageserver_protocol17.CodeActionKind.SourceOrganizeImports)) {
10551 await this.fileConfigManager.ensureConfigurationForDocument(document, token);
10552 const action = import_vscode_languageserver_protocol17.CodeAction.create("Organize Imports", {
10554 command: "tsserver.organizeImports",
10555 arguments: [document]
10556 }, import_vscode_languageserver_protocol17.CodeActionKind.SourceOrganizeImports);
10561 // src/server/languageProvider.ts
10562 var suggestionSetting = "suggestionActions.enabled";
10563 var LanguageProvider = class {
10564 constructor(client, fileConfigurationManager, description, typingsStatus) {
10565 this.client = client;
10566 this.fileConfigurationManager = fileConfigurationManager;
10567 this.description = description;
10568 this.disposables = [];
10569 import_coc23.workspace.onDidChangeConfiguration(this.configurationChanged, this, this.disposables);
10570 this.configurationChanged();
10571 let initialized = false;
10572 client.onTsServerStarted(async () => {
10573 if (!initialized) {
10574 initialized = true;
10575 this.registerProviders(client, typingsStatus);
10579 configurationChanged() {
10580 const config = import_coc23.workspace.getConfiguration(this.id, null);
10581 this.client.diagnosticsManager.setEnableSuggestions(this.id, config.get(suggestionSetting, true));
10584 import_coc23.disposeAll(this.disposables);
10586 _register(disposable) {
10587 this.disposables.push(disposable);
10589 registerProviders(client, typingsStatus) {
10590 let languageIds = this.description.modeIds;
10591 let clientId = `tsserver-${this.description.id}`;
10592 this._register(import_coc23.languages.registerCompletionItemProvider(clientId, "TSC", languageIds, new completionItemProvider_default(client, typingsStatus, this.fileConfigurationManager, this.description.id), completionItemProvider_default.triggerCharacters));
10593 if (this.client.apiVersion.gte(api_default.v230)) {
10594 this._register(import_coc23.languages.registerCompletionItemProvider(`${this.description.id}-directive`, "TSC", languageIds, new directiveCommentCompletions_default(client), ["@"]));
10596 let definitionProvider = new definitionProvider_default(client);
10597 this._register(import_coc23.languages.registerDefinitionProvider(languageIds, definitionProvider));
10598 this._register(import_coc23.languages.registerTypeDefinitionProvider(languageIds, definitionProvider));
10599 this._register(import_coc23.languages.registerImplementationProvider(languageIds, definitionProvider));
10600 this._register(import_coc23.languages.registerReferencesProvider(languageIds, new references_default(client)));
10601 this._register(import_coc23.languages.registerHoverProvider(languageIds, new hover_default(client)));
10602 this._register(import_coc23.languages.registerDocumentHighlightProvider(languageIds, new documentHighlight_default(this.client)));
10603 this._register(import_coc23.languages.registerSignatureHelpProvider(languageIds, new signatureHelp_default(client), ["(", ",", "<", ")"]));
10604 this._register(import_coc23.languages.registerDocumentSymbolProvider(languageIds, new documentSymbol_default(client)));
10605 this._register(import_coc23.languages.registerRenameProvider(languageIds, new rename_default(client, this.fileConfigurationManager)));
10606 let formatProvider = new formatting_default(client, this.fileConfigurationManager);
10607 this._register(import_coc23.languages.registerDocumentFormatProvider(languageIds, formatProvider));
10608 this._register(import_coc23.languages.registerDocumentRangeFormatProvider(languageIds, formatProvider));
10609 this._register(import_coc23.languages.registerOnTypeFormattingEditProvider(languageIds, formatProvider, [";", "}", "\n", String.fromCharCode(27)]));
10610 this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new moduleInstall_default(client), "tsserver"));
10611 if (typeof import_coc23.languages["registerCallHierarchyProvider"] === "function") {
10612 this._register(import_coc23.languages.registerCallHierarchyProvider(languageIds, new callHierarchy_default(client)));
10614 let {fileConfigurationManager} = this;
10615 let conf = fileConfigurationManager.getLanguageConfiguration(this.id);
10616 if (["javascript", "typescript"].includes(this.id)) {
10617 if (this.client.apiVersion.gte(api_default.v290) && conf.get("updateImportsOnFileMove.enable")) {
10618 this._register(new updatePathOnRename_default(client, this.fileConfigurationManager, this.id));
10621 if (this.client.apiVersion.gte(api_default.v280)) {
10622 this._register(import_coc23.languages.registerFoldingRangeProvider(languageIds, new folding_default(this.client)));
10623 this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new OrganizeImportsCodeActionProvider(this.client, this.fileConfigurationManager), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.SourceOrganizeImports]));
10625 if (this.client.apiVersion.gte(api_default.v240)) {
10626 this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new refactor_default(client, this.fileConfigurationManager), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.Refactor]));
10628 this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new quickfix_default(client, this.fileConfigurationManager), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.QuickFix]));
10629 this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new importFix_default(this.client.bufferSyncSupport), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.QuickFix]));
10630 let cachedResponse = new CachedNavTreeResponse();
10631 if (this.client.apiVersion.gte(api_default.v206) && conf.get("referencesCodeLens.enable")) {
10632 this._register(import_coc23.languages.registerCodeLensProvider(languageIds, new referencesCodeLens_default(client, cachedResponse)));
10634 if (this.client.apiVersion.gte(api_default.v220) && conf.get("implementationsCodeLens.enable")) {
10635 this._register(import_coc23.languages.registerCodeLensProvider(languageIds, new implementationsCodeLens_default(client, cachedResponse)));
10637 if (this.client.apiVersion.gte(api_default.v350)) {
10638 this._register(import_coc23.languages.registerSelectionRangeProvider(languageIds, new smartSelect_default(this.client)));
10640 if (this.client.apiVersion.gte(api_default.v300)) {
10641 this._register(new tagClosing_default(this.client, this.description.id));
10644 handles(resource, doc) {
10645 if (doc && this.description.modeIds.indexOf(doc.languageId) >= 0) {
10648 const base = import_path5.default.basename(import_coc23.Uri.parse(resource).fsPath);
10649 return !!base && (!!this.description.configFilePattern && this.description.configFilePattern.test(base));
10652 return this.description.id;
10654 get diagnosticSource() {
10655 return this.description.diagnosticSource;
10657 triggerAllDiagnostics() {
10658 this.client.bufferSyncSupport.requestAllDiagnostics();
10660 diagnosticsReceived(diagnosticsKind, file2, diagnostics) {
10661 const config = import_coc23.workspace.getConfiguration(this.id, file2.toString());
10662 const reportUnnecessary = config.get("showUnused", true);
10663 const reportDeprecated = config.get("showDeprecated", true);
10664 this.client.diagnosticsManager.diagnosticsReceived(diagnosticsKind, file2.toString(), diagnostics.filter((diag) => {
10665 if (!reportUnnecessary) {
10666 if (diag.reportUnnecessary && diag.severity === import_vscode_languageserver_protocol18.DiagnosticSeverity.Information) {
10670 if (!reportDeprecated) {
10671 if (diag.reportDeprecated && diag.severity === import_vscode_languageserver_protocol18.DiagnosticSeverity.Hint) {
10679 var languageProvider_default = LanguageProvider;
10681 // src/server/typescriptServiceClient.ts
10682 var import_coc32 = __toModule(require("coc.nvim"));
10683 var import_fs4 = __toModule(require("fs"));
10684 var import_os2 = __toModule(require("os"));
10685 var import_path8 = __toModule(require("path"));
10686 var import_vscode_languageserver_protocol21 = __toModule(require_main3());
10688 // src/utils/fileSchemess.ts
10692 var disabledSchemes = new Set([
10697 // src/server/typescriptService.ts
10698 var ServerResponse;
10699 (function(ServerResponse2) {
10701 constructor(reason) {
10702 this.reason = reason;
10703 this.type = "cancelled";
10706 ServerResponse2.Cancelled = Cancelled;
10707 ServerResponse2.NoContent = new class {
10709 this.type = "noContent";
10712 })(ServerResponse || (ServerResponse = {}));
10713 var ExectuionTarget;
10714 (function(ExectuionTarget2) {
10715 ExectuionTarget2[ExectuionTarget2["Semantic"] = 0] = "Semantic";
10716 ExectuionTarget2[ExectuionTarget2["Syntax"] = 1] = "Syntax";
10717 })(ExectuionTarget || (ExectuionTarget = {}));
10719 // src/server/callbackMap.ts
10720 var CallbackMap = class {
10722 this._callbacks = new Map();
10723 this._asyncCallbacks = new Map();
10726 const cancellation = new ServerResponse.Cancelled(cause);
10727 for (const callback of this._callbacks.values()) {
10728 callback.onSuccess(cancellation);
10730 this._callbacks.clear();
10731 for (const callback of this._asyncCallbacks.values()) {
10732 callback.onSuccess(cancellation);
10734 this._asyncCallbacks.clear();
10736 add(seq, callback, isAsync) {
10738 this._asyncCallbacks.set(seq, callback);
10740 this._callbacks.set(seq, callback);
10744 const callback = this._callbacks.get(seq) || this._asyncCallbacks.get(seq);
10749 if (!this._callbacks.delete(seq)) {
10750 this._asyncCallbacks.delete(seq);
10755 // src/server/features/bufferSyncSupport.ts
10756 var import_coc25 = __toModule(require("coc.nvim"));
10757 var import_vscode_languageserver_protocol19 = __toModule(require_main3());
10759 // src/server/utils/async.ts
10760 var Delayer = class {
10761 constructor(defaultDelay) {
10762 this.defaultDelay = defaultDelay;
10763 this.timeout = null;
10764 this.completionPromise = null;
10765 this.onSuccess = null;
10768 trigger(task, delay = this.defaultDelay) {
10771 this.cancelTimeout();
10773 if (!this.completionPromise) {
10774 this.completionPromise = new Promise((resolve) => {
10775 this.onSuccess = resolve;
10777 this.completionPromise = null;
10778 this.onSuccess = null;
10779 let result = this.task && this.task();
10784 if (delay >= 0 || this.timeout === null) {
10785 this.timeout = setTimeout(() => {
10786 this.timeout = null;
10787 if (this.onSuccess) {
10788 this.onSuccess(void 0);
10790 }, delay >= 0 ? delay : this.defaultDelay);
10792 return this.completionPromise;
10795 if (this.timeout !== null) {
10796 clearTimeout(this.timeout);
10797 this.timeout = null;
10802 // src/server/utils/languageModeIds.ts
10803 var typescript = "typescript";
10804 var typescriptreact = "typescriptreact";
10805 var typescripttsx = "typescript.tsx";
10806 var typescriptjsx = "typescript.jsx";
10807 var javascript = "javascript";
10808 var javascriptreact = "javascriptreact";
10809 var javascriptjsx = "javascript.jsx";
10810 function mode2ScriptKind(mode) {
10814 case typescripttsx:
10816 case typescriptjsx:
10818 case typescriptreact:
10822 case javascriptreact:
10828 // src/server/features/resourceMap.ts
10829 var import_coc24 = __toModule(require("coc.nvim"));
10830 function defaultPathNormalizer(resource) {
10831 let u = import_coc24.Uri.parse(resource);
10832 if (u.scheme === "file") {
10835 return resource.toString();
10837 var ResourceMap = class {
10838 constructor(_normalizePath = defaultPathNormalizer) {
10839 this._normalizePath = _normalizePath;
10840 this._map = new Map();
10843 return this._map.size;
10846 return this._map.values();
10849 const file2 = this.toKey(uri);
10850 return !!file2 && this._map.has(file2);
10853 const file2 = this.toKey(uri);
10856 let entry = this._map.get(file2);
10857 return entry ? entry.value : void 0;
10860 const file2 = this.toKey(uri);
10862 this._map.set(file2, {uri, value});
10866 const file2 = this.toKey(uri);
10868 this._map.delete(file2);
10872 return Array.from(this._map.values()).map((x) => x.value);
10875 return Array.from(this._map.values()).map((x) => x.uri);
10881 const key = this._normalizePath ? this._normalizePath(uri) : uri;
10885 return this.isCaseInsensitivePath(key) ? key.toLowerCase() : key;
10887 isCaseInsensitivePath(path9) {
10888 if (isWindowsPath(path9)) {
10891 return path9[0] === "/" && this.onIsCaseInsenitiveFileSystem;
10893 get onIsCaseInsenitiveFileSystem() {
10894 if (process.platform === "win32") {
10897 if (process.platform === "darwin") {
10903 function isWindowsPath(path9) {
10904 return /^[a-zA-Z]:\\/.test(path9);
10907 // src/server/features/bufferSyncSupport.ts
10909 (function(BufferKind2) {
10910 BufferKind2[BufferKind2["TypeScript"] = 1] = "TypeScript";
10911 BufferKind2[BufferKind2["JavaScript"] = 2] = "JavaScript";
10912 })(BufferKind || (BufferKind = {}));
10914 (function(BufferState2) {
10915 BufferState2[BufferState2["Initial"] = 1] = "Initial";
10916 BufferState2[BufferState2["Open"] = 2] = "Open";
10917 BufferState2[BufferState2["Closed"] = 2] = "Closed";
10918 })(BufferState || (BufferState = {}));
10919 var BufferOperationType;
10920 (function(BufferOperationType2) {
10921 BufferOperationType2[BufferOperationType2["Close"] = 0] = "Close";
10922 BufferOperationType2[BufferOperationType2["Open"] = 1] = "Open";
10923 BufferOperationType2[BufferOperationType2["Change"] = 2] = "Change";
10924 })(BufferOperationType || (BufferOperationType = {}));
10925 var CloseOperation = class {
10926 constructor(args) {
10931 var OpenOperation = class {
10932 constructor(args) {
10937 var ChangeOperation = class {
10938 constructor(args) {
10943 var SyncedBuffer = class {
10944 constructor(document, filepath, client, synchronizer) {
10945 this.document = document;
10946 this.filepath = filepath;
10947 this.client = client;
10948 this.synchronizer = synchronizer;
10953 file: this.filepath,
10954 fileContent: this.document.getText(),
10955 projectRootPath: this.client.getProjectRootPath(this.document.uri)
10957 const scriptKind = mode2ScriptKind(this.document.languageId);
10959 args.scriptKindName = scriptKind;
10961 if (this.client.apiVersion.gte(api_default.v240)) {
10962 const tsPluginsForDocument = this.client.pluginManager.plugins.filter((x) => x.languages.indexOf(this.document.languageId) >= 0);
10963 if (tsPluginsForDocument.length) {
10964 args.plugins = tsPluginsForDocument.map((plugin) => plugin.name);
10967 this.synchronizer.open(this.resource, args);
10971 return this.document.uri;
10974 return this.document.lineCount;
10977 if (this.document.languageId.startsWith("javascript")) {
10983 if (this.state !== 2) {
10988 return this.synchronizer.close(this.resource, this.filepath);
10990 onContentChanged(events3) {
10991 if (this.state !== 2) {
10992 console.error(`Unexpected buffer state: ${this.state}`);
10994 this.synchronizer.change(this.resource, this.filepath, events3);
10997 var SyncedBufferMap = class extends ResourceMap {
10998 getForPath(filePath) {
10999 return this.get(import_coc25.Uri.file(filePath).toString());
11002 return this.values;
11005 var PendingDiagnostics = class extends ResourceMap {
11006 getOrderedFileSet() {
11007 const orderedResources = Array.from(this.entries).sort((a, b) => a.value - b.value).map((entry) => entry.uri);
11008 const map = new ResourceMap(this._normalizePath);
11009 for (const resource of orderedResources) {
11010 map.set(resource, void 0);
11015 var BufferSynchronizer = class {
11016 constructor(client, pathNormalizer) {
11017 this.client = client;
11018 this._pending = new ResourceMap(pathNormalizer);
11020 open(resource, args) {
11021 if (this.supportsBatching) {
11022 this.updatePending(resource, new OpenOperation(args));
11024 this.client.executeWithoutWaitingForResponse("open", args);
11027 close(resource, filepath) {
11028 if (this.supportsBatching) {
11029 return this.updatePending(resource, new CloseOperation(filepath));
11031 const args = {file: filepath};
11032 this.client.executeWithoutWaitingForResponse("close", args);
11036 change(resource, filepath, events3) {
11037 if (!events3.length) {
11040 if (this.supportsBatching) {
11041 this.updatePending(resource, new ChangeOperation({
11042 fileName: filepath,
11043 textChanges: events3.map((change) => ({
11044 newText: change.text,
11045 start: Position.toLocation(change.range.start),
11046 end: Position.toLocation(change.range.end)
11050 for (const {range, text} of events3) {
11052 insertString: text,
11053 ...Range2.toFormattingRequestArgs(filepath, range)
11055 this.client.executeWithoutWaitingForResponse("change", args);
11060 this._pending.clear();
11062 beforeCommand(command) {
11063 if (command === "updateOpen") {
11069 if (!this.supportsBatching) {
11070 this._pending.clear();
11073 if (this._pending.size > 0) {
11074 const closedFiles = [];
11075 const openFiles = [];
11076 const changedFiles = [];
11077 for (const change of this._pending.values) {
11078 switch (change.type) {
11080 changedFiles.push(change.args);
11083 openFiles.push(change.args);
11086 closedFiles.push(change.args);
11090 this.client.execute("updateOpen", {changedFiles, closedFiles, openFiles}, import_vscode_languageserver_protocol19.CancellationToken.None, {nonRecoverable: true});
11091 this._pending.clear();
11094 get supportsBatching() {
11095 return this.client.apiVersion.gte(api_default.v340);
11097 updatePending(resource, op) {
11100 const existing = this._pending.get(resource);
11101 switch (existing == null ? void 0 : existing.type) {
11103 this._pending.delete(resource);
11108 if (this._pending.has(resource)) {
11111 this._pending.set(resource, op);
11115 var GetErrRequest = class {
11116 constructor(client, uris, _token, onDone) {
11118 this._token = _token;
11119 this._done = false;
11120 let files = uris.map((uri) => client.normalizePath(uri));
11125 const done = () => {
11132 client.executeAsync("geterr", args, _token.token).then(done, done);
11134 static executeGetErrRequest(client, uris, onDone) {
11135 const token = new import_vscode_languageserver_protocol19.CancellationTokenSource();
11136 return new GetErrRequest(client, uris, token, onDone);
11140 this._token.cancel();
11142 this._token.dispose();
11145 var BufferSyncSupport = class {
11146 constructor(client, modeIds) {
11147 this.disposables = [];
11148 this._validateJavaScript = true;
11149 this._validateTypeScript = true;
11150 this.listening = false;
11151 this._onDelete = new import_vscode_languageserver_protocol19.Emitter();
11152 this.onDelete = this._onDelete.event;
11153 this._onWillChange = new import_vscode_languageserver_protocol19.Emitter();
11154 this.onWillChange = this._onWillChange.event;
11155 this.client = client;
11156 this.modeIds = new Set(modeIds);
11157 this.diagnosticDelayer = new Delayer(300);
11158 const pathNormalizer = (path9) => this.client.toPath(path9);
11159 this.syncedBuffers = new SyncedBufferMap(pathNormalizer);
11160 this.pendingDiagnostics = new PendingDiagnostics(pathNormalizer);
11161 this.synchronizer = new BufferSynchronizer(client, pathNormalizer);
11162 this.updateConfiguration();
11163 import_coc25.workspace.onDidChangeConfiguration(this.updateConfiguration, this, this.disposables);
11166 if (this.listening) {
11169 this.listening = true;
11170 import_coc25.workspace.onDidOpenTextDocument(this.openTextDocument, this, this.disposables);
11171 import_coc25.workspace.onDidCloseTextDocument(this.onDidCloseTextDocument, this, this.disposables);
11172 import_coc25.workspace.onDidChangeTextDocument(this.onDidChangeTextDocument, this, this.disposables);
11173 import_coc25.workspace.textDocuments.forEach(this.openTextDocument, this);
11175 handles(resource) {
11176 return this.syncedBuffers.has(resource);
11179 this.pendingDiagnostics.clear();
11180 import_coc25.disposeAll(this.disposables);
11181 this._onWillChange.dispose();
11182 this._onDelete.dispose();
11184 ensureHasBuffer(resource) {
11185 if (this.syncedBuffers.has(resource)) {
11188 const existingDocument = import_coc25.workspace.textDocuments.find((doc) => doc.uri.toString() === resource);
11189 if (existingDocument) {
11190 return this.openTextDocument(existingDocument);
11194 toResource(filePath) {
11195 const buffer = this.syncedBuffers.getForPath(filePath);
11197 return buffer.resource;
11198 return import_coc25.Uri.file(filePath).toString();
11202 (_a = this.pendingGetErr) == null ? void 0 : _a.cancel();
11203 this.pendingDiagnostics.clear();
11204 this.synchronizer.reset();
11208 for (const buffer of this.syncedBuffers.allBuffers) {
11212 openTextDocument(document) {
11213 if (!this.modeIds.has(document.languageId)) {
11216 const resource = document.uri;
11217 const filepath = this.client.normalizePath(import_coc25.Uri.parse(resource));
11221 if (this.syncedBuffers.has(resource)) {
11224 const syncedBuffer = new SyncedBuffer(document, filepath, this.client, this.synchronizer);
11225 this.syncedBuffers.set(resource, syncedBuffer);
11226 syncedBuffer.open();
11227 this.requestDiagnostic(syncedBuffer);
11230 closeResource(resource) {
11231 const syncedBuffer = this.syncedBuffers.get(resource);
11232 if (!syncedBuffer) {
11235 this.pendingDiagnostics.delete(resource);
11236 this.syncedBuffers.delete(resource);
11237 const wasBufferOpen = syncedBuffer.close();
11238 this._onDelete.fire(resource);
11239 if (wasBufferOpen) {
11240 this.requestAllDiagnostics();
11243 onDidCloseTextDocument(document) {
11244 this.closeResource(document.uri);
11246 onDidChangeTextDocument(e) {
11247 const syncedBuffer = this.syncedBuffers.get(e.textDocument.uri);
11248 if (!syncedBuffer) {
11251 this._onWillChange.fire(syncedBuffer.resource);
11252 syncedBuffer.onContentChanged(e.contentChanges);
11253 const didTrigger = this.requestDiagnostic(syncedBuffer);
11254 if (!didTrigger && this.pendingGetErr) {
11255 this.pendingGetErr.cancel();
11256 this.pendingGetErr = void 0;
11257 this.triggerDiagnostics();
11260 beforeCommand(command) {
11261 this.synchronizer.beforeCommand(command);
11263 interuptGetErr(f) {
11264 if (!this.pendingGetErr) {
11267 this.pendingGetErr.cancel();
11268 this.pendingGetErr = void 0;
11269 const result = f();
11270 this.triggerDiagnostics();
11273 getErr(resources) {
11274 const handledResources = resources.filter((resource) => {
11275 let syncedBuffer = this.syncedBuffers.get(resource.toString());
11276 return syncedBuffer && this.shouldValidate(syncedBuffer);
11278 if (!handledResources.length) {
11281 for (const resource of handledResources) {
11282 this.pendingDiagnostics.set(resource.toString(), Date.now());
11284 this.triggerDiagnostics();
11286 triggerDiagnostics(delay = 200) {
11287 this.diagnosticDelayer.trigger(() => {
11288 this.sendPendingDiagnostics();
11291 requestAllDiagnostics() {
11292 for (const buffer of this.syncedBuffers.allBuffers) {
11293 if (this.shouldValidate(buffer)) {
11294 this.pendingDiagnostics.set(buffer.resource, Date.now());
11297 this.triggerDiagnostics();
11299 requestDiagnostic(buffer) {
11300 if (!this.shouldValidate(buffer)) {
11303 this.pendingDiagnostics.set(buffer.resource, Date.now());
11304 const delay = Math.min(Math.max(Math.ceil(buffer.lineCount / 20), 300), 800);
11305 this.triggerDiagnostics(delay);
11308 hasPendingDiagnostics(uri) {
11309 return this.pendingDiagnostics.has(uri);
11311 sendPendingDiagnostics() {
11312 const orderedFileSet = this.pendingDiagnostics.getOrderedFileSet();
11313 if (this.pendingGetErr) {
11314 this.pendingGetErr.cancel();
11315 for (const uri of this.pendingGetErr.uris) {
11316 let resource = uri.toString();
11317 let syncedBuffer = this.syncedBuffers.get(resource);
11318 if (syncedBuffer && this.shouldValidate(syncedBuffer)) {
11319 orderedFileSet.set(resource, void 0);
11321 orderedFileSet.delete(resource);
11324 this.pendingGetErr = void 0;
11326 for (const buffer of this.syncedBuffers.values) {
11327 if (this.shouldValidate(buffer)) {
11328 orderedFileSet.set(buffer.resource, void 0);
11331 if (orderedFileSet.size) {
11332 let uris = Array.from(orderedFileSet.uris).map((uri) => import_coc25.Uri.parse(uri));
11333 const getErr = this.pendingGetErr = GetErrRequest.executeGetErrRequest(this.client, uris, () => {
11334 if (this.pendingGetErr === getErr) {
11335 this.pendingGetErr = void 0;
11339 this.pendingDiagnostics.clear();
11341 updateConfiguration() {
11342 const jsConfig = import_coc25.workspace.getConfiguration("javascript", null);
11343 const tsConfig = import_coc25.workspace.getConfiguration("typescript", null);
11344 this._validateJavaScript = jsConfig.get("validate.enable", true);
11345 this._validateTypeScript = tsConfig.get("validate.enable", true);
11347 shouldValidate(buffer) {
11348 switch (buffer.kind) {
11350 return this._validateJavaScript;
11353 return this._validateTypeScript;
11357 var bufferSyncSupport_default = BufferSyncSupport;
11359 // src/server/features/diagnostics.ts
11360 var import_coc26 = __toModule(require("coc.nvim"));
11361 var import_vscode_languageserver_protocol20 = __toModule(require_main3());
11362 var DiagnosticSet = class {
11364 this._map = new ResourceMap();
11366 set(uri, diagnostics) {
11367 this._map.set(uri, diagnostics);
11370 return this._map.get(uri) || [];
11373 this._map = new ResourceMap();
11376 var DiagnosticKind;
11377 (function(DiagnosticKind2) {
11378 DiagnosticKind2[DiagnosticKind2["Syntax"] = 0] = "Syntax";
11379 DiagnosticKind2[DiagnosticKind2["Semantic"] = 1] = "Semantic";
11380 DiagnosticKind2[DiagnosticKind2["Suggestion"] = 2] = "Suggestion";
11381 })(DiagnosticKind || (DiagnosticKind = {}));
11382 var allDiagnosticKinds = [
11387 var DiagnosticsManager = class {
11389 this._diagnostics = new Map();
11390 this._pendingUpdates = new ResourceMap();
11391 this._enableJavascriptSuggestions = true;
11392 this._enableTypescriptSuggestions = true;
11393 this.updateDelay = 200;
11394 for (const kind of allDiagnosticKinds) {
11395 this._diagnostics.set(kind, new DiagnosticSet());
11397 this._currentDiagnostics = import_coc26.languages.createDiagnosticCollection("tsserver");
11400 this._currentDiagnostics.dispose();
11401 for (const value of this._pendingUpdates.values) {
11402 clearTimeout(value);
11404 this._pendingUpdates = new ResourceMap();
11407 this._currentDiagnostics.clear();
11408 for (const diagnosticSet of this._diagnostics.values()) {
11409 diagnosticSet.clear();
11412 setEnableSuggestions(languageId, value) {
11413 let curr = languageId == "javascript" ? this._enableJavascriptSuggestions : this._enableTypescriptSuggestions;
11414 if (curr == value) {
11417 if (languageId == "javascript") {
11418 this._enableJavascriptSuggestions = value;
11420 this._enableTypescriptSuggestions = value;
11423 diagnosticsReceived(kind, uri, diagnostics) {
11424 const collection = this._diagnostics.get(kind);
11427 let doc = import_coc26.workspace.getDocument(uri);
11430 if (diagnostics.length === 0) {
11431 const existing = collection.get(uri);
11432 if (existing.length === 0) {
11436 collection.set(uri, diagnostics);
11437 this.scheduleDiagnosticsUpdate(uri);
11439 configFileDiagnosticsReceived(uri, diagnostics) {
11440 this._currentDiagnostics.set(uri, diagnostics);
11443 this._currentDiagnostics.delete(uri);
11445 getDiagnostics(uri) {
11446 return this._currentDiagnostics.get(uri) || [];
11449 scheduleDiagnosticsUpdate(uri) {
11450 if (!this._pendingUpdates.has(uri)) {
11451 this._pendingUpdates.set(uri, setTimeout(() => this.updateCurrentDiagnostics(uri), this.updateDelay));
11454 updateCurrentDiagnostics(uri) {
11455 if (this._pendingUpdates.has(uri)) {
11456 clearTimeout(this._pendingUpdates.get(uri));
11457 this._pendingUpdates.delete(uri);
11459 const allDiagnostics = [
11460 ...this._diagnostics.get(0).get(uri),
11461 ...this._diagnostics.get(1).get(uri),
11462 ...this.getSuggestionDiagnostics(uri)
11464 this._currentDiagnostics.set(uri, allDiagnostics);
11466 getSuggestionDiagnostics(uri) {
11467 const enabled = this.suggestionsEnabled(uri);
11468 return this._diagnostics.get(2).get(uri).filter((x) => {
11470 return x.tags && (x.tags.includes(import_vscode_languageserver_protocol20.DiagnosticTag.Unnecessary) || x.tags.includes(import_vscode_languageserver_protocol20.DiagnosticTag.Deprecated));
11475 suggestionsEnabled(uri) {
11476 let doc = import_coc26.workspace.getDocument(uri);
11479 if (doc.filetype.startsWith("javascript")) {
11480 return this._enableJavascriptSuggestions;
11482 if (doc.filetype.startsWith("typescript")) {
11483 return this._enableTypescriptSuggestions;
11489 // src/server/requestQueue.ts
11490 var RequestQueueingType;
11491 (function(RequestQueueingType2) {
11492 RequestQueueingType2[RequestQueueingType2["Normal"] = 1] = "Normal";
11493 RequestQueueingType2[RequestQueueingType2["LowPriority"] = 2] = "LowPriority";
11494 RequestQueueingType2[RequestQueueingType2["Fence"] = 3] = "Fence";
11495 })(RequestQueueingType || (RequestQueueingType = {}));
11496 var RequestQueue = class {
11499 this.sequenceNumber = 0;
11502 return this.queue.length;
11505 if (item.queueingType === 1) {
11506 let index = this.queue.length - 1;
11507 while (index >= 0) {
11508 if (this.queue[index].queueingType !== 2) {
11513 this.queue.splice(index + 1, 0, item);
11515 this.queue.push(item);
11519 return this.queue.shift();
11521 tryDeletePendingRequest(seq) {
11522 for (let i = 0; i < this.queue.length; i++) {
11523 if (this.queue[i].request.seq === seq) {
11524 this.queue.splice(i, 1);
11530 createRequest(command, args) {
11532 seq: this.sequenceNumber++,
11540 // src/server/utils/configuration.ts
11541 var import_coc27 = __toModule(require("coc.nvim"));
11542 var import_which = __toModule(require_which());
11543 var TsServerLogLevel;
11544 (function(TsServerLogLevel2) {
11545 TsServerLogLevel2[TsServerLogLevel2["Off"] = 0] = "Off";
11546 TsServerLogLevel2[TsServerLogLevel2["Normal"] = 1] = "Normal";
11547 TsServerLogLevel2[TsServerLogLevel2["Terse"] = 2] = "Terse";
11548 TsServerLogLevel2[TsServerLogLevel2["Verbose"] = 3] = "Verbose";
11549 })(TsServerLogLevel || (TsServerLogLevel = {}));
11550 (function(TsServerLogLevel2) {
11551 function fromString(value) {
11552 switch (value && value.toLowerCase()) {
11554 return TsServerLogLevel2.Normal;
11556 return TsServerLogLevel2.Terse;
11558 return TsServerLogLevel2.Verbose;
11561 return TsServerLogLevel2.Off;
11564 TsServerLogLevel2.fromString = fromString;
11565 function toString2(value) {
11567 case TsServerLogLevel2.Normal:
11569 case TsServerLogLevel2.Terse:
11571 case TsServerLogLevel2.Verbose:
11573 case TsServerLogLevel2.Off:
11578 TsServerLogLevel2.toString = toString2;
11579 })(TsServerLogLevel || (TsServerLogLevel = {}));
11580 var TypeScriptServiceConfiguration = class {
11582 this._configuration = import_coc27.workspace.getConfiguration("tsserver");
11583 import_coc27.workspace.onDidChangeConfiguration(() => {
11584 this._configuration = import_coc27.workspace.getConfiguration("tsserver");
11588 return this._configuration.get("locale", null);
11591 return this._configuration.get("tsdk", null);
11593 get ignoreLocalTsserver() {
11594 return this._configuration.get("ignoreLocalTsserver", false);
11596 get tsServerLogLevel() {
11597 return TsServerLogLevel.fromString(this._configuration.get("log", null));
11599 get watchOptions() {
11600 return this._configuration.get("watchOptions");
11602 get typingsCacheLocation() {
11603 return this._configuration.get("typingsCacheLocation", "");
11605 get tsServerPluginPaths() {
11606 return this._configuration.get("pluginPaths", []);
11609 return this._configuration.get("implicitProjectConfig.checkJs", false);
11611 get experimentalDecorators() {
11612 return this._configuration.get("implicitProjectConfig.experimentalDecorators", false);
11614 get disableAutomaticTypeAcquisition() {
11615 return this._configuration.get("disableAutomaticTypeAcquisition", false);
11617 get formatOnType() {
11618 return this._configuration.get("formatOnType", false);
11620 get maxTsServerMemory() {
11621 return this._configuration.get("maxTsServerMemory", 0);
11624 return this._configuration.get("debugPort", parseInt(process.env["TSS_DEBUG"], 10));
11626 get npmLocation() {
11627 let path9 = this._configuration.get("npm", "");
11629 return import_coc27.workspace.expand(path9);
11631 path9 = import_which.default.sync("npm");
11637 static loadFromWorkspace() {
11638 return new TypeScriptServiceConfiguration();
11642 // src/server/utils/logger.ts
11643 var import_coc28 = __toModule(require("coc.nvim"));
11645 // src/server/utils/is.ts
11646 var toString = Object.prototype.toString;
11647 function boolean(value) {
11648 return value === true || value === false;
11650 function string(value) {
11651 return toString.call(value) === "[object String]";
11654 // src/server/utils/logger.ts
11655 var Logger = class {
11657 if (this._channel) {
11658 return this._channel;
11660 this._channel = import_coc28.window.createOutputChannel("tsserver");
11661 return this._channel;
11664 if (this._channel) {
11665 this._channel.dispose();
11668 data2String(data) {
11669 if (data instanceof Error) {
11670 if (string(data.stack)) {
11673 return data.message;
11675 if (boolean(data.success) && !data.success && string(data.message)) {
11676 return data.message;
11678 if (string(data)) {
11681 return data.toString();
11683 info(message, data) {
11684 this.logLevel("Info", message, data);
11686 warn(message, data) {
11687 this.logLevel("Warn", message, data);
11689 error(message, data) {
11690 if (data && data.message === "No content available.") {
11693 this.logLevel("Error", message, data);
11695 logLevel(level, message, data) {
11696 this.output.appendLine(`[${level} - ${new Date().toLocaleTimeString()}] ${message}`);
11698 this.output.appendLine(this.data2String(data));
11702 var logger_default = Logger;
11704 // src/server/utils/process.ts
11705 var import_child_process2 = __toModule(require("child_process"));
11706 var import_net = __toModule(require("net"));
11707 var import_os = __toModule(require("os"));
11708 var import_path6 = __toModule(require("path"));
11709 var import_fs2 = __toModule(require("fs"));
11710 function makeRandomHexString(length) {
11711 let chars = ["0", "1", "2", "3", "4", "5", "6", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"];
11713 for (let i = 0; i < length; i++) {
11714 const idx = Math.floor(chars.length * Math.random());
11715 result += chars[idx];
11719 function getTempDirectory() {
11720 let dir = import_path6.default.join(import_os.default.tmpdir(), `coc.nvim-${process.pid}`);
11721 if (!import_fs2.default.existsSync(dir)) {
11722 import_fs2.default.mkdirSync(dir);
11726 function generatePipeName() {
11727 return getPipeName(makeRandomHexString(40));
11729 function getPipeName(name) {
11730 const fullName = "coc-tsc-" + name;
11731 if (process.platform === "win32") {
11732 return "\\\\.\\pipe\\" + fullName + "-sock";
11734 const tmpdir = getTempDirectory();
11735 return import_path6.default.join(tmpdir, fullName + ".sock");
11737 function getTempFile(name) {
11738 const fullName = "coc-nvim-" + name;
11739 return import_path6.default.join(getTempDirectory(), fullName + ".sock");
11741 function generatePatchedEnv(env, stdInPipeName, stdOutPipeName, stdErrPipeName) {
11742 const newEnv = Object.assign({}, env);
11743 newEnv["STDIN_PIPE_NAME"] = stdInPipeName;
11744 newEnv["STDOUT_PIPE_NAME"] = stdOutPipeName;
11745 newEnv["STDERR_PIPE_NAME"] = stdErrPipeName;
11746 newEnv["TSS_LOG"] = `-level verbose -file ${import_path6.default.join(import_os.default.tmpdir(), "coc-nvim-tsc.log")}`;
11747 newEnv["PATH"] = newEnv["PATH"] || process.env.PATH;
11750 function fork(modulePath, args, options, logger, callback) {
11751 let callbackCalled = false;
11752 const resolve = (result) => {
11753 if (callbackCalled) {
11756 callbackCalled = true;
11757 callback(null, result);
11759 const reject = (err) => {
11760 if (callbackCalled) {
11763 callbackCalled = true;
11764 callback(err, null);
11766 const stdInPipeName = generatePipeName();
11767 const stdOutPipeName = generatePipeName();
11768 const stdErrPipeName = generatePipeName();
11769 const newEnv = generatePatchedEnv(process.env, stdInPipeName, stdOutPipeName, stdErrPipeName);
11770 newEnv["NODE_PATH"] = import_path6.default.join(modulePath, "..", "..", "..");
11772 let stdErrServer = import_net.default.createServer((stdErrStream) => {
11773 childProcess.stderr = stdErrStream;
11775 stdErrServer.listen(stdErrPipeName);
11776 let stdOutServer = import_net.default.createServer((stdOutStream) => {
11777 stdOutStream.once("data", (_chunk) => {
11778 childProcess.stdin = import_net.default.connect(stdInPipeName);
11779 childProcess.stdout = stdOutStream;
11780 resolve(childProcess);
11783 stdOutServer.listen(stdOutPipeName);
11784 let serverClosed = false;
11785 const closeServer = () => {
11786 if (serverClosed) {
11789 serverClosed = true;
11790 stdOutServer.close();
11791 stdErrServer.close();
11793 logger.info("Forking TSServer", `PATH: ${newEnv["PATH"]} `);
11794 const bootstrapperPath = import_path6.default.resolve(__dirname, "../bin/tsserverForkStart");
11795 childProcess = import_child_process2.default.fork(bootstrapperPath, [modulePath].concat(args), {
11798 execArgv: options.execArgv
11800 childProcess.once("error", (err) => {
11804 childProcess.once("exit", (err) => {
11810 // src/server/utils/tracer.ts
11811 var import_coc29 = __toModule(require("coc.nvim"));
11813 (function(Trace2) {
11814 Trace2[Trace2["Off"] = 0] = "Off";
11815 Trace2[Trace2["Messages"] = 1] = "Messages";
11816 Trace2[Trace2["Verbose"] = 2] = "Verbose";
11817 })(Trace || (Trace = {}));
11818 (function(Trace2) {
11819 function fromString(value) {
11820 value = value || "";
11821 value = value.toLowerCase();
11826 return Trace2.Messages;
11828 return Trace2.Verbose;
11833 Trace2.fromString = fromString;
11834 })(Trace || (Trace = {}));
11835 var Tracer = class {
11836 constructor(logger) {
11837 this.logger = logger;
11838 this.trace = Tracer.readTrace();
11840 static readTrace() {
11841 let result = Trace.fromString(import_coc29.workspace.getConfiguration("tsserver").get("trace.server", "off"));
11842 if (result === 0 && !!process.env.TSS_TRACE) {
11847 traceRequest(request, responseExpected, queueLength) {
11848 if (this.trace === 0)
11851 if (this.trace === 2 && request.arguments) {
11852 data = `Arguments: ${JSON.stringify(request.arguments, null, 4)}`;
11854 this.logTrace(`Sending request: ${request.command} (${request.seq}). Response expected: ${responseExpected ? "yes" : "no"}. Current queue length: ${queueLength}`, data);
11856 traceResponse(response, startTime) {
11857 if (this.trace === 0) {
11861 if (this.trace === 2 && response.body) {
11862 data = `Result: ${JSON.stringify(response.body, null, 4)}`;
11864 this.logTrace(`Response received: ${response.command} (${response.request_seq}). Request took ${Date.now() - startTime} ms. Success: ${response.success} ${!response.success ? ". Message: " + response.message : ""}`, data);
11866 traceEvent(event) {
11867 if (this.trace === 0) {
11871 if (this.trace === 2 && event.body) {
11872 data = `Data: ${JSON.stringify(event.body, null, 4)}`;
11874 this.logTrace(`Event received: ${event.event} (${event.seq}).`, data);
11876 logTrace(message, data) {
11877 if (this.trace !== 0) {
11878 this.logger.logLevel("Trace", message, data);
11881 traceRequestCompleted(command, request_seq, startTime) {
11882 if (this.trace === 0) {
11885 this.logTrace(`Async response received: ${command} (${request_seq}). Request took ${Date.now() - startTime} ms.`);
11888 var tracer_default = Tracer;
11890 // src/server/utils/tsconfig.ts
11891 function inferredProjectConfig(config) {
11893 module: "commonjs",
11897 if (config.checkJs) {
11898 base.checkJs = true;
11900 if (config.experimentalDecorators) {
11901 base.experimentalDecorators = true;
11906 // src/server/utils/versionProvider.ts
11907 var import_coc30 = __toModule(require("coc.nvim"));
11908 var import_fs3 = __toModule(require("fs"));
11909 var import_path7 = __toModule(require("path"));
11910 var TypeScriptVersion = class {
11911 constructor(path9, _pathLabel) {
11913 this._pathLabel = _pathLabel;
11917 return import_path7.default.resolve(this.path, "../bin/tsc");
11919 get tsServerPath() {
11920 return import_path7.default.resolve(this.path, "tsserver.js");
11923 return typeof this._pathLabel === "undefined" ? this.path : this._pathLabel;
11926 return this.version != null;
11931 let api = this._api = this.getTypeScriptVersion(this.tsServerPath);
11934 get versionString() {
11935 const version = this.version;
11936 return version ? version.versionString : null;
11938 getTypeScriptVersion(serverPath) {
11939 if (!import_fs3.default.existsSync(serverPath)) {
11942 const p = serverPath.split(import_path7.default.sep);
11943 if (p.length <= 2) {
11946 const p2 = p.slice(0, -2);
11947 const modulePath = p2.join(import_path7.default.sep);
11948 let fileName = import_path7.default.join(modulePath, "package.json");
11949 if (!import_fs3.default.existsSync(fileName)) {
11950 if (import_path7.default.basename(modulePath) === "built") {
11951 fileName = import_path7.default.join(modulePath, "..", "package.json");
11954 if (!import_fs3.default.existsSync(fileName)) {
11957 const contents = import_fs3.default.readFileSync(fileName).toString();
11960 desc = JSON.parse(contents);
11964 if (!desc || !desc.version) {
11967 return desc.version ? api_default.fromVersionString(desc.version) : void 0;
11970 var MODULE_FOLDERS = ["node_modules/typescript/lib", ".vscode/pnpify/typescript/lib", ".yarn/sdks/typescript/lib"];
11971 var TypeScriptVersionProvider = class {
11972 constructor(configuration) {
11973 this.configuration = configuration;
11975 updateConfiguration(configuration) {
11976 this.configuration = configuration;
11978 getDefaultVersion() {
11979 let {globalTsdk} = this.configuration;
11981 return new TypeScriptVersion(globalTsdk);
11982 return this.bundledVersion;
11984 get globalVersion() {
11985 let {globalTsdk} = this.configuration;
11987 return new TypeScriptVersion(import_coc30.workspace.expand(globalTsdk));
11990 getLocalVersion() {
11991 let folders = import_coc30.workspace.workspaceFolders.map((f) => import_coc30.Uri.parse(f.uri).fsPath);
11992 for (let p of folders) {
11993 for (let folder of MODULE_FOLDERS) {
11994 let libFolder = import_path7.default.join(p, folder);
11995 if (import_fs3.default.existsSync(libFolder)) {
11996 let version = new TypeScriptVersion(libFolder);
11997 if (version.isValid)
12004 get bundledVersion() {
12006 const file2 = require.resolve("typescript");
12007 const bundledVersion = new TypeScriptVersion(import_path7.default.dirname(file2), "");
12008 return bundledVersion;
12010 import_coc30.window.showMessage("Bundled typescript module not found", "error");
12016 // src/server/utils/versionStatus.ts
12017 var import_coc31 = __toModule(require("coc.nvim"));
12018 var VersionStatus = class {
12019 constructor(_normalizePath, enableJavascript) {
12020 this._normalizePath = _normalizePath;
12021 this.enableJavascript = enableJavascript;
12022 this._versionString = "";
12023 this._versionBarEntry = import_coc31.window.createStatusBarItem(99);
12024 this._onChangeEditorSub = import_coc31.events.on("BufEnter", this.onBufEnter, this);
12025 this._versionBarEntry.show();
12028 this._versionBarEntry.dispose();
12029 this._onChangeEditorSub.dispose();
12031 onDidChangeTypeScriptVersion(version) {
12032 this._versionString = version.versionString;
12034 set loading(isLoading) {
12036 this._versionBarEntry.text = `Initializing tsserver ${this._versionString}`;
12038 this._versionBarEntry.text = `TSC ${this._versionString}`;
12040 this._versionBarEntry.isProgress = isLoading;
12042 checkFiletype(filetype) {
12043 if (filetype.startsWith("javascript") && this.enableJavascript) {
12046 return filetype.startsWith("typescript");
12048 async onBufEnter(bufnr) {
12049 let filetype = await import_coc31.workspace.nvim.call("getbufvar", [bufnr, "&filetype", ""]);
12050 if (this.checkFiletype(filetype)) {
12051 this._versionBarEntry.show();
12053 this._versionBarEntry.hide();
12057 var versionStatus_default = VersionStatus;
12059 // src/server/utils/wireProtocol.ts
12060 var DefaultSize = 8192;
12061 var ContentLength = "Content-Length: ";
12062 var ContentLengthSize = Buffer.byteLength(ContentLength, "utf8");
12063 var Blank = Buffer.from(" ", "utf8")[0];
12064 var BackslashR = Buffer.from("\r", "utf8")[0];
12065 var BackslashN = Buffer.from("\n", "utf8")[0];
12066 var ProtocolBuffer = class {
12069 this.buffer = Buffer.allocUnsafe(DefaultSize);
12072 let toAppend = null;
12073 if (Buffer.isBuffer(data)) {
12076 toAppend = Buffer.from(data, "utf8");
12078 if (this.buffer.length - this.index >= toAppend.length) {
12079 toAppend.copy(this.buffer, this.index, 0, toAppend.length);
12081 let newSize = (Math.ceil((this.index + toAppend.length) / DefaultSize) + 1) * DefaultSize;
12082 if (this.index === 0) {
12083 this.buffer = Buffer.allocUnsafe(newSize);
12084 toAppend.copy(this.buffer, 0, 0, toAppend.length);
12086 this.buffer = Buffer.concat([this.buffer.slice(0, this.index), toAppend], newSize);
12089 this.index += toAppend.length;
12091 tryReadContentLength() {
12094 while (current < this.index && (this.buffer[current] === Blank || this.buffer[current] === BackslashR || this.buffer[current] === BackslashN)) {
12097 if (this.index < current + ContentLengthSize) {
12100 current += ContentLengthSize;
12101 let start = current;
12102 while (current < this.index && this.buffer[current] !== BackslashR) {
12105 if (current + 3 >= this.index || this.buffer[current + 1] !== BackslashN || this.buffer[current + 2] !== BackslashR || this.buffer[current + 3] !== BackslashN) {
12108 let data = this.buffer.toString("utf8", start, current);
12109 result = parseInt(data, 10);
12110 this.buffer = this.buffer.slice(current + 4);
12111 this.index = this.index - (current + 4);
12114 tryReadContent(length) {
12115 if (this.index < length) {
12118 let result = this.buffer.toString("utf8", 0, length);
12119 let sourceStart = length;
12120 while (sourceStart < this.index && (this.buffer[sourceStart] === BackslashR || this.buffer[sourceStart] === BackslashN)) {
12123 this.buffer.copy(this.buffer, 0, sourceStart);
12124 this.index = this.index - sourceStart;
12128 var Reader = class {
12129 constructor(readable, callback, onError) {
12130 this.readable = readable;
12131 this.callback = callback;
12132 this.onError = onError;
12133 this.buffer = new ProtocolBuffer();
12134 this.nextMessageLength = -1;
12135 this.readable.on("data", (data) => {
12136 this.onLengthData(data);
12139 onLengthData(data) {
12141 this.buffer.append(data);
12143 if (this.nextMessageLength === -1) {
12144 this.nextMessageLength = this.buffer.tryReadContentLength();
12145 if (this.nextMessageLength === -1) {
12149 const msg = this.buffer.tryReadContent(this.nextMessageLength);
12150 if (msg === null) {
12153 this.nextMessageLength = -1;
12154 const json = JSON.parse(msg);
12155 this.callback(json);
12163 // src/server/typescriptServiceClient.ts
12164 var ForkedTsServerProcess = class {
12165 constructor(childProcess) {
12166 this.childProcess = childProcess;
12167 this.toCancelOnResourceChange = new Set();
12170 this.childProcess.on("error", cb);
12173 this.childProcess.on("exit", cb);
12175 write(serverRequest) {
12176 this.childProcess.stdin.write(JSON.stringify(serverRequest) + "\r\n", "utf8");
12178 createReader(callback, onError) {
12179 new Reader(this.childProcess.stdout, callback, onError);
12182 this.childProcess.kill();
12185 var TypeScriptServiceClient = class {
12186 constructor(pluginManager, modeIds) {
12187 this.pluginManager = pluginManager;
12188 this.modeIds = modeIds;
12189 this.state = import_coc32.ServiceStat.Initial;
12190 this.logger = new logger_default();
12191 this.tsServerLogFile = null;
12192 this.cancellationPipeName = null;
12193 this._callbacks = new CallbackMap();
12194 this._requestQueue = new RequestQueue();
12195 this._pendingResponses = new Set();
12196 this._onTsServerStarted = new import_vscode_languageserver_protocol21.Emitter();
12197 this._onProjectLanguageServiceStateChanged = new import_vscode_languageserver_protocol21.Emitter();
12198 this._onDidBeginInstallTypings = new import_vscode_languageserver_protocol21.Emitter();
12199 this._onDidEndInstallTypings = new import_vscode_languageserver_protocol21.Emitter();
12200 this._onTypesInstallerInitializationFailed = new import_vscode_languageserver_protocol21.Emitter();
12201 this.disposables = [];
12202 this.isRestarting = false;
12203 this._onDiagnosticsReceived = new import_vscode_languageserver_protocol21.Emitter();
12204 this._onConfigDiagnosticsReceived = new import_vscode_languageserver_protocol21.Emitter();
12205 this._onResendModelsRequested = new import_vscode_languageserver_protocol21.Emitter();
12206 this.pathSeparator = import_path8.default.sep;
12207 this.lastStart = Date.now();
12208 this.servicePromise = null;
12209 this.lastError = null;
12210 this.numberRestarts = 0;
12211 this.fileConfigurationManager = new fileConfigurationManager_default(this);
12212 this._configuration = TypeScriptServiceConfiguration.loadFromWorkspace();
12213 this.versionProvider = new TypeScriptVersionProvider(this._configuration);
12214 this._apiVersion = api_default.defaultVersion;
12215 this.tracer = new tracer_default(this.logger);
12216 this.versionStatus = new versionStatus_default(this.normalizePath.bind(this), this.fileConfigurationManager.enableJavascript());
12217 pluginManager.onDidUpdateConfig((update) => {
12218 this.configurePlugin(update.pluginId, update.config);
12219 }, null, this.disposables);
12220 pluginManager.onDidChangePlugins(() => {
12221 this.restartTsServer();
12222 }, null, this.disposables);
12223 this.bufferSyncSupport = new bufferSyncSupport_default(this, modeIds);
12224 this.onTsServerStarted(() => {
12225 this.bufferSyncSupport.listen();
12227 this.diagnosticsManager = new DiagnosticsManager();
12228 this.bufferSyncSupport.onDelete((resource) => {
12229 this.cancelInflightRequestsForResource(resource);
12230 this.diagnosticsManager.delete(resource);
12231 }, null, this.disposables);
12232 this.bufferSyncSupport.onWillChange((resource) => {
12233 this.cancelInflightRequestsForResource(resource);
12236 get onDiagnosticsReceived() {
12237 return this._onDiagnosticsReceived.event;
12239 get onConfigDiagnosticsReceived() {
12240 return this._onConfigDiagnosticsReceived.event;
12242 get onResendModelsRequested() {
12243 return this._onResendModelsRequested.event;
12245 get configuration() {
12246 return this._configuration;
12249 if (this.servicePromise) {
12250 this.servicePromise.then((childProcess) => {
12251 childProcess.kill();
12252 }).then(void 0, () => void 0);
12254 this.bufferSyncSupport.dispose();
12255 this.logger.dispose();
12256 this._onTsServerStarted.dispose();
12257 this._onResendModelsRequested.dispose();
12258 this.versionStatus.dispose();
12260 info(message, data) {
12261 this.logger.info(message, data);
12263 error(message, data) {
12264 this.logger.error(message, data);
12266 restartTsServer() {
12267 const start = () => {
12268 this.servicePromise = this.startService(true);
12269 return this.servicePromise;
12271 if (this.servicePromise) {
12272 return Promise.resolve(this.servicePromise.then((childProcess) => {
12273 this.state = import_coc32.ServiceStat.Stopping;
12274 this.info("Killing TS Server");
12275 this.isRestarting = true;
12276 childProcess.kill();
12277 this.servicePromise = null;
12280 return Promise.resolve(start());
12284 if (!this.servicePromise)
12286 return new Promise((resolve, reject) => {
12287 this.servicePromise.then((childProcess) => {
12288 if (this.state == import_coc32.ServiceStat.Running) {
12289 this.info("Killing TS Server");
12290 childProcess.onExit(() => {
12293 childProcess.kill();
12294 this.servicePromise = null;
12301 get onTsServerStarted() {
12302 return this._onTsServerStarted.event;
12304 get onProjectLanguageServiceStateChanged() {
12305 return this._onProjectLanguageServiceStateChanged.event;
12307 get onDidBeginInstallTypings() {
12308 return this._onDidBeginInstallTypings.event;
12310 get onDidEndInstallTypings() {
12311 return this._onDidEndInstallTypings.event;
12313 get onTypesInstallerInitializationFailed() {
12314 return this._onTypesInstallerInitializationFailed.event;
12317 return this._apiVersion;
12320 return this._tscPath;
12323 if (this.servicePromise) {
12324 return this.servicePromise;
12326 if (this.lastError) {
12327 return Promise.reject(this.lastError);
12329 return this.startService().then(() => {
12330 if (this.servicePromise) {
12331 return this.servicePromise;
12335 ensureServiceStarted() {
12336 if (!this.servicePromise) {
12337 this.startService().catch((err) => {
12338 import_coc32.window.showMessage(`TSServer start failed: ${err.message}`, "error");
12339 this.error(`Service start failed: ${err.stack}`);
12343 async startService(resendModels = false) {
12344 const {ignoreLocalTsserver} = this.configuration;
12345 let currentVersion;
12346 if (!ignoreLocalTsserver)
12347 currentVersion = this.versionProvider.getLocalVersion();
12348 if (!currentVersion || !import_fs4.default.existsSync(currentVersion.tsServerPath)) {
12349 currentVersion = this.versionProvider.getDefaultVersion();
12351 if (!currentVersion || !currentVersion.isValid) {
12352 if (this.configuration.globalTsdk) {
12353 import_coc32.window.showMessage(`Can not find typescript module, in 'tsserver.tsdk': ${this.configuration.globalTsdk}`, "error");
12355 import_coc32.window.showMessage(`Can not find typescript module, run ':CocInstall coc-tsserver' to fix it!`, "error");
12359 this._apiVersion = currentVersion.version;
12360 this._tscPath = currentVersion.tscPath;
12361 this.versionStatus.onDidChangeTypeScriptVersion(currentVersion);
12362 this.lastError = null;
12363 const tsServerForkArgs = await this.getTsServerArgs(currentVersion);
12364 const debugPort = this._configuration.debugPort;
12365 const maxTsServerMemory = this._configuration.maxTsServerMemory;
12368 ...debugPort ? [`--inspect=${debugPort}`] : [],
12369 ...maxTsServerMemory ? [`--max-old-space-size=${maxTsServerMemory}`] : []
12371 cwd: import_coc32.workspace.root
12373 this.servicePromise = this.startProcess(currentVersion, tsServerForkArgs, options, resendModels);
12374 return this.servicePromise;
12376 startProcess(currentVersion, args, options, resendModels) {
12377 this.state = import_coc32.ServiceStat.Starting;
12378 return new Promise((resolve, reject) => {
12380 fork(currentVersion.tsServerPath, args, options, this.logger, (err, childProcess) => {
12381 if (err || !childProcess) {
12382 this.state = import_coc32.ServiceStat.StartFailed;
12383 this.lastError = err;
12384 this.error("Starting TSServer failed with error.", err.stack);
12387 this.state = import_coc32.ServiceStat.Running;
12388 this.info("Started TSServer", JSON.stringify(currentVersion, null, 2));
12389 const handle = new ForkedTsServerProcess(childProcess);
12390 this.tsServerProcess = handle;
12391 this.lastStart = Date.now();
12392 handle.onError((err2) => {
12393 this.lastError = err2;
12394 this.error("TSServer errored with error.", err2);
12395 this.error(`TSServer log file: ${this.tsServerLogFile || ""}`);
12396 import_coc32.window.showMessage(`TSServer errored with error. ${err2.message}`, "error");
12397 this.serviceExited(false);
12399 handle.onExit((code) => {
12400 if (code == null) {
12401 this.info("TSServer normal exit");
12403 this.error(`TSServer exited with code: ${code}`);
12405 this.info(`TSServer log file: ${this.tsServerLogFile || ""}`);
12406 this.serviceExited(!this.isRestarting);
12407 this.isRestarting = false;
12409 handle.createReader((msg) => {
12410 this.dispatchMessage(msg);
12412 this.error("ReaderError", error);
12415 this.serviceStarted(resendModels);
12416 this._onTsServerStarted.fire(currentVersion.version);
12423 async openTsServerLogFile() {
12424 const isRoot = process.getuid && process.getuid() == 0;
12425 let echoErr = (msg) => {
12426 import_coc32.window.showMessage(msg, "error");
12429 echoErr("Log disabled for root user.");
12432 if (!this.apiVersion.gte(api_default.v222)) {
12433 echoErr("TS Server logging requires TS 2.2.2+");
12436 if (this._configuration.tsServerLogLevel === TsServerLogLevel.Off) {
12437 echoErr(`TS Server logging is off. Change 'tsserver.log' in 'coc-settings.json' to enable`);
12440 if (!this.tsServerLogFile) {
12441 echoErr("TS Server has not started logging.");
12445 await import_coc32.workspace.nvim.command(`edit ${this.tsServerLogFile}`);
12448 echoErr("Could not open TS Server log file");
12452 serviceStarted(resendModels) {
12453 this.bufferSyncSupport.reset();
12454 const watchOptions = this.apiVersion.gte(api_default.v380) ? this.configuration.watchOptions : void 0;
12455 const configureOptions = {
12456 hostInfo: "coc-nvim",
12458 providePrefixAndSuffixTextForRename: true,
12459 allowRenameOfImportPath: true
12463 this.executeWithoutWaitingForResponse("configure", configureOptions);
12464 this.setCompilerOptionsForInferredProjects(this._configuration);
12465 if (resendModels) {
12466 this._onResendModelsRequested.fire(void 0);
12467 this.fileConfigurationManager.reset();
12468 this.diagnosticsManager.reInitialize();
12469 this.bufferSyncSupport.reinitialize();
12471 for (const [config, pluginName] of this.pluginManager.configurations()) {
12472 this.configurePlugin(config, pluginName);
12475 setCompilerOptionsForInferredProjects(configuration) {
12476 if (!this.apiVersion.gte(api_default.v206))
12479 options: this.getCompilerOptionsForInferredProjects(configuration)
12481 this.executeWithoutWaitingForResponse("compilerOptionsForInferredProjects", args);
12483 getCompilerOptionsForInferredProjects(configuration) {
12485 ...inferredProjectConfig(configuration),
12487 allowSyntheticDefaultImports: true,
12488 allowNonTsExtensions: true
12491 serviceExited(restart) {
12492 this.state = import_coc32.ServiceStat.Stopped;
12493 this.servicePromise = null;
12494 this.tsServerLogFile = null;
12495 this._callbacks.destroy("Service died.");
12496 this._callbacks = new CallbackMap();
12497 this._requestQueue = new RequestQueue();
12498 this._pendingResponses = new Set();
12500 const diff = Date.now() - this.lastStart;
12501 this.numberRestarts++;
12502 let startService = true;
12503 if (this.numberRestarts > 5) {
12504 this.numberRestarts = 0;
12505 if (diff < 10 * 1e3) {
12506 this.lastStart = Date.now();
12507 startService = false;
12508 import_coc32.window.showMessage("The TypeScript language service died 5 times right after it got started.", "error");
12509 } else if (diff < 60 * 1e3) {
12510 this.lastStart = Date.now();
12511 import_coc32.window.showMessage("The TypeScript language service died unexpectedly 5 times in the last 5 Minutes.", "error");
12514 if (startService) {
12515 this.startService(true);
12520 return this.normalizePath(import_coc32.Uri.parse(uri));
12522 toOpenedFilePath(uri, options = {}) {
12523 if (!this.bufferSyncSupport.ensureHasBuffer(uri)) {
12524 if (!options.suppressAlertOnFailure) {
12525 console.error(`Unexpected resource ${uri}`);
12529 return this.toPath(uri);
12531 toResource(filepath) {
12532 if (this._apiVersion.gte(api_default.v213)) {
12533 if (filepath.startsWith(this.inMemoryResourcePrefix + "untitled:")) {
12534 let resource = import_coc32.Uri.parse(filepath);
12535 if (this.inMemoryResourcePrefix) {
12536 const dirName = import_path8.default.dirname(resource.path);
12537 const fileName = import_path8.default.basename(resource.path);
12538 if (fileName.startsWith(this.inMemoryResourcePrefix)) {
12539 resource = resource.with({path: import_path8.default.posix.join(dirName, fileName.slice(this.inMemoryResourcePrefix.length))});
12542 return resource.toString();
12545 return import_coc32.Uri.file(filepath).toString();
12547 normalizePath(resource) {
12548 if (disabledSchemes.has(resource.scheme)) {
12551 switch (resource.scheme) {
12553 let result = resource.fsPath;
12556 result = import_path8.default.normalize(result);
12557 return result.replace(new RegExp("\\" + this.pathSeparator, "g"), "/");
12560 return this.inMemoryResourcePrefix + resource.toString(true);
12564 getDocument(resource) {
12565 if (resource.startsWith("untitled:")) {
12566 let bufnr = parseInt(resource.split(":", 2)[1], 10);
12567 return import_coc32.workspace.getDocument(bufnr);
12569 return import_coc32.workspace.getDocument(resource);
12571 get inMemoryResourcePrefix() {
12572 return this._apiVersion.gte(api_default.v270) ? "^" : "";
12575 if (this._apiVersion.gte(api_default.v213)) {
12576 if (filepath.startsWith(this.inMemoryResourcePrefix + "untitled:")) {
12577 let resource = import_coc32.Uri.parse(filepath.slice(this.inMemoryResourcePrefix.length));
12578 if (this.inMemoryResourcePrefix) {
12579 const dirName = import_path8.default.dirname(resource.path);
12580 const fileName = import_path8.default.basename(resource.path);
12581 if (fileName.startsWith(this.inMemoryResourcePrefix)) {
12582 resource = resource.with({
12583 path: import_path8.default.posix.join(dirName, fileName.slice(this.inMemoryResourcePrefix.length))
12590 return import_coc32.Uri.file(filepath);
12592 execute(command, args, token, config) {
12595 if (config == null ? void 0 : config.cancelOnResourceChange) {
12596 const source = new import_vscode_languageserver_protocol21.CancellationTokenSource();
12597 token.onCancellationRequested(() => source.cancel());
12599 resource: config.cancelOnResourceChange,
12600 cancel: () => source.cancel()
12602 (_a = this.tsServerProcess) == null ? void 0 : _a.toCancelOnResourceChange.add(inFlight);
12603 execution = this.executeImpl(command, args, {
12605 token: source.token,
12606 expectsResult: true,
12610 (_a2 = this.tsServerProcess) == null ? void 0 : _a2.toCancelOnResourceChange.delete(inFlight);
12614 execution = this.executeImpl(command, args, {
12617 expectsResult: true,
12621 if (config == null ? void 0 : config.nonRecoverable) {
12622 execution.catch((err) => this.fatalError(command, err));
12626 fatalError(command, error) {
12627 console.error(`A non-recoverable error occured while executing tsserver command: ${command}`);
12628 if (this.state === import_coc32.ServiceStat.Running) {
12629 this.info("Killing TS Server by fatal error:", error);
12630 this.service().then((service) => {
12635 executeAsync(command, args, token) {
12636 return this.executeImpl(command, args, {
12639 expectsResult: true
12642 executeWithoutWaitingForResponse(command, args) {
12643 this.executeImpl(command, args, {
12646 expectsResult: false
12649 executeImpl(command, args, executeInfo) {
12650 if (this.servicePromise == null) {
12651 return Promise.resolve(void 0);
12653 this.bufferSyncSupport.beforeCommand(command);
12654 const request = this._requestQueue.createRequest(command, args);
12655 const requestInfo = {
12657 expectsResponse: executeInfo.expectsResult,
12658 isAsync: executeInfo.isAsync,
12659 queueingType: getQueueingType(command, executeInfo.lowPriority)
12662 if (executeInfo.expectsResult) {
12663 result = new Promise((resolve, reject) => {
12664 this._callbacks.add(request.seq, {onSuccess: resolve, onError: reject, startTime: Date.now(), isAsync: executeInfo.isAsync}, executeInfo.isAsync);
12665 if (executeInfo.token) {
12666 executeInfo.token.onCancellationRequested(() => {
12667 this.tryCancelRequest(request.seq, command);
12670 }).catch((err) => {
12674 this._requestQueue.enqueue(requestInfo);
12675 this.sendNextRequests();
12678 sendNextRequests() {
12679 while (this._pendingResponses.size === 0 && this._requestQueue.length > 0) {
12680 const item = this._requestQueue.dequeue();
12682 this.sendRequest(item);
12686 sendRequest(requestItem) {
12687 const serverRequest = requestItem.request;
12688 this.tracer.traceRequest(serverRequest, requestItem.expectsResponse, this._requestQueue.length);
12689 if (requestItem.expectsResponse && !requestItem.isAsync) {
12690 this._pendingResponses.add(requestItem.request.seq);
12692 this.service().then((childProcess) => {
12694 childProcess.write(serverRequest);
12696 const callback = this.fetchCallback(serverRequest.seq);
12698 callback.onError(err);
12703 tryCancelRequest(seq, command) {
12705 if (this._requestQueue.tryDeletePendingRequest(seq)) {
12706 this.tracer.logTrace(`TypeScript Server: canceled request with sequence number ${seq}`);
12709 if (this.cancellationPipeName) {
12710 this.tracer.logTrace(`TypeScript Server: trying to cancel ongoing request with sequence number ${seq}`);
12712 import_fs4.default.writeFileSync(this.cancellationPipeName + seq, "");
12717 this.tracer.logTrace(`TypeScript Server: tried to cancel request with sequence number ${seq}. But request got already delivered.`);
12720 const callback = this.fetchCallback(seq);
12722 callback.onSuccess(new ServerResponse.Cancelled(`Cancelled request ${seq} - ${command}`));
12726 fetchCallback(seq) {
12727 const callback = this._callbacks.fetch(seq);
12731 this._pendingResponses.delete(seq);
12734 dispatchMessage(message) {
12736 switch (message.type) {
12738 this.dispatchResponse(message);
12741 const event = message;
12742 if (event.event === "requestCompleted") {
12743 const seq = event.body.request_seq;
12744 const p = this._callbacks.fetch(seq);
12746 this.tracer.traceRequestCompleted("requestCompleted", seq, p.startTime);
12747 p.onSuccess(void 0);
12750 this.tracer.traceEvent(event);
12751 this.dispatchEvent(event);
12755 throw new Error(`Unknown message type ${message.type} received`);
12758 this.sendNextRequests();
12761 dispatchResponse(response) {
12762 const callback = this.fetchCallback(response.request_seq);
12766 this.tracer.traceResponse(response, callback.startTime);
12767 if (response.success) {
12768 callback.onSuccess(response);
12769 } else if (response.message === "No content available.") {
12770 callback.onSuccess(ServerResponse.NoContent);
12772 callback.onError(new Error(response.message));
12775 dispatchEvent(event) {
12776 switch (event.event) {
12778 case "semanticDiag":
12779 case "suggestionDiag":
12780 const diagnosticEvent = event;
12781 if (diagnosticEvent.body && diagnosticEvent.body.diagnostics) {
12782 this._onDiagnosticsReceived.fire({
12783 kind: getDiagnosticsKind(event),
12784 resource: this.asUrl(diagnosticEvent.body.file),
12785 diagnostics: diagnosticEvent.body.diagnostics
12789 case "configFileDiag":
12790 this._onConfigDiagnosticsReceived.fire(event);
12792 case "projectLanguageServiceState":
12794 this._onProjectLanguageServiceStateChanged.fire(event.body);
12797 case "beginInstallTypes":
12799 this._onDidBeginInstallTypings.fire(event.body);
12802 case "endInstallTypes":
12804 this._onDidEndInstallTypings.fire(event.body);
12807 case "projectsUpdatedInBackground":
12808 const body = event.body;
12809 const resources = body.openFiles.map(import_coc32.Uri.file);
12810 this.bufferSyncSupport.getErr(resources);
12812 case "typesInstallerInitializationFailed":
12814 this._onTypesInstallerInitializationFailed.fire(event.body);
12817 case "projectLoadingStart":
12818 this.versionStatus.loading = true;
12820 case "projectLoadingFinish":
12821 this.versionStatus.loading = false;
12825 async getTsServerArgs(currentVersion) {
12827 args.push("--allowLocalPluginLoads");
12828 if (this.apiVersion.gte(api_default.v250)) {
12829 args.push("--useInferredProjectPerProjectRoot");
12831 args.push("--useSingleInferredProject");
12833 if (this.apiVersion.gte(api_default.v206) && this._configuration.disableAutomaticTypeAcquisition) {
12834 args.push("--disableAutomaticTypingAcquisition");
12836 if (this.apiVersion.gte(api_default.v222)) {
12837 this.cancellationPipeName = getTempFile(`tscancellation-${makeRandomHexString(20)}`);
12838 args.push("--cancellationPipeName", this.cancellationPipeName + "*");
12840 if (this.apiVersion.gte(api_default.v222)) {
12841 const isRoot = process.getuid && process.getuid() == 0;
12842 if (this._configuration.tsServerLogLevel !== TsServerLogLevel.Off && !isRoot) {
12843 const logDir = getTempDirectory();
12845 this.tsServerLogFile = import_path8.default.join(logDir, `tsserver.log`);
12846 this.info("TSServer log file :", this.tsServerLogFile);
12848 this.tsServerLogFile = null;
12849 this.error("Could not create TSServer log directory");
12851 if (this.tsServerLogFile) {
12852 args.push("--logVerbosity", TsServerLogLevel.toString(this._configuration.tsServerLogLevel));
12853 args.push("--logFile", this.tsServerLogFile);
12857 if (this.apiVersion.gte(api_default.v230)) {
12858 const pluginNames = this.pluginManager.plugins.map((x) => x.name);
12859 let pluginPaths = this._configuration.tsServerPluginPaths;
12860 pluginPaths = pluginPaths.reduce((p, c) => {
12861 if (import_path8.default.isAbsolute(c)) {
12864 let roots = import_coc32.workspace.workspaceFolders.map((o) => import_coc32.Uri.parse(o.uri).fsPath);
12865 p.push(...roots.map((r) => import_path8.default.join(r, c)));
12869 if (pluginNames.length) {
12870 const isUsingBundledTypeScriptVersion = currentVersion.path == this.versionProvider.bundledVersion.path;
12871 args.push("--globalPlugins", pluginNames.join(","));
12872 for (const plugin of this.pluginManager.plugins) {
12873 if (isUsingBundledTypeScriptVersion || plugin.enableForWorkspaceTypeScriptVersions) {
12874 pluginPaths.push(plugin.path);
12878 if (pluginPaths.length) {
12879 args.push("--pluginProbeLocations", pluginPaths.join(","));
12882 if (this._configuration.locale) {
12883 args.push("--locale", this._configuration.locale);
12885 if (this._configuration.typingsCacheLocation) {
12886 args.push("--globalTypingsCacheLocation", `"${this._configuration.typingsCacheLocation}"`);
12888 if (this.apiVersion.gte(api_default.v234)) {
12889 let {npmLocation} = this._configuration;
12891 this.logger.info(`using npm from ${npmLocation}`);
12892 args.push("--npmLocation", `"${npmLocation}"`);
12895 if (this.apiVersion.gte(api_default.v291)) {
12896 args.push("--noGetErrOnBackgroundUpdate");
12898 if (this.apiVersion.gte(api_default.v345)) {
12899 args.push("--validateDefaultNpmLocation");
12903 getProjectRootPath(uri) {
12904 let root = import_coc32.workspace.cwd;
12905 let u = import_coc32.Uri.parse(uri);
12906 if (u.scheme !== "file")
12908 let folder = import_coc32.workspace.getWorkspaceFolder(uri);
12910 root = import_coc32.Uri.parse(folder.uri).fsPath;
12912 let filepath = import_coc32.Uri.parse(uri).fsPath;
12913 if (!filepath.startsWith(root)) {
12914 root = import_path8.default.dirname(filepath);
12917 if (root == import_os2.default.homedir())
12921 configurePlugin(pluginName, configuration) {
12922 if (this.apiVersion.gte(api_default.v314)) {
12923 if (!this.servicePromise)
12925 this.servicePromise.then(() => {
12926 this.executeWithoutWaitingForResponse("configurePlugin", {pluginName, configuration});
12930 interruptGetErr(f) {
12931 return this.bufferSyncSupport.interuptGetErr(f);
12933 cancelInflightRequestsForResource(resource) {
12934 if (this.state !== import_coc32.ServiceStat.Running || !this.tsServerProcess) {
12937 for (const request of this.tsServerProcess.toCancelOnResourceChange) {
12938 if (request.resource.toString() === resource.toString()) {
12944 var typescriptServiceClient_default = TypeScriptServiceClient;
12945 function getDiagnosticsKind(event) {
12946 switch (event.event) {
12948 return DiagnosticKind.Syntax;
12949 case "semanticDiag":
12950 return DiagnosticKind.Semantic;
12951 case "suggestionDiag":
12952 return DiagnosticKind.Suggestion;
12954 throw new Error("Unknown dignostics kind");
12956 var fenceCommands = new Set(["change", "close", "open"]);
12957 function getQueueingType(command, lowPriority) {
12958 if (fenceCommands.has(command)) {
12959 return RequestQueueingType.Fence;
12961 return lowPriority ? RequestQueueingType.LowPriority : RequestQueueingType.Normal;
12964 // src/server/utils/languageDescription.ts
12965 var DiagnosticLanguage;
12966 (function(DiagnosticLanguage2) {
12967 DiagnosticLanguage2[DiagnosticLanguage2["JavaScript"] = 0] = "JavaScript";
12968 DiagnosticLanguage2[DiagnosticLanguage2["TypeScript"] = 1] = "TypeScript";
12969 })(DiagnosticLanguage || (DiagnosticLanguage = {}));
12970 var standardLanguageDescriptions = [
12973 diagnosticSource: "ts",
12974 diagnosticOwner: "typescript",
12981 diagnosticLanguage: 1,
12982 configFile: "tsconfig.json",
12983 configFilePattern: /^tsconfig(\..*)?\.json$/gi
12987 diagnosticSource: "ts",
12988 diagnosticOwner: "typescript",
12989 modeIds: [javascript, javascriptreact, javascriptjsx],
12990 diagnosticLanguage: 0,
12991 configFile: "jsconfig.json",
12992 configFilePattern: /^jsconfig(\..*)?\.json$/gi
12996 // src/server/utils/typingsStatus.ts
12997 var import_coc33 = __toModule(require("coc.nvim"));
12998 var import_vscode_languageserver_protocol22 = __toModule(require_main3());
12999 var typingsInstallTimeout = 30 * 1e3;
13000 var TypingsStatus = class {
13001 constructor(client) {
13002 this._acquiringTypings = Object.create({});
13003 this._subscriptions = [];
13004 this._client = client;
13005 this._subscriptions.push(this._client.onDidBeginInstallTypings((event) => this.onBeginInstallTypings(event.eventId)));
13006 this._subscriptions.push(this._client.onDidEndInstallTypings((event) => this.onEndInstallTypings(event.eventId)));
13009 this._subscriptions.forEach((x) => x.dispose());
13010 for (const eventId of Object.keys(this._acquiringTypings)) {
13011 clearTimeout(this._acquiringTypings[eventId]);
13014 get isAcquiringTypings() {
13015 return Object.keys(this._acquiringTypings).length > 0;
13017 onBeginInstallTypings(eventId) {
13018 if (this._acquiringTypings[eventId]) {
13021 this._acquiringTypings[eventId] = setTimeout(() => {
13022 this.onEndInstallTypings(eventId);
13023 }, typingsInstallTimeout);
13025 onEndInstallTypings(eventId) {
13026 const timer = this._acquiringTypings[eventId];
13028 clearTimeout(timer);
13030 delete this._acquiringTypings[eventId];
13033 var typingsStatus_default = TypingsStatus;
13034 var AtaProgressReporter = class {
13035 constructor(client) {
13036 this._promises = new Map();
13037 this._invalid = false;
13038 this.statusItem = import_coc33.window.createStatusBarItem(10, {progress: true});
13039 const disposables = [];
13040 disposables.push(client.onDidBeginInstallTypings((e) => this._onBegin(e.eventId)));
13041 disposables.push(client.onDidEndInstallTypings((e) => this._onEndOrTimeout(e.eventId)));
13042 disposables.push(client.onTypesInstallerInitializationFailed((_) => this.onTypesInstallerInitializationFailed()));
13043 this._disposable = import_vscode_languageserver_protocol22.Disposable.create(() => {
13044 disposables.forEach((disposable) => {
13045 disposable.dispose();
13050 this._disposable.dispose();
13051 this._promises.forEach((value) => value());
13053 _onBegin(eventId) {
13054 const handle = setTimeout(() => this._onEndOrTimeout(eventId), typingsInstallTimeout);
13055 new Promise((resolve) => {
13056 this._promises.set(eventId, () => {
13057 clearTimeout(handle);
13061 this.statusItem.text = "Fetching data for better TypeScript IntelliSense";
13062 this.statusItem.show();
13064 _onEndOrTimeout(eventId) {
13065 this.statusItem.hide();
13066 const resolve = this._promises.get(eventId);
13068 this._promises.delete(eventId);
13072 onTypesInstallerInitializationFailed() {
13073 this.statusItem.hide();
13074 if (!this._invalid) {
13075 import_coc33.window.showMessage("Could not install typings files for JavaScript language features. Please ensure that NPM is installed", "error");
13077 this._invalid = true;
13081 // src/server/typescriptServiceClientHost.ts
13082 var styleCheckDiagnostics = [
13090 var TypeScriptServiceClientHost = class {
13091 constructor(descriptions, pluginManager) {
13092 this.languagePerId = new Map();
13093 this.disposables = [];
13094 this.reportStyleCheckAsWarnings = true;
13096 const handleProjectChange = () => {
13098 clearTimeout(timer);
13099 timer = setTimeout(() => {
13100 this.triggerAllDiagnostics();
13103 const configFileWatcher = import_coc34.workspace.createFileSystemWatcher("**/[tj]sconfig.json");
13104 this.disposables.push(configFileWatcher);
13105 configFileWatcher.onDidCreate(this.reloadProjects, this, this.disposables);
13106 configFileWatcher.onDidDelete(this.reloadProjects, this, this.disposables);
13107 configFileWatcher.onDidChange(handleProjectChange, this, this.disposables);
13108 const packageFileWatcher = import_coc34.workspace.createFileSystemWatcher("**/package.json");
13109 packageFileWatcher.onDidCreate(this.reloadProjects, this, this.disposables);
13110 packageFileWatcher.onDidChange(handleProjectChange, this, this.disposables);
13111 const allModeIds = this.getAllModeIds(descriptions, pluginManager);
13112 this.client = new typescriptServiceClient_default(pluginManager, allModeIds);
13113 this.disposables.push(this.client);
13114 this.client.onDiagnosticsReceived(({kind, resource, diagnostics}) => {
13115 this.diagnosticsReceived(kind, resource, diagnostics).catch((e) => {
13118 }, null, this.disposables);
13119 this.disposables.push(new watchBuild_default(this.client));
13120 this.disposables.push(import_coc34.languages.registerWorkspaceSymbolProvider(new workspaceSymbols_default(this.client, allModeIds)));
13121 this.client.onConfigDiagnosticsReceived((diag) => {
13124 let {configFile, diagnostics} = body;
13125 let uri = import_coc34.Uri.file(configFile);
13126 if (diagnostics.length == 0) {
13127 this.client.diagnosticsManager.configFileDiagnosticsReceived(uri.toString(), []);
13129 let diagnosticList = diagnostics.map((o) => {
13130 let {text, code, category, start, end} = o;
13132 if (!start || !end) {
13133 range = import_vscode_languageserver_protocol23.Range.create(import_vscode_languageserver_protocol23.Position.create(0, 0), import_vscode_languageserver_protocol23.Position.create(0, 1));
13135 range = import_vscode_languageserver_protocol23.Range.create(start.line - 1, start.offset - 1, end.line - 1, end.offset - 1);
13137 let severity = category == "error" ? import_vscode_languageserver_protocol23.DiagnosticSeverity.Error : import_vscode_languageserver_protocol23.DiagnosticSeverity.Warning;
13138 return import_vscode_languageserver_protocol23.Diagnostic.create(range, text, severity, code);
13140 this.client.diagnosticsManager.configFileDiagnosticsReceived(uri.toString(), diagnosticList);
13143 }, null, this.disposables);
13144 this.typingsStatus = new typingsStatus_default(this.client);
13145 this.ataProgressReporter = new AtaProgressReporter(this.client);
13146 this.fileConfigurationManager = new fileConfigurationManager_default(this.client);
13147 for (const description of descriptions) {
13148 const manager = new languageProvider_default(this.client, this.fileConfigurationManager, description, this.typingsStatus);
13149 this.languagePerId.set(description.id, manager);
13151 const languageIds = new Set();
13152 for (const plugin of pluginManager.plugins) {
13153 if (plugin.configNamespace && plugin.languages.length) {
13154 this.registerExtensionLanguageProvider({
13155 id: plugin.configNamespace,
13156 modeIds: Array.from(plugin.languages),
13157 diagnosticSource: "ts-plugin",
13158 diagnosticLanguage: DiagnosticLanguage.TypeScript,
13159 diagnosticOwner: "typescript",
13163 for (const language2 of plugin.languages) {
13164 languageIds.add(language2);
13168 if (languageIds.size) {
13169 this.registerExtensionLanguageProvider({
13170 id: "typescript-plugins",
13171 modeIds: Array.from(languageIds.values()),
13172 diagnosticSource: "ts-plugin",
13173 diagnosticLanguage: DiagnosticLanguage.TypeScript,
13174 diagnosticOwner: "typescript",
13178 this.client.ensureServiceStarted();
13179 this.client.onTsServerStarted(() => {
13180 this.triggerAllDiagnostics();
13182 import_coc34.workspace.onDidChangeConfiguration(this.configurationChanged, this, this.disposables);
13183 this.configurationChanged();
13185 registerExtensionLanguageProvider(description) {
13186 const manager = new languageProvider_default(this.client, this.fileConfigurationManager, description, this.typingsStatus);
13187 this.languagePerId.set(description.id, manager);
13190 import_coc34.disposeAll(this.disposables);
13191 for (let language2 of this.languagePerId.values()) {
13192 language2.dispose();
13194 this.languagePerId.clear();
13195 this.fileConfigurationManager.dispose();
13196 this.typingsStatus.dispose();
13197 this.ataProgressReporter.dispose();
13200 this.fileConfigurationManager.reset();
13202 get serviceClient() {
13203 return this.client;
13206 this.client.diagnosticsManager.reInitialize();
13207 this.client.execute("reloadProjects", null, import_vscode_languageserver_protocol23.CancellationToken.None);
13208 this.triggerAllDiagnostics();
13210 getProvider(languageId) {
13211 return this.languagePerId.get(languageId);
13213 configurationChanged() {
13214 const config = import_coc34.workspace.getConfiguration("tsserver");
13215 this.reportStyleCheckAsWarnings = config.get("reportStyleChecksAsWarnings", true);
13217 async findLanguage(uri) {
13219 let doc = this.client.getDocument(uri);
13222 let languages4 = Array.from(this.languagePerId.values());
13223 return languages4.find((language2) => language2.handles(uri, doc.textDocument));
13228 async handles(doc) {
13229 let languages4 = Array.from(this.languagePerId.values());
13230 let idx = languages4.findIndex((language2) => language2.handles(doc.uri, doc));
13233 return this.client.bufferSyncSupport.handles(doc.uri);
13235 triggerAllDiagnostics() {
13236 for (const language2 of this.languagePerId.values()) {
13237 language2.triggerAllDiagnostics();
13240 async diagnosticsReceived(kind, resource, diagnostics) {
13241 const language2 = await this.findLanguage(resource.toString());
13243 language2.diagnosticsReceived(kind, resource, this.createMarkerDatas(diagnostics));
13246 createMarkerDatas(diagnostics) {
13247 return diagnostics.map((tsDiag) => this.tsDiagnosticToLspDiagnostic(tsDiag));
13249 tsDiagnosticToLspDiagnostic(diagnostic) {
13250 const {start, end, text} = diagnostic;
13252 start: Position.fromLocation(start),
13253 end: Position.fromLocation(end)
13255 let relatedInformation;
13256 if (diagnostic.relatedInformation) {
13257 relatedInformation = diagnostic.relatedInformation.map((o) => {
13258 let {span, message} = o;
13260 location: Location2.fromTextSpan(this.client.toResource(span.file), span),
13266 if (diagnostic.reportsUnnecessary) {
13267 tags.push(import_vscode_languageserver_protocol23.DiagnosticTag.Unnecessary);
13269 if (diagnostic.reportsDeprecated) {
13270 tags.push(import_vscode_languageserver_protocol23.DiagnosticTag.Deprecated);
13272 tags = tags.length ? tags : void 0;
13277 code: diagnostic.code ? diagnostic.code : null,
13278 severity: this.getDiagnosticSeverity(diagnostic),
13279 reportDeprecated: diagnostic.reportsDeprecated,
13280 reportUnnecessary: diagnostic.reportsUnnecessary,
13281 source: diagnostic.source || "tsserver",
13285 getDiagnosticSeverity(diagnostic) {
13286 if (this.reportStyleCheckAsWarnings && this.isStyleCheckDiagnostic(diagnostic.code) && diagnostic.category === DiagnosticCategory.error) {
13287 return import_vscode_languageserver_protocol23.DiagnosticSeverity.Warning;
13289 switch (diagnostic.category) {
13290 case DiagnosticCategory.error:
13291 return import_vscode_languageserver_protocol23.DiagnosticSeverity.Error;
13292 case DiagnosticCategory.warning:
13293 return import_vscode_languageserver_protocol23.DiagnosticSeverity.Warning;
13294 case DiagnosticCategory.suggestion:
13295 return import_vscode_languageserver_protocol23.DiagnosticSeverity.Information;
13297 return import_vscode_languageserver_protocol23.DiagnosticSeverity.Error;
13300 isStyleCheckDiagnostic(code) {
13301 return code ? styleCheckDiagnostics.indexOf(code) !== -1 : false;
13303 getAllModeIds(descriptions, pluginManager) {
13304 const allModeIds = flatten([
13305 ...descriptions.map((x) => x.modeIds),
13306 ...pluginManager.plugins.map((x) => x.languages)
13311 var typescriptServiceClientHost_default = TypeScriptServiceClientHost;
13313 // src/server/index.ts
13314 var TsserverService = class {
13315 constructor(pluginManager) {
13316 this.pluginManager = pluginManager;
13317 this.id = "tsserver";
13318 this.name = "tsserver";
13319 this.state = import_coc35.ServiceStat.Initial;
13320 this._onDidServiceReady = new import_vscode_languageserver_protocol24.Emitter();
13321 this.onServiceReady = this._onDidServiceReady.event;
13322 this.disposables = [];
13323 this.descriptions = [];
13324 const config = import_coc35.workspace.getConfiguration("tsserver");
13325 const enableJavascript = !!config.get("enableJavascript");
13326 this.enable = config.get("enable");
13327 this.descriptions = standardLanguageDescriptions.filter((o) => {
13328 return enableJavascript ? true : o.id != "javascript";
13330 this.selector = this.descriptions.reduce((arr, c) => {
13331 return arr.concat(c.modeIds);
13335 return import_coc35.workspace.getConfiguration("tsserver");
13338 if (this.state == import_coc35.ServiceStat.Running)
13339 return Promise.resolve(this.clientHost);
13341 return new Promise((resolve, reject) => {
13342 let timer = setTimeout(() => {
13343 reject(new Error(`Server not started after 5s`));
13345 let disposable = this.onServiceReady(() => {
13346 clearTimeout(timer);
13347 disposable.dispose();
13348 resolve(this.clientHost);
13353 if (this.clientHost)
13355 this.state = import_coc35.ServiceStat.Starting;
13356 this.clientHost = new typescriptServiceClientHost_default(this.descriptions, this.pluginManager);
13357 this.disposables.push(this.clientHost);
13358 let client = this.clientHost.serviceClient;
13359 return new Promise((resolve) => {
13360 let started = false;
13361 client.onTsServerStarted(() => {
13362 Object.defineProperty(this, "state", {
13364 return this.clientHost.serviceClient.state;
13367 this._onDidServiceReady.fire(void 0);
13376 import_coc35.disposeAll(this.disposables);
13379 if (!this.clientHost)
13381 let client = this.clientHost.serviceClient;
13382 await client.restartTsServer();
13385 if (!this.clientHost)
13387 this.clientHost.reset();
13388 let client = this.clientHost.serviceClient;
13389 await client.stop();
13393 var server_default = TsserverService;
13395 // src/utils/plugins.ts
13396 var import_coc36 = __toModule(require("coc.nvim"));
13397 var import_vscode_languageserver_protocol25 = __toModule(require_main3());
13398 var TypeScriptServerPlugin;
13399 (function(TypeScriptServerPlugin2) {
13400 function equals2(a, b) {
13401 return a.path === b.path && a.name === b.name && a.enableForWorkspaceTypeScriptVersions === b.enableForWorkspaceTypeScriptVersions && equals(a.languages, b.languages);
13403 TypeScriptServerPlugin2.equals = equals2;
13404 })(TypeScriptServerPlugin || (TypeScriptServerPlugin = {}));
13405 var PluginManager = class {
13407 this._pluginConfigurations = new Map();
13408 this._disposables = [];
13409 this._onDidUpdatePlugins = this._register(new import_vscode_languageserver_protocol25.Emitter());
13410 this.onDidChangePlugins = this._onDidUpdatePlugins.event;
13411 this._onDidUpdateConfig = this._register(new import_vscode_languageserver_protocol25.Emitter());
13412 this.onDidUpdateConfig = this._onDidUpdateConfig.event;
13413 let loadPlugins = () => {
13414 if (!this._plugins) {
13417 const newPlugins = this.readPlugins();
13418 if (!equals(flatten(Array.from(this._plugins.values())), flatten(Array.from(newPlugins.values())), TypeScriptServerPlugin.equals)) {
13419 this._plugins = newPlugins;
13420 this._onDidUpdatePlugins.fire(this);
13423 import_coc36.extensions.onDidActiveExtension(loadPlugins, void 0, this._disposables);
13424 import_coc36.extensions.onDidUnloadExtension(loadPlugins, void 0, this._disposables);
13427 import_coc36.disposeAll(this._disposables);
13430 if (!this._plugins) {
13431 this._plugins = this.readPlugins();
13433 return flatten(Array.from(this._plugins.values()));
13436 this._disposables.push(value);
13439 setConfiguration(pluginId, config) {
13440 this._pluginConfigurations.set(pluginId, config);
13441 this._onDidUpdateConfig.fire({pluginId, config});
13444 return this._pluginConfigurations.entries();
13447 const pluginMap = new Map();
13448 for (const extension of import_coc36.extensions.all) {
13449 const pack = extension.packageJSON;
13450 if (pack.contributes && Array.isArray(pack.contributes.typescriptServerPlugins)) {
13451 const plugins = [];
13452 for (const plugin of pack.contributes.typescriptServerPlugins) {
13455 enableForWorkspaceTypeScriptVersions: !!plugin.enableForWorkspaceTypeScriptVersions,
13456 path: extension.extensionPath,
13457 languages: Array.isArray(plugin.languages) ? plugin.languages : []
13460 if (plugins.length) {
13461 pluginMap.set(extension.id, plugins);
13470 async function activate(context) {
13471 let {subscriptions, logger} = context;
13472 const config = import_coc37.workspace.getConfiguration().get("tsserver", {});
13473 if (!config.enable)
13475 const pluginManager = new PluginManager();
13476 const service = new server_default(pluginManager);
13477 function registCommand2(cmd) {
13478 let {id, execute} = cmd;
13479 subscriptions.push(import_coc37.commands.registerCommand(id, execute, cmd));
13481 registCommand2(new ConfigurePluginCommand(pluginManager));
13482 registCommand2(new AutoFixCommand(service));
13483 registCommand2(new ReloadProjectsCommand(service));
13484 registCommand2(new FileReferencesCommand(service));
13485 registCommand2(new OpenTsServerLogCommand(service));
13486 registCommand2(new TypeScriptGoToProjectConfigCommand(service));
13487 registCommand2(new OrganizeImportsCommand(service));
13489 id: "tsserver.restart",
13491 service.stop().then(() => {
13498 service.start().then(() => {
13499 subscriptions.push(import_coc37.services.regist(service));
13501 logger.error(`Error on service start:`, e);
13504 configurePlugin: (pluginId, configuration) => {
13505 pluginManager.setConfiguration(pluginId, configuration);
13509 //# sourceMappingURL=index.js.map