X-Git-Url: https://git.josue.xyz/?p=dotfiles%2F.git;a=blobdiff_plain;f=.config%2Fcoc%2Fextensions%2Fnode_modules%2Fcoc-tsserver%2Flib%2Findex.js;h=6851f7f235225f98ab82052a5a7b442cdb4a8b96;hp=94343820b12036175ff515782321d50011fd2c28;hb=3be0a9efc698a9570a44456009afc6014812625a;hpb=d2f432cc757f42f0318fdddcab8c00b240d47088 diff --git a/.config/coc/extensions/node_modules/coc-tsserver/lib/index.js b/.config/coc/extensions/node_modules/coc-tsserver/lib/index.js index 94343820..6851f7f2 100644 --- a/.config/coc/extensions/node_modules/coc-tsserver/lib/index.js +++ b/.config/coc/extensions/node_modules/coc-tsserver/lib/index.js @@ -32,10 +32,353 @@ var __toModule = (module2) => { return __exportStar(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", {value: module2, enumerable: true}), module2); }; -// node_modules/vscode-jsonrpc/lib/is.js +// node_modules/vscode-jsonrpc/lib/common/ral.js +var require_ral = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + var _ral; + function RAL() { + if (_ral === void 0) { + throw new Error(`No runtime abstraction layer installed`); + } + return _ral; + } + (function(RAL2) { + function install(ral) { + if (ral === void 0) { + throw new Error(`No runtime abstraction layer provided`); + } + _ral = ral; + } + RAL2.install = install; + })(RAL || (RAL = {})); + exports2.default = RAL; +}); + +// node_modules/vscode-jsonrpc/lib/common/disposable.js +var require_disposable = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.Disposable = void 0; + var Disposable13; + (function(Disposable14) { + function create(func) { + return { + dispose: func + }; + } + Disposable14.create = create; + })(Disposable13 = exports2.Disposable || (exports2.Disposable = {})); +}); + +// node_modules/vscode-jsonrpc/lib/common/messageBuffer.js +var require_messageBuffer = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.AbstractMessageBuffer = void 0; + var CR = 13; + var LF = 10; + var CRLF = "\r\n"; + var AbstractMessageBuffer = class { + constructor(encoding = "utf-8") { + this._encoding = encoding; + this._chunks = []; + this._totalLength = 0; + } + get encoding() { + return this._encoding; + } + append(chunk) { + const toAppend = typeof chunk === "string" ? this.fromString(chunk, this._encoding) : chunk; + this._chunks.push(toAppend); + this._totalLength += toAppend.byteLength; + } + tryReadHeaders() { + if (this._chunks.length === 0) { + return void 0; + } + let state = 0; + let chunkIndex = 0; + let offset = 0; + let chunkBytesRead = 0; + row: + while (chunkIndex < this._chunks.length) { + const chunk = this._chunks[chunkIndex]; + offset = 0; + column: + while (offset < chunk.length) { + const value = chunk[offset]; + switch (value) { + case CR: + switch (state) { + case 0: + state = 1; + break; + case 2: + state = 3; + break; + default: + state = 0; + } + break; + case LF: + switch (state) { + case 1: + state = 2; + break; + case 3: + state = 4; + offset++; + break row; + default: + state = 0; + } + break; + default: + state = 0; + } + offset++; + } + chunkBytesRead += chunk.byteLength; + chunkIndex++; + } + if (state !== 4) { + return void 0; + } + const buffer = this._read(chunkBytesRead + offset); + const result = new Map(); + const headers = this.toString(buffer, "ascii").split(CRLF); + if (headers.length < 2) { + return result; + } + for (let i = 0; i < headers.length - 2; i++) { + const header = headers[i]; + const index = header.indexOf(":"); + if (index === -1) { + throw new Error("Message header must separate key and value using :"); + } + const key = header.substr(0, index); + const value = header.substr(index + 1).trim(); + result.set(key, value); + } + return result; + } + tryReadBody(length) { + if (this._totalLength < length) { + return void 0; + } + return this._read(length); + } + get numberOfBytes() { + return this._totalLength; + } + _read(byteCount) { + if (byteCount === 0) { + return this.emptyBuffer(); + } + if (byteCount > this._totalLength) { + throw new Error(`Cannot read so many bytes!`); + } + if (this._chunks[0].byteLength === byteCount) { + const chunk = this._chunks[0]; + this._chunks.shift(); + this._totalLength -= byteCount; + return this.asNative(chunk); + } + if (this._chunks[0].byteLength > byteCount) { + const chunk = this._chunks[0]; + const result2 = this.asNative(chunk, byteCount); + this._chunks[0] = chunk.slice(byteCount); + this._totalLength -= byteCount; + return result2; + } + const result = this.allocNative(byteCount); + let resultOffset = 0; + let chunkIndex = 0; + while (byteCount > 0) { + const chunk = this._chunks[chunkIndex]; + if (chunk.byteLength > byteCount) { + const chunkPart = chunk.slice(0, byteCount); + result.set(chunkPart, resultOffset); + resultOffset += byteCount; + this._chunks[chunkIndex] = chunk.slice(byteCount); + this._totalLength -= byteCount; + byteCount -= byteCount; + } else { + result.set(chunk, resultOffset); + resultOffset += chunk.byteLength; + this._chunks.shift(); + this._totalLength -= chunk.byteLength; + byteCount -= chunk.byteLength; + } + } + return result; + } + }; + exports2.AbstractMessageBuffer = AbstractMessageBuffer; +}); + +// node_modules/vscode-jsonrpc/lib/node/ril.js +var require_ril = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + var ral_1 = require_ral(); + var util_1 = require("util"); + var disposable_1 = require_disposable(); + var messageBuffer_1 = require_messageBuffer(); + var MessageBuffer = class extends messageBuffer_1.AbstractMessageBuffer { + constructor(encoding = "utf-8") { + super(encoding); + } + emptyBuffer() { + return MessageBuffer.emptyBuffer; + } + fromString(value, encoding) { + return Buffer.from(value, encoding); + } + toString(value, encoding) { + if (value instanceof Buffer) { + return value.toString(encoding); + } else { + return new util_1.TextDecoder(encoding).decode(value); + } + } + asNative(buffer, length) { + if (length === void 0) { + return buffer instanceof Buffer ? buffer : Buffer.from(buffer); + } else { + return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length); + } + } + allocNative(length) { + return Buffer.allocUnsafe(length); + } + }; + MessageBuffer.emptyBuffer = Buffer.allocUnsafe(0); + var ReadableStreamWrapper = class { + constructor(stream) { + this.stream = stream; + } + onClose(listener) { + this.stream.on("close", listener); + return disposable_1.Disposable.create(() => this.stream.off("close", listener)); + } + onError(listener) { + this.stream.on("error", listener); + return disposable_1.Disposable.create(() => this.stream.off("error", listener)); + } + onEnd(listener) { + this.stream.on("end", listener); + return disposable_1.Disposable.create(() => this.stream.off("end", listener)); + } + onData(listener) { + this.stream.on("data", listener); + return disposable_1.Disposable.create(() => this.stream.off("data", listener)); + } + }; + var WritableStreamWrapper = class { + constructor(stream) { + this.stream = stream; + } + onClose(listener) { + this.stream.on("close", listener); + return disposable_1.Disposable.create(() => this.stream.off("close", listener)); + } + onError(listener) { + this.stream.on("error", listener); + return disposable_1.Disposable.create(() => this.stream.off("error", listener)); + } + onEnd(listener) { + this.stream.on("end", listener); + return disposable_1.Disposable.create(() => this.stream.off("end", listener)); + } + write(data, encoding) { + return new Promise((resolve, reject) => { + const callback = (error) => { + if (error === void 0 || error === null) { + resolve(); + } else { + reject(error); + } + }; + if (typeof data === "string") { + this.stream.write(data, encoding, callback); + } else { + this.stream.write(data, callback); + } + }); + } + end() { + this.stream.end(); + } + }; + var _ril = Object.freeze({ + messageBuffer: Object.freeze({ + create: (encoding) => new MessageBuffer(encoding) + }), + applicationJson: Object.freeze({ + encoder: Object.freeze({ + name: "application/json", + encode: (msg, options) => { + try { + return Promise.resolve(Buffer.from(JSON.stringify(msg, void 0, 0), options.charset)); + } catch (err) { + return Promise.reject(err); + } + } + }), + decoder: Object.freeze({ + name: "application/json", + decode: (buffer, options) => { + try { + if (buffer instanceof Buffer) { + return Promise.resolve(JSON.parse(buffer.toString(options.charset))); + } else { + return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer))); + } + } catch (err) { + return Promise.reject(err); + } + } + }) + }), + stream: Object.freeze({ + asReadableStream: (stream) => new ReadableStreamWrapper(stream), + asWritableStream: (stream) => new WritableStreamWrapper(stream) + }), + console, + timer: Object.freeze({ + setTimeout(callback, ms, ...args) { + return setTimeout(callback, ms, ...args); + }, + clearTimeout(handle) { + clearTimeout(handle); + }, + setImmediate(callback, ...args) { + return setImmediate(callback, ...args); + }, + clearImmediate(handle) { + clearImmediate(handle); + } + }) + }); + function RIL() { + return _ril; + } + (function(RIL2) { + function install() { + ral_1.default.install(_ril); + } + RIL2.install = install; + })(RIL || (RIL = {})); + exports2.default = RIL; +}); + +// node_modules/vscode-jsonrpc/lib/common/is.js var require_is = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0; function boolean2(value) { return value === true || value === false; } @@ -66,10 +409,11 @@ var require_is = __commonJS((exports2) => { exports2.stringArray = stringArray; }); -// node_modules/vscode-jsonrpc/lib/messages.js +// node_modules/vscode-jsonrpc/lib/common/messages.js var require_messages = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); + 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; var is2 = require_is(); var ErrorCodes; (function(ErrorCodes2) { @@ -78,14 +422,14 @@ var require_messages = __commonJS((exports2) => { ErrorCodes2.MethodNotFound = -32601; ErrorCodes2.InvalidParams = -32602; ErrorCodes2.InternalError = -32603; - ErrorCodes2.serverErrorStart = -32099; - ErrorCodes2.serverErrorEnd = -32e3; + ErrorCodes2.jsonrpcReservedErrorRangeStart = -32099; + ErrorCodes2.serverErrorStart = ErrorCodes2.jsonrpcReservedErrorRangeStart; + ErrorCodes2.MessageWriteError = -32099; + ErrorCodes2.MessageReadError = -32098; ErrorCodes2.ServerNotInitialized = -32002; ErrorCodes2.UnknownErrorCode = -32001; - ErrorCodes2.RequestCancelled = -32800; - ErrorCodes2.ContentModified = -32801; - ErrorCodes2.MessageWriteError = 1; - ErrorCodes2.MessageReadError = 2; + ErrorCodes2.jsonrpcReservedErrorRangeEnd = -32e3; + ErrorCodes2.serverErrorEnd = ErrorCodes2.jsonrpcReservedErrorRangeEnd; })(ErrorCodes = exports2.ErrorCodes || (exports2.ErrorCodes = {})); var ResponseError = class extends Error { constructor(code, message, data) { @@ -103,182 +447,202 @@ var require_messages = __commonJS((exports2) => { } }; exports2.ResponseError = ResponseError; - var AbstractMessageType = class { - constructor(_method, _numberOfParams) { - this._method = _method; - this._numberOfParams = _numberOfParams; + var ParameterStructures = class { + constructor(kind) { + this.kind = kind; } - get method() { - return this._method; + static is(value) { + return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition; + } + toString() { + return this.kind; } - get numberOfParams() { - return this._numberOfParams; + }; + exports2.ParameterStructures = ParameterStructures; + ParameterStructures.auto = new ParameterStructures("auto"); + ParameterStructures.byPosition = new ParameterStructures("byPosition"); + ParameterStructures.byName = new ParameterStructures("byName"); + var AbstractMessageSignature = class { + constructor(method, numberOfParams) { + this.method = method; + this.numberOfParams = numberOfParams; + } + get parameterStructures() { + return ParameterStructures.auto; } }; - exports2.AbstractMessageType = AbstractMessageType; - var RequestType0 = class extends AbstractMessageType { + exports2.AbstractMessageSignature = AbstractMessageSignature; + var RequestType0 = class extends AbstractMessageSignature { constructor(method) { super(method, 0); } }; exports2.RequestType0 = RequestType0; - var RequestType = class extends AbstractMessageType { - constructor(method) { + var RequestType = class extends AbstractMessageSignature { + constructor(method, _parameterStructures = ParameterStructures.auto) { super(method, 1); + this._parameterStructures = _parameterStructures; + } + get parameterStructures() { + return this._parameterStructures; } }; exports2.RequestType = RequestType; - var RequestType1 = class extends AbstractMessageType { - constructor(method) { + var RequestType1 = class extends AbstractMessageSignature { + constructor(method, _parameterStructures = ParameterStructures.auto) { super(method, 1); + this._parameterStructures = _parameterStructures; + } + get parameterStructures() { + return this._parameterStructures; } }; exports2.RequestType1 = RequestType1; - var RequestType2 = class extends AbstractMessageType { + var RequestType2 = class extends AbstractMessageSignature { constructor(method) { super(method, 2); } }; exports2.RequestType2 = RequestType2; - var RequestType3 = class extends AbstractMessageType { + var RequestType3 = class extends AbstractMessageSignature { constructor(method) { super(method, 3); } }; exports2.RequestType3 = RequestType3; - var RequestType4 = class extends AbstractMessageType { + var RequestType4 = class extends AbstractMessageSignature { constructor(method) { super(method, 4); } }; exports2.RequestType4 = RequestType4; - var RequestType5 = class extends AbstractMessageType { + var RequestType5 = class extends AbstractMessageSignature { constructor(method) { super(method, 5); } }; exports2.RequestType5 = RequestType5; - var RequestType6 = class extends AbstractMessageType { + var RequestType6 = class extends AbstractMessageSignature { constructor(method) { super(method, 6); } }; exports2.RequestType6 = RequestType6; - var RequestType7 = class extends AbstractMessageType { + var RequestType7 = class extends AbstractMessageSignature { constructor(method) { super(method, 7); } }; exports2.RequestType7 = RequestType7; - var RequestType8 = class extends AbstractMessageType { + var RequestType8 = class extends AbstractMessageSignature { constructor(method) { super(method, 8); } }; exports2.RequestType8 = RequestType8; - var RequestType9 = class extends AbstractMessageType { + var RequestType9 = class extends AbstractMessageSignature { constructor(method) { super(method, 9); } }; exports2.RequestType9 = RequestType9; - var NotificationType = class extends AbstractMessageType { - constructor(method) { + var NotificationType = class extends AbstractMessageSignature { + constructor(method, _parameterStructures = ParameterStructures.auto) { super(method, 1); - this._ = void 0; + this._parameterStructures = _parameterStructures; + } + get parameterStructures() { + return this._parameterStructures; } }; exports2.NotificationType = NotificationType; - var NotificationType0 = class extends AbstractMessageType { + var NotificationType0 = class extends AbstractMessageSignature { constructor(method) { super(method, 0); } }; exports2.NotificationType0 = NotificationType0; - var NotificationType1 = class extends AbstractMessageType { - constructor(method) { + var NotificationType1 = class extends AbstractMessageSignature { + constructor(method, _parameterStructures = ParameterStructures.auto) { super(method, 1); + this._parameterStructures = _parameterStructures; + } + get parameterStructures() { + return this._parameterStructures; } }; exports2.NotificationType1 = NotificationType1; - var NotificationType2 = class extends AbstractMessageType { + var NotificationType2 = class extends AbstractMessageSignature { constructor(method) { super(method, 2); } }; exports2.NotificationType2 = NotificationType2; - var NotificationType3 = class extends AbstractMessageType { + var NotificationType3 = class extends AbstractMessageSignature { constructor(method) { super(method, 3); } }; exports2.NotificationType3 = NotificationType3; - var NotificationType4 = class extends AbstractMessageType { + var NotificationType4 = class extends AbstractMessageSignature { constructor(method) { super(method, 4); } }; exports2.NotificationType4 = NotificationType4; - var NotificationType5 = class extends AbstractMessageType { + var NotificationType5 = class extends AbstractMessageSignature { constructor(method) { super(method, 5); } }; exports2.NotificationType5 = NotificationType5; - var NotificationType6 = class extends AbstractMessageType { + var NotificationType6 = class extends AbstractMessageSignature { constructor(method) { super(method, 6); } }; exports2.NotificationType6 = NotificationType6; - var NotificationType7 = class extends AbstractMessageType { + var NotificationType7 = class extends AbstractMessageSignature { constructor(method) { super(method, 7); } }; exports2.NotificationType7 = NotificationType7; - var NotificationType8 = class extends AbstractMessageType { + var NotificationType8 = class extends AbstractMessageSignature { constructor(method) { super(method, 8); } }; exports2.NotificationType8 = NotificationType8; - var NotificationType9 = class extends AbstractMessageType { + var NotificationType9 = class extends AbstractMessageSignature { constructor(method) { super(method, 9); } }; exports2.NotificationType9 = NotificationType9; function isRequestMessage(message) { - let candidate = message; + const candidate = message; return candidate && is2.string(candidate.method) && (is2.string(candidate.id) || is2.number(candidate.id)); } exports2.isRequestMessage = isRequestMessage; function isNotificationMessage(message) { - let candidate = message; + const candidate = message; return candidate && is2.string(candidate.method) && message.id === void 0; } exports2.isNotificationMessage = isNotificationMessage; function isResponseMessage(message) { - let candidate = message; + const candidate = message; return candidate && (candidate.result !== void 0 || !!candidate.error) && (is2.string(candidate.id) || is2.number(candidate.id) || candidate.id === null); } exports2.isResponseMessage = isResponseMessage; }); -// node_modules/vscode-jsonrpc/lib/events.js +// node_modules/vscode-jsonrpc/lib/common/events.js var require_events = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var Disposable12; - (function(Disposable13) { - function create(func) { - return { - dispose: func - }; - } - Disposable13.create = create; - })(Disposable12 = exports2.Disposable || (exports2.Disposable = {})); + exports2.Emitter = exports2.Event = void 0; + var ral_1 = require_ral(); var Event5; (function(Event6) { const _disposable = {dispose() { @@ -303,8 +667,8 @@ var require_events = __commonJS((exports2) => { if (!this._callbacks) { return; } - var foundCallbackWithDifferentContext = false; - for (var i = 0, len = this._callbacks.length; i < len; i++) { + let foundCallbackWithDifferentContext = false; + for (let i = 0, len = this._callbacks.length; i < len; i++) { if (this._callbacks[i] === callback) { if (this._contexts[i] === context) { this._callbacks.splice(i, 1); @@ -323,12 +687,12 @@ var require_events = __commonJS((exports2) => { if (!this._callbacks) { return []; } - var ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0); - for (var i = 0, len = callbacks.length; i < len; i++) { + const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0); + for (let i = 0, len = callbacks.length; i < len; i++) { try { ret.push(callbacks[i].apply(contexts[i], args)); } catch (e) { - console.error(e); + ral_1.default().console.error(e); } } return ret; @@ -355,9 +719,11 @@ var require_events = __commonJS((exports2) => { this._options.onFirstListenerAdd(this); } this._callbacks.add(listener, thisArgs); - let result; - result = { + const result = { dispose: () => { + if (!this._callbacks) { + return; + } this._callbacks.remove(listener, thisArgs); result.dispose = Emitter6._noop; if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) { @@ -390,82 +756,101 @@ var require_events = __commonJS((exports2) => { }; }); -// node_modules/vscode-jsonrpc/lib/messageReader.js -var require_messageReader = __commonJS((exports2) => { +// node_modules/vscode-jsonrpc/lib/common/cancellation.js +var require_cancellation = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var events_1 = require_events(); + exports2.CancellationTokenSource = exports2.CancellationToken = void 0; + var ral_1 = require_ral(); var Is = require_is(); - var DefaultSize2 = 8192; - var CR = Buffer.from("\r", "ascii")[0]; - var LF = Buffer.from("\n", "ascii")[0]; - var CRLF = "\r\n"; - var MessageBuffer = class { - constructor(encoding = "utf8") { - this.encoding = encoding; - this.index = 0; - this.buffer = Buffer.allocUnsafe(DefaultSize2); + var events_1 = require_events(); + var CancellationToken20; + (function(CancellationToken21) { + CancellationToken21.None = Object.freeze({ + isCancellationRequested: false, + onCancellationRequested: events_1.Event.None + }); + CancellationToken21.Cancelled = Object.freeze({ + isCancellationRequested: true, + onCancellationRequested: events_1.Event.None + }); + function is2(value) { + const candidate = value; + return candidate && (candidate === CancellationToken21.None || candidate === CancellationToken21.Cancelled || Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested); } - append(chunk) { - var toAppend = chunk; - if (typeof chunk === "string") { - var str = chunk; - var bufferLen = Buffer.byteLength(str, this.encoding); - toAppend = Buffer.allocUnsafe(bufferLen); - toAppend.write(str, 0, bufferLen, this.encoding); - } - if (this.buffer.length - this.index >= toAppend.length) { - toAppend.copy(this.buffer, this.index, 0, toAppend.length); - } else { - var newSize = (Math.ceil((this.index + toAppend.length) / DefaultSize2) + 1) * DefaultSize2; - if (this.index === 0) { - this.buffer = Buffer.allocUnsafe(newSize); - toAppend.copy(this.buffer, 0, 0, toAppend.length); - } else { - this.buffer = Buffer.concat([this.buffer.slice(0, this.index), toAppend], newSize); + CancellationToken21.is = is2; + })(CancellationToken20 = exports2.CancellationToken || (exports2.CancellationToken = {})); + var shortcutEvent = Object.freeze(function(callback, context) { + const handle = ral_1.default().timer.setTimeout(callback.bind(context), 0); + return {dispose() { + ral_1.default().timer.clearTimeout(handle); + }}; + }); + var MutableToken = class { + constructor() { + this._isCancelled = false; + } + cancel() { + if (!this._isCancelled) { + this._isCancelled = true; + if (this._emitter) { + this._emitter.fire(void 0); + this.dispose(); } } - this.index += toAppend.length; } - tryReadHeaders() { - let result = void 0; - let current = 0; - while (current + 3 < this.index && (this.buffer[current] !== CR || this.buffer[current + 1] !== LF || this.buffer[current + 2] !== CR || this.buffer[current + 3] !== LF)) { - current++; + get isCancellationRequested() { + return this._isCancelled; + } + get onCancellationRequested() { + if (this._isCancelled) { + return shortcutEvent; } - if (current + 3 >= this.index) { - return result; + if (!this._emitter) { + this._emitter = new events_1.Emitter(); } - result = Object.create(null); - let headers = this.buffer.toString("ascii", 0, current).split(CRLF); - headers.forEach((header) => { - let index = header.indexOf(":"); - if (index === -1) { - throw new Error("Message header must separate key and value using :"); - } - let key = header.substr(0, index); - let value = header.substr(index + 1).trim(); - result[key] = value; - }); - let nextStart = current + 4; - this.buffer = this.buffer.slice(nextStart); - this.index = this.index - nextStart; - return result; + return this._emitter.event; } - tryReadContent(length) { - if (this.index < length) { - return null; + dispose() { + if (this._emitter) { + this._emitter.dispose(); + this._emitter = void 0; } - let result = this.buffer.toString(this.encoding, 0, length); - let nextStart = length; - this.buffer.copy(this.buffer, 0, nextStart); - this.index = this.index - nextStart; - return result; } - get numberOfBytes() { - return this.index; + }; + var CancellationTokenSource4 = class { + get token() { + if (!this._token) { + this._token = new MutableToken(); + } + return this._token; + } + cancel() { + if (!this._token) { + this._token = CancellationToken20.Cancelled; + } else { + this._token.cancel(); + } + } + dispose() { + if (!this._token) { + this._token = CancellationToken20.None; + } else if (this._token instanceof MutableToken) { + this._token.dispose(); + } } }; + exports2.CancellationTokenSource = CancellationTokenSource4; +}); + +// node_modules/vscode-jsonrpc/lib/common/messageReader.js +var require_messageReader = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.ReadableStreamMessageReader = exports2.AbstractMessageReader = exports2.MessageReader = void 0; + var ral_1 = require_ral(); + var Is = require_is(); + var events_1 = require_events(); var MessageReader; (function(MessageReader2) { function is2(value) { @@ -511,12 +896,56 @@ var require_messageReader = __commonJS((exports2) => { } }; exports2.AbstractMessageReader = AbstractMessageReader; - var StreamMessageReader = class extends AbstractMessageReader { - constructor(readable, encoding = "utf8") { + var ResolvedMessageReaderOptions; + (function(ResolvedMessageReaderOptions2) { + function fromOptions(options) { + var _a; + let charset; + let result; + let contentDecoder; + const contentDecoders = new Map(); + let contentTypeDecoder; + const contentTypeDecoders = new Map(); + if (options === void 0 || typeof options === "string") { + charset = options !== null && options !== void 0 ? options : "utf-8"; + } else { + charset = (_a = options.charset) !== null && _a !== void 0 ? _a : "utf-8"; + if (options.contentDecoder !== void 0) { + contentDecoder = options.contentDecoder; + contentDecoders.set(contentDecoder.name, contentDecoder); + } + if (options.contentDecoders !== void 0) { + for (const decoder of options.contentDecoders) { + contentDecoders.set(decoder.name, decoder); + } + } + if (options.contentTypeDecoder !== void 0) { + contentTypeDecoder = options.contentTypeDecoder; + contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder); + } + if (options.contentTypeDecoders !== void 0) { + for (const decoder of options.contentTypeDecoders) { + contentTypeDecoders.set(decoder.name, decoder); + } + } + } + if (contentTypeDecoder === void 0) { + contentTypeDecoder = ral_1.default().applicationJson.decoder; + contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder); + } + return {charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders}; + } + ResolvedMessageReaderOptions2.fromOptions = fromOptions; + })(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {})); + var ReadableStreamMessageReader = class extends AbstractMessageReader { + constructor(readable, options) { super(); this.readable = readable; - this.buffer = new MessageBuffer(encoding); + this.options = ResolvedMessageReaderOptions.fromOptions(options); + this.buffer = ral_1.default().messageBuffer.create(this.options.charset); this._partialMessageTimeout = 1e4; + this.nextMessageLength = -1; + this.messageToken = 0; } set partialMessageTimeout(timeout) { this._partialMessageTimeout = timeout; @@ -529,45 +958,58 @@ var require_messageReader = __commonJS((exports2) => { this.messageToken = 0; this.partialMessageTimer = void 0; this.callback = callback; - this.readable.on("data", (data) => { + const result = this.readable.onData((data) => { this.onData(data); }); - this.readable.on("error", (error) => this.fireError(error)); - this.readable.on("close", () => this.fireClose()); + this.readable.onError((error) => this.fireError(error)); + this.readable.onClose(() => this.fireClose()); + return result; } onData(data) { this.buffer.append(data); while (true) { if (this.nextMessageLength === -1) { - let headers = this.buffer.tryReadHeaders(); + const headers = this.buffer.tryReadHeaders(); if (!headers) { return; } - let contentLength = headers["Content-Length"]; + const contentLength = headers.get("Content-Length"); if (!contentLength) { throw new Error("Header must provide a Content-Length property."); } - let length = parseInt(contentLength); + const length = parseInt(contentLength); if (isNaN(length)) { throw new Error("Content-Length value must be a number."); } this.nextMessageLength = length; } - var msg = this.buffer.tryReadContent(this.nextMessageLength); - if (msg === null) { + const body = this.buffer.tryReadBody(this.nextMessageLength); + if (body === void 0) { this.setPartialMessageTimer(); return; } this.clearPartialMessageTimer(); this.nextMessageLength = -1; - this.messageToken++; - var json = JSON.parse(msg); - this.callback(json); + let p; + if (this.options.contentDecoder !== void 0) { + p = this.options.contentDecoder.decode(body); + } else { + p = Promise.resolve(body); + } + p.then((value) => { + this.options.contentTypeDecoder.decode(value, this.options).then((msg) => { + this.callback(msg); + }, (error) => { + this.fireError(error); + }); + }, (error) => { + this.fireError(error); + }); } } clearPartialMessageTimer() { if (this.partialMessageTimer) { - clearTimeout(this.partialMessageTimer); + ral_1.default().timer.clearTimeout(this.partialMessageTimer); this.partialMessageTimer = void 0; } } @@ -576,7 +1018,7 @@ var require_messageReader = __commonJS((exports2) => { if (this._partialMessageTimeout <= 0) { return; } - this.partialMessageTimer = setTimeout((token, timeout) => { + this.partialMessageTimer = ral_1.default().timer.setTimeout((token, timeout) => { this.partialMessageTimer = void 0; if (token === this.messageToken) { this.firePartialMessage({messageToken: token, waitingTime: timeout}); @@ -585,34 +1027,84 @@ var require_messageReader = __commonJS((exports2) => { }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout); } }; - exports2.StreamMessageReader = StreamMessageReader; - var IPCMessageReader = class extends AbstractMessageReader { - constructor(process2) { - super(); - this.process = process2; - let eventEmitter = this.process; - eventEmitter.on("error", (error) => this.fireError(error)); - eventEmitter.on("close", () => this.fireClose()); + exports2.ReadableStreamMessageReader = ReadableStreamMessageReader; +}); + +// node_modules/vscode-jsonrpc/lib/common/semaphore.js +var require_semaphore = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.Semaphore = void 0; + var ral_1 = require_ral(); + var Semaphore = class { + constructor(capacity = 1) { + if (capacity <= 0) { + throw new Error("Capacity must be greater than 0"); + } + this._capacity = capacity; + this._active = 0; + this._waiting = []; + } + lock(thunk) { + return new Promise((resolve, reject) => { + this._waiting.push({thunk, resolve, reject}); + this.runNext(); + }); } - listen(callback) { - this.process.on("message", callback); + get active() { + return this._active; } - }; - exports2.IPCMessageReader = IPCMessageReader; - var SocketMessageReader = class extends StreamMessageReader { - constructor(socket, encoding = "utf-8") { - super(socket, encoding); + runNext() { + if (this._waiting.length === 0 || this._active === this._capacity) { + return; + } + ral_1.default().timer.setImmediate(() => this.doRunNext()); + } + doRunNext() { + if (this._waiting.length === 0 || this._active === this._capacity) { + return; + } + const next = this._waiting.shift(); + this._active++; + if (this._active > this._capacity) { + throw new Error(`To many thunks active`); + } + try { + const result = next.thunk(); + if (result instanceof Promise) { + result.then((value) => { + this._active--; + next.resolve(value); + this.runNext(); + }, (err) => { + this._active--; + next.reject(err); + this.runNext(); + }); + } else { + this._active--; + next.resolve(result); + this.runNext(); + } + } catch (err) { + this._active--; + next.reject(err); + this.runNext(); + } } }; - exports2.SocketMessageReader = SocketMessageReader; + exports2.Semaphore = Semaphore; }); -// node_modules/vscode-jsonrpc/lib/messageWriter.js +// node_modules/vscode-jsonrpc/lib/common/messageWriter.js var require_messageWriter = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var events_1 = require_events(); + exports2.WriteableStreamMessageWriter = exports2.AbstractMessageWriter = exports2.MessageWriter = void 0; + var ral_1 = require_ral(); var Is = require_is(); + var semaphore_1 = require_semaphore(); + var events_1 = require_events(); var ContentLength2 = "Content-Length: "; var CRLF = "\r\n"; var MessageWriter; @@ -653,249 +1145,96 @@ var require_messageWriter = __commonJS((exports2) => { } }; exports2.AbstractMessageWriter = AbstractMessageWriter; - var StreamMessageWriter = class extends AbstractMessageWriter { - constructor(writable, encoding = "utf8") { + var ResolvedMessageWriterOptions; + (function(ResolvedMessageWriterOptions2) { + function fromOptions(options) { + var _a, _b; + if (options === void 0 || typeof options === "string") { + return {charset: options !== null && options !== void 0 ? options : "utf-8", contentTypeEncoder: ral_1.default().applicationJson.encoder}; + } else { + 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}; + } + } + ResolvedMessageWriterOptions2.fromOptions = fromOptions; + })(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {})); + var WriteableStreamMessageWriter = class extends AbstractMessageWriter { + constructor(writable, options) { super(); this.writable = writable; - this.encoding = encoding; + this.options = ResolvedMessageWriterOptions.fromOptions(options); this.errorCount = 0; - this.writable.on("error", (error) => this.fireError(error)); - this.writable.on("close", () => this.fireClose()); - } - write(msg) { - let json = JSON.stringify(msg); - let contentLength = Buffer.byteLength(json, this.encoding); - let headers = [ - ContentLength2, - contentLength.toString(), - CRLF, - CRLF - ]; - try { - this.writable.write(headers.join(""), "ascii"); - this.writable.write(json, this.encoding); - this.errorCount = 0; - } catch (error) { - this.errorCount++; - this.fireError(error, msg, this.errorCount); - } - } - }; - exports2.StreamMessageWriter = StreamMessageWriter; - var IPCMessageWriter = class extends AbstractMessageWriter { - constructor(process2) { - super(); - this.process = process2; - this.errorCount = 0; - this.queue = []; - this.sending = false; - let eventEmitter = this.process; - eventEmitter.on("error", (error) => this.fireError(error)); - eventEmitter.on("close", () => this.fireClose); - } - write(msg) { - if (!this.sending && this.queue.length === 0) { - this.doWriteMessage(msg); - } else { - this.queue.push(msg); - } - } - doWriteMessage(msg) { - try { - if (this.process.send) { - this.sending = true; - this.process.send(msg, void 0, void 0, (error) => { - this.sending = false; - if (error) { - this.errorCount++; - this.fireError(error, msg, this.errorCount); - } else { - this.errorCount = 0; - } - if (this.queue.length > 0) { - this.doWriteMessage(this.queue.shift()); - } - }); - } - } catch (error) { - this.errorCount++; - this.fireError(error, msg, this.errorCount); - } - } - }; - exports2.IPCMessageWriter = IPCMessageWriter; - var SocketMessageWriter = class extends AbstractMessageWriter { - constructor(socket, encoding = "utf8") { - super(); - this.socket = socket; - this.queue = []; - this.sending = false; - this.encoding = encoding; - this.errorCount = 0; - this.socket.on("error", (error) => this.fireError(error)); - this.socket.on("close", () => this.fireClose()); - } - dispose() { - super.dispose(); - this.socket.destroy(); - } - write(msg) { - if (!this.sending && this.queue.length === 0) { - this.doWriteMessage(msg); - } else { - this.queue.push(msg); - } - } - doWriteMessage(msg) { - let json = JSON.stringify(msg); - let contentLength = Buffer.byteLength(json, this.encoding); - let headers = [ - ContentLength2, - contentLength.toString(), - CRLF, - CRLF - ]; - try { - this.sending = true; - this.socket.write(headers.join(""), "ascii", (error) => { - if (error) { - this.handleError(error, msg); - } - try { - this.socket.write(json, this.encoding, (error2) => { - this.sending = false; - if (error2) { - this.handleError(error2, msg); - } else { - this.errorCount = 0; - } - if (this.queue.length > 0) { - this.doWriteMessage(this.queue.shift()); - } - }); - } catch (error2) { - this.handleError(error2, msg); + this.writeSemaphore = new semaphore_1.Semaphore(1); + this.writable.onError((error) => this.fireError(error)); + this.writable.onClose(() => this.fireClose()); + } + async write(msg) { + return this.writeSemaphore.lock(async () => { + const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => { + if (this.options.contentEncoder !== void 0) { + return this.options.contentEncoder.encode(buffer); + } else { + return buffer; } }); + return payload.then((buffer) => { + const headers = []; + headers.push(ContentLength2, buffer.byteLength.toString(), CRLF); + headers.push(CRLF); + return this.doWrite(msg, headers, buffer); + }, (error) => { + this.fireError(error); + throw error; + }); + }); + } + async doWrite(msg, headers, data) { + try { + await this.writable.write(headers.join(""), "ascii"); + return this.writable.write(data); } catch (error) { this.handleError(error, msg); + return Promise.reject(error); } } handleError(error, msg) { this.errorCount++; this.fireError(error, msg, this.errorCount); } - }; - exports2.SocketMessageWriter = SocketMessageWriter; -}); - -// node_modules/vscode-jsonrpc/lib/cancellation.js -var require_cancellation = __commonJS((exports2) => { - "use strict"; - Object.defineProperty(exports2, "__esModule", {value: true}); - var events_1 = require_events(); - var Is = require_is(); - var CancellationToken19; - (function(CancellationToken20) { - CancellationToken20.None = Object.freeze({ - isCancellationRequested: false, - onCancellationRequested: events_1.Event.None - }); - CancellationToken20.Cancelled = Object.freeze({ - isCancellationRequested: true, - onCancellationRequested: events_1.Event.None - }); - function is2(value) { - let candidate = value; - return candidate && (candidate === CancellationToken20.None || candidate === CancellationToken20.Cancelled || Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested); - } - CancellationToken20.is = is2; - })(CancellationToken19 = exports2.CancellationToken || (exports2.CancellationToken = {})); - var shortcutEvent = Object.freeze(function(callback, context) { - let handle = setTimeout(callback.bind(context), 0); - return {dispose() { - clearTimeout(handle); - }}; - }); - var MutableToken = class { - constructor() { - this._isCancelled = false; - } - cancel() { - if (!this._isCancelled) { - this._isCancelled = true; - if (this._emitter) { - this._emitter.fire(void 0); - this.dispose(); - } - } - } - get isCancellationRequested() { - return this._isCancelled; - } - get onCancellationRequested() { - if (this._isCancelled) { - return shortcutEvent; - } - if (!this._emitter) { - this._emitter = new events_1.Emitter(); - } - return this._emitter.event; - } - dispose() { - if (this._emitter) { - this._emitter.dispose(); - this._emitter = void 0; - } - } - }; - var CancellationTokenSource3 = class { - get token() { - if (!this._token) { - this._token = new MutableToken(); - } - return this._token; - } - cancel() { - if (!this._token) { - this._token = CancellationToken19.Cancelled; - } else { - this._token.cancel(); - } - } - dispose() { - if (!this._token) { - this._token = CancellationToken19.None; - } else if (this._token instanceof MutableToken) { - this._token.dispose(); - } + end() { + this.writable.end(); } }; - exports2.CancellationTokenSource = CancellationTokenSource3; + exports2.WriteableStreamMessageWriter = WriteableStreamMessageWriter; }); -// node_modules/vscode-jsonrpc/lib/linkedMap.js +// node_modules/vscode-jsonrpc/lib/common/linkedMap.js var require_linkedMap = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.LRUCache = exports2.LinkedMap = exports2.Touch = void 0; var Touch; (function(Touch2) { Touch2.None = 0; Touch2.First = 1; + Touch2.AsOld = Touch2.First; Touch2.Last = 2; + Touch2.AsNew = Touch2.Last; })(Touch = exports2.Touch || (exports2.Touch = {})); var LinkedMap = class { constructor() { + this[Symbol.toStringTag] = "LinkedMap"; this._map = new Map(); this._head = void 0; this._tail = void 0; this._size = 0; + this._state = 0; } clear() { this._map.clear(); this._head = void 0; this._tail = void 0; this._size = 0; + this._state++; } isEmpty() { return !this._head && !this._tail; @@ -903,14 +1242,25 @@ var require_linkedMap = __commonJS((exports2) => { get size() { return this._size; } + get first() { + var _a; + return (_a = this._head) === null || _a === void 0 ? void 0 : _a.value; + } + get last() { + var _a; + return (_a = this._tail) === null || _a === void 0 ? void 0 : _a.value; + } has(key) { return this._map.has(key); } - get(key) { + get(key, touch = Touch.None) { const item = this._map.get(key); if (!item) { return void 0; } + if (touch !== Touch.None) { + this.touch(item, touch); + } return item.value; } set(key, value, touch = Touch.None) { @@ -939,16 +1289,20 @@ var require_linkedMap = __commonJS((exports2) => { this._map.set(key, item); this._size++; } + return this; } delete(key) { + return !!this.remove(key); + } + remove(key) { const item = this._map.get(key); if (!item) { - return false; + return void 0; } this._map.delete(key); this.removeItem(item); this._size--; - return true; + return item.value; } shift() { if (!this._head && !this._tail) { @@ -964,6 +1318,7 @@ var require_linkedMap = __commonJS((exports2) => { return item.value; } forEach(callbackfn, thisArg) { + const state = this._state; let current = this._head; while (current) { if (thisArg) { @@ -971,37 +1326,105 @@ var require_linkedMap = __commonJS((exports2) => { } else { callbackfn(current.value, current.key, this); } + if (this._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } current = current.next; } } - forEachReverse(callbackfn, thisArg) { - let current = this._tail; - while (current) { - if (thisArg) { - callbackfn.bind(thisArg)(current.value, current.key, this); - } else { - callbackfn(current.value, current.key, this); + keys() { + const map = this; + const state = this._state; + let current = this._head; + const iterator = { + [Symbol.iterator]() { + return iterator; + }, + next() { + if (map._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + if (current) { + const result = {value: current.key, done: false}; + current = current.next; + return result; + } else { + return {value: void 0, done: true}; + } } - current = current.previous; - } + }; + return iterator; } values() { - let result = []; + const map = this; + const state = this._state; let current = this._head; - while (current) { - result.push(current.value); - current = current.next; - } - return result; + const iterator = { + [Symbol.iterator]() { + return iterator; + }, + next() { + if (map._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + if (current) { + const result = {value: current.value, done: false}; + current = current.next; + return result; + } else { + return {value: void 0, done: true}; + } + } + }; + return iterator; } - keys() { - let result = []; + entries() { + const map = this; + const state = this._state; let current = this._head; - while (current) { - result.push(current.key); + const iterator = { + [Symbol.iterator]() { + return iterator; + }, + next() { + if (map._state !== state) { + throw new Error(`LinkedMap got modified during iteration.`); + } + if (current) { + const result = {value: [current.key, current.value], done: false}; + current = current.next; + return result; + } else { + return {value: void 0, done: true}; + } + } + }; + return iterator; + } + [Symbol.iterator]() { + return this.entries(); + } + trimOld(newSize) { + if (newSize >= this.size) { + return; + } + if (newSize === 0) { + this.clear(); + return; + } + let current = this._head; + let currentSize = this.size; + while (current && currentSize > newSize) { + this._map.delete(current.key); current = current.next; + currentSize--; } - return result; + this._head = current; + this._size = currentSize; + if (current) { + current.previous = void 0; + } + this._state++; } addItemFirst(item) { if (!this._head && !this._tail) { @@ -1013,6 +1436,7 @@ var require_linkedMap = __commonJS((exports2) => { this._head.previous = item; } this._head = item; + this._state++; } addItemLast(item) { if (!this._head && !this._tail) { @@ -1024,14 +1448,23 @@ var require_linkedMap = __commonJS((exports2) => { this._tail.next = item; } this._tail = item; + this._state++; } removeItem(item) { if (item === this._head && item === this._tail) { this._head = void 0; this._tail = void 0; } else if (item === this._head) { + if (!item.next) { + throw new Error("Invalid list"); + } + item.next.previous = void 0; this._head = item.next; } else if (item === this._tail) { + if (!item.previous) { + throw new Error("Invalid list"); + } + item.previous.next = void 0; this._tail = item.previous; } else { const next = item.next; @@ -1042,6 +1475,9 @@ var require_linkedMap = __commonJS((exports2) => { next.previous = previous; previous.next = next; } + item.next = void 0; + item.previous = void 0; + this._state++; } touch(item, touch) { if (!this._head || !this._tail) { @@ -1067,6 +1503,7 @@ var require_linkedMap = __commonJS((exports2) => { item.next = this._head; this._head.previous = item; this._head = item; + this._state++; } else if (touch === Touch.Last) { if (item === this._tail) { return; @@ -1084,163 +1521,75 @@ var require_linkedMap = __commonJS((exports2) => { item.previous = this._tail; this._tail.next = item; this._tail = item; + this._state++; } } - }; - exports2.LinkedMap = LinkedMap; -}); - -// node_modules/vscode-jsonrpc/lib/pipeSupport.js -var require_pipeSupport = __commonJS((exports2) => { - "use strict"; - Object.defineProperty(exports2, "__esModule", {value: true}); - var path_1 = require("path"); - var os_1 = require("os"); - var crypto_1 = require("crypto"); - var net_1 = require("net"); - var messageReader_1 = require_messageReader(); - var messageWriter_1 = require_messageWriter(); - function generateRandomPipeName() { - const randomSuffix = crypto_1.randomBytes(21).toString("hex"); - if (process.platform === "win32") { - return `\\\\.\\pipe\\vscode-jsonrpc-${randomSuffix}-sock`; - } else { - return path_1.join(os_1.tmpdir(), `vscode-${randomSuffix}.sock`); - } - } - exports2.generateRandomPipeName = generateRandomPipeName; - function createClientPipeTransport(pipeName, encoding = "utf-8") { - let connectResolve; - let connected = new Promise((resolve, _reject) => { - connectResolve = resolve; - }); - return new Promise((resolve, reject) => { - let server = net_1.createServer((socket) => { - server.close(); - connectResolve([ - new messageReader_1.SocketMessageReader(socket, encoding), - new messageWriter_1.SocketMessageWriter(socket, encoding) - ]); + toJSON() { + const data = []; + this.forEach((value, key) => { + data.push([key, value]); }); - server.on("error", reject); - server.listen(pipeName, () => { - server.removeListener("error", reject); - resolve({ - onConnected: () => { - return connected; - } - }); - }); - }); - } - exports2.createClientPipeTransport = createClientPipeTransport; - function createServerPipeTransport(pipeName, encoding = "utf-8") { - const socket = net_1.createConnection(pipeName); - return [ - new messageReader_1.SocketMessageReader(socket, encoding), - new messageWriter_1.SocketMessageWriter(socket, encoding) - ]; - } - exports2.createServerPipeTransport = createServerPipeTransport; -}); - -// node_modules/vscode-jsonrpc/lib/socketSupport.js -var require_socketSupport = __commonJS((exports2) => { - "use strict"; - Object.defineProperty(exports2, "__esModule", {value: true}); - var net_1 = require("net"); - var messageReader_1 = require_messageReader(); - var messageWriter_1 = require_messageWriter(); - function createClientSocketTransport(port, encoding = "utf-8") { - let connectResolve; - let connected = new Promise((resolve, _reject) => { - connectResolve = resolve; - }); - return new Promise((resolve, reject) => { - let server = net_1.createServer((socket) => { - server.close(); - connectResolve([ - new messageReader_1.SocketMessageReader(socket, encoding), - new messageWriter_1.SocketMessageWriter(socket, encoding) - ]); - }); - server.on("error", reject); - server.listen(port, "127.0.0.1", () => { - server.removeListener("error", reject); - resolve({ - onConnected: () => { - return connected; - } - }); - }); - }); - } - exports2.createClientSocketTransport = createClientSocketTransport; - function createServerSocketTransport(port, encoding = "utf-8") { - const socket = net_1.createConnection(port, "127.0.0.1"); - return [ - new messageReader_1.SocketMessageReader(socket, encoding), - new messageWriter_1.SocketMessageWriter(socket, encoding) - ]; - } - exports2.createServerSocketTransport = createServerSocketTransport; + return data; + } + fromJSON(data) { + this.clear(); + for (const [key, value] of data) { + this.set(key, value); + } + } + }; + exports2.LinkedMap = LinkedMap; + var LRUCache = class extends LinkedMap { + constructor(limit, ratio = 1) { + super(); + this._limit = limit; + this._ratio = Math.min(Math.max(0, ratio), 1); + } + get limit() { + return this._limit; + } + set limit(limit) { + this._limit = limit; + this.checkTrim(); + } + get ratio() { + return this._ratio; + } + set ratio(ratio) { + this._ratio = Math.min(Math.max(0, ratio), 1); + this.checkTrim(); + } + get(key, touch = Touch.AsNew) { + return super.get(key, touch); + } + peek(key) { + return super.get(key, Touch.None); + } + set(key, value) { + super.set(key, value, Touch.Last); + this.checkTrim(); + return this; + } + checkTrim() { + if (this.size > this._limit) { + this.trimOld(Math.round(this._limit * this._ratio)); + } + } + }; + exports2.LRUCache = LRUCache; }); -// node_modules/vscode-jsonrpc/lib/main.js -var require_main = __commonJS((exports2) => { +// node_modules/vscode-jsonrpc/lib/common/connection.js +var require_connection = __commonJS((exports2) => { "use strict"; - function __export2(m) { - for (var p in m) - if (!exports2.hasOwnProperty(p)) - exports2[p] = m[p]; - } Object.defineProperty(exports2, "__esModule", {value: true}); + 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; + var ral_1 = require_ral(); var Is = require_is(); var messages_1 = require_messages(); - exports2.RequestType = messages_1.RequestType; - exports2.RequestType0 = messages_1.RequestType0; - exports2.RequestType1 = messages_1.RequestType1; - exports2.RequestType2 = messages_1.RequestType2; - exports2.RequestType3 = messages_1.RequestType3; - exports2.RequestType4 = messages_1.RequestType4; - exports2.RequestType5 = messages_1.RequestType5; - exports2.RequestType6 = messages_1.RequestType6; - exports2.RequestType7 = messages_1.RequestType7; - exports2.RequestType8 = messages_1.RequestType8; - exports2.RequestType9 = messages_1.RequestType9; - exports2.ResponseError = messages_1.ResponseError; - exports2.ErrorCodes = messages_1.ErrorCodes; - exports2.NotificationType = messages_1.NotificationType; - exports2.NotificationType0 = messages_1.NotificationType0; - exports2.NotificationType1 = messages_1.NotificationType1; - exports2.NotificationType2 = messages_1.NotificationType2; - exports2.NotificationType3 = messages_1.NotificationType3; - exports2.NotificationType4 = messages_1.NotificationType4; - exports2.NotificationType5 = messages_1.NotificationType5; - exports2.NotificationType6 = messages_1.NotificationType6; - exports2.NotificationType7 = messages_1.NotificationType7; - exports2.NotificationType8 = messages_1.NotificationType8; - exports2.NotificationType9 = messages_1.NotificationType9; - var messageReader_1 = require_messageReader(); - exports2.MessageReader = messageReader_1.MessageReader; - exports2.StreamMessageReader = messageReader_1.StreamMessageReader; - exports2.IPCMessageReader = messageReader_1.IPCMessageReader; - exports2.SocketMessageReader = messageReader_1.SocketMessageReader; - var messageWriter_1 = require_messageWriter(); - exports2.MessageWriter = messageWriter_1.MessageWriter; - exports2.StreamMessageWriter = messageWriter_1.StreamMessageWriter; - exports2.IPCMessageWriter = messageWriter_1.IPCMessageWriter; - exports2.SocketMessageWriter = messageWriter_1.SocketMessageWriter; + var linkedMap_1 = require_linkedMap(); var events_1 = require_events(); - exports2.Disposable = events_1.Disposable; - exports2.Event = events_1.Event; - exports2.Emitter = events_1.Emitter; var cancellation_1 = require_cancellation(); - exports2.CancellationTokenSource = cancellation_1.CancellationTokenSource; - exports2.CancellationToken = cancellation_1.CancellationToken; - var linkedMap_1 = require_linkedMap(); - __export2(require_pipeSupport()); - __export2(require_socketSupport()); var CancelNotification; (function(CancelNotification2) { CancelNotification2.type = new messages_1.NotificationType("$/cancelRequest"); @@ -1254,6 +1603,13 @@ var require_main = __commonJS((exports2) => { } }; exports2.ProgressType = ProgressType; + var StarRequestHandler; + (function(StarRequestHandler2) { + function is2(value) { + return Is.func(value); + } + StarRequestHandler2.is = is2; + })(StarRequestHandler || (StarRequestHandler = {})); exports2.NullLogger = Object.freeze({ error: () => { }, @@ -1320,11 +1676,11 @@ var require_main = __commonJS((exports2) => { })(TraceFormat = exports2.TraceFormat || (exports2.TraceFormat = {})); var SetTraceNotification; (function(SetTraceNotification2) { - SetTraceNotification2.type = new messages_1.NotificationType("$/setTraceNotification"); + SetTraceNotification2.type = new messages_1.NotificationType("$/setTrace"); })(SetTraceNotification = exports2.SetTraceNotification || (exports2.SetTraceNotification = {})); var LogTraceNotification; (function(LogTraceNotification2) { - LogTraceNotification2.type = new messages_1.NotificationType("$/logTraceNotification"); + LogTraceNotification2.type = new messages_1.NotificationType("$/logTrace"); })(LogTraceNotification = exports2.LogTraceNotification || (exports2.LogTraceNotification = {})); var ConnectionErrors; (function(ConnectionErrors2) { @@ -1343,11 +1699,59 @@ var require_main = __commonJS((exports2) => { var ConnectionStrategy; (function(ConnectionStrategy2) { function is2(value) { - let candidate = value; + const candidate = value; return candidate && Is.func(candidate.cancelUndispatched); } ConnectionStrategy2.is = is2; })(ConnectionStrategy = exports2.ConnectionStrategy || (exports2.ConnectionStrategy = {})); + var CancellationReceiverStrategy; + (function(CancellationReceiverStrategy2) { + CancellationReceiverStrategy2.Message = Object.freeze({ + createCancellationTokenSource(_) { + return new cancellation_1.CancellationTokenSource(); + } + }); + function is2(value) { + const candidate = value; + return candidate && Is.func(candidate.createCancellationTokenSource); + } + CancellationReceiverStrategy2.is = is2; + })(CancellationReceiverStrategy = exports2.CancellationReceiverStrategy || (exports2.CancellationReceiverStrategy = {})); + var CancellationSenderStrategy; + (function(CancellationSenderStrategy2) { + CancellationSenderStrategy2.Message = Object.freeze({ + sendCancellation(conn, id) { + conn.sendNotification(CancelNotification.type, {id}); + }, + cleanup(_) { + } + }); + function is2(value) { + const candidate = value; + return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup); + } + CancellationSenderStrategy2.is = is2; + })(CancellationSenderStrategy = exports2.CancellationSenderStrategy || (exports2.CancellationSenderStrategy = {})); + var CancellationStrategy; + (function(CancellationStrategy2) { + CancellationStrategy2.Message = Object.freeze({ + receiver: CancellationReceiverStrategy.Message, + sender: CancellationSenderStrategy.Message + }); + function is2(value) { + const candidate = value; + return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender); + } + CancellationStrategy2.is = is2; + })(CancellationStrategy = exports2.CancellationStrategy || (exports2.CancellationStrategy = {})); + var ConnectionOptions; + (function(ConnectionOptions2) { + function is2(value) { + const candidate = value; + return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy)); + } + ConnectionOptions2.is = is2; + })(ConnectionOptions = exports2.ConnectionOptions || (exports2.ConnectionOptions = {})); var ConnectionState; (function(ConnectionState2) { ConnectionState2[ConnectionState2["New"] = 1] = "New"; @@ -1355,16 +1759,17 @@ var require_main = __commonJS((exports2) => { ConnectionState2[ConnectionState2["Closed"] = 3] = "Closed"; ConnectionState2[ConnectionState2["Disposed"] = 4] = "Disposed"; })(ConnectionState || (ConnectionState = {})); - function _createMessageConnection(messageReader, messageWriter, logger, strategy) { + function createMessageConnection(messageReader, messageWriter, _logger, options) { + const logger = _logger !== void 0 ? _logger : exports2.NullLogger; let sequenceNumber = 0; let notificationSquenceNumber = 0; let unknownResponseSquenceNumber = 0; const version = "2.0"; let starRequestHandler = void 0; - let requestHandlers = Object.create(null); + const requestHandlers = Object.create(null); let starNotificationHandler = void 0; - let notificationHandlers = Object.create(null); - let progressHandlers = new Map(); + const notificationHandlers = Object.create(null); + const progressHandlers = new Map(); let timer; let messageQueue = new linkedMap_1.LinkedMap(); let responsePromises = Object.create(null); @@ -1373,12 +1778,16 @@ var require_main = __commonJS((exports2) => { let traceFormat = TraceFormat.Text; let tracer; let state = ConnectionState.New; - let errorEmitter = new events_1.Emitter(); - let closeEmitter = new events_1.Emitter(); - let unhandledNotificationEmitter = new events_1.Emitter(); - let unhandledProgressEmitter = new events_1.Emitter(); - let disposeEmitter = new events_1.Emitter(); + const errorEmitter = new events_1.Emitter(); + const closeEmitter = new events_1.Emitter(); + const unhandledNotificationEmitter = new events_1.Emitter(); + const unhandledProgressEmitter = new events_1.Emitter(); + const disposeEmitter = new events_1.Emitter(); + const cancellationStrategy = options && options.cancellationStrategy ? options.cancellationStrategy : CancellationStrategy.Message; function createRequestQueueKey(id) { + if (id === null) { + throw new Error(`Can't send requests with id null since the response can't be correlated.`); + } return "req-" + id.toString(); } function createResponseQueueKey(id) { @@ -1432,7 +1841,7 @@ var require_main = __commonJS((exports2) => { if (timer || messageQueue.size === 0) { return; } - timer = setImmediate(() => { + timer = ral_1.default().timer.setImmediate(() => { timer = void 0; processMessageQueue(); }); @@ -1441,7 +1850,7 @@ var require_main = __commonJS((exports2) => { if (messageQueue.size === 0) { return; } - let message = messageQueue.shift(); + const message = messageQueue.shift(); try { if (messages_1.isRequestMessage(message)) { handleRequest(message); @@ -1456,13 +1865,14 @@ var require_main = __commonJS((exports2) => { triggerMessageQueue(); } } - let callback = (message) => { + const callback = (message) => { try { if (messages_1.isNotificationMessage(message) && message.method === CancelNotification.type.method) { - let key = createRequestQueueKey(message.params.id); - let toCancel = messageQueue.get(key); + const key = createRequestQueueKey(message.params.id); + const toCancel = messageQueue.get(key); if (messages_1.isRequestMessage(toCancel)) { - let response = strategy && strategy.cancelUndispatched ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel); + const strategy = options === null || options === void 0 ? void 0 : options.connectionStrategy; + const response = strategy && strategy.cancelUndispatched ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel); if (response && (response.error !== void 0 || response.result !== void 0)) { messageQueue.delete(key); response.id = toCancel.id; @@ -1482,7 +1892,7 @@ var require_main = __commonJS((exports2) => { return; } function reply(resultOrError, method, startTime2) { - let message = { + const message = { jsonrpc: version, id: requestMessage.id }; @@ -1495,7 +1905,7 @@ var require_main = __commonJS((exports2) => { messageWriter.write(message); } function replyError(error, method, startTime2) { - let message = { + const message = { jsonrpc: version, id: requestMessage.id, error: error.toJson() @@ -1507,7 +1917,7 @@ var require_main = __commonJS((exports2) => { if (result === void 0) { result = null; } - let message = { + const message = { jsonrpc: version, id: requestMessage.id, result @@ -1516,28 +1926,44 @@ var require_main = __commonJS((exports2) => { messageWriter.write(message); } traceReceivedRequest(requestMessage); - let element = requestHandlers[requestMessage.method]; + const element = requestHandlers[requestMessage.method]; let type; let requestHandler; if (element) { type = element.type; requestHandler = element.handler; } - let startTime = Date.now(); + const startTime = Date.now(); if (requestHandler || starRequestHandler) { - let cancellationSource = new cancellation_1.CancellationTokenSource(); - let tokenKey = String(requestMessage.id); + const tokenKey = String(requestMessage.id); + const cancellationSource = cancellationStrategy.receiver.createCancellationTokenSource(tokenKey); requestTokens[tokenKey] = cancellationSource; try { let handlerResult; - if (requestMessage.params === void 0 || type !== void 0 && type.numberOfParams === 0) { - handlerResult = requestHandler ? requestHandler(cancellationSource.token) : starRequestHandler(requestMessage.method, cancellationSource.token); - } else if (Is.array(requestMessage.params) && (type === void 0 || type.numberOfParams > 1)) { - handlerResult = requestHandler ? requestHandler(...requestMessage.params, cancellationSource.token) : starRequestHandler(requestMessage.method, ...requestMessage.params, cancellationSource.token); - } else { - handlerResult = requestHandler ? requestHandler(requestMessage.params, cancellationSource.token) : starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token); + if (requestHandler) { + if (requestMessage.params === void 0) { + if (type !== void 0 && type.numberOfParams !== 0) { + replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but recevied none.`), requestMessage.method, startTime); + return; + } + handlerResult = requestHandler(cancellationSource.token); + } else if (Array.isArray(requestMessage.params)) { + if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byName) { + replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime); + return; + } + handlerResult = requestHandler(...requestMessage.params, cancellationSource.token); + } else { + if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byPosition) { + replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime); + return; + } + handlerResult = requestHandler(requestMessage.params, cancellationSource.token); + } + } else if (starRequestHandler) { + handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token); } - let promise = handlerResult; + const promise = handlerResult; if (!handlerResult) { delete requestTokens[tokenKey]; replySuccess(handlerResult, requestMessage.method, startTime); @@ -1585,14 +2011,14 @@ ${JSON.stringify(responseMessage.error, void 0, 4)}`); logger.error(`Received response message without id. No further error information provided.`); } } else { - let key = String(responseMessage.id); - let responsePromise = responsePromises[key]; + const key = String(responseMessage.id); + const responsePromise = responsePromises[key]; traceReceivedResponse(responseMessage, responsePromise); if (responsePromise) { delete responsePromises[key]; try { if (responseMessage.error) { - let error = responseMessage.error; + const error = responseMessage.error; responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data)); } else if (responseMessage.result !== void 0) { responsePromise.resolve(responseMessage.result); @@ -1617,14 +2043,14 @@ ${JSON.stringify(responseMessage.error, void 0, 4)}`); let notificationHandler; if (message.method === CancelNotification.type.method) { notificationHandler = (params) => { - let id = params.id; - let source = requestTokens[String(id)]; + const id = params.id; + const source = requestTokens[String(id)]; if (source) { source.cancel(); } }; } else { - let element = notificationHandlers[message.method]; + const element = notificationHandlers[message.method]; if (element) { notificationHandler = element.handler; type = element.type; @@ -1633,12 +2059,32 @@ ${JSON.stringify(responseMessage.error, void 0, 4)}`); if (notificationHandler || starNotificationHandler) { try { traceReceivedNotification(message); - if (message.params === void 0 || type !== void 0 && type.numberOfParams === 0) { - notificationHandler ? notificationHandler() : starNotificationHandler(message.method); - } else if (Is.array(message.params) && (type === void 0 || type.numberOfParams > 1)) { - notificationHandler ? notificationHandler(...message.params) : starNotificationHandler(message.method, ...message.params); - } else { - notificationHandler ? notificationHandler(message.params) : starNotificationHandler(message.method, message.params); + if (notificationHandler) { + if (message.params === void 0) { + if (type !== void 0) { + if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) { + logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but recevied none.`); + } + } + notificationHandler(); + } else if (Array.isArray(message.params)) { + if (type !== void 0) { + if (type.parameterStructures === messages_1.ParameterStructures.byName) { + logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`); + } + if (type.numberOfParams !== message.params.length) { + logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${message.params.length} argumennts`); + } + } + notificationHandler(...message.params); + } else { + if (type !== void 0 && type.parameterStructures === messages_1.ParameterStructures.byPosition) { + logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`); + } + notificationHandler(message.params); + } + } else if (starNotificationHandler) { + starNotificationHandler(message.method, message.params); } } catch (error) { if (error.message) { @@ -1658,10 +2104,10 @@ ${JSON.stringify(responseMessage.error, void 0, 4)}`); } logger.error(`Received message which is neither a response nor a notification message: ${JSON.stringify(message, null, 4)}`); - let responseMessage = message; + const responseMessage = message; if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) { - let key = String(responseMessage.id); - let responseHandler = responsePromises[key]; + const key = String(responseMessage.id); + const responseHandler = responsePromises[key]; if (responseHandler) { responseHandler.reject(new Error("The received response has neither a result nor an error property.")); } @@ -1787,7 +2233,7 @@ ${JSON.stringify(message, null, 4)}`); } } if (responsePromise) { - let error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : ""; + const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : ""; tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data); } else { tracer.log(`Received response ${message.id} without active response promise.`, data); @@ -1833,15 +2279,45 @@ ${JSON.stringify(message, null, 4)}`); return param; } } + function nullToUndefined(param) { + if (param === null) { + return void 0; + } else { + return param; + } + } + function isNamedParam(param) { + return param !== void 0 && param !== null && !Array.isArray(param) && typeof param === "object"; + } + function computeSingleParam(parameterStructures, param) { + switch (parameterStructures) { + case messages_1.ParameterStructures.auto: + if (isNamedParam(param)) { + return nullToUndefined(param); + } else { + return [undefinedToNull(param)]; + } + break; + case messages_1.ParameterStructures.byName: + if (!isNamedParam(param)) { + throw new Error(`Recevied parameters by name but param is not an object literal.`); + } + return nullToUndefined(param); + case messages_1.ParameterStructures.byPosition: + return [undefinedToNull(param)]; + default: + throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`); + } + } function computeMessageParams(type, params) { let result; - let numberOfParams = type.numberOfParams; + const numberOfParams = type.numberOfParams; switch (numberOfParams) { case 0: - result = null; + result = void 0; break; case 1: - result = undefinedToNull(params[0]); + result = computeSingleParam(type.parameterStructures, params[0]); break; default: result = []; @@ -1857,29 +2333,42 @@ ${JSON.stringify(message, null, 4)}`); } return result; } - let connection = { - sendNotification: (type, ...params) => { + const connection = { + sendNotification: (type, ...args) => { throwIfClosedOrDisposed(); let method; let messageParams; if (Is.string(type)) { method = type; - switch (params.length) { + const first = args[0]; + let paramStart = 0; + let parameterStructures = messages_1.ParameterStructures.auto; + if (messages_1.ParameterStructures.is(first)) { + paramStart = 1; + parameterStructures = first; + } + let paramEnd = args.length; + const numberOfParams = paramEnd - paramStart; + switch (numberOfParams) { case 0: - messageParams = null; + messageParams = void 0; break; case 1: - messageParams = params[0]; + messageParams = computeSingleParam(parameterStructures, args[paramStart]); break; default: - messageParams = params; + if (parameterStructures === messages_1.ParameterStructures.byName) { + throw new Error(`Recevied ${numberOfParams} parameters for 'by Name' notification parameter structure.`); + } + messageParams = args.slice(paramStart, paramEnd).map((value) => undefinedToNull(value)); break; } } else { + const params = args; method = type.method; messageParams = computeMessageParams(type, params); } - let notificationMessage = { + const notificationMessage = { jsonrpc: version, method, params: messageParams @@ -1889,15 +2378,27 @@ ${JSON.stringify(message, null, 4)}`); }, onNotification: (type, handler) => { throwIfClosedOrDisposed(); + let method; if (Is.func(type)) { starNotificationHandler = type; } else if (handler) { if (Is.string(type)) { + method = type; notificationHandlers[type] = {type: void 0, handler}; } else { + method = type.method; notificationHandlers[type.method] = {type, handler}; } } + return { + dispose: () => { + if (method !== void 0) { + delete notificationHandlers[method]; + } else { + starNotificationHandler = void 0; + } + } + }; }, onProgress: (_type, token, handler) => { if (progressHandlers.has(token)) { @@ -1914,7 +2415,7 @@ ${JSON.stringify(message, null, 4)}`); connection.sendNotification(ProgressNotification.type, {token, value}); }, onUnhandledProgress: unhandledProgressEmitter.event, - sendRequest: (type, ...params) => { + sendRequest: (type, ...args) => { throwIfClosedOrDisposed(); throwIfNotListening(); let method; @@ -1922,47 +2423,66 @@ ${JSON.stringify(message, null, 4)}`); let token = void 0; if (Is.string(type)) { method = type; - switch (params.length) { + const first = args[0]; + const last = args[args.length - 1]; + let paramStart = 0; + let parameterStructures = messages_1.ParameterStructures.auto; + if (messages_1.ParameterStructures.is(first)) { + paramStart = 1; + parameterStructures = first; + } + let paramEnd = args.length; + if (cancellation_1.CancellationToken.is(last)) { + paramEnd = paramEnd - 1; + token = last; + } + const numberOfParams = paramEnd - paramStart; + switch (numberOfParams) { case 0: - messageParams = null; + messageParams = void 0; break; case 1: - if (cancellation_1.CancellationToken.is(params[0])) { - messageParams = null; - token = params[0]; - } else { - messageParams = undefinedToNull(params[0]); - } + messageParams = computeSingleParam(parameterStructures, args[paramStart]); break; default: - const last = params.length - 1; - if (cancellation_1.CancellationToken.is(params[last])) { - token = params[last]; - if (params.length === 2) { - messageParams = undefinedToNull(params[0]); - } else { - messageParams = params.slice(0, last).map((value) => undefinedToNull(value)); - } - } else { - messageParams = params.map((value) => undefinedToNull(value)); + if (parameterStructures === messages_1.ParameterStructures.byName) { + throw new Error(`Recevied ${numberOfParams} parameters for 'by Name' request parameter structure.`); } + messageParams = args.slice(paramStart, paramEnd).map((value) => undefinedToNull(value)); break; } } else { + const params = args; method = type.method; messageParams = computeMessageParams(type, params); - let numberOfParams = type.numberOfParams; + const numberOfParams = type.numberOfParams; token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : void 0; } - let id = sequenceNumber++; - let result = new Promise((resolve, reject) => { - let requestMessage = { + const id = sequenceNumber++; + let disposable; + if (token) { + disposable = token.onCancellationRequested(() => { + cancellationStrategy.sender.sendCancellation(connection, id); + }); + } + const result = new Promise((resolve, reject) => { + const requestMessage = { jsonrpc: version, id, method, params: messageParams }; - let responsePromise = {method, timerStart: Date.now(), resolve, reject}; + const resolveWithCleanup = (r) => { + resolve(r); + cancellationStrategy.sender.cleanup(id); + disposable === null || disposable === void 0 ? void 0 : disposable.dispose(); + }; + const rejectWithCleanup = (r) => { + reject(r); + cancellationStrategy.sender.cleanup(id); + disposable === null || disposable === void 0 ? void 0 : disposable.dispose(); + }; + let responsePromise = {method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup}; traceSendingRequest(requestMessage); try { messageWriter.write(requestMessage); @@ -1974,24 +2494,38 @@ ${JSON.stringify(message, null, 4)}`); responsePromises[String(id)] = responsePromise; } }); - if (token) { - token.onCancellationRequested(() => { - connection.sendNotification(CancelNotification.type, {id}); - }); - } return result; }, onRequest: (type, handler) => { throwIfClosedOrDisposed(); - if (Is.func(type)) { + let method = null; + if (StarRequestHandler.is(type)) { + method = void 0; starRequestHandler = type; - } else if (handler) { - if (Is.string(type)) { - requestHandlers[type] = {type: void 0, handler}; - } else { + } else if (Is.string(type)) { + method = null; + if (handler !== void 0) { + method = type; + requestHandlers[type] = {handler, type: void 0}; + } + } else { + if (handler !== void 0) { + method = type.method; requestHandlers[type.method] = {type, handler}; } } + return { + dispose: () => { + if (method === null) { + return; + } + if (method !== void 0) { + delete requestHandlers[method]; + } else { + starRequestHandler = void 0; + } + } + }; }, trace: (_value, _tracer, sendNotificationOrTraceOptions) => { let _sendNotification = false; @@ -2019,13 +2553,16 @@ ${JSON.stringify(message, null, 4)}`); onClose: closeEmitter.event, onUnhandledNotification: unhandledNotificationEmitter.event, onDispose: disposeEmitter.event, + end: () => { + messageWriter.end(); + }, dispose: () => { if (isDisposed()) { return; } state = ConnectionState.Disposed; disposeEmitter.fire(void 0); - let error = new Error("Connection got disposed."); + const error = new Error("Connection got disposed."); Object.keys(responsePromises).forEach((key) => { responsePromises[key].reject(error); }); @@ -2046,7 +2583,7 @@ ${JSON.stringify(message, null, 4)}`); messageReader.listen(callback); }, inspect: () => { - console.log("inspect"); + ral_1.default().console.log("inspect"); } }; connection.onNotification(LogTraceNotification.type, (params) => { @@ -2065,29 +2602,410 @@ ${JSON.stringify(message, null, 4)}`); }); return connection; } - function isMessageReader(value) { - return value.listen !== void 0 && value.read === void 0; + exports2.createMessageConnection = createMessageConnection; +}); + +// node_modules/vscode-jsonrpc/lib/common/api.js +var require_api = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + 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; + exports2.CancellationStrategy = void 0; + var messages_1 = require_messages(); + Object.defineProperty(exports2, "RequestType", {enumerable: true, get: function() { + return messages_1.RequestType; + }}); + Object.defineProperty(exports2, "RequestType0", {enumerable: true, get: function() { + return messages_1.RequestType0; + }}); + Object.defineProperty(exports2, "RequestType1", {enumerable: true, get: function() { + return messages_1.RequestType1; + }}); + Object.defineProperty(exports2, "RequestType2", {enumerable: true, get: function() { + return messages_1.RequestType2; + }}); + Object.defineProperty(exports2, "RequestType3", {enumerable: true, get: function() { + return messages_1.RequestType3; + }}); + Object.defineProperty(exports2, "RequestType4", {enumerable: true, get: function() { + return messages_1.RequestType4; + }}); + Object.defineProperty(exports2, "RequestType5", {enumerable: true, get: function() { + return messages_1.RequestType5; + }}); + Object.defineProperty(exports2, "RequestType6", {enumerable: true, get: function() { + return messages_1.RequestType6; + }}); + Object.defineProperty(exports2, "RequestType7", {enumerable: true, get: function() { + return messages_1.RequestType7; + }}); + Object.defineProperty(exports2, "RequestType8", {enumerable: true, get: function() { + return messages_1.RequestType8; + }}); + Object.defineProperty(exports2, "RequestType9", {enumerable: true, get: function() { + return messages_1.RequestType9; + }}); + Object.defineProperty(exports2, "ResponseError", {enumerable: true, get: function() { + return messages_1.ResponseError; + }}); + Object.defineProperty(exports2, "ErrorCodes", {enumerable: true, get: function() { + return messages_1.ErrorCodes; + }}); + Object.defineProperty(exports2, "NotificationType", {enumerable: true, get: function() { + return messages_1.NotificationType; + }}); + Object.defineProperty(exports2, "NotificationType0", {enumerable: true, get: function() { + return messages_1.NotificationType0; + }}); + Object.defineProperty(exports2, "NotificationType1", {enumerable: true, get: function() { + return messages_1.NotificationType1; + }}); + Object.defineProperty(exports2, "NotificationType2", {enumerable: true, get: function() { + return messages_1.NotificationType2; + }}); + Object.defineProperty(exports2, "NotificationType3", {enumerable: true, get: function() { + return messages_1.NotificationType3; + }}); + Object.defineProperty(exports2, "NotificationType4", {enumerable: true, get: function() { + return messages_1.NotificationType4; + }}); + Object.defineProperty(exports2, "NotificationType5", {enumerable: true, get: function() { + return messages_1.NotificationType5; + }}); + Object.defineProperty(exports2, "NotificationType6", {enumerable: true, get: function() { + return messages_1.NotificationType6; + }}); + Object.defineProperty(exports2, "NotificationType7", {enumerable: true, get: function() { + return messages_1.NotificationType7; + }}); + Object.defineProperty(exports2, "NotificationType8", {enumerable: true, get: function() { + return messages_1.NotificationType8; + }}); + Object.defineProperty(exports2, "NotificationType9", {enumerable: true, get: function() { + return messages_1.NotificationType9; + }}); + Object.defineProperty(exports2, "ParameterStructures", {enumerable: true, get: function() { + return messages_1.ParameterStructures; + }}); + var disposable_1 = require_disposable(); + Object.defineProperty(exports2, "Disposable", {enumerable: true, get: function() { + return disposable_1.Disposable; + }}); + var events_1 = require_events(); + Object.defineProperty(exports2, "Event", {enumerable: true, get: function() { + return events_1.Event; + }}); + Object.defineProperty(exports2, "Emitter", {enumerable: true, get: function() { + return events_1.Emitter; + }}); + var cancellation_1 = require_cancellation(); + Object.defineProperty(exports2, "CancellationTokenSource", {enumerable: true, get: function() { + return cancellation_1.CancellationTokenSource; + }}); + Object.defineProperty(exports2, "CancellationToken", {enumerable: true, get: function() { + return cancellation_1.CancellationToken; + }}); + var messageReader_1 = require_messageReader(); + Object.defineProperty(exports2, "MessageReader", {enumerable: true, get: function() { + return messageReader_1.MessageReader; + }}); + Object.defineProperty(exports2, "AbstractMessageReader", {enumerable: true, get: function() { + return messageReader_1.AbstractMessageReader; + }}); + Object.defineProperty(exports2, "ReadableStreamMessageReader", {enumerable: true, get: function() { + return messageReader_1.ReadableStreamMessageReader; + }}); + var messageWriter_1 = require_messageWriter(); + Object.defineProperty(exports2, "MessageWriter", {enumerable: true, get: function() { + return messageWriter_1.MessageWriter; + }}); + Object.defineProperty(exports2, "AbstractMessageWriter", {enumerable: true, get: function() { + return messageWriter_1.AbstractMessageWriter; + }}); + Object.defineProperty(exports2, "WriteableStreamMessageWriter", {enumerable: true, get: function() { + return messageWriter_1.WriteableStreamMessageWriter; + }}); + var connection_1 = require_connection(); + Object.defineProperty(exports2, "ConnectionStrategy", {enumerable: true, get: function() { + return connection_1.ConnectionStrategy; + }}); + Object.defineProperty(exports2, "ConnectionOptions", {enumerable: true, get: function() { + return connection_1.ConnectionOptions; + }}); + Object.defineProperty(exports2, "NullLogger", {enumerable: true, get: function() { + return connection_1.NullLogger; + }}); + Object.defineProperty(exports2, "createMessageConnection", {enumerable: true, get: function() { + return connection_1.createMessageConnection; + }}); + Object.defineProperty(exports2, "ProgressType", {enumerable: true, get: function() { + return connection_1.ProgressType; + }}); + Object.defineProperty(exports2, "Trace", {enumerable: true, get: function() { + return connection_1.Trace; + }}); + Object.defineProperty(exports2, "TraceFormat", {enumerable: true, get: function() { + return connection_1.TraceFormat; + }}); + Object.defineProperty(exports2, "SetTraceNotification", {enumerable: true, get: function() { + return connection_1.SetTraceNotification; + }}); + Object.defineProperty(exports2, "LogTraceNotification", {enumerable: true, get: function() { + return connection_1.LogTraceNotification; + }}); + Object.defineProperty(exports2, "ConnectionErrors", {enumerable: true, get: function() { + return connection_1.ConnectionErrors; + }}); + Object.defineProperty(exports2, "ConnectionError", {enumerable: true, get: function() { + return connection_1.ConnectionError; + }}); + Object.defineProperty(exports2, "CancellationReceiverStrategy", {enumerable: true, get: function() { + return connection_1.CancellationReceiverStrategy; + }}); + Object.defineProperty(exports2, "CancellationSenderStrategy", {enumerable: true, get: function() { + return connection_1.CancellationSenderStrategy; + }}); + Object.defineProperty(exports2, "CancellationStrategy", {enumerable: true, get: function() { + return connection_1.CancellationStrategy; + }}); + var ral_1 = require_ral(); + exports2.RAL = ral_1.default; +}); + +// node_modules/vscode-jsonrpc/lib/node/main.js +var require_main = __commonJS((exports2) => { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, {enumerable: true, get: function() { + return m[k]; + }}); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) + __createBinding(exports3, m, p); + }; + Object.defineProperty(exports2, "__esModule", {value: true}); + 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; + var ril_1 = require_ril(); + ril_1.default.install(); + var api_1 = require_api(); + var path9 = require("path"); + var os3 = require("os"); + var crypto_1 = require("crypto"); + var net_1 = require("net"); + __exportStar2(require_api(), exports2); + var IPCMessageReader = class extends api_1.AbstractMessageReader { + constructor(process2) { + super(); + this.process = process2; + let eventEmitter = this.process; + eventEmitter.on("error", (error) => this.fireError(error)); + eventEmitter.on("close", () => this.fireClose()); + } + listen(callback) { + this.process.on("message", callback); + return api_1.Disposable.create(() => this.process.off("message", callback)); + } + }; + exports2.IPCMessageReader = IPCMessageReader; + var IPCMessageWriter = class extends api_1.AbstractMessageWriter { + constructor(process2) { + super(); + this.process = process2; + this.errorCount = 0; + let eventEmitter = this.process; + eventEmitter.on("error", (error) => this.fireError(error)); + eventEmitter.on("close", () => this.fireClose); + } + write(msg) { + try { + if (typeof this.process.send === "function") { + this.process.send(msg, void 0, void 0, (error) => { + if (error) { + this.errorCount++; + this.handleError(error, msg); + } else { + this.errorCount = 0; + } + }); + } + return Promise.resolve(); + } catch (error) { + this.handleError(error, msg); + return Promise.reject(error); + } + } + handleError(error, msg) { + this.errorCount++; + this.fireError(error, msg, this.errorCount); + } + end() { + } + }; + exports2.IPCMessageWriter = IPCMessageWriter; + var SocketMessageReader = class extends api_1.ReadableStreamMessageReader { + constructor(socket, encoding = "utf-8") { + super(ril_1.default().stream.asReadableStream(socket), encoding); + } + }; + exports2.SocketMessageReader = SocketMessageReader; + var SocketMessageWriter = class extends api_1.WriteableStreamMessageWriter { + constructor(socket, options) { + super(ril_1.default().stream.asWritableStream(socket), options); + this.socket = socket; + } + dispose() { + super.dispose(); + this.socket.destroy(); + } + }; + exports2.SocketMessageWriter = SocketMessageWriter; + var StreamMessageReader = class extends api_1.ReadableStreamMessageReader { + constructor(readble, encoding) { + super(ril_1.default().stream.asReadableStream(readble), encoding); + } + }; + exports2.StreamMessageReader = StreamMessageReader; + var StreamMessageWriter = class extends api_1.WriteableStreamMessageWriter { + constructor(writable, options) { + super(ril_1.default().stream.asWritableStream(writable), options); + } + }; + exports2.StreamMessageWriter = StreamMessageWriter; + var XDG_RUNTIME_DIR = process.env["XDG_RUNTIME_DIR"]; + var safeIpcPathLengths = new Map([ + ["linux", 107], + ["darwin", 103] + ]); + function generateRandomPipeName() { + const randomSuffix = crypto_1.randomBytes(21).toString("hex"); + if (process.platform === "win32") { + return `\\\\.\\pipe\\vscode-jsonrpc-${randomSuffix}-sock`; + } + let result; + if (XDG_RUNTIME_DIR) { + result = path9.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`); + } else { + result = path9.join(os3.tmpdir(), `vscode-${randomSuffix}.sock`); + } + const limit = safeIpcPathLengths.get(process.platform); + if (limit !== void 0 && result.length >= limit) { + ril_1.default().console.warn(`WARNING: IPC handle "${result}" is longer than ${limit} characters.`); + } + return result; + } + exports2.generateRandomPipeName = generateRandomPipeName; + function createClientPipeTransport(pipeName, encoding = "utf-8") { + let connectResolve; + const connected = new Promise((resolve, _reject) => { + connectResolve = resolve; + }); + return new Promise((resolve, reject) => { + let server = net_1.createServer((socket) => { + server.close(); + connectResolve([ + new SocketMessageReader(socket, encoding), + new SocketMessageWriter(socket, encoding) + ]); + }); + server.on("error", reject); + server.listen(pipeName, () => { + server.removeListener("error", reject); + resolve({ + onConnected: () => { + return connected; + } + }); + }); + }); + } + exports2.createClientPipeTransport = createClientPipeTransport; + function createServerPipeTransport(pipeName, encoding = "utf-8") { + const socket = net_1.createConnection(pipeName); + return [ + new SocketMessageReader(socket, encoding), + new SocketMessageWriter(socket, encoding) + ]; + } + exports2.createServerPipeTransport = createServerPipeTransport; + function createClientSocketTransport(port, encoding = "utf-8") { + let connectResolve; + const connected = new Promise((resolve, _reject) => { + connectResolve = resolve; + }); + return new Promise((resolve, reject) => { + const server = net_1.createServer((socket) => { + server.close(); + connectResolve([ + new SocketMessageReader(socket, encoding), + new SocketMessageWriter(socket, encoding) + ]); + }); + server.on("error", reject); + server.listen(port, "127.0.0.1", () => { + server.removeListener("error", reject); + resolve({ + onConnected: () => { + return connected; + } + }); + }); + }); + } + exports2.createClientSocketTransport = createClientSocketTransport; + function createServerSocketTransport(port, encoding = "utf-8") { + const socket = net_1.createConnection(port, "127.0.0.1"); + return [ + new SocketMessageReader(socket, encoding), + new SocketMessageWriter(socket, encoding) + ]; + } + exports2.createServerSocketTransport = createServerSocketTransport; + function isReadableStream(value) { + const candidate = value; + return candidate.read !== void 0 && candidate.addListener !== void 0; } - function isMessageWriter(value) { - return value.write !== void 0 && value.end === void 0; + function isWritableStream(value) { + const candidate = value; + return candidate.write !== void 0 && candidate.addListener !== void 0; } - function createMessageConnection(input, output, logger, strategy) { + function createMessageConnection(input, output, logger, options) { if (!logger) { - logger = exports2.NullLogger; + logger = api_1.NullLogger; } - let reader = isMessageReader(input) ? input : new messageReader_1.StreamMessageReader(input); - let writer = isMessageWriter(output) ? output : new messageWriter_1.StreamMessageWriter(output); - return _createMessageConnection(reader, writer, logger, strategy); + const reader = isReadableStream(input) ? new StreamMessageReader(input) : input; + const writer = isWritableStream(output) ? new StreamMessageWriter(output) : output; + if (api_1.ConnectionStrategy.is(options)) { + options = {connectionStrategy: options}; + } + return api_1.createMessageConnection(reader, writer, logger, options); } exports2.createMessageConnection = createMessageConnection; }); +// node_modules/vscode-jsonrpc/node.js +var require_node = __commonJS((exports2, module2) => { + "use strict"; + module2.exports = require_main(); +}); + // node_modules/vscode-languageserver-types/lib/esm/main.js var require_main2 = __commonJS((exports2) => { __export(exports2, { + AnnotatedTextEdit: () => AnnotatedTextEdit, + ChangeAnnotation: () => ChangeAnnotation, + ChangeAnnotationIdentifier: () => ChangeAnnotationIdentifier, CodeAction: () => CodeAction6, CodeActionContext: () => CodeActionContext6, CodeActionKind: () => CodeActionKind6, + CodeDescription: () => CodeDescription, CodeLens: () => CodeLens2, Color: () => Color, ColorInformation: () => ColorInformation, @@ -2095,14 +3013,14 @@ var require_main2 = __commonJS((exports2) => { Command: () => Command5, CompletionItem: () => CompletionItem4, CompletionItemKind: () => CompletionItemKind3, - CompletionItemTag: () => CompletionItemTag, + CompletionItemTag: () => CompletionItemTag2, CompletionList: () => CompletionList3, CreateFile: () => CreateFile, DeleteFile: () => DeleteFile, - Diagnostic: () => Diagnostic5, + Diagnostic: () => Diagnostic6, DiagnosticRelatedInformation: () => DiagnosticRelatedInformation2, DiagnosticSeverity: () => DiagnosticSeverity3, - DiagnosticTag: () => DiagnosticTag, + DiagnosticTag: () => DiagnosticTag3, DocumentHighlight: () => DocumentHighlight2, DocumentHighlightKind: () => DocumentHighlightKind2, DocumentLink: () => DocumentLink, @@ -2112,73 +3030,94 @@ var require_main2 = __commonJS((exports2) => { FoldingRangeKind: () => FoldingRangeKind, FormattingOptions: () => FormattingOptions, Hover: () => Hover, + InsertReplaceEdit: () => InsertReplaceEdit, InsertTextFormat: () => InsertTextFormat3, - Location: () => Location3, + InsertTextMode: () => InsertTextMode, + Location: () => Location4, LocationLink: () => LocationLink, MarkedString: () => MarkedString, MarkupContent: () => MarkupContent3, MarkupKind: () => MarkupKind3, + OptionalVersionedTextDocumentIdentifier: () => OptionalVersionedTextDocumentIdentifier, ParameterInformation: () => ParameterInformation, - Position: () => Position7, - Range: () => Range15, + Position: () => Position10, + Range: () => Range17, RenameFile: () => RenameFile, SelectionRange: () => SelectionRange, SignatureInformation: () => SignatureInformation, SymbolInformation: () => SymbolInformation2, - SymbolKind: () => SymbolKind3, - SymbolTag: () => SymbolTag, - TextDocument: () => TextDocument11, + SymbolKind: () => SymbolKind5, + SymbolTag: () => SymbolTag4, + TextDocument: () => TextDocument13, TextDocumentEdit: () => TextDocumentEdit, TextDocumentIdentifier: () => TextDocumentIdentifier, TextDocumentItem: () => TextDocumentItem, TextEdit: () => TextEdit6, VersionedTextDocumentIdentifier: () => VersionedTextDocumentIdentifier, WorkspaceChange: () => WorkspaceChange, - WorkspaceEdit: () => WorkspaceEdit6 + WorkspaceEdit: () => WorkspaceEdit6, + integer: () => integer, + uinteger: () => uinteger }); "use strict"; - var Position7; - (function(Position8) { + var integer; + (function(integer2) { + integer2.MIN_VALUE = -2147483648; + integer2.MAX_VALUE = 2147483647; + })(integer || (integer = {})); + var uinteger; + (function(uinteger2) { + uinteger2.MIN_VALUE = 0; + uinteger2.MAX_VALUE = 2147483647; + })(uinteger || (uinteger = {})); + var Position10; + (function(Position11) { function create(line, character) { + if (line === Number.MAX_VALUE) { + line = uinteger.MAX_VALUE; + } + if (character === Number.MAX_VALUE) { + character = uinteger.MAX_VALUE; + } return {line, character}; } - Position8.create = create; + Position11.create = create; function is2(value) { var candidate = value; - return Is.objectLiteral(candidate) && Is.number(candidate.line) && Is.number(candidate.character); + return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character); } - Position8.is = is2; - })(Position7 || (Position7 = {})); - var Range15; - (function(Range16) { + Position11.is = is2; + })(Position10 || (Position10 = {})); + var Range17; + (function(Range18) { function create(one, two, three, four) { - if (Is.number(one) && Is.number(two) && Is.number(three) && Is.number(four)) { - return {start: Position7.create(one, two), end: Position7.create(three, four)}; - } else if (Position7.is(one) && Position7.is(two)) { + if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) { + return {start: Position10.create(one, two), end: Position10.create(three, four)}; + } else if (Position10.is(one) && Position10.is(two)) { return {start: one, end: two}; } else { throw new Error("Range#create called with invalid arguments[" + one + ", " + two + ", " + three + ", " + four + "]"); } } - Range16.create = create; + Range18.create = create; function is2(value) { var candidate = value; - return Is.objectLiteral(candidate) && Position7.is(candidate.start) && Position7.is(candidate.end); + return Is.objectLiteral(candidate) && Position10.is(candidate.start) && Position10.is(candidate.end); } - Range16.is = is2; - })(Range15 || (Range15 = {})); - var Location3; - (function(Location4) { + Range18.is = is2; + })(Range17 || (Range17 = {})); + var Location4; + (function(Location5) { function create(uri, range) { return {uri, range}; } - Location4.create = create; + Location5.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Range15.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri)); + return Is.defined(candidate) && Range17.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri)); } - Location4.is = is2; - })(Location3 || (Location3 = {})); + Location5.is = is2; + })(Location4 || (Location4 = {})); var LocationLink; (function(LocationLink2) { function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) { @@ -2187,7 +3126,7 @@ var require_main2 = __commonJS((exports2) => { LocationLink2.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Range15.is(candidate.targetRange) && Is.string(candidate.targetUri) && (Range15.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange)) && (Range15.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange)); + 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)); } LocationLink2.is = is2; })(LocationLink || (LocationLink = {})); @@ -2204,7 +3143,7 @@ var require_main2 = __commonJS((exports2) => { Color2.create = create; function is2(value) { var candidate = value; - return Is.number(candidate.red) && Is.number(candidate.green) && Is.number(candidate.blue) && Is.number(candidate.alpha); + 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); } Color2.is = is2; })(Color || (Color = {})); @@ -2219,7 +3158,7 @@ var require_main2 = __commonJS((exports2) => { ColorInformation2.create = create; function is2(value) { var candidate = value; - return Range15.is(candidate.range) && Color.is(candidate.color); + return Range17.is(candidate.range) && Color.is(candidate.color); } ColorInformation2.is = is2; })(ColorInformation || (ColorInformation = {})); @@ -2266,7 +3205,7 @@ var require_main2 = __commonJS((exports2) => { FoldingRange3.create = create; function is2(value) { var candidate = value; - return Is.number(candidate.startLine) && Is.number(candidate.startLine) && (Is.undefined(candidate.startCharacter) || Is.number(candidate.startCharacter)) && (Is.undefined(candidate.endCharacter) || Is.number(candidate.endCharacter)) && (Is.undefined(candidate.kind) || Is.string(candidate.kind)); + 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)); } FoldingRange3.is = is2; })(FoldingRange2 || (FoldingRange2 = {})); @@ -2281,7 +3220,7 @@ var require_main2 = __commonJS((exports2) => { DiagnosticRelatedInformation3.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Location3.is(candidate.location) && Is.string(candidate.message); + return Is.defined(candidate) && Location4.is(candidate.location) && Is.string(candidate.message); } DiagnosticRelatedInformation3.is = is2; })(DiagnosticRelatedInformation2 || (DiagnosticRelatedInformation2 = {})); @@ -2292,13 +3231,21 @@ var require_main2 = __commonJS((exports2) => { DiagnosticSeverity4.Information = 3; DiagnosticSeverity4.Hint = 4; })(DiagnosticSeverity3 || (DiagnosticSeverity3 = {})); - var DiagnosticTag; - (function(DiagnosticTag2) { - DiagnosticTag2.Unnecessary = 1; - DiagnosticTag2.Deprecated = 2; - })(DiagnosticTag || (DiagnosticTag = {})); - var Diagnostic5; - (function(Diagnostic6) { + var DiagnosticTag3; + (function(DiagnosticTag4) { + DiagnosticTag4.Unnecessary = 1; + DiagnosticTag4.Deprecated = 2; + })(DiagnosticTag3 || (DiagnosticTag3 = {})); + var CodeDescription; + (function(CodeDescription2) { + function is2(value) { + var candidate = value; + return candidate !== void 0 && candidate !== null && Is.string(candidate.href); + } + CodeDescription2.is = is2; + })(CodeDescription || (CodeDescription = {})); + var Diagnostic6; + (function(Diagnostic7) { function create(range, message, severity, code, source, relatedInformation) { var result = {range, message}; if (Is.defined(severity)) { @@ -2315,13 +3262,14 @@ var require_main2 = __commonJS((exports2) => { } return result; } - Diagnostic6.create = create; + Diagnostic7.create = create; function is2(value) { + var _a; var candidate = value; - return Is.defined(candidate) && Range15.is(candidate.range) && Is.string(candidate.message) && (Is.number(candidate.severity) || Is.undefined(candidate.severity)) && (Is.number(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code)) && (Is.string(candidate.source) || Is.undefined(candidate.source)) && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation2.is)); + 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)); } - Diagnostic6.is = is2; - })(Diagnostic5 || (Diagnostic5 = {})); + Diagnostic7.is = is2; + })(Diagnostic6 || (Diagnostic6 = {})); var Command5; (function(Command6) { function create(title, command) { @@ -2358,10 +3306,57 @@ var require_main2 = __commonJS((exports2) => { TextEdit7.del = del; function is2(value) { var candidate = value; - return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range15.is(candidate.range); + return Is.objectLiteral(candidate) && Is.string(candidate.newText) && Range17.is(candidate.range); } TextEdit7.is = is2; })(TextEdit6 || (TextEdit6 = {})); + var ChangeAnnotation; + (function(ChangeAnnotation2) { + function create(label, needsConfirmation, description) { + var result = {label}; + if (needsConfirmation !== void 0) { + result.needsConfirmation = needsConfirmation; + } + if (description !== void 0) { + result.description = description; + } + return result; + } + ChangeAnnotation2.create = create; + function is2(value) { + var candidate = value; + 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); + } + ChangeAnnotation2.is = is2; + })(ChangeAnnotation || (ChangeAnnotation = {})); + var ChangeAnnotationIdentifier; + (function(ChangeAnnotationIdentifier2) { + function is2(value) { + var candidate = value; + return typeof candidate === "string"; + } + ChangeAnnotationIdentifier2.is = is2; + })(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {})); + var AnnotatedTextEdit; + (function(AnnotatedTextEdit2) { + function replace(range, newText, annotation) { + return {range, newText, annotationId: annotation}; + } + AnnotatedTextEdit2.replace = replace; + function insert(position, newText, annotation) { + return {range: {start: position, end: position}, newText, annotationId: annotation}; + } + AnnotatedTextEdit2.insert = insert; + function del(range, annotation) { + return {range, newText: "", annotationId: annotation}; + } + AnnotatedTextEdit2.del = del; + function is2(value) { + var candidate = value; + return TextEdit6.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId)); + } + AnnotatedTextEdit2.is = is2; + })(AnnotatedTextEdit || (AnnotatedTextEdit = {})); var TextDocumentEdit; (function(TextDocumentEdit2) { function create(textDocument, edits) { @@ -2370,13 +3365,13 @@ var require_main2 = __commonJS((exports2) => { TextDocumentEdit2.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && VersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits); + return Is.defined(candidate) && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument) && Array.isArray(candidate.edits); } TextDocumentEdit2.is = is2; })(TextDocumentEdit || (TextDocumentEdit = {})); var CreateFile; (function(CreateFile2) { - function create(uri, options) { + function create(uri, options, annotation) { var result = { kind: "create", uri @@ -2384,18 +3379,21 @@ var require_main2 = __commonJS((exports2) => { if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) { result.options = options; } + if (annotation !== void 0) { + result.annotationId = annotation; + } return result; } CreateFile2.create = create; function is2(value) { var candidate = value; - 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))); + 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)); } CreateFile2.is = is2; })(CreateFile || (CreateFile = {})); var RenameFile; (function(RenameFile2) { - function create(oldUri, newUri, options) { + function create(oldUri, newUri, options, annotation) { var result = { kind: "rename", oldUri, @@ -2404,18 +3402,21 @@ var require_main2 = __commonJS((exports2) => { if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) { result.options = options; } + if (annotation !== void 0) { + result.annotationId = annotation; + } return result; } RenameFile2.create = create; function is2(value) { var candidate = value; - 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))); + 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)); } RenameFile2.is = is2; })(RenameFile || (RenameFile = {})); var DeleteFile; (function(DeleteFile2) { - function create(uri, options) { + function create(uri, options, annotation) { var result = { kind: "delete", uri @@ -2423,12 +3424,15 @@ var require_main2 = __commonJS((exports2) => { if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) { result.options = options; } + if (annotation !== void 0) { + result.annotationId = annotation; + } return result; } DeleteFile2.create = create; function is2(value) { var candidate = value; - 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))); + 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)); } DeleteFile2.is = is2; })(DeleteFile || (DeleteFile = {})); @@ -2447,17 +3451,63 @@ var require_main2 = __commonJS((exports2) => { WorkspaceEdit7.is = is2; })(WorkspaceEdit6 || (WorkspaceEdit6 = {})); var TextEditChangeImpl = function() { - function TextEditChangeImpl2(edits) { + function TextEditChangeImpl2(edits, changeAnnotations) { this.edits = edits; - } - TextEditChangeImpl2.prototype.insert = function(position, newText) { - this.edits.push(TextEdit6.insert(position, newText)); + this.changeAnnotations = changeAnnotations; + } + TextEditChangeImpl2.prototype.insert = function(position, newText, annotation) { + var edit; + var id; + if (annotation === void 0) { + edit = TextEdit6.insert(position, newText); + } else if (ChangeAnnotationIdentifier.is(annotation)) { + id = annotation; + edit = AnnotatedTextEdit.insert(position, newText, annotation); + } else { + this.assertChangeAnnotations(this.changeAnnotations); + id = this.changeAnnotations.manage(annotation); + edit = AnnotatedTextEdit.insert(position, newText, id); + } + this.edits.push(edit); + if (id !== void 0) { + return id; + } }; - TextEditChangeImpl2.prototype.replace = function(range, newText) { - this.edits.push(TextEdit6.replace(range, newText)); + TextEditChangeImpl2.prototype.replace = function(range, newText, annotation) { + var edit; + var id; + if (annotation === void 0) { + edit = TextEdit6.replace(range, newText); + } else if (ChangeAnnotationIdentifier.is(annotation)) { + id = annotation; + edit = AnnotatedTextEdit.replace(range, newText, annotation); + } else { + this.assertChangeAnnotations(this.changeAnnotations); + id = this.changeAnnotations.manage(annotation); + edit = AnnotatedTextEdit.replace(range, newText, id); + } + this.edits.push(edit); + if (id !== void 0) { + return id; + } }; - TextEditChangeImpl2.prototype.delete = function(range) { - this.edits.push(TextEdit6.del(range)); + TextEditChangeImpl2.prototype.delete = function(range, annotation) { + var edit; + var id; + if (annotation === void 0) { + edit = TextEdit6.del(range); + } else if (ChangeAnnotationIdentifier.is(annotation)) { + id = annotation; + edit = AnnotatedTextEdit.del(range, annotation); + } else { + this.assertChangeAnnotations(this.changeAnnotations); + id = this.changeAnnotations.manage(annotation); + edit = AnnotatedTextEdit.del(range, id); + } + this.edits.push(edit); + if (id !== void 0) { + return id; + } }; TextEditChangeImpl2.prototype.add = function(edit) { this.edits.push(edit); @@ -2468,18 +3518,65 @@ var require_main2 = __commonJS((exports2) => { TextEditChangeImpl2.prototype.clear = function() { this.edits.splice(0, this.edits.length); }; + TextEditChangeImpl2.prototype.assertChangeAnnotations = function(value) { + if (value === void 0) { + throw new Error("Text edit change is not configured to manage change annotations."); + } + }; return TextEditChangeImpl2; }(); + var ChangeAnnotations = function() { + function ChangeAnnotations2(annotations) { + this._annotations = annotations === void 0 ? Object.create(null) : annotations; + this._counter = 0; + this._size = 0; + } + ChangeAnnotations2.prototype.all = function() { + return this._annotations; + }; + Object.defineProperty(ChangeAnnotations2.prototype, "size", { + get: function() { + return this._size; + }, + enumerable: false, + configurable: true + }); + ChangeAnnotations2.prototype.manage = function(idOrAnnotation, annotation) { + var id; + if (ChangeAnnotationIdentifier.is(idOrAnnotation)) { + id = idOrAnnotation; + } else { + id = this.nextId(); + annotation = idOrAnnotation; + } + if (this._annotations[id] !== void 0) { + throw new Error("Id " + id + " is already in use."); + } + if (annotation === void 0) { + throw new Error("No annotation provided for id " + id); + } + this._annotations[id] = annotation; + this._size++; + return id; + }; + ChangeAnnotations2.prototype.nextId = function() { + this._counter++; + return this._counter.toString(); + }; + return ChangeAnnotations2; + }(); var WorkspaceChange = function() { function WorkspaceChange2(workspaceEdit) { var _this = this; this._textEditChanges = Object.create(null); - if (workspaceEdit) { + if (workspaceEdit !== void 0) { this._workspaceEdit = workspaceEdit; if (workspaceEdit.documentChanges) { + this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations); + workspaceEdit.changeAnnotations = this._changeAnnotations.all(); workspaceEdit.documentChanges.forEach(function(change) { if (TextDocumentEdit.is(change)) { - var textEditChange = new TextEditChangeImpl(change.edits); + var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations); _this._textEditChanges[change.textDocument.uri] = textEditChange; } }); @@ -2489,26 +3586,32 @@ var require_main2 = __commonJS((exports2) => { _this._textEditChanges[key] = textEditChange; }); } + } else { + this._workspaceEdit = {}; } } Object.defineProperty(WorkspaceChange2.prototype, "edit", { get: function() { + this.initDocumentChanges(); + if (this._changeAnnotations !== void 0) { + if (this._changeAnnotations.size === 0) { + this._workspaceEdit.changeAnnotations = void 0; + } else { + this._workspaceEdit.changeAnnotations = this._changeAnnotations.all(); + } + } return this._workspaceEdit; }, - enumerable: true, + enumerable: false, configurable: true }); WorkspaceChange2.prototype.getTextEditChange = function(key) { - if (VersionedTextDocumentIdentifier.is(key)) { - if (!this._workspaceEdit) { - this._workspaceEdit = { - documentChanges: [] - }; - } - if (!this._workspaceEdit.documentChanges) { + if (OptionalVersionedTextDocumentIdentifier.is(key)) { + this.initDocumentChanges(); + if (this._workspaceEdit.documentChanges === void 0) { throw new Error("Workspace edit is not configured for document changes."); } - var textDocument = key; + var textDocument = {uri: key.uri, version: key.version}; var result = this._textEditChanges[textDocument.uri]; if (!result) { var edits = []; @@ -2517,17 +3620,13 @@ var require_main2 = __commonJS((exports2) => { edits }; this._workspaceEdit.documentChanges.push(textDocumentEdit); - result = new TextEditChangeImpl(edits); + result = new TextEditChangeImpl(edits, this._changeAnnotations); this._textEditChanges[textDocument.uri] = result; } return result; } else { - if (!this._workspaceEdit) { - this._workspaceEdit = { - changes: Object.create(null) - }; - } - if (!this._workspaceEdit.changes) { + this.initChanges(); + if (this._workspaceEdit.changes === void 0) { throw new Error("Workspace edit is not configured for normal text edit changes."); } var result = this._textEditChanges[key]; @@ -2540,22 +3639,89 @@ var require_main2 = __commonJS((exports2) => { return result; } }; - WorkspaceChange2.prototype.createFile = function(uri, options) { - this.checkDocumentChanges(); - this._workspaceEdit.documentChanges.push(CreateFile.create(uri, options)); + WorkspaceChange2.prototype.initDocumentChanges = function() { + if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) { + this._changeAnnotations = new ChangeAnnotations(); + this._workspaceEdit.documentChanges = []; + this._workspaceEdit.changeAnnotations = this._changeAnnotations.all(); + } + }; + WorkspaceChange2.prototype.initChanges = function() { + if (this._workspaceEdit.documentChanges === void 0 && this._workspaceEdit.changes === void 0) { + this._workspaceEdit.changes = Object.create(null); + } }; - WorkspaceChange2.prototype.renameFile = function(oldUri, newUri, options) { - this.checkDocumentChanges(); - this._workspaceEdit.documentChanges.push(RenameFile.create(oldUri, newUri, options)); + WorkspaceChange2.prototype.createFile = function(uri, optionsOrAnnotation, options) { + this.initDocumentChanges(); + if (this._workspaceEdit.documentChanges === void 0) { + throw new Error("Workspace edit is not configured for document changes."); + } + var annotation; + if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) { + annotation = optionsOrAnnotation; + } else { + options = optionsOrAnnotation; + } + var operation; + var id; + if (annotation === void 0) { + operation = CreateFile.create(uri, options); + } else { + id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation); + operation = CreateFile.create(uri, options, id); + } + this._workspaceEdit.documentChanges.push(operation); + if (id !== void 0) { + return id; + } }; - WorkspaceChange2.prototype.deleteFile = function(uri, options) { - this.checkDocumentChanges(); - this._workspaceEdit.documentChanges.push(DeleteFile.create(uri, options)); + WorkspaceChange2.prototype.renameFile = function(oldUri, newUri, optionsOrAnnotation, options) { + this.initDocumentChanges(); + if (this._workspaceEdit.documentChanges === void 0) { + throw new Error("Workspace edit is not configured for document changes."); + } + var annotation; + if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) { + annotation = optionsOrAnnotation; + } else { + options = optionsOrAnnotation; + } + var operation; + var id; + if (annotation === void 0) { + operation = RenameFile.create(oldUri, newUri, options); + } else { + id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation); + operation = RenameFile.create(oldUri, newUri, options, id); + } + this._workspaceEdit.documentChanges.push(operation); + if (id !== void 0) { + return id; + } }; - WorkspaceChange2.prototype.checkDocumentChanges = function() { - if (!this._workspaceEdit || !this._workspaceEdit.documentChanges) { + WorkspaceChange2.prototype.deleteFile = function(uri, optionsOrAnnotation, options) { + this.initDocumentChanges(); + if (this._workspaceEdit.documentChanges === void 0) { throw new Error("Workspace edit is not configured for document changes."); } + var annotation; + if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) { + annotation = optionsOrAnnotation; + } else { + options = optionsOrAnnotation; + } + var operation; + var id; + if (annotation === void 0) { + operation = DeleteFile.create(uri, options); + } else { + id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation); + operation = DeleteFile.create(uri, options, id); + } + this._workspaceEdit.documentChanges.push(operation); + if (id !== void 0) { + return id; + } }; return WorkspaceChange2; }(); @@ -2579,10 +3745,22 @@ var require_main2 = __commonJS((exports2) => { VersionedTextDocumentIdentifier2.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.number(candidate.version)); + return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version); } VersionedTextDocumentIdentifier2.is = is2; })(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {})); + var OptionalVersionedTextDocumentIdentifier; + (function(OptionalVersionedTextDocumentIdentifier2) { + function create(uri, version) { + return {uri, version}; + } + OptionalVersionedTextDocumentIdentifier2.create = create; + function is2(value) { + var candidate = value; + return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version)); + } + OptionalVersionedTextDocumentIdentifier2.is = is2; + })(OptionalVersionedTextDocumentIdentifier || (OptionalVersionedTextDocumentIdentifier = {})); var TextDocumentItem; (function(TextDocumentItem2) { function create(uri, languageId, version, text) { @@ -2591,7 +3769,7 @@ var require_main2 = __commonJS((exports2) => { TextDocumentItem2.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.number(candidate.version) && Is.string(candidate.text); + return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text); } TextDocumentItem2.is = is2; })(TextDocumentItem || (TextDocumentItem = {})); @@ -2648,10 +3826,27 @@ var require_main2 = __commonJS((exports2) => { InsertTextFormat4.PlainText = 1; InsertTextFormat4.Snippet = 2; })(InsertTextFormat3 || (InsertTextFormat3 = {})); - var CompletionItemTag; - (function(CompletionItemTag2) { - CompletionItemTag2.Deprecated = 1; - })(CompletionItemTag || (CompletionItemTag = {})); + var CompletionItemTag2; + (function(CompletionItemTag3) { + CompletionItemTag3.Deprecated = 1; + })(CompletionItemTag2 || (CompletionItemTag2 = {})); + var InsertReplaceEdit; + (function(InsertReplaceEdit2) { + function create(newText, insert, replace) { + return {newText, insert, replace}; + } + InsertReplaceEdit2.create = create; + function is2(value) { + var candidate = value; + return candidate && Is.string(candidate.newText) && Range17.is(candidate.insert) && Range17.is(candidate.replace); + } + InsertReplaceEdit2.is = is2; + })(InsertReplaceEdit || (InsertReplaceEdit = {})); + var InsertTextMode; + (function(InsertTextMode2) { + InsertTextMode2.asIs = 1; + InsertTextMode2.adjustIndentation = 2; + })(InsertTextMode || (InsertTextMode = {})); var CompletionItem4; (function(CompletionItem5) { function create(label) { @@ -2682,7 +3877,7 @@ var require_main2 = __commonJS((exports2) => { (function(Hover2) { function is2(value) { var candidate = value; - return !!candidate && Is.objectLiteral(candidate) && (MarkupContent3.is(candidate.contents) || MarkedString.is(candidate.contents) || Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range15.is(value.range)); + 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)); } Hover2.is = is2; })(Hover || (Hover = {})); @@ -2730,39 +3925,39 @@ var require_main2 = __commonJS((exports2) => { } DocumentHighlight3.create = create; })(DocumentHighlight2 || (DocumentHighlight2 = {})); - var SymbolKind3; - (function(SymbolKind4) { - SymbolKind4.File = 1; - SymbolKind4.Module = 2; - SymbolKind4.Namespace = 3; - SymbolKind4.Package = 4; - SymbolKind4.Class = 5; - SymbolKind4.Method = 6; - SymbolKind4.Property = 7; - SymbolKind4.Field = 8; - SymbolKind4.Constructor = 9; - SymbolKind4.Enum = 10; - SymbolKind4.Interface = 11; - SymbolKind4.Function = 12; - SymbolKind4.Variable = 13; - SymbolKind4.Constant = 14; - SymbolKind4.String = 15; - SymbolKind4.Number = 16; - SymbolKind4.Boolean = 17; - SymbolKind4.Array = 18; - SymbolKind4.Object = 19; - SymbolKind4.Key = 20; - SymbolKind4.Null = 21; - SymbolKind4.EnumMember = 22; - SymbolKind4.Struct = 23; - SymbolKind4.Event = 24; - SymbolKind4.Operator = 25; - SymbolKind4.TypeParameter = 26; - })(SymbolKind3 || (SymbolKind3 = {})); - var SymbolTag; - (function(SymbolTag2) { - SymbolTag2.Deprecated = 1; - })(SymbolTag || (SymbolTag = {})); + var SymbolKind5; + (function(SymbolKind6) { + SymbolKind6.File = 1; + SymbolKind6.Module = 2; + SymbolKind6.Namespace = 3; + SymbolKind6.Package = 4; + SymbolKind6.Class = 5; + SymbolKind6.Method = 6; + SymbolKind6.Property = 7; + SymbolKind6.Field = 8; + SymbolKind6.Constructor = 9; + SymbolKind6.Enum = 10; + SymbolKind6.Interface = 11; + SymbolKind6.Function = 12; + SymbolKind6.Variable = 13; + SymbolKind6.Constant = 14; + SymbolKind6.String = 15; + SymbolKind6.Number = 16; + SymbolKind6.Boolean = 17; + SymbolKind6.Array = 18; + SymbolKind6.Object = 19; + SymbolKind6.Key = 20; + SymbolKind6.Null = 21; + SymbolKind6.EnumMember = 22; + SymbolKind6.Struct = 23; + SymbolKind6.Event = 24; + SymbolKind6.Operator = 25; + SymbolKind6.TypeParameter = 26; + })(SymbolKind5 || (SymbolKind5 = {})); + var SymbolTag4; + (function(SymbolTag5) { + SymbolTag5.Deprecated = 1; + })(SymbolTag4 || (SymbolTag4 = {})); var SymbolInformation2; (function(SymbolInformation3) { function create(name, kind, range, uri, containerName) { @@ -2796,7 +3991,7 @@ var require_main2 = __commonJS((exports2) => { DocumentSymbol3.create = create; function is2(value) { var candidate = value; - return candidate && Is.string(candidate.name) && Is.number(candidate.kind) && Range15.is(candidate.range) && Range15.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)); + 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)); } DocumentSymbol3.is = is2; })(DocumentSymbol2 || (DocumentSymbol2 = {})); @@ -2824,20 +4019,24 @@ var require_main2 = __commonJS((exports2) => { CodeActionContext7.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic5.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string)); + return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic6.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string)); } CodeActionContext7.is = is2; })(CodeActionContext6 || (CodeActionContext6 = {})); var CodeAction6; (function(CodeAction7) { - function create(title, commandOrEdit, kind) { + function create(title, kindOrCommandOrEdit, kind) { var result = {title}; - if (Command5.is(commandOrEdit)) { - result.command = commandOrEdit; + var checkKind = true; + if (typeof kindOrCommandOrEdit === "string") { + checkKind = false; + result.kind = kindOrCommandOrEdit; + } else if (Command5.is(kindOrCommandOrEdit)) { + result.command = kindOrCommandOrEdit; } else { - result.edit = commandOrEdit; + result.edit = kindOrCommandOrEdit; } - if (kind !== void 0) { + if (checkKind && kind !== void 0) { result.kind = kind; } return result; @@ -2845,7 +4044,7 @@ var require_main2 = __commonJS((exports2) => { CodeAction7.create = create; function is2(value) { var candidate = value; - return candidate && Is.string(candidate.title) && (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic5.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)); + 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)); } CodeAction7.is = is2; })(CodeAction6 || (CodeAction6 = {})); @@ -2861,7 +4060,7 @@ var require_main2 = __commonJS((exports2) => { CodeLens3.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Range15.is(candidate.range) && (Is.undefined(candidate.command) || Command5.is(candidate.command)); + return Is.defined(candidate) && Range17.is(candidate.range) && (Is.undefined(candidate.command) || Command5.is(candidate.command)); } CodeLens3.is = is2; })(CodeLens2 || (CodeLens2 = {})); @@ -2873,7 +4072,7 @@ var require_main2 = __commonJS((exports2) => { FormattingOptions2.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Is.number(candidate.tabSize) && Is.boolean(candidate.insertSpaces); + return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces); } FormattingOptions2.is = is2; })(FormattingOptions || (FormattingOptions = {})); @@ -2885,7 +4084,7 @@ var require_main2 = __commonJS((exports2) => { DocumentLink2.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Range15.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target)); + return Is.defined(candidate) && Range17.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target)); } DocumentLink2.is = is2; })(DocumentLink || (DocumentLink = {})); @@ -2897,22 +4096,22 @@ var require_main2 = __commonJS((exports2) => { SelectionRange2.create = create; function is2(value) { var candidate = value; - return candidate !== void 0 && Range15.is(candidate.range) && (candidate.parent === void 0 || SelectionRange2.is(candidate.parent)); + return candidate !== void 0 && Range17.is(candidate.range) && (candidate.parent === void 0 || SelectionRange2.is(candidate.parent)); } SelectionRange2.is = is2; })(SelectionRange || (SelectionRange = {})); var EOL = ["\n", "\r\n", "\r"]; - var TextDocument11; - (function(TextDocument12) { + var TextDocument13; + (function(TextDocument14) { function create(uri, languageId, version, content) { return new FullTextDocument(uri, languageId, version, content); } - TextDocument12.create = create; + TextDocument14.create = create; function is2(value) { var candidate = value; - return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.number(candidate.lineCount) && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false; + 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; } - TextDocument12.is = is2; + TextDocument14.is = is2; function applyEdits(document, edits) { var text = document.getText(); var sortedEdits = mergeSort(edits, function(a, b) { @@ -2936,7 +4135,7 @@ var require_main2 = __commonJS((exports2) => { } return text; } - TextDocument12.applyEdits = applyEdits; + TextDocument14.applyEdits = applyEdits; function mergeSort(data, compare) { if (data.length <= 1) { return data; @@ -2965,7 +4164,7 @@ var require_main2 = __commonJS((exports2) => { } return data; } - })(TextDocument11 || (TextDocument11 = {})); + })(TextDocument13 || (TextDocument13 = {})); var FullTextDocument = function() { function FullTextDocument2(uri, languageId, version, content) { this._uri = uri; @@ -2978,21 +4177,21 @@ var require_main2 = __commonJS((exports2) => { get: function() { return this._uri; }, - enumerable: true, + enumerable: false, configurable: true }); Object.defineProperty(FullTextDocument2.prototype, "languageId", { get: function() { return this._languageId; }, - enumerable: true, + enumerable: false, configurable: true }); Object.defineProperty(FullTextDocument2.prototype, "version", { get: function() { return this._version; }, - enumerable: true, + enumerable: false, configurable: true }); FullTextDocument2.prototype.getText = function(range) { @@ -3036,7 +4235,7 @@ var require_main2 = __commonJS((exports2) => { var lineOffsets = this.getLineOffsets(); var low = 0, high = lineOffsets.length; if (high === 0) { - return Position7.create(0, offset); + return Position10.create(0, offset); } while (low < high) { var mid = Math.floor((low + high) / 2); @@ -3047,7 +4246,7 @@ var require_main2 = __commonJS((exports2) => { } } var line = low - 1; - return Position7.create(line, offset - lineOffsets[line]); + return Position10.create(line, offset - lineOffsets[line]); }; FullTextDocument2.prototype.offsetAt = function(position) { var lineOffsets = this.getLineOffsets(); @@ -3064,7 +4263,7 @@ var require_main2 = __commonJS((exports2) => { get: function() { return this.getLineOffsets().length; }, - enumerable: true, + enumerable: false, configurable: true }); return FullTextDocument2; @@ -3092,6 +4291,18 @@ var require_main2 = __commonJS((exports2) => { return toString2.call(value) === "[object Number]"; } Is2.number = number; + function numberRange(value, min, max) { + return toString2.call(value) === "[object Number]" && min <= value && value <= max; + } + Is2.numberRange = numberRange; + function integer2(value) { + return toString2.call(value) === "[object Number]" && -2147483648 <= value && value <= 2147483647; + } + Is2.integer = integer2; + function uinteger2(value) { + return toString2.call(value) === "[object Number]" && 0 <= value && value <= 2147483647; + } + Is2.uinteger = uinteger2; function func(value) { return toString2.call(value) === "[object Function]"; } @@ -3107,10 +4318,49 @@ var require_main2 = __commonJS((exports2) => { })(Is || (Is = {})); }); -// node_modules/vscode-languageserver-protocol/lib/utils/is.js +// node_modules/vscode-languageserver-protocol/lib/common/messages.js +var require_messages2 = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.ProtocolNotificationType = exports2.ProtocolNotificationType0 = exports2.ProtocolRequestType = exports2.ProtocolRequestType0 = exports2.RegistrationType = void 0; + var vscode_jsonrpc_1 = require_main(); + var RegistrationType = class { + constructor(method) { + this.method = method; + } + }; + exports2.RegistrationType = RegistrationType; + var ProtocolRequestType0 = class extends vscode_jsonrpc_1.RequestType0 { + constructor(method) { + super(method); + } + }; + exports2.ProtocolRequestType0 = ProtocolRequestType0; + var ProtocolRequestType = class extends vscode_jsonrpc_1.RequestType { + constructor(method) { + super(method, vscode_jsonrpc_1.ParameterStructures.byName); + } + }; + exports2.ProtocolRequestType = ProtocolRequestType; + var ProtocolNotificationType0 = class extends vscode_jsonrpc_1.NotificationType0 { + constructor(method) { + super(method); + } + }; + exports2.ProtocolNotificationType0 = ProtocolNotificationType0; + var ProtocolNotificationType = class extends vscode_jsonrpc_1.NotificationType { + constructor(method) { + super(method, vscode_jsonrpc_1.ParameterStructures.byName); + } + }; + exports2.ProtocolNotificationType = ProtocolNotificationType; +}); + +// node_modules/vscode-languageserver-protocol/lib/common/utils/is.js var require_is2 = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.objectLiteral = exports2.typedArray = exports2.stringArray = exports2.array = exports2.func = exports2.error = exports2.number = exports2.string = exports2.boolean = void 0; function boolean2(value) { return value === true || value === false; } @@ -3149,69 +4399,37 @@ var require_is2 = __commonJS((exports2) => { exports2.objectLiteral = objectLiteral; }); -// node_modules/vscode-languageserver-protocol/lib/messages.js -var require_messages2 = __commonJS((exports2) => { - "use strict"; - Object.defineProperty(exports2, "__esModule", {value: true}); - var vscode_jsonrpc_1 = require_main(); - var ProtocolRequestType0 = class extends vscode_jsonrpc_1.RequestType0 { - constructor(method) { - super(method); - } - }; - exports2.ProtocolRequestType0 = ProtocolRequestType0; - var ProtocolRequestType = class extends vscode_jsonrpc_1.RequestType { - constructor(method) { - super(method); - } - }; - exports2.ProtocolRequestType = ProtocolRequestType; - var ProtocolNotificationType = class extends vscode_jsonrpc_1.NotificationType { - constructor(method) { - super(method); - } - }; - exports2.ProtocolNotificationType = ProtocolNotificationType; - var ProtocolNotificationType0 = class extends vscode_jsonrpc_1.NotificationType0 { - constructor(method) { - super(method); - } - }; - exports2.ProtocolNotificationType0 = ProtocolNotificationType0; -}); - -// node_modules/vscode-languageserver-protocol/lib/protocol.implementation.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js var require_protocol_implementation = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var vscode_jsonrpc_1 = require_main(); + exports2.ImplementationRequest = void 0; var messages_1 = require_messages2(); var ImplementationRequest; (function(ImplementationRequest2) { ImplementationRequest2.method = "textDocument/implementation"; ImplementationRequest2.type = new messages_1.ProtocolRequestType(ImplementationRequest2.method); - ImplementationRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(ImplementationRequest = exports2.ImplementationRequest || (exports2.ImplementationRequest = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.typeDefinition.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js var require_protocol_typeDefinition = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var vscode_jsonrpc_1 = require_main(); + exports2.TypeDefinitionRequest = void 0; var messages_1 = require_messages2(); var TypeDefinitionRequest; (function(TypeDefinitionRequest2) { TypeDefinitionRequest2.method = "textDocument/typeDefinition"; TypeDefinitionRequest2.type = new messages_1.ProtocolRequestType(TypeDefinitionRequest2.method); - TypeDefinitionRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(TypeDefinitionRequest = exports2.TypeDefinitionRequest || (exports2.TypeDefinitionRequest = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.workspaceFolders.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolders.js var require_protocol_workspaceFolders = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.DidChangeWorkspaceFoldersNotification = exports2.WorkspaceFoldersRequest = void 0; var messages_1 = require_messages2(); var WorkspaceFoldersRequest; (function(WorkspaceFoldersRequest2) { @@ -3223,10 +4441,11 @@ var require_protocol_workspaceFolders = __commonJS((exports2) => { })(DidChangeWorkspaceFoldersNotification = exports2.DidChangeWorkspaceFoldersNotification || (exports2.DidChangeWorkspaceFoldersNotification = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.configuration.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js var require_protocol_configuration = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.ConfigurationRequest = void 0; var messages_1 = require_messages2(); var ConfigurationRequest; (function(ConfigurationRequest2) { @@ -3234,17 +4453,16 @@ var require_protocol_configuration = __commonJS((exports2) => { })(ConfigurationRequest = exports2.ConfigurationRequest || (exports2.ConfigurationRequest = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.colorProvider.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js var require_protocol_colorProvider = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var vscode_jsonrpc_1 = require_main(); + exports2.ColorPresentationRequest = exports2.DocumentColorRequest = void 0; var messages_1 = require_messages2(); var DocumentColorRequest; (function(DocumentColorRequest2) { DocumentColorRequest2.method = "textDocument/documentColor"; DocumentColorRequest2.type = new messages_1.ProtocolRequestType(DocumentColorRequest2.method); - DocumentColorRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(DocumentColorRequest = exports2.DocumentColorRequest || (exports2.DocumentColorRequest = {})); var ColorPresentationRequest; (function(ColorPresentationRequest2) { @@ -3252,11 +4470,11 @@ var require_protocol_colorProvider = __commonJS((exports2) => { })(ColorPresentationRequest = exports2.ColorPresentationRequest || (exports2.ColorPresentationRequest = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.foldingRange.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js var require_protocol_foldingRange = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var vscode_jsonrpc_1 = require_main(); + exports2.FoldingRangeRequest = exports2.FoldingRangeKind = void 0; var messages_1 = require_messages2(); var FoldingRangeKind; (function(FoldingRangeKind2) { @@ -3268,47 +4486,49 @@ var require_protocol_foldingRange = __commonJS((exports2) => { (function(FoldingRangeRequest2) { FoldingRangeRequest2.method = "textDocument/foldingRange"; FoldingRangeRequest2.type = new messages_1.ProtocolRequestType(FoldingRangeRequest2.method); - FoldingRangeRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(FoldingRangeRequest = exports2.FoldingRangeRequest || (exports2.FoldingRangeRequest = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.declaration.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js var require_protocol_declaration = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var vscode_jsonrpc_1 = require_main(); + exports2.DeclarationRequest = void 0; var messages_1 = require_messages2(); var DeclarationRequest; (function(DeclarationRequest2) { DeclarationRequest2.method = "textDocument/declaration"; DeclarationRequest2.type = new messages_1.ProtocolRequestType(DeclarationRequest2.method); - DeclarationRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(DeclarationRequest = exports2.DeclarationRequest || (exports2.DeclarationRequest = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.selectionRange.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js var require_protocol_selectionRange = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var vscode_jsonrpc_1 = require_main(); + exports2.SelectionRangeRequest = void 0; var messages_1 = require_messages2(); var SelectionRangeRequest; (function(SelectionRangeRequest2) { SelectionRangeRequest2.method = "textDocument/selectionRange"; SelectionRangeRequest2.type = new messages_1.ProtocolRequestType(SelectionRangeRequest2.method); - SelectionRangeRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(SelectionRangeRequest = exports2.SelectionRangeRequest || (exports2.SelectionRangeRequest = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.progress.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js var require_protocol_progress = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCreateRequest = exports2.WorkDoneProgress = void 0; var vscode_jsonrpc_1 = require_main(); var messages_1 = require_messages2(); var WorkDoneProgress; (function(WorkDoneProgress2) { WorkDoneProgress2.type = new vscode_jsonrpc_1.ProgressType(); + function is2(value) { + return value === WorkDoneProgress2.type; + } + WorkDoneProgress2.is = is2; })(WorkDoneProgress = exports2.WorkDoneProgress || (exports2.WorkDoneProgress = {})); var WorkDoneProgressCreateRequest; (function(WorkDoneProgressCreateRequest2) { @@ -3320,35 +4540,342 @@ var require_protocol_progress = __commonJS((exports2) => { })(WorkDoneProgressCancelNotification = exports2.WorkDoneProgressCancelNotification || (exports2.WorkDoneProgressCancelNotification = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.js +// node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js +var require_protocol_callHierarchy = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyIncomingCallsRequest = exports2.CallHierarchyPrepareRequest = void 0; + var messages_1 = require_messages2(); + var CallHierarchyPrepareRequest; + (function(CallHierarchyPrepareRequest2) { + CallHierarchyPrepareRequest2.method = "textDocument/prepareCallHierarchy"; + CallHierarchyPrepareRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest2.method); + })(CallHierarchyPrepareRequest = exports2.CallHierarchyPrepareRequest || (exports2.CallHierarchyPrepareRequest = {})); + var CallHierarchyIncomingCallsRequest; + (function(CallHierarchyIncomingCallsRequest2) { + CallHierarchyIncomingCallsRequest2.method = "callHierarchy/incomingCalls"; + CallHierarchyIncomingCallsRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest2.method); + })(CallHierarchyIncomingCallsRequest = exports2.CallHierarchyIncomingCallsRequest || (exports2.CallHierarchyIncomingCallsRequest = {})); + var CallHierarchyOutgoingCallsRequest; + (function(CallHierarchyOutgoingCallsRequest2) { + CallHierarchyOutgoingCallsRequest2.method = "callHierarchy/outgoingCalls"; + CallHierarchyOutgoingCallsRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest2.method); + })(CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyOutgoingCallsRequest || (exports2.CallHierarchyOutgoingCallsRequest = {})); +}); + +// node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js +var require_protocol_semanticTokens = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.SemanticTokensRefreshRequest = exports2.SemanticTokensRangeRequest = exports2.SemanticTokensDeltaRequest = exports2.SemanticTokensRequest = exports2.SemanticTokensRegistrationType = exports2.TokenFormat = exports2.SemanticTokens = exports2.SemanticTokenModifiers = exports2.SemanticTokenTypes = void 0; + var messages_1 = require_messages2(); + var SemanticTokenTypes; + (function(SemanticTokenTypes2) { + SemanticTokenTypes2["namespace"] = "namespace"; + SemanticTokenTypes2["type"] = "type"; + SemanticTokenTypes2["class"] = "class"; + SemanticTokenTypes2["enum"] = "enum"; + SemanticTokenTypes2["interface"] = "interface"; + SemanticTokenTypes2["struct"] = "struct"; + SemanticTokenTypes2["typeParameter"] = "typeParameter"; + SemanticTokenTypes2["parameter"] = "parameter"; + SemanticTokenTypes2["variable"] = "variable"; + SemanticTokenTypes2["property"] = "property"; + SemanticTokenTypes2["enumMember"] = "enumMember"; + SemanticTokenTypes2["event"] = "event"; + SemanticTokenTypes2["function"] = "function"; + SemanticTokenTypes2["method"] = "method"; + SemanticTokenTypes2["macro"] = "macro"; + SemanticTokenTypes2["keyword"] = "keyword"; + SemanticTokenTypes2["modifier"] = "modifier"; + SemanticTokenTypes2["comment"] = "comment"; + SemanticTokenTypes2["string"] = "string"; + SemanticTokenTypes2["number"] = "number"; + SemanticTokenTypes2["regexp"] = "regexp"; + SemanticTokenTypes2["operator"] = "operator"; + })(SemanticTokenTypes = exports2.SemanticTokenTypes || (exports2.SemanticTokenTypes = {})); + var SemanticTokenModifiers; + (function(SemanticTokenModifiers2) { + SemanticTokenModifiers2["declaration"] = "declaration"; + SemanticTokenModifiers2["definition"] = "definition"; + SemanticTokenModifiers2["readonly"] = "readonly"; + SemanticTokenModifiers2["static"] = "static"; + SemanticTokenModifiers2["deprecated"] = "deprecated"; + SemanticTokenModifiers2["abstract"] = "abstract"; + SemanticTokenModifiers2["async"] = "async"; + SemanticTokenModifiers2["modification"] = "modification"; + SemanticTokenModifiers2["documentation"] = "documentation"; + SemanticTokenModifiers2["defaultLibrary"] = "defaultLibrary"; + })(SemanticTokenModifiers = exports2.SemanticTokenModifiers || (exports2.SemanticTokenModifiers = {})); + var SemanticTokens; + (function(SemanticTokens2) { + function is2(value) { + const candidate = value; + 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"); + } + SemanticTokens2.is = is2; + })(SemanticTokens = exports2.SemanticTokens || (exports2.SemanticTokens = {})); + var TokenFormat; + (function(TokenFormat2) { + TokenFormat2.Relative = "relative"; + })(TokenFormat = exports2.TokenFormat || (exports2.TokenFormat = {})); + var SemanticTokensRegistrationType; + (function(SemanticTokensRegistrationType2) { + SemanticTokensRegistrationType2.method = "textDocument/semanticTokens"; + SemanticTokensRegistrationType2.type = new messages_1.RegistrationType(SemanticTokensRegistrationType2.method); + })(SemanticTokensRegistrationType = exports2.SemanticTokensRegistrationType || (exports2.SemanticTokensRegistrationType = {})); + var SemanticTokensRequest; + (function(SemanticTokensRequest2) { + SemanticTokensRequest2.method = "textDocument/semanticTokens/full"; + SemanticTokensRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensRequest2.method); + })(SemanticTokensRequest = exports2.SemanticTokensRequest || (exports2.SemanticTokensRequest = {})); + var SemanticTokensDeltaRequest; + (function(SemanticTokensDeltaRequest2) { + SemanticTokensDeltaRequest2.method = "textDocument/semanticTokens/full/delta"; + SemanticTokensDeltaRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensDeltaRequest2.method); + })(SemanticTokensDeltaRequest = exports2.SemanticTokensDeltaRequest || (exports2.SemanticTokensDeltaRequest = {})); + var SemanticTokensRangeRequest; + (function(SemanticTokensRangeRequest2) { + SemanticTokensRangeRequest2.method = "textDocument/semanticTokens/range"; + SemanticTokensRangeRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest2.method); + })(SemanticTokensRangeRequest = exports2.SemanticTokensRangeRequest || (exports2.SemanticTokensRangeRequest = {})); + var SemanticTokensRefreshRequest; + (function(SemanticTokensRefreshRequest2) { + SemanticTokensRefreshRequest2.method = `workspace/semanticTokens/refresh`; + SemanticTokensRefreshRequest2.type = new messages_1.ProtocolRequestType0(SemanticTokensRefreshRequest2.method); + })(SemanticTokensRefreshRequest = exports2.SemanticTokensRefreshRequest || (exports2.SemanticTokensRefreshRequest = {})); +}); + +// node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js +var require_protocol_showDocument = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.ShowDocumentRequest = void 0; + var messages_1 = require_messages2(); + var ShowDocumentRequest; + (function(ShowDocumentRequest2) { + ShowDocumentRequest2.method = "window/showDocument"; + ShowDocumentRequest2.type = new messages_1.ProtocolRequestType(ShowDocumentRequest2.method); + })(ShowDocumentRequest = exports2.ShowDocumentRequest || (exports2.ShowDocumentRequest = {})); +}); + +// node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js +var require_protocol_linkedEditingRange = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.LinkedEditingRangeRequest = void 0; + var messages_1 = require_messages2(); + var LinkedEditingRangeRequest; + (function(LinkedEditingRangeRequest2) { + LinkedEditingRangeRequest2.method = "textDocument/linkedEditingRange"; + LinkedEditingRangeRequest2.type = new messages_1.ProtocolRequestType(LinkedEditingRangeRequest2.method); + })(LinkedEditingRangeRequest = exports2.LinkedEditingRangeRequest || (exports2.LinkedEditingRangeRequest = {})); +}); + +// node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js +var require_protocol_fileOperations = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.WillDeleteFilesRequest = exports2.DidDeleteFilesNotification = exports2.DidRenameFilesNotification = exports2.WillRenameFilesRequest = exports2.DidCreateFilesNotification = exports2.WillCreateFilesRequest = exports2.FileOperationPatternKind = void 0; + var messages_1 = require_messages2(); + var FileOperationPatternKind; + (function(FileOperationPatternKind2) { + FileOperationPatternKind2.file = "file"; + FileOperationPatternKind2.folder = "folder"; + })(FileOperationPatternKind = exports2.FileOperationPatternKind || (exports2.FileOperationPatternKind = {})); + var WillCreateFilesRequest; + (function(WillCreateFilesRequest2) { + WillCreateFilesRequest2.method = "workspace/willCreateFiles"; + WillCreateFilesRequest2.type = new messages_1.ProtocolRequestType(WillCreateFilesRequest2.method); + })(WillCreateFilesRequest = exports2.WillCreateFilesRequest || (exports2.WillCreateFilesRequest = {})); + var DidCreateFilesNotification; + (function(DidCreateFilesNotification2) { + DidCreateFilesNotification2.method = "workspace/didCreateFiles"; + DidCreateFilesNotification2.type = new messages_1.ProtocolNotificationType(DidCreateFilesNotification2.method); + })(DidCreateFilesNotification = exports2.DidCreateFilesNotification || (exports2.DidCreateFilesNotification = {})); + var WillRenameFilesRequest; + (function(WillRenameFilesRequest2) { + WillRenameFilesRequest2.method = "workspace/willRenameFiles"; + WillRenameFilesRequest2.type = new messages_1.ProtocolRequestType(WillRenameFilesRequest2.method); + })(WillRenameFilesRequest = exports2.WillRenameFilesRequest || (exports2.WillRenameFilesRequest = {})); + var DidRenameFilesNotification; + (function(DidRenameFilesNotification2) { + DidRenameFilesNotification2.method = "workspace/didRenameFiles"; + DidRenameFilesNotification2.type = new messages_1.ProtocolNotificationType(DidRenameFilesNotification2.method); + })(DidRenameFilesNotification = exports2.DidRenameFilesNotification || (exports2.DidRenameFilesNotification = {})); + var DidDeleteFilesNotification; + (function(DidDeleteFilesNotification2) { + DidDeleteFilesNotification2.method = "workspace/didDeleteFiles"; + DidDeleteFilesNotification2.type = new messages_1.ProtocolNotificationType(DidDeleteFilesNotification2.method); + })(DidDeleteFilesNotification = exports2.DidDeleteFilesNotification || (exports2.DidDeleteFilesNotification = {})); + var WillDeleteFilesRequest; + (function(WillDeleteFilesRequest2) { + WillDeleteFilesRequest2.method = "workspace/willDeleteFiles"; + WillDeleteFilesRequest2.type = new messages_1.ProtocolRequestType(WillDeleteFilesRequest2.method); + })(WillDeleteFilesRequest = exports2.WillDeleteFilesRequest || (exports2.WillDeleteFilesRequest = {})); +}); + +// node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js +var require_protocol_moniker = __commonJS((exports2) => { + "use strict"; + Object.defineProperty(exports2, "__esModule", {value: true}); + exports2.MonikerRequest = exports2.MonikerKind = exports2.UniquenessLevel = void 0; + var messages_1 = require_messages2(); + var UniquenessLevel; + (function(UniquenessLevel2) { + UniquenessLevel2["document"] = "document"; + UniquenessLevel2["project"] = "project"; + UniquenessLevel2["group"] = "group"; + UniquenessLevel2["scheme"] = "scheme"; + UniquenessLevel2["global"] = "global"; + })(UniquenessLevel = exports2.UniquenessLevel || (exports2.UniquenessLevel = {})); + var MonikerKind; + (function(MonikerKind2) { + MonikerKind2["import"] = "import"; + MonikerKind2["export"] = "export"; + MonikerKind2["local"] = "local"; + })(MonikerKind = exports2.MonikerKind || (exports2.MonikerKind = {})); + var MonikerRequest; + (function(MonikerRequest2) { + MonikerRequest2.method = "textDocument/moniker"; + MonikerRequest2.type = new messages_1.ProtocolRequestType(MonikerRequest2.method); + })(MonikerRequest = exports2.MonikerRequest || (exports2.MonikerRequest = {})); +}); + +// node_modules/vscode-languageserver-protocol/lib/common/protocol.js var require_protocol = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); + 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; + 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; var Is = require_is2(); - var vscode_jsonrpc_1 = require_main(); var messages_1 = require_messages2(); var protocol_implementation_1 = require_protocol_implementation(); - exports2.ImplementationRequest = protocol_implementation_1.ImplementationRequest; + Object.defineProperty(exports2, "ImplementationRequest", {enumerable: true, get: function() { + return protocol_implementation_1.ImplementationRequest; + }}); var protocol_typeDefinition_1 = require_protocol_typeDefinition(); - exports2.TypeDefinitionRequest = protocol_typeDefinition_1.TypeDefinitionRequest; + Object.defineProperty(exports2, "TypeDefinitionRequest", {enumerable: true, get: function() { + return protocol_typeDefinition_1.TypeDefinitionRequest; + }}); var protocol_workspaceFolders_1 = require_protocol_workspaceFolders(); - exports2.WorkspaceFoldersRequest = protocol_workspaceFolders_1.WorkspaceFoldersRequest; - exports2.DidChangeWorkspaceFoldersNotification = protocol_workspaceFolders_1.DidChangeWorkspaceFoldersNotification; + Object.defineProperty(exports2, "WorkspaceFoldersRequest", {enumerable: true, get: function() { + return protocol_workspaceFolders_1.WorkspaceFoldersRequest; + }}); + Object.defineProperty(exports2, "DidChangeWorkspaceFoldersNotification", {enumerable: true, get: function() { + return protocol_workspaceFolders_1.DidChangeWorkspaceFoldersNotification; + }}); var protocol_configuration_1 = require_protocol_configuration(); - exports2.ConfigurationRequest = protocol_configuration_1.ConfigurationRequest; + Object.defineProperty(exports2, "ConfigurationRequest", {enumerable: true, get: function() { + return protocol_configuration_1.ConfigurationRequest; + }}); var protocol_colorProvider_1 = require_protocol_colorProvider(); - exports2.DocumentColorRequest = protocol_colorProvider_1.DocumentColorRequest; - exports2.ColorPresentationRequest = protocol_colorProvider_1.ColorPresentationRequest; + Object.defineProperty(exports2, "DocumentColorRequest", {enumerable: true, get: function() { + return protocol_colorProvider_1.DocumentColorRequest; + }}); + Object.defineProperty(exports2, "ColorPresentationRequest", {enumerable: true, get: function() { + return protocol_colorProvider_1.ColorPresentationRequest; + }}); var protocol_foldingRange_1 = require_protocol_foldingRange(); - exports2.FoldingRangeRequest = protocol_foldingRange_1.FoldingRangeRequest; + Object.defineProperty(exports2, "FoldingRangeRequest", {enumerable: true, get: function() { + return protocol_foldingRange_1.FoldingRangeRequest; + }}); var protocol_declaration_1 = require_protocol_declaration(); - exports2.DeclarationRequest = protocol_declaration_1.DeclarationRequest; + Object.defineProperty(exports2, "DeclarationRequest", {enumerable: true, get: function() { + return protocol_declaration_1.DeclarationRequest; + }}); var protocol_selectionRange_1 = require_protocol_selectionRange(); - exports2.SelectionRangeRequest = protocol_selectionRange_1.SelectionRangeRequest; + Object.defineProperty(exports2, "SelectionRangeRequest", {enumerable: true, get: function() { + return protocol_selectionRange_1.SelectionRangeRequest; + }}); var protocol_progress_1 = require_protocol_progress(); - exports2.WorkDoneProgress = protocol_progress_1.WorkDoneProgress; - exports2.WorkDoneProgressCreateRequest = protocol_progress_1.WorkDoneProgressCreateRequest; - exports2.WorkDoneProgressCancelNotification = protocol_progress_1.WorkDoneProgressCancelNotification; + Object.defineProperty(exports2, "WorkDoneProgress", {enumerable: true, get: function() { + return protocol_progress_1.WorkDoneProgress; + }}); + Object.defineProperty(exports2, "WorkDoneProgressCreateRequest", {enumerable: true, get: function() { + return protocol_progress_1.WorkDoneProgressCreateRequest; + }}); + Object.defineProperty(exports2, "WorkDoneProgressCancelNotification", {enumerable: true, get: function() { + return protocol_progress_1.WorkDoneProgressCancelNotification; + }}); + var protocol_callHierarchy_1 = require_protocol_callHierarchy(); + Object.defineProperty(exports2, "CallHierarchyIncomingCallsRequest", {enumerable: true, get: function() { + return protocol_callHierarchy_1.CallHierarchyIncomingCallsRequest; + }}); + Object.defineProperty(exports2, "CallHierarchyOutgoingCallsRequest", {enumerable: true, get: function() { + return protocol_callHierarchy_1.CallHierarchyOutgoingCallsRequest; + }}); + Object.defineProperty(exports2, "CallHierarchyPrepareRequest", {enumerable: true, get: function() { + return protocol_callHierarchy_1.CallHierarchyPrepareRequest; + }}); + var protocol_semanticTokens_1 = require_protocol_semanticTokens(); + Object.defineProperty(exports2, "SemanticTokenTypes", {enumerable: true, get: function() { + return protocol_semanticTokens_1.SemanticTokenTypes; + }}); + Object.defineProperty(exports2, "SemanticTokenModifiers", {enumerable: true, get: function() { + return protocol_semanticTokens_1.SemanticTokenModifiers; + }}); + Object.defineProperty(exports2, "SemanticTokens", {enumerable: true, get: function() { + return protocol_semanticTokens_1.SemanticTokens; + }}); + Object.defineProperty(exports2, "TokenFormat", {enumerable: true, get: function() { + return protocol_semanticTokens_1.TokenFormat; + }}); + Object.defineProperty(exports2, "SemanticTokensRequest", {enumerable: true, get: function() { + return protocol_semanticTokens_1.SemanticTokensRequest; + }}); + Object.defineProperty(exports2, "SemanticTokensDeltaRequest", {enumerable: true, get: function() { + return protocol_semanticTokens_1.SemanticTokensDeltaRequest; + }}); + Object.defineProperty(exports2, "SemanticTokensRangeRequest", {enumerable: true, get: function() { + return protocol_semanticTokens_1.SemanticTokensRangeRequest; + }}); + Object.defineProperty(exports2, "SemanticTokensRefreshRequest", {enumerable: true, get: function() { + return protocol_semanticTokens_1.SemanticTokensRefreshRequest; + }}); + Object.defineProperty(exports2, "SemanticTokensRegistrationType", {enumerable: true, get: function() { + return protocol_semanticTokens_1.SemanticTokensRegistrationType; + }}); + var protocol_showDocument_1 = require_protocol_showDocument(); + Object.defineProperty(exports2, "ShowDocumentRequest", {enumerable: true, get: function() { + return protocol_showDocument_1.ShowDocumentRequest; + }}); + var protocol_linkedEditingRange_1 = require_protocol_linkedEditingRange(); + Object.defineProperty(exports2, "LinkedEditingRangeRequest", {enumerable: true, get: function() { + return protocol_linkedEditingRange_1.LinkedEditingRangeRequest; + }}); + var protocol_fileOperations_1 = require_protocol_fileOperations(); + Object.defineProperty(exports2, "FileOperationPatternKind", {enumerable: true, get: function() { + return protocol_fileOperations_1.FileOperationPatternKind; + }}); + Object.defineProperty(exports2, "DidCreateFilesNotification", {enumerable: true, get: function() { + return protocol_fileOperations_1.DidCreateFilesNotification; + }}); + Object.defineProperty(exports2, "WillCreateFilesRequest", {enumerable: true, get: function() { + return protocol_fileOperations_1.WillCreateFilesRequest; + }}); + Object.defineProperty(exports2, "DidRenameFilesNotification", {enumerable: true, get: function() { + return protocol_fileOperations_1.DidRenameFilesNotification; + }}); + Object.defineProperty(exports2, "WillRenameFilesRequest", {enumerable: true, get: function() { + return protocol_fileOperations_1.WillRenameFilesRequest; + }}); + Object.defineProperty(exports2, "DidDeleteFilesNotification", {enumerable: true, get: function() { + return protocol_fileOperations_1.DidDeleteFilesNotification; + }}); + Object.defineProperty(exports2, "WillDeleteFilesRequest", {enumerable: true, get: function() { + return protocol_fileOperations_1.WillDeleteFilesRequest; + }}); + var protocol_moniker_1 = require_protocol_moniker(); + Object.defineProperty(exports2, "UniquenessLevel", {enumerable: true, get: function() { + return protocol_moniker_1.UniquenessLevel; + }}); + Object.defineProperty(exports2, "MonikerKind", {enumerable: true, get: function() { + return protocol_moniker_1.MonikerKind; + }}); + Object.defineProperty(exports2, "MonikerRequest", {enumerable: true, get: function() { + return protocol_moniker_1.MonikerRequest; + }}); var DocumentFilter; (function(DocumentFilter2) { function is2(value) { @@ -3480,6 +5007,19 @@ var require_protocol = __commonJS((exports2) => { DidOpenTextDocumentNotification2.method = "textDocument/didOpen"; DidOpenTextDocumentNotification2.type = new messages_1.ProtocolNotificationType(DidOpenTextDocumentNotification2.method); })(DidOpenTextDocumentNotification = exports2.DidOpenTextDocumentNotification || (exports2.DidOpenTextDocumentNotification = {})); + var TextDocumentContentChangeEvent2; + (function(TextDocumentContentChangeEvent3) { + function isIncremental(event) { + let candidate = event; + return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range !== void 0 && (candidate.rangeLength === void 0 || typeof candidate.rangeLength === "number"); + } + TextDocumentContentChangeEvent3.isIncremental = isIncremental; + function isFull(event) { + let candidate = event; + return candidate !== void 0 && candidate !== null && typeof candidate.text === "string" && candidate.range === void 0 && candidate.rangeLength === void 0; + } + TextDocumentContentChangeEvent3.isFull = isFull; + })(TextDocumentContentChangeEvent2 = exports2.TextDocumentContentChangeEvent || (exports2.TextDocumentContentChangeEvent = {})); var DidChangeTextDocumentNotification; (function(DidChangeTextDocumentNotification2) { DidChangeTextDocumentNotification2.method = "textDocument/didChange"; @@ -3541,7 +5081,6 @@ var require_protocol = __commonJS((exports2) => { (function(CompletionRequest2) { CompletionRequest2.method = "textDocument/completion"; CompletionRequest2.type = new messages_1.ProtocolRequestType(CompletionRequest2.method); - CompletionRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(CompletionRequest = exports2.CompletionRequest || (exports2.CompletionRequest = {})); var CompletionResolveRequest; (function(CompletionResolveRequest2) { @@ -3568,56 +5107,61 @@ var require_protocol = __commonJS((exports2) => { (function(DefinitionRequest2) { DefinitionRequest2.method = "textDocument/definition"; DefinitionRequest2.type = new messages_1.ProtocolRequestType(DefinitionRequest2.method); - DefinitionRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(DefinitionRequest = exports2.DefinitionRequest || (exports2.DefinitionRequest = {})); var ReferencesRequest; (function(ReferencesRequest2) { ReferencesRequest2.method = "textDocument/references"; ReferencesRequest2.type = new messages_1.ProtocolRequestType(ReferencesRequest2.method); - ReferencesRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(ReferencesRequest = exports2.ReferencesRequest || (exports2.ReferencesRequest = {})); var DocumentHighlightRequest; (function(DocumentHighlightRequest2) { DocumentHighlightRequest2.method = "textDocument/documentHighlight"; DocumentHighlightRequest2.type = new messages_1.ProtocolRequestType(DocumentHighlightRequest2.method); - DocumentHighlightRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(DocumentHighlightRequest = exports2.DocumentHighlightRequest || (exports2.DocumentHighlightRequest = {})); var DocumentSymbolRequest; (function(DocumentSymbolRequest2) { DocumentSymbolRequest2.method = "textDocument/documentSymbol"; DocumentSymbolRequest2.type = new messages_1.ProtocolRequestType(DocumentSymbolRequest2.method); - DocumentSymbolRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(DocumentSymbolRequest = exports2.DocumentSymbolRequest || (exports2.DocumentSymbolRequest = {})); var CodeActionRequest; (function(CodeActionRequest2) { CodeActionRequest2.method = "textDocument/codeAction"; CodeActionRequest2.type = new messages_1.ProtocolRequestType(CodeActionRequest2.method); - CodeActionRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(CodeActionRequest = exports2.CodeActionRequest || (exports2.CodeActionRequest = {})); + var CodeActionResolveRequest; + (function(CodeActionResolveRequest2) { + CodeActionResolveRequest2.method = "codeAction/resolve"; + CodeActionResolveRequest2.type = new messages_1.ProtocolRequestType(CodeActionResolveRequest2.method); + })(CodeActionResolveRequest = exports2.CodeActionResolveRequest || (exports2.CodeActionResolveRequest = {})); var WorkspaceSymbolRequest; (function(WorkspaceSymbolRequest2) { WorkspaceSymbolRequest2.method = "workspace/symbol"; WorkspaceSymbolRequest2.type = new messages_1.ProtocolRequestType(WorkspaceSymbolRequest2.method); - WorkspaceSymbolRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(WorkspaceSymbolRequest = exports2.WorkspaceSymbolRequest || (exports2.WorkspaceSymbolRequest = {})); var CodeLensRequest; (function(CodeLensRequest2) { - CodeLensRequest2.type = new messages_1.ProtocolRequestType("textDocument/codeLens"); - CodeLensRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); + CodeLensRequest2.method = "textDocument/codeLens"; + CodeLensRequest2.type = new messages_1.ProtocolRequestType(CodeLensRequest2.method); })(CodeLensRequest = exports2.CodeLensRequest || (exports2.CodeLensRequest = {})); var CodeLensResolveRequest; (function(CodeLensResolveRequest2) { - CodeLensResolveRequest2.type = new messages_1.ProtocolRequestType("codeLens/resolve"); + CodeLensResolveRequest2.method = "codeLens/resolve"; + CodeLensResolveRequest2.type = new messages_1.ProtocolRequestType(CodeLensResolveRequest2.method); })(CodeLensResolveRequest = exports2.CodeLensResolveRequest || (exports2.CodeLensResolveRequest = {})); + var CodeLensRefreshRequest; + (function(CodeLensRefreshRequest2) { + CodeLensRefreshRequest2.method = `workspace/codeLens/refresh`; + CodeLensRefreshRequest2.type = new messages_1.ProtocolRequestType0(CodeLensRefreshRequest2.method); + })(CodeLensRefreshRequest = exports2.CodeLensRefreshRequest || (exports2.CodeLensRefreshRequest = {})); var DocumentLinkRequest; (function(DocumentLinkRequest2) { DocumentLinkRequest2.method = "textDocument/documentLink"; DocumentLinkRequest2.type = new messages_1.ProtocolRequestType(DocumentLinkRequest2.method); - DocumentLinkRequest2.resultType = new vscode_jsonrpc_1.ProgressType(); })(DocumentLinkRequest = exports2.DocumentLinkRequest || (exports2.DocumentLinkRequest = {})); var DocumentLinkResolveRequest; (function(DocumentLinkResolveRequest2) { - DocumentLinkResolveRequest2.type = new messages_1.ProtocolRequestType("documentLink/resolve"); + DocumentLinkResolveRequest2.method = "documentLink/resolve"; + DocumentLinkResolveRequest2.type = new messages_1.ProtocolRequestType(DocumentLinkResolveRequest2.method); })(DocumentLinkResolveRequest = exports2.DocumentLinkResolveRequest || (exports2.DocumentLinkResolveRequest = {})); var DocumentFormattingRequest; (function(DocumentFormattingRequest2) { @@ -3634,6 +5178,10 @@ var require_protocol = __commonJS((exports2) => { DocumentOnTypeFormattingRequest2.method = "textDocument/onTypeFormatting"; DocumentOnTypeFormattingRequest2.type = new messages_1.ProtocolRequestType(DocumentOnTypeFormattingRequest2.method); })(DocumentOnTypeFormattingRequest = exports2.DocumentOnTypeFormattingRequest || (exports2.DocumentOnTypeFormattingRequest = {})); + var PrepareSupportDefaultBehavior; + (function(PrepareSupportDefaultBehavior2) { + PrepareSupportDefaultBehavior2.Identifier = 1; + })(PrepareSupportDefaultBehavior = exports2.PrepareSupportDefaultBehavior || (exports2.PrepareSupportDefaultBehavior = {})); var RenameRequest; (function(RenameRequest2) { RenameRequest2.method = "textDocument/rename"; @@ -3654,174 +5202,85 @@ var require_protocol = __commonJS((exports2) => { })(ApplyWorkspaceEditRequest = exports2.ApplyWorkspaceEditRequest || (exports2.ApplyWorkspaceEditRequest = {})); }); -// node_modules/vscode-languageserver-protocol/lib/protocol.callHierarchy.proposed.js -var require_protocol_callHierarchy_proposed = __commonJS((exports2) => { +// node_modules/vscode-languageserver-protocol/lib/common/connection.js +var require_connection2 = __commonJS((exports2) => { "use strict"; Object.defineProperty(exports2, "__esModule", {value: true}); - var messages_1 = require_messages2(); - var CallHierarchyPrepareRequest; - (function(CallHierarchyPrepareRequest2) { - CallHierarchyPrepareRequest2.method = "textDocument/prepareCallHierarchy"; - CallHierarchyPrepareRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest2.method); - })(CallHierarchyPrepareRequest = exports2.CallHierarchyPrepareRequest || (exports2.CallHierarchyPrepareRequest = {})); - var CallHierarchyIncomingCallsRequest; - (function(CallHierarchyIncomingCallsRequest2) { - CallHierarchyIncomingCallsRequest2.method = "callHierarchy/incomingCalls"; - CallHierarchyIncomingCallsRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest2.method); - })(CallHierarchyIncomingCallsRequest = exports2.CallHierarchyIncomingCallsRequest || (exports2.CallHierarchyIncomingCallsRequest = {})); - var CallHierarchyOutgoingCallsRequest; - (function(CallHierarchyOutgoingCallsRequest2) { - CallHierarchyOutgoingCallsRequest2.method = "callHierarchy/outgoingCalls"; - CallHierarchyOutgoingCallsRequest2.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest2.method); - })(CallHierarchyOutgoingCallsRequest = exports2.CallHierarchyOutgoingCallsRequest || (exports2.CallHierarchyOutgoingCallsRequest = {})); + exports2.createProtocolConnection = void 0; + var vscode_jsonrpc_1 = require_main(); + function createProtocolConnection(input, output, logger, options) { + if (vscode_jsonrpc_1.ConnectionStrategy.is(options)) { + options = {connectionStrategy: options}; + } + return vscode_jsonrpc_1.createMessageConnection(input, output, logger, options); + } + exports2.createProtocolConnection = createProtocolConnection; }); -// node_modules/vscode-languageserver-protocol/lib/protocol.sematicTokens.proposed.js -var require_protocol_sematicTokens_proposed = __commonJS((exports2) => { +// node_modules/vscode-languageserver-protocol/lib/common/api.js +var require_api2 = __commonJS((exports2) => { "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, {enumerable: true, get: function() { + return m[k]; + }}); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { + for (var p in m) + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) + __createBinding(exports3, m, p); + }; Object.defineProperty(exports2, "__esModule", {value: true}); - var messages_1 = require_messages2(); - var SemanticTokenTypes; - (function(SemanticTokenTypes2) { - SemanticTokenTypes2["comment"] = "comment"; - SemanticTokenTypes2["keyword"] = "keyword"; - SemanticTokenTypes2["string"] = "string"; - SemanticTokenTypes2["number"] = "number"; - SemanticTokenTypes2["regexp"] = "regexp"; - SemanticTokenTypes2["operator"] = "operator"; - SemanticTokenTypes2["namespace"] = "namespace"; - SemanticTokenTypes2["type"] = "type"; - SemanticTokenTypes2["struct"] = "struct"; - SemanticTokenTypes2["class"] = "class"; - SemanticTokenTypes2["interface"] = "interface"; - SemanticTokenTypes2["enum"] = "enum"; - SemanticTokenTypes2["typeParameter"] = "typeParameter"; - SemanticTokenTypes2["function"] = "function"; - SemanticTokenTypes2["member"] = "member"; - SemanticTokenTypes2["property"] = "property"; - SemanticTokenTypes2["macro"] = "macro"; - SemanticTokenTypes2["variable"] = "variable"; - SemanticTokenTypes2["parameter"] = "parameter"; - SemanticTokenTypes2["label"] = "label"; - })(SemanticTokenTypes = exports2.SemanticTokenTypes || (exports2.SemanticTokenTypes = {})); - var SemanticTokenModifiers; - (function(SemanticTokenModifiers2) { - SemanticTokenModifiers2["documentation"] = "documentation"; - SemanticTokenModifiers2["declaration"] = "declaration"; - SemanticTokenModifiers2["definition"] = "definition"; - SemanticTokenModifiers2["reference"] = "reference"; - SemanticTokenModifiers2["static"] = "static"; - SemanticTokenModifiers2["abstract"] = "abstract"; - SemanticTokenModifiers2["deprecated"] = "deprecated"; - SemanticTokenModifiers2["async"] = "async"; - SemanticTokenModifiers2["volatile"] = "volatile"; - SemanticTokenModifiers2["readonly"] = "readonly"; - })(SemanticTokenModifiers = exports2.SemanticTokenModifiers || (exports2.SemanticTokenModifiers = {})); - var SemanticTokens; - (function(SemanticTokens2) { - function is2(value) { - const candidate = value; - 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"); - } - SemanticTokens2.is = is2; - })(SemanticTokens = exports2.SemanticTokens || (exports2.SemanticTokens = {})); - var SemanticTokensRequest; - (function(SemanticTokensRequest2) { - SemanticTokensRequest2.method = "textDocument/semanticTokens"; - SemanticTokensRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensRequest2.method); - })(SemanticTokensRequest = exports2.SemanticTokensRequest || (exports2.SemanticTokensRequest = {})); - var SemanticTokensEditsRequest; - (function(SemanticTokensEditsRequest2) { - SemanticTokensEditsRequest2.method = "textDocument/semanticTokens/edits"; - SemanticTokensEditsRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensEditsRequest2.method); - })(SemanticTokensEditsRequest = exports2.SemanticTokensEditsRequest || (exports2.SemanticTokensEditsRequest = {})); - var SemanticTokensRangeRequest; - (function(SemanticTokensRangeRequest2) { - SemanticTokensRangeRequest2.method = "textDocument/semanticTokens/range"; - SemanticTokensRangeRequest2.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest2.method); - })(SemanticTokensRangeRequest = exports2.SemanticTokensRangeRequest || (exports2.SemanticTokensRangeRequest = {})); + exports2.LSPErrorCodes = exports2.createProtocolConnection = void 0; + __exportStar2(require_main(), exports2); + __exportStar2(require_main2(), exports2); + __exportStar2(require_messages2(), exports2); + __exportStar2(require_protocol(), exports2); + var connection_1 = require_connection2(); + Object.defineProperty(exports2, "createProtocolConnection", {enumerable: true, get: function() { + return connection_1.createProtocolConnection; + }}); + var LSPErrorCodes; + (function(LSPErrorCodes2) { + LSPErrorCodes2.lspReservedErrorRangeStart = -32899; + LSPErrorCodes2.ContentModified = -32801; + LSPErrorCodes2.RequestCancelled = -32800; + LSPErrorCodes2.lspReservedErrorRangeEnd = -32800; + })(LSPErrorCodes = exports2.LSPErrorCodes || (exports2.LSPErrorCodes = {})); }); -// node_modules/vscode-languageserver-protocol/lib/main.js +// node_modules/vscode-languageserver-protocol/lib/node/main.js var require_main3 = __commonJS((exports2) => { "use strict"; - function __export2(m) { + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + Object.defineProperty(o, k2, {enumerable: true, get: function() { + return m[k]; + }}); + } : function(o, m, k, k2) { + if (k2 === void 0) + k2 = k; + o[k2] = m[k]; + }); + var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) - if (!exports2.hasOwnProperty(p)) - exports2[p] = m[p]; - } + if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) + __createBinding(exports3, m, p); + }; Object.defineProperty(exports2, "__esModule", {value: true}); - var vscode_jsonrpc_1 = require_main(); - exports2.ErrorCodes = vscode_jsonrpc_1.ErrorCodes; - exports2.ResponseError = vscode_jsonrpc_1.ResponseError; - exports2.CancellationToken = vscode_jsonrpc_1.CancellationToken; - exports2.CancellationTokenSource = vscode_jsonrpc_1.CancellationTokenSource; - exports2.Disposable = vscode_jsonrpc_1.Disposable; - exports2.Event = vscode_jsonrpc_1.Event; - exports2.Emitter = vscode_jsonrpc_1.Emitter; - exports2.Trace = vscode_jsonrpc_1.Trace; - exports2.TraceFormat = vscode_jsonrpc_1.TraceFormat; - exports2.SetTraceNotification = vscode_jsonrpc_1.SetTraceNotification; - exports2.LogTraceNotification = vscode_jsonrpc_1.LogTraceNotification; - exports2.RequestType = vscode_jsonrpc_1.RequestType; - exports2.RequestType0 = vscode_jsonrpc_1.RequestType0; - exports2.NotificationType = vscode_jsonrpc_1.NotificationType; - exports2.NotificationType0 = vscode_jsonrpc_1.NotificationType0; - exports2.MessageReader = vscode_jsonrpc_1.MessageReader; - exports2.MessageWriter = vscode_jsonrpc_1.MessageWriter; - exports2.ConnectionStrategy = vscode_jsonrpc_1.ConnectionStrategy; - exports2.StreamMessageReader = vscode_jsonrpc_1.StreamMessageReader; - exports2.StreamMessageWriter = vscode_jsonrpc_1.StreamMessageWriter; - exports2.IPCMessageReader = vscode_jsonrpc_1.IPCMessageReader; - exports2.IPCMessageWriter = vscode_jsonrpc_1.IPCMessageWriter; - exports2.createClientPipeTransport = vscode_jsonrpc_1.createClientPipeTransport; - exports2.createServerPipeTransport = vscode_jsonrpc_1.createServerPipeTransport; - exports2.generateRandomPipeName = vscode_jsonrpc_1.generateRandomPipeName; - exports2.createClientSocketTransport = vscode_jsonrpc_1.createClientSocketTransport; - exports2.createServerSocketTransport = vscode_jsonrpc_1.createServerSocketTransport; - exports2.ProgressType = vscode_jsonrpc_1.ProgressType; - __export2(require_main2()); - __export2(require_protocol()); - var callHierarchy = require_protocol_callHierarchy_proposed(); - var st = require_protocol_sematicTokens_proposed(); - var Proposed; - (function(Proposed2) { - let CallHierarchyPrepareRequest; - (function(CallHierarchyPrepareRequest2) { - CallHierarchyPrepareRequest2.method = callHierarchy.CallHierarchyPrepareRequest.method; - CallHierarchyPrepareRequest2.type = callHierarchy.CallHierarchyPrepareRequest.type; - })(CallHierarchyPrepareRequest = Proposed2.CallHierarchyPrepareRequest || (Proposed2.CallHierarchyPrepareRequest = {})); - let CallHierarchyIncomingCallsRequest; - (function(CallHierarchyIncomingCallsRequest2) { - CallHierarchyIncomingCallsRequest2.method = callHierarchy.CallHierarchyIncomingCallsRequest.method; - CallHierarchyIncomingCallsRequest2.type = callHierarchy.CallHierarchyIncomingCallsRequest.type; - })(CallHierarchyIncomingCallsRequest = Proposed2.CallHierarchyIncomingCallsRequest || (Proposed2.CallHierarchyIncomingCallsRequest = {})); - let CallHierarchyOutgoingCallsRequest; - (function(CallHierarchyOutgoingCallsRequest2) { - CallHierarchyOutgoingCallsRequest2.method = callHierarchy.CallHierarchyOutgoingCallsRequest.method; - CallHierarchyOutgoingCallsRequest2.type = callHierarchy.CallHierarchyOutgoingCallsRequest.type; - })(CallHierarchyOutgoingCallsRequest = Proposed2.CallHierarchyOutgoingCallsRequest || (Proposed2.CallHierarchyOutgoingCallsRequest = {})); - Proposed2.SemanticTokenTypes = st.SemanticTokenTypes; - Proposed2.SemanticTokenModifiers = st.SemanticTokenModifiers; - Proposed2.SemanticTokens = st.SemanticTokens; - let SemanticTokensRequest; - (function(SemanticTokensRequest2) { - SemanticTokensRequest2.method = st.SemanticTokensRequest.method; - SemanticTokensRequest2.type = st.SemanticTokensRequest.type; - })(SemanticTokensRequest = Proposed2.SemanticTokensRequest || (Proposed2.SemanticTokensRequest = {})); - let SemanticTokensEditsRequest; - (function(SemanticTokensEditsRequest2) { - SemanticTokensEditsRequest2.method = st.SemanticTokensEditsRequest.method; - SemanticTokensEditsRequest2.type = st.SemanticTokensEditsRequest.type; - })(SemanticTokensEditsRequest = Proposed2.SemanticTokensEditsRequest || (Proposed2.SemanticTokensEditsRequest = {})); - let SemanticTokensRangeRequest; - (function(SemanticTokensRangeRequest2) { - SemanticTokensRangeRequest2.method = st.SemanticTokensRangeRequest.method; - SemanticTokensRangeRequest2.type = st.SemanticTokensRangeRequest.type; - })(SemanticTokensRangeRequest = Proposed2.SemanticTokensRangeRequest || (Proposed2.SemanticTokensRangeRequest = {})); - })(Proposed = exports2.Proposed || (exports2.Proposed = {})); - function createProtocolConnection(reader, writer, logger, strategy) { - return vscode_jsonrpc_1.createMessageConnection(reader, writer, logger, strategy); + exports2.createProtocolConnection = void 0; + var node_1 = require_node(); + __exportStar2(require_node(), exports2); + __exportStar2(require_api2(), exports2); + function createProtocolConnection(input, output, logger, options) { + return node_1.createMessageConnection(input, output, logger, options); } exports2.createProtocolConnection = createProtocolConnection; }); @@ -4450,7 +5909,7 @@ var require_coerce = __commonJS((exports2, module2) => { // node_modules/semver/classes/range.js var require_range = __commonJS((exports2, module2) => { - var Range15 = class { + var Range17 = class { constructor(range, options) { if (!options || typeof options !== "object") { options = { @@ -4458,11 +5917,11 @@ var require_range = __commonJS((exports2, module2) => { includePrerelease: false }; } - if (range instanceof Range15) { + if (range instanceof Range17) { if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) { return range; } else { - return new Range15(range.raw, options); + return new Range17(range.raw, options); } } if (range instanceof Comparator) { @@ -4505,7 +5964,7 @@ var require_range = __commonJS((exports2, module2) => { 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)); } intersects(range, options) { - if (!(range instanceof Range15)) { + if (!(range instanceof Range17)) { throw new TypeError("a Range is required"); } return this.set.some((thisComparators) => { @@ -4537,7 +5996,7 @@ var require_range = __commonJS((exports2, module2) => { return false; } }; - module2.exports = Range15; + module2.exports = Range17; var Comparator = require_comparator(); var debug = require_debug(); var SemVer = require_semver(); @@ -4843,12 +6302,12 @@ var require_comparator = __commonJS((exports2, module2) => { if (this.value === "") { return true; } - return new Range15(comp.value, options).test(this.value); + return new Range17(comp.value, options).test(this.value); } else if (comp.operator === "") { if (comp.value === "") { return true; } - return new Range15(this.value, options).test(comp.semver); + return new Range17(this.value, options).test(comp.semver); } const sameDirectionIncreasing = (this.operator === ">=" || this.operator === ">") && (comp.operator === ">=" || comp.operator === ">"); const sameDirectionDecreasing = (this.operator === "<=" || this.operator === "<") && (comp.operator === "<=" || comp.operator === "<"); @@ -4864,15 +6323,15 @@ var require_comparator = __commonJS((exports2, module2) => { var cmp = require_cmp(); var debug = require_debug(); var SemVer = require_semver(); - var Range15 = require_range(); + var Range17 = require_range(); }); // node_modules/semver/functions/satisfies.js var require_satisfies = __commonJS((exports2, module2) => { - var Range15 = require_range(); + var Range17 = require_range(); var satisfies = (version, range, options) => { try { - range = new Range15(range, options); + range = new Range17(range, options); } catch (er) { return false; } @@ -4883,21 +6342,21 @@ var require_satisfies = __commonJS((exports2, module2) => { // node_modules/semver/ranges/to-comparators.js var require_to_comparators = __commonJS((exports2, module2) => { - var Range15 = require_range(); - var toComparators = (range, options) => new Range15(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")); + var Range17 = require_range(); + var toComparators = (range, options) => new Range17(range, options).set.map((comp) => comp.map((c) => c.value).join(" ").trim().split(" ")); module2.exports = toComparators; }); // node_modules/semver/ranges/max-satisfying.js var require_max_satisfying = __commonJS((exports2, module2) => { var SemVer = require_semver(); - var Range15 = require_range(); + var Range17 = require_range(); var maxSatisfying = (versions, range, options) => { let max = null; let maxSV = null; let rangeObj = null; try { - rangeObj = new Range15(range, options); + rangeObj = new Range17(range, options); } catch (er) { return null; } @@ -4917,13 +6376,13 @@ var require_max_satisfying = __commonJS((exports2, module2) => { // node_modules/semver/ranges/min-satisfying.js var require_min_satisfying = __commonJS((exports2, module2) => { var SemVer = require_semver(); - var Range15 = require_range(); + var Range17 = require_range(); var minSatisfying = (versions, range, options) => { let min = null; let minSV = null; let rangeObj = null; try { - rangeObj = new Range15(range, options); + rangeObj = new Range17(range, options); } catch (er) { return null; } @@ -4943,10 +6402,10 @@ var require_min_satisfying = __commonJS((exports2, module2) => { // node_modules/semver/ranges/min-version.js var require_min_version = __commonJS((exports2, module2) => { var SemVer = require_semver(); - var Range15 = require_range(); + var Range17 = require_range(); var gt = require_gt(); var minVersion = (range, loose) => { - range = new Range15(range, loose); + range = new Range17(range, loose); let minver = new SemVer("0.0.0"); if (range.test(minver)) { return minver; @@ -4992,10 +6451,10 @@ var require_min_version = __commonJS((exports2, module2) => { // node_modules/semver/ranges/valid.js var require_valid2 = __commonJS((exports2, module2) => { - var Range15 = require_range(); + var Range17 = require_range(); var validRange = (range, options) => { try { - return new Range15(range, options).range || "*"; + return new Range17(range, options).range || "*"; } catch (er) { return null; } @@ -5008,7 +6467,7 @@ var require_outside = __commonJS((exports2, module2) => { var SemVer = require_semver(); var Comparator = require_comparator(); var {ANY} = Comparator; - var Range15 = require_range(); + var Range17 = require_range(); var satisfies = require_satisfies(); var gt = require_gt(); var lt = require_lt(); @@ -5016,7 +6475,7 @@ var require_outside = __commonJS((exports2, module2) => { var gte2 = require_gte(); var outside = (version, range, hilo, options) => { version = new SemVer(version, options); - range = new Range15(range, options); + range = new Range17(range, options); let gtfn, ltefn, ltfn, comp, ecomp; switch (hilo) { case ">": @@ -5085,10 +6544,10 @@ var require_ltr = __commonJS((exports2, module2) => { // node_modules/semver/ranges/intersects.js var require_intersects = __commonJS((exports2, module2) => { - var Range15 = require_range(); + var Range17 = require_range(); var intersects = (r1, r2, options) => { - r1 = new Range15(r1, options); - r2 = new Range15(r2, options); + r1 = new Range17(r1, options); + r2 = new Range17(r2, options); return r1.intersects(r2); }; module2.exports = intersects; @@ -5140,13 +6599,13 @@ var require_simplify = __commonJS((exports2, module2) => { // node_modules/semver/ranges/subset.js var require_subset = __commonJS((exports2, module2) => { - var Range15 = require_range(); + var Range17 = require_range(); var {ANY} = require_comparator(); var satisfies = require_satisfies(); var compare = require_compare(); var subset = (sub, dom, options) => { - sub = new Range15(sub, options); - dom = new Range15(dom, options); + sub = new Range17(sub, options); + dom = new Range17(dom, options); let sawNonNull = false; OUTER: for (const simpleSub of sub.set) { @@ -5296,7 +6755,7 @@ var require_windows = __commonJS((exports2, module2) => { module2.exports = isexe; isexe.sync = sync; var fs5 = require("fs"); - function checkPathExt(path8, options) { + function checkPathExt(path9, options) { var pathext = options.pathExt !== void 0 ? options.pathExt : process.env.PATHEXT; if (!pathext) { return true; @@ -5307,25 +6766,25 @@ var require_windows = __commonJS((exports2, module2) => { } for (var i = 0; i < pathext.length; i++) { var p = pathext[i].toLowerCase(); - if (p && path8.substr(-p.length).toLowerCase() === p) { + if (p && path9.substr(-p.length).toLowerCase() === p) { return true; } } return false; } - function checkStat(stat, path8, options) { + function checkStat(stat, path9, options) { if (!stat.isSymbolicLink() && !stat.isFile()) { return false; } - return checkPathExt(path8, options); + return checkPathExt(path9, options); } - function isexe(path8, options, cb) { - fs5.stat(path8, function(er, stat) { - cb(er, er ? false : checkStat(stat, path8, options)); + function isexe(path9, options, cb) { + fs5.stat(path9, function(er, stat) { + cb(er, er ? false : checkStat(stat, path9, options)); }); } - function sync(path8, options) { - return checkStat(fs5.statSync(path8), path8, options); + function sync(path9, options) { + return checkStat(fs5.statSync(path9), path9, options); } }); @@ -5334,13 +6793,13 @@ var require_mode = __commonJS((exports2, module2) => { module2.exports = isexe; isexe.sync = sync; var fs5 = require("fs"); - function isexe(path8, options, cb) { - fs5.stat(path8, function(er, stat) { + function isexe(path9, options, cb) { + fs5.stat(path9, function(er, stat) { cb(er, er ? false : checkStat(stat, options)); }); } - function sync(path8, options) { - return checkStat(fs5.statSync(path8), options); + function sync(path9, options) { + return checkStat(fs5.statSync(path9), options); } function checkStat(stat, options) { return stat.isFile() && checkMode(stat, options); @@ -5371,7 +6830,7 @@ var require_isexe = __commonJS((exports2, module2) => { } module2.exports = isexe; isexe.sync = sync; - function isexe(path8, options, cb) { + function isexe(path9, options, cb) { if (typeof options === "function") { cb = options; options = {}; @@ -5381,7 +6840,7 @@ var require_isexe = __commonJS((exports2, module2) => { throw new TypeError("callback not provided"); } return new Promise(function(resolve, reject) { - isexe(path8, options || {}, function(er, is2) { + isexe(path9, options || {}, function(er, is2) { if (er) { reject(er); } else { @@ -5390,7 +6849,7 @@ var require_isexe = __commonJS((exports2, module2) => { }); }); } - core(path8, options || {}, function(er, is2) { + core(path9, options || {}, function(er, is2) { if (er) { if (er.code === "EACCES" || options && options.ignoreErrors) { er = null; @@ -5400,9 +6859,9 @@ var require_isexe = __commonJS((exports2, module2) => { cb(er, is2); }); } - function sync(path8, options) { + function sync(path9, options) { try { - return core.sync(path8, options || {}); + return core.sync(path9, options || {}); } catch (er) { if (options && options.ignoreErrors || er.code === "EACCES") { return false; @@ -5416,7 +6875,7 @@ var require_isexe = __commonJS((exports2, module2) => { // node_modules/which/which.js var require_which = __commonJS((exports2, module2) => { var isWindows = process.platform === "win32" || process.env.OSTYPE === "cygwin" || process.env.OSTYPE === "msys"; - var path8 = require("path"); + var path9 = require("path"); var COLON = isWindows ? ";" : ":"; var isexe = require_isexe(); var getNotFoundError = (cmd) => Object.assign(new Error(`not found: ${cmd}`), {code: "ENOENT"}); @@ -5452,7 +6911,7 @@ var require_which = __commonJS((exports2, module2) => { return opt.all && found.length ? resolve(found) : reject(getNotFoundError(cmd)); const ppRaw = pathEnv[i]; const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; - const pCmd = path8.join(pathPart, cmd); + const pCmd = path9.join(pathPart, cmd); const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; resolve(subStep(p, i, 0)); }); @@ -5479,7 +6938,7 @@ var require_which = __commonJS((exports2, module2) => { for (let i = 0; i < pathEnv.length; i++) { const ppRaw = pathEnv[i]; const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; - const pCmd = path8.join(pathPart, cmd); + const pCmd = path9.join(pathPart, cmd); const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd : pCmd; for (let j = 0; j < pathExt.length; j++) { const cur = p + pathExt[j]; @@ -5509,15 +6968,15 @@ var require_which = __commonJS((exports2, module2) => { __export(exports, { activate: () => activate }); -var import_coc32 = __toModule(require("coc.nvim")); +var import_coc37 = __toModule(require("coc.nvim")); // src/server/index.ts -var import_coc30 = __toModule(require("coc.nvim")); -var import_vscode_languageserver_protocol23 = __toModule(require_main3()); +var import_coc35 = __toModule(require("coc.nvim")); +var import_vscode_languageserver_protocol24 = __toModule(require_main3()); // src/server/typescriptServiceClientHost.ts -var import_coc29 = __toModule(require("coc.nvim")); -var import_vscode_languageserver_protocol22 = __toModule(require_main3()); +var import_coc34 = __toModule(require("coc.nvim")); +var import_vscode_languageserver_protocol23 = __toModule(require_main3()); // src/utils/arrays.ts function equals(one, other, itemEquals = (a, b) => a === b) { @@ -5599,6 +7058,8 @@ API.v381 = API2.fromSimpleString("3.8.1"); API.v390 = API2.fromSimpleString("3.9.0"); API.v400 = API2.fromSimpleString("4.0.0"); API.v401 = API2.fromSimpleString("4.0.1"); +API.v420 = API2.fromSimpleString("4.2.0"); +API.v430 = API2.fromSimpleString("4.3.0"); var api_default = API; // src/server/features/fileConfigurationManager.ts @@ -5661,8 +7122,8 @@ var FileConfigurationManager = class { } formatEnabled(document) { let {languageId, uri} = document; - let language = languageId.startsWith("typescript") ? "typescript" : "javascript"; - const config = import_coc.workspace.getConfiguration(`${language}.format`, uri); + let language2 = languageId.startsWith("typescript") ? "typescript" : "javascript"; + const config = import_coc.workspace.getConfiguration(`${language2}.format`, uri); return config.get("enabled"); } enableJavascript() { @@ -5676,8 +7137,8 @@ var FileConfigurationManager = class { preferences: this.getPreferences(lang, document.uri) }; } - getFormatOptions(options, language, uri) { - const config = import_coc.workspace.getConfiguration(`${language}.format`, uri); + getFormatOptions(options, language2, uri) { + const config = import_coc.workspace.getConfiguration(`${language2}.format`, uri); return { tabSize: options.tabSize, indentSize: options.tabSize, @@ -5711,21 +7172,26 @@ var FileConfigurationManager = class { paths: config.get("paths", true), completeFunctionCalls: config.get("completeFunctionCalls", true), autoImports: config.get("autoImports", true), + importStatementSuggestions: config.get("importStatements", true), + includeCompletionsForImportStatements: config.get("includeCompletionsForImportStatements", true), + includeCompletionsWithSnippetText: config.get("includeCompletionsWithSnippetText", true), includeAutomaticOptionalChainCompletions: config.get("includeAutomaticOptionalChainCompletions", true) }; } - getPreferences(language, uri) { + getPreferences(language2, uri) { if (this.client.apiVersion.lt(api_default.v290)) { return {}; } - const config = import_coc.workspace.getConfiguration(`${language}.preferences`, uri); + const config = import_coc.workspace.getConfiguration(`${language2}.preferences`, uri); const preferences = { quotePreference: this.getQuoteStyle(config), importModuleSpecifierPreference: getImportModuleSpecifier(config), importModuleSpecifierEnding: getImportModuleSpecifierEndingPreference(config), allowTextChangesInNewFiles: uri.startsWith("file:"), allowRenameOfImportPath: true, - providePrefixAndSuffixTextForRename: config.get("renameShorthandProperties", true) === false ? false : config.get("useAliasesForRenames", true) + providePrefixAndSuffixTextForRename: config.get("renameShorthandProperties", true) === false ? false : config.get("useAliasesForRenames", true), + includeCompletionsForImportStatements: this.getCompleteOptions(language2).includeCompletionsForImportStatements, + includeCompletionsWithSnippetText: this.getCompleteOptions(language2).includeCompletionsWithSnippetText }; return preferences; } @@ -5743,12 +7209,14 @@ var fileConfigurationManager_default = FileConfigurationManager; function getImportModuleSpecifier(config) { let val = config.get("importModuleSpecifier"); switch (val) { + case "project-relative": + return "project-relative"; case "relative": return "relative"; case "non-relative": return "non-relative"; default: - return "auto"; + return void 0; } } function getImportModuleSpecifierEndingPreference(config) { @@ -5863,15 +7331,16 @@ var WatchProject2 = class { import_coc2.window.showMessage(`Local & global tsc not found`, "error"); return; } - let find = await import_coc2.workspace.findUp(["tsconfig.json"]); + const tsconfigPath = import_coc2.workspace.getConfiguration("tsserver").get("tsconfigPath", "tsconfig.json"); + let find = await import_coc2.workspace.findUp([tsconfigPath]); if (!find) { - import_coc2.window.showMessage("tsconfig.json not found!", "error"); + import_coc2.window.showMessage(`${tsconfigPath} not found!`, "error"); return; } let root = import_path.default.dirname(find); return { cmd: tscPath, - args: ["-p", "tsconfig.json", "--watch", "true", "--pretty", "false"], + args: ["-p", tsconfigPath, "--watch", "true", "--pretty", "false"], cwd: root }; } @@ -5888,10 +7357,94 @@ var watchBuild_default = WatchProject; var import_coc3 = __toModule(require("coc.nvim")); var import_vscode_languageserver_protocol3 = __toModule(require_main3()); +// src/server/protocol.const.ts +var Kind = class { +}; +Kind.alias = "alias"; +Kind.callSignature = "call"; +Kind.class = "class"; +Kind.const = "const"; +Kind.constructorImplementation = "constructor"; +Kind.constructSignature = "construct"; +Kind.directory = "directory"; +Kind.enum = "enum"; +Kind.enumMember = "enum member"; +Kind.externalModuleName = "external module name"; +Kind.function = "function"; +Kind.indexSignature = "index"; +Kind.interface = "interface"; +Kind.keyword = "keyword"; +Kind.let = "let"; +Kind.localFunction = "local function"; +Kind.localVariable = "local var"; +Kind.method = "method"; +Kind.memberGetAccessor = "getter"; +Kind.memberSetAccessor = "setter"; +Kind.memberVariable = "property"; +Kind.module = "module"; +Kind.primitiveType = "primitive type"; +Kind.script = "script"; +Kind.type = "type"; +Kind.variable = "var"; +Kind.warning = "warning"; +Kind.string = "string"; +Kind.parameter = "parameter"; +Kind.typeParameter = "type parameter"; +var DiagnosticCategory = class { +}; +DiagnosticCategory.error = "error"; +DiagnosticCategory.warning = "warning"; +DiagnosticCategory.suggestion = "suggestion"; +var KindModifiers2 = class { +}; +var KindModifiers = KindModifiers2; +KindModifiers.optional = "optional"; +KindModifiers.deprecated = "deprecated"; +KindModifiers.color = "color"; +KindModifiers.dtsFile = ".d.ts"; +KindModifiers.tsFile = ".ts"; +KindModifiers.tsxFile = ".tsx"; +KindModifiers.jsFile = ".js"; +KindModifiers.jsxFile = ".jsx"; +KindModifiers.jsonFile = ".json"; +KindModifiers.fileExtensionKindModifiers = [ + KindModifiers2.dtsFile, + KindModifiers2.tsFile, + KindModifiers2.tsxFile, + KindModifiers2.jsFile, + KindModifiers2.jsxFile, + KindModifiers2.jsonFile +]; +var DisplayPartKind = class { +}; +DisplayPartKind.functionName = "functionName"; +DisplayPartKind.methodName = "methodName"; +DisplayPartKind.parameterName = "parameterName"; +DisplayPartKind.propertyName = "propertyName"; +DisplayPartKind.punctuation = "punctuation"; +DisplayPartKind.text = "text"; +var EventName; +(function(EventName2) { + EventName2["syntaxDiag"] = "syntaxDiag"; + EventName2["semanticDiag"] = "semanticDiag"; + EventName2["suggestionDiag"] = "suggestionDiag"; + EventName2["configFileDiag"] = "configFileDiag"; + EventName2["telemetry"] = "telemetry"; + EventName2["projectLanguageServiceState"] = "projectLanguageServiceState"; + EventName2["projectsUpdatedInBackground"] = "projectsUpdatedInBackground"; + EventName2["beginInstallTypes"] = "beginInstallTypes"; + EventName2["endInstallTypes"] = "endInstallTypes"; + EventName2["typesInstallerInitializationFailed"] = "typesInstallerInitializationFailed"; + EventName2["surveyReady"] = "surveyReady"; + EventName2["projectLoadingStart"] = "projectLoadingStart"; + EventName2["projectLoadingFinish"] = "projectLoadingFinish"; +})(EventName || (EventName = {})); + // src/server/utils/typeConverters.ts -var Range; -(function(Range15) { - Range15.fromTextSpan = (span) => { +var language = __toModule(require_main3()); +var Range2; +(function(Range17) { + Range17.fromTextSpan = (span) => { return { start: { line: span.start.line - 1, @@ -5903,45 +7456,46 @@ var Range; } }; }; - Range15.toFormattingRequestArgs = (file2, range) => ({ + 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)); + Range17.toFormattingRequestArgs = (file2, range) => ({ file: file2, line: range.start.line + 1, offset: range.start.character + 1, endLine: range.end.line + 1, endOffset: range.end.character + 1 }); - Range15.toFileRangeRequestArgs = (file2, range) => ({ + Range17.toFileRangeRequestArgs = (file2, range) => ({ file: file2, startLine: range.start.line + 1, startOffset: range.start.character + 1, endLine: range.end.line + 1, endOffset: range.end.character + 1 }); -})(Range || (Range = {})); +})(Range2 || (Range2 = {})); var Position; -(function(Position7) { - Position7.fromLocation = (tslocation) => { +(function(Position10) { + Position10.fromLocation = (tslocation) => { return { line: tslocation.line - 1, character: tslocation.offset - 1 }; }; - Position7.toLocation = (position) => ({ + Position10.toLocation = (position) => ({ line: position.line + 1, offset: position.character + 1 }); - Position7.toFileLocationRequestArgs = (file2, position) => ({ + Position10.toFileLocationRequestArgs = (file2, position) => ({ file: file2, line: position.line + 1, offset: position.character + 1 }); })(Position || (Position = {})); var Location2; -(function(Location3) { - Location3.fromTextSpan = (uri, tsTextSpan) => { +(function(Location4) { + Location4.fromTextSpan = (uri, tsTextSpan) => { return { uri, - range: Range.fromTextSpan(tsTextSpan) + range: Range2.fromTextSpan(tsTextSpan) }; }; })(Location2 || (Location2 = {})); @@ -5949,7 +7503,7 @@ var TextEdit; (function(TextEdit6) { TextEdit6.fromCodeEdit = (edit) => { return { - range: Range.fromTextSpan(edit), + range: Range2.fromTextSpan(edit), newText: edit.newText }; }; @@ -5968,8 +7522,65 @@ var WorkspaceEdit; } WorkspaceEdit6.fromFileCodeEdits = fromFileCodeEdits; })(WorkspaceEdit || (WorkspaceEdit = {})); +var SymbolKind2; +(function(SymbolKind5) { + function fromProtocolScriptElementKind(kind) { + switch (kind) { + case Kind.module: + return language.SymbolKind.Module; + case Kind.class: + return language.SymbolKind.Class; + case Kind.enum: + return language.SymbolKind.Enum; + case Kind.enumMember: + return language.SymbolKind.EnumMember; + case Kind.interface: + return language.SymbolKind.Interface; + case Kind.indexSignature: + return language.SymbolKind.Method; + case Kind.callSignature: + return language.SymbolKind.Method; + case Kind.method: + return language.SymbolKind.Method; + case Kind.memberVariable: + return language.SymbolKind.Property; + case Kind.memberGetAccessor: + return language.SymbolKind.Property; + case Kind.memberSetAccessor: + return language.SymbolKind.Property; + case Kind.variable: + return language.SymbolKind.Variable; + case Kind.let: + return language.SymbolKind.Variable; + case Kind.const: + return language.SymbolKind.Variable; + case Kind.localVariable: + return language.SymbolKind.Variable; + case Kind.alias: + return language.SymbolKind.Variable; + case Kind.function: + return language.SymbolKind.Function; + case Kind.localFunction: + return language.SymbolKind.Function; + case Kind.constructSignature: + return language.SymbolKind.Constructor; + case Kind.constructorImplementation: + return language.SymbolKind.Constructor; + case Kind.typeParameter: + return language.SymbolKind.TypeParameter; + case Kind.string: + return language.SymbolKind.String; + default: + return language.SymbolKind.Variable; + } + } + SymbolKind5.fromProtocolScriptElementKind = fromProtocolScriptElementKind; +})(SymbolKind2 || (SymbolKind2 = {})); // src/server/features/workspaceSymbols.ts +function parseKindModifier(kindModifiers) { + return new Set(kindModifiers.split(/,|\s+/g)); +} function getSymbolKind(item) { switch (item.kind) { case "method": @@ -6023,6 +7634,10 @@ var TypeScriptWorkspaceSymbolProvider = class { end: Position.fromLocation(item.end) }; const symbolInfo = import_vscode_languageserver_protocol3.SymbolInformation.create(label, getSymbolKind(item), range, this.client.toResource(item.file)); + const kindModifiers = item.kindModifiers ? parseKindModifier(item.kindModifiers) : void 0; + if (kindModifiers == null ? void 0 : kindModifiers.has(KindModifiers.deprecated)) { + symbolInfo.tags = [import_vscode_languageserver_protocol3.SymbolTag.Deprecated]; + } result.push(symbolInfo); } return result; @@ -6050,8 +7665,8 @@ var TypeScriptWorkspaceSymbolProvider = class { var workspaceSymbols_default = TypeScriptWorkspaceSymbolProvider; // src/server/languageProvider.ts -var import_coc18 = __toModule(require("coc.nvim")); -var import_path4 = __toModule(require("path")); +var import_coc23 = __toModule(require("coc.nvim")); +var import_path5 = __toModule(require("path")); var import_vscode_languageserver_protocol18 = __toModule(require_main3()); // src/server/features/baseCodeLensProvider.ts @@ -6135,105 +7750,124 @@ var TypeScriptBaseCodeLensProvider = class { return null; } if (item.nameSpan) { - return Range.fromTextSpan(item.nameSpan); + return Range2.fromTextSpan(item.nameSpan); } const span = item.spans && item.spans[0]; if (!span) { return null; - } - const range = Range.fromTextSpan(span); - const text = document.getText(range); - const identifierMatch = new RegExp(`^(.*?(\\b|\\W))${escapeRegExp(item.text || "")}(\\b|\\W)`, "gm"); - const match = identifierMatch.exec(text); - const prefixLength = match ? match.index + match[1].length : 0; - const startOffset = document.offsetAt(range.start) + prefixLength; - return { - start: document.positionAt(startOffset), - end: document.positionAt(startOffset + item.text.length) - }; - } -}; - -// src/server/features/completionItemProvider.ts -var import_coc5 = __toModule(require("coc.nvim")); -var import_vscode_languageserver_protocol8 = __toModule(require_main3()); - -// src/server/protocol.const.ts -var Kind = class { -}; -Kind.alias = "alias"; -Kind.callSignature = "call"; -Kind.class = "class"; -Kind.const = "const"; -Kind.constructorImplementation = "constructor"; -Kind.constructSignature = "construct"; -Kind.directory = "directory"; -Kind.enum = "enum"; -Kind.enumMember = "enum member"; -Kind.externalModuleName = "external module name"; -Kind.function = "function"; -Kind.indexSignature = "index"; -Kind.interface = "interface"; -Kind.keyword = "keyword"; -Kind.let = "let"; -Kind.localFunction = "local function"; -Kind.localVariable = "local var"; -Kind.method = "method"; -Kind.memberGetAccessor = "getter"; -Kind.memberSetAccessor = "setter"; -Kind.memberVariable = "property"; -Kind.module = "module"; -Kind.primitiveType = "primitive type"; -Kind.script = "script"; -Kind.type = "type"; -Kind.variable = "var"; -Kind.warning = "warning"; -Kind.string = "string"; -Kind.parameter = "parameter"; -Kind.typeParameter = "type parameter"; -var DiagnosticCategory = class { -}; -DiagnosticCategory.error = "error"; -DiagnosticCategory.warning = "warning"; -DiagnosticCategory.suggestion = "suggestion"; -var KindModifiers2 = class { -}; -var KindModifiers = KindModifiers2; -KindModifiers.optional = "optional"; -KindModifiers.color = "color"; -KindModifiers.dtsFile = ".d.ts"; -KindModifiers.tsFile = ".ts"; -KindModifiers.tsxFile = ".tsx"; -KindModifiers.jsFile = ".js"; -KindModifiers.jsxFile = ".jsx"; -KindModifiers.jsonFile = ".json"; -KindModifiers.fileExtensionKindModifiers = [ - KindModifiers2.dtsFile, - KindModifiers2.tsFile, - KindModifiers2.tsxFile, - KindModifiers2.jsFile, - KindModifiers2.jsxFile, - KindModifiers2.jsonFile -]; -var DisplayPartKind = class { + } + const range = Range2.fromTextSpan(span); + const text = document.getText(range); + const identifierMatch = new RegExp(`^(.*?(\\b|\\W))${escapeRegExp(item.text || "")}(\\b|\\W)`, "gm"); + const match = identifierMatch.exec(text); + const prefixLength = match ? match.index + match[1].length : 0; + const startOffset = document.offsetAt(range.start) + prefixLength; + return { + start: document.positionAt(startOffset), + end: document.positionAt(startOffset + item.text.length) + }; + } }; -DisplayPartKind.functionName = "functionName"; -DisplayPartKind.methodName = "methodName"; -DisplayPartKind.parameterName = "parameterName"; -DisplayPartKind.propertyName = "propertyName"; -DisplayPartKind.punctuation = "punctuation"; -DisplayPartKind.text = "text"; -// src/server/utils/codeAction.ts -var import_vscode_languageserver_protocol5 = __toModule(require_main3()); +// src/server/features/callHierarchy.ts var import_coc4 = __toModule(require("coc.nvim")); +var import_path2 = __toModule(require("path")); +var import_vscode_languageserver_protocol5 = __toModule(require_main3()); +var TypeScriptCallHierarchySupport = class { + constructor(client) { + this.client = client; + } + async prepareCallHierarchy(document, position, token) { + const filepath = this.client.toOpenedFilePath(document.uri); + if (!filepath) { + return void 0; + } + const args = Position.toFileLocationRequestArgs(filepath, position); + const response = await this.client.execute("prepareCallHierarchy", args, token); + if (response.type !== "response" || !response.body) { + return void 0; + } + return Array.isArray(response.body) ? response.body.map(fromProtocolCallHierarchyItem) : fromProtocolCallHierarchyItem(response.body); + } + async provideCallHierarchyIncomingCalls(item, token) { + const filepath = this.client.toPath(item.uri); + if (!filepath) { + return void 0; + } + const args = Position.toFileLocationRequestArgs(filepath, item.selectionRange.start); + const response = await this.client.execute("provideCallHierarchyIncomingCalls", args, token); + if (response.type !== "response" || !response.body) { + return void 0; + } + return response.body.map(fromProtocolCallHierarchyIncomingCall); + } + async provideCallHierarchyOutgoingCalls(item, token) { + const filepath = this.client.toPath(item.uri); + if (!filepath) { + return void 0; + } + const args = Position.toFileLocationRequestArgs(filepath, item.selectionRange.start); + const response = await this.client.execute("provideCallHierarchyOutgoingCalls", args, token); + if (response.type !== "response" || !response.body) { + return void 0; + } + return response.body.map(fromProtocolCallHierarchyOutgoingCall); + } +}; +TypeScriptCallHierarchySupport.minVersion = api_default.v380; +var callHierarchy_default = TypeScriptCallHierarchySupport; +function isSourceFileItem(item) { + return item.kind === Kind.script || item.kind === Kind.module && item.selectionSpan.start.line === 1 && item.selectionSpan.start.offset === 1; +} +function parseKindModifier2(kindModifiers) { + return new Set(kindModifiers.split(/,|\s+/g)); +} +function fromProtocolCallHierarchyItem(item) { + var _a; + const useFileName = isSourceFileItem(item); + const name = useFileName ? import_path2.default.basename(item.file) : item.name; + const detail = useFileName ? import_path2.default.relative(import_coc4.workspace.cwd, import_path2.default.dirname(item.file)) : (_a = item.containerName) != null ? _a : ""; + const result = { + name, + detail, + uri: import_coc4.Uri.file(item.file).toString(), + kind: SymbolKind2.fromProtocolScriptElementKind(item.kind), + range: Range2.fromTextSpan(item.span), + selectionRange: Range2.fromTextSpan(item.selectionSpan) + }; + const kindModifiers = item.kindModifiers ? parseKindModifier2(item.kindModifiers) : void 0; + if (kindModifiers == null ? void 0 : kindModifiers.has(KindModifiers.deprecated)) { + result.tags = [import_vscode_languageserver_protocol5.SymbolTag.Deprecated]; + } + return result; +} +function fromProtocolCallHierarchyIncomingCall(item) { + return { + from: fromProtocolCallHierarchyItem(item.from), + fromRanges: item.fromSpans.map(Range2.fromTextSpan) + }; +} +function fromProtocolCallHierarchyOutgoingCall(item) { + return { + to: fromProtocolCallHierarchyItem(item.to), + fromRanges: item.fromSpans.map(Range2.fromTextSpan) + }; +} + +// src/server/features/completionItemProvider.ts +var import_coc8 = __toModule(require("coc.nvim")); +var import_vscode_languageserver_protocol9 = __toModule(require_main3()); + +// src/server/utils/codeAction.ts +var import_vscode_languageserver_protocol6 = __toModule(require_main3()); +var import_coc5 = __toModule(require("coc.nvim")); function getEditForCodeAction(client, action) { return action.changes && action.changes.length ? WorkspaceEdit.fromFileCodeEdits(client, action.changes) : void 0; } async function applyCodeAction(client, action) { const workspaceEdit = getEditForCodeAction(client, action); if (workspaceEdit) { - if (!await import_coc4.workspace.applyEdit(workspaceEdit)) { + if (!await import_coc5.workspace.applyEdit(workspaceEdit)) { return false; } } @@ -6242,7 +7876,7 @@ async function applyCodeAction(client, action) { async function applyCodeActionCommands(client, action) { if (action.commands && action.commands.length) { for (const command of action.commands) { - const response = await client.execute("applyCodeActionCommand", {command}, import_vscode_languageserver_protocol5.CancellationToken.None); + const response = await client.execute("applyCodeActionCommand", {command}, import_vscode_languageserver_protocol6.CancellationToken.None); if (!response || response.type != "response" || !response.body) { return false; } @@ -6252,7 +7886,8 @@ async function applyCodeActionCommands(client, action) { } // src/server/utils/completionItem.ts -var import_vscode_languageserver_protocol6 = __toModule(require_main3()); +var import_coc6 = __toModule(require("coc.nvim")); +var import_vscode_languageserver_protocol7 = __toModule(require_main3()); function convertCompletionEntry(tsEntry, uri, position, context) { let label = tsEntry.name; let sortText = tsEntry.sortText; @@ -6261,22 +7896,27 @@ function convertCompletionEntry(tsEntry, uri, position, context) { if (tsEntry.isRecommended) { preselect = true; } - if (tsEntry.source) { + if (tsEntry.source && tsEntry.hasAction) { sortText = "\uFFFF" + sortText; } else { sortText = tsEntry.sortText; } let kind = convertKind(tsEntry.kind); - let insertTextFormat = context.enableCallCompletions && (kind === import_vscode_languageserver_protocol6.CompletionItemKind.Function || kind === import_vscode_languageserver_protocol6.CompletionItemKind.Method) ? import_vscode_languageserver_protocol6.InsertTextFormat.Snippet : import_vscode_languageserver_protocol6.InsertTextFormat.PlainText; + let insertTextFormat = context.enableCallCompletions && (kind === import_coc6.CompletionItemKind.Function || kind === import_coc6.CompletionItemKind.Method) ? import_coc6.InsertTextFormat.Snippet : import_coc6.InsertTextFormat.PlainText; let insertText = tsEntry.insertText; let commitCharacters = getCommitCharacters(tsEntry, context); + let tags; + if (tsEntry.isImportStatementCompletion) { + insertText = label; + insertTextFormat = import_coc6.InsertTextFormat.Snippet; + } let textEdit = null; if (tsEntry.replacementSpan) { let {start, end} = tsEntry.replacementSpan; if (start.line == end.line) { textEdit = { - range: import_vscode_languageserver_protocol6.Range.create(start.line - 1, start.offset - 1, end.line - 1, end.offset - 1), - newText: insertText || label + range: import_coc6.Range.create(start.line - 1, start.offset - 1, end.line - 1, end.offset - 1), + newText: tsEntry.insertText || label }; } } @@ -6286,8 +7926,11 @@ function convertCompletionEntry(tsEntry, uri, position, context) { insertText = label; label += "?"; } + if (kindModifiers.has(KindModifiers.deprecated)) { + tags = [import_vscode_languageserver_protocol7.CompletionItemTag.Deprecated]; + } if (kindModifiers.has(KindModifiers.color)) { - kind = import_vscode_languageserver_protocol6.CompletionItemKind.Color; + kind = import_coc6.CompletionItemKind.Color; } if (tsEntry.kind === Kind.script) { for (const extModifier of KindModifiers.fileExtensionKindModifiers) { @@ -6307,6 +7950,7 @@ function convertCompletionEntry(tsEntry, uri, position, context) { insertText, textEdit, kind, + tags, preselect, insertTextFormat, sortText, @@ -6316,6 +7960,7 @@ function convertCompletionEntry(tsEntry, uri, position, context) { uri, position, name: tsEntry.name, + data: tsEntry.data, source: tsEntry.source || "" } }; @@ -6324,42 +7969,42 @@ function convertKind(kind) { switch (kind) { case Kind.primitiveType: case Kind.keyword: - return import_vscode_languageserver_protocol6.CompletionItemKind.Keyword; + return import_coc6.CompletionItemKind.Keyword; case Kind.const: - return import_vscode_languageserver_protocol6.CompletionItemKind.Constant; + return import_coc6.CompletionItemKind.Constant; case Kind.let: case Kind.variable: case Kind.localVariable: case Kind.alias: - return import_vscode_languageserver_protocol6.CompletionItemKind.Variable; + return import_coc6.CompletionItemKind.Variable; case Kind.memberVariable: case Kind.memberGetAccessor: case Kind.memberSetAccessor: - return import_vscode_languageserver_protocol6.CompletionItemKind.Field; + return import_coc6.CompletionItemKind.Field; case Kind.function: - return import_vscode_languageserver_protocol6.CompletionItemKind.Function; + return import_coc6.CompletionItemKind.Function; case Kind.method: case Kind.constructSignature: case Kind.callSignature: case Kind.indexSignature: - return import_vscode_languageserver_protocol6.CompletionItemKind.Method; + return import_coc6.CompletionItemKind.Method; case Kind.enum: - return import_vscode_languageserver_protocol6.CompletionItemKind.Enum; + return import_coc6.CompletionItemKind.Enum; case Kind.module: case Kind.externalModuleName: - return import_vscode_languageserver_protocol6.CompletionItemKind.Module; + return import_coc6.CompletionItemKind.Module; case Kind.class: case Kind.type: - return import_vscode_languageserver_protocol6.CompletionItemKind.Class; + return import_coc6.CompletionItemKind.Class; case Kind.interface: - return import_vscode_languageserver_protocol6.CompletionItemKind.Interface; + return import_coc6.CompletionItemKind.Interface; case Kind.warning: case Kind.script: - return import_vscode_languageserver_protocol6.CompletionItemKind.File; + return import_coc6.CompletionItemKind.File; case Kind.directory: - return import_vscode_languageserver_protocol6.CompletionItemKind.Folder; + return import_coc6.CompletionItemKind.Folder; } - return import_vscode_languageserver_protocol6.CompletionItemKind.Variable; + return import_coc6.CompletionItemKind.Variable; } function getCommitCharacters(tsEntry, context) { if (context.isNewIdentifierLocation || !context.isInValidCommitCharacterContext) { @@ -6448,33 +8093,70 @@ function getParameterListParts(displayParts) { } // src/server/utils/previewer.ts -var import_vscode_languageserver_protocol7 = __toModule(require_main3()); +var import_vscode_languageserver_protocol8 = __toModule(require_main3()); +var import_coc7 = __toModule(require("coc.nvim")); +function toResource(filepath) { + return import_coc7.Uri.file(filepath); +} +function replaceLinks(text) { + return text.replace(/\{@(link|linkplain|linkcode) (https?:\/\/[^ |}]+?)(?:[| ]([^{}\n]+?))?\}/gi, (_, tag, link, text2) => { + switch (tag) { + case "linkcode": + return `[\`${text2 ? text2.trim() : link}\`](${link})`; + default: + return `[${text2 ? text2.trim() : link}](${link})`; + } + }); +} +function processInlineTags(text) { + return replaceLinks(text); +} function getTagBodyText(tag) { if (!tag.text) { return void 0; } + function makeCodeblock(text2) { + if (text2.match(/^\s*[~`]{3}/g)) { + return text2; + } + return "```\n" + text2 + "\n```"; + } + const text = convertLinkTags(tag.text); switch (tag.name) { case "example": - case "default": - if (tag.text.match(/^\s*[~`]{3}/g)) { - return tag.text; + const captionTagMatches = text.match(/(.*?)<\/caption>\s*(\r\n|\n)/); + if (captionTagMatches && captionTagMatches.index === 0) { + return captionTagMatches[1] + "\n\n" + makeCodeblock(text.substr(captionTagMatches[0].length)); + } else { + return makeCodeblock(text); + } + case "author": + const emailMatch = text.match(/(.+)\s<([-.\w]+@[-.\w]+)>/); + if (emailMatch === null) { + return text; + } else { + return `${emailMatch[1]} ${emailMatch[2]}`; } - return "```\n" + tag.text + "\n```"; + case "default": + return makeCodeblock(text); } - return tag.text; + return processInlineTags(text); } function getTagDocumentation(tag) { switch (tag.name) { + case "augments": + case "extends": case "param": - const body = (tag.text || "").split(/^([\w\.]+)\s*/); - if (body && body.length === 3) { + case "template": + const body = convertLinkTags(tag.text).split(/^(\S+)\s*-?\s*/); + if ((body == null ? void 0 : body.length) === 3) { const param = body[1]; const doc = body[2]; const label2 = `*@${tag.name}* \`${param}\``; if (!doc) { return label2; } - return label2 + (doc.match(/\r\n|\n/g) ? "\n" + doc : ` \u2014 ${doc}`); + return label2 + (doc.match(/\r\n|\n/g) ? " \n" + processInlineTags(doc) : ` \u2014 ${processInlineTags(doc)}`); } } const label = `*@${tag.name}*`; @@ -6482,7 +8164,7 @@ function getTagDocumentation(tag) { if (!text) { return label; } - return label + (text.match(/\r\n|\n/g) ? "\n" + text : ` \u2014 ${text}`); + return label + (text.match(/\r\n|\n/g) ? " \n" + text : ` \u2014 ${text}`); } function plain(parts) { if (!parts || !parts.length) @@ -6499,10 +8181,67 @@ function markdownDocumentation(documentation, tags) { out = out + ("\n\n" + tagsPreview); } return { - kind: import_vscode_languageserver_protocol7.MarkupKind.Markdown, + kind: import_vscode_languageserver_protocol8.MarkupKind.Markdown, value: out }; } +function convertLinkTags(parts) { + var _a; + if (!parts) { + return ""; + } + if (typeof parts === "string") { + return parts; + } + const out = []; + let currentLink; + for (const part of parts) { + switch (part.kind) { + case "link": + if (currentLink) { + const text = (_a = currentLink.text) != null ? _a : currentLink.name; + if (currentLink.target) { + const link = toResource(currentLink.target.file).with({ + fragment: `L${currentLink.target.start.line},${currentLink.target.start.offset}` + }); + out.push(`[${text}](${link.toString()})`); + } else { + if (text) { + if (/^https?:/.test(text)) { + const parts2 = text.split(" "); + if (parts2.length === 1) { + out.push(parts2[0]); + } else if (parts2.length > 1) { + out.push(`[${parts2.slice(1).join(" ")}](${parts2[0]})`); + } + } else { + out.push(text); + } + } + } + currentLink = void 0; + } else { + currentLink = {}; + } + break; + case "linkName": + if (currentLink) { + currentLink.name = part.text; + currentLink.target = part.target; + } + break; + case "linkText": + if (currentLink) { + currentLink.text = part.text; + } + break; + default: + out.push(part.text); + break; + } + } + return processInlineTags(out.join("")); +} // src/server/utils/SnippetString.ts var SnippetString = class { @@ -6584,7 +8323,7 @@ var ApplyCompletionCodeActionCommand2 = class { await applyCodeAction(this.client, codeActions[0]); return; } - const idx = await import_coc5.window.showQuickpick(codeActions.map((o) => o.description), "Select code action to apply"); + const idx = await import_coc8.window.showQuickpick(codeActions.map((o) => o.description), "Select code action to apply"); if (idx < 0) return; const action = codeActions[idx]; @@ -6600,11 +8339,11 @@ var TypeScriptCompletionItemProvider = class { this.typingsStatus = typingsStatus; this.fileConfigurationManager = fileConfigurationManager; this.setCompleteOption(languageId); - import_coc5.commands.registerCommand(ApplyCompletionCodeActionCommand.ID, async (codeActions) => { + import_coc8.commands.registerCommand(ApplyCompletionCodeActionCommand.ID, async (codeActions) => { let cmd = new ApplyCompletionCodeActionCommand(this.client); await cmd.execute(codeActions); }); - import_coc5.workspace.onDidChangeConfiguration((_e) => { + import_coc8.workspace.onDidChangeConfiguration((_e) => { this.setCompleteOption(languageId); }); } @@ -6659,7 +8398,7 @@ var TypeScriptCompletionItemProvider = class { if (isMemberCompletion) { const dotMatch = preText.slice(0, position.character).match(/\??\.\s*$/) || void 0; if (dotMatch) { - const range = import_vscode_languageserver_protocol8.Range.create({ + const range = import_vscode_languageserver_protocol9.Range.create({ line: position.line, character: position.character - dotMatch.length }, position); @@ -6667,7 +8406,7 @@ var TypeScriptCompletionItemProvider = class { dotAccessorContext = {range, text}; } } - isIncomplete = response.metadata && response.metadata.isIncomplete; + isIncomplete = !!response.body.isIncomplete || response.metadata && response.metadata.isIncomplete; entries = response.body.entries; } catch (e) { if (e.message == "No content available.") { @@ -6704,6 +8443,8 @@ var TypeScriptCompletionItemProvider = class { return this.client.apiVersion.gte(api_default.v310) && this.client.apiVersion.lt(api_default.v320) ? void 0 : "@"; case "#": return this.client.apiVersion.lt(api_default.v381) ? void 0 : "#"; + case " ": + return this.client.apiVersion.gte(api_default.v430) ? " " : void 0; case ".": case '"': case "'": @@ -6717,16 +8458,16 @@ var TypeScriptCompletionItemProvider = class { async resolveCompletionItem(item, token) { if (item == null) return void 0; - let {uri, position, source, name} = item.data; + let {uri, position, source, name, data} = item.data; const filepath = this.client.toPath(uri); if (!filepath) return void 0; - let document = import_coc5.workspace.getDocument(uri); + let document = import_coc8.workspace.getDocument(uri); if (!document) return void 0; const args = { ...Position.toFileLocationRequestArgs(filepath, position), - entryNames: [source ? {name, source} : name] + entryNames: [source ? {name, source, data} : name] }; let response; try { @@ -6750,7 +8491,7 @@ var TypeScriptCompletionItemProvider = class { if (command) item.command = command; item.additionalTextEdits = additionalTextEdits; - if (detail && item.insertTextFormat == import_vscode_languageserver_protocol8.InsertTextFormat.Snippet) { + if (detail && item.insertTextFormat == import_vscode_languageserver_protocol9.InsertTextFormat.Snippet) { const shouldCompleteFunction = await this.isValidFunctionCompletionContext(filepath, position, token); if (shouldCompleteFunction) { this.createSnippetOfFunctionCall(item, detail); @@ -6810,6 +8551,12 @@ var TypeScriptCompletionItemProvider = class { return false; } } + if (triggerCharacter === " ") { + if (!this.completeOption.importStatementSuggestions || !this.client.apiVersion.lt(api_default.v430)) { + return false; + } + return pre === "import "; + } return true; } getDocumentation(detail) { @@ -6828,7 +8575,7 @@ var TypeScriptCompletionItemProvider = class { documentation += parts.join("\n\n"); if (documentation.length) { return { - kind: import_vscode_languageserver_protocol8.MarkupKind.Markdown, + kind: import_vscode_languageserver_protocol9.MarkupKind.Markdown, value: documentation }; } @@ -6871,14 +8618,14 @@ var TypeScriptCompletionItemProvider = class { isInValidCommitCharacterContext(document, position) { if (this.client.apiVersion.lt(api_default.v320)) { if (position.character > 1) { - const preText = document.getText(import_vscode_languageserver_protocol8.Range.create(position.line, 0, position.line, position.character)); + const preText = document.getText(import_vscode_languageserver_protocol9.Range.create(position.line, 0, position.line, position.character)); return preText.match(/(\s|^)\.$/ig) === null; } } return true; } }; -TypeScriptCompletionItemProvider.triggerCharacters = [".", '"', "'", "`", "/", "@", "<", "#"]; +TypeScriptCompletionItemProvider.triggerCharacters = [".", '"', "'", "`", "/", "@", "<", "#", " "]; var completionItemProvider_default = TypeScriptCompletionItemProvider; function shouldExcludeCompletionEntry(element, completionConfiguration) { 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; @@ -6912,8 +8659,37 @@ var TypeScriptDefinitionProvider = class { return []; } } - provideDefinition(document, position, token) { - return this.getSymbolLocations("definition", document, position, token); + async provideDefinition(document, position, token) { + if (this.client.apiVersion.gte(api_default.v270)) { + const filepath = this.client.toOpenedFilePath(document.uri); + if (!filepath) { + return void 0; + } + const args = Position.toFileLocationRequestArgs(filepath, position); + const response = await this.client.execute("definitionAndBoundSpan", args, token); + if (response.type !== "response" || !response.body) { + return void 0; + } + const span = response.body.textSpan ? Range2.fromTextSpan(response.body.textSpan) : void 0; + return response.body.definitions.map((location) => { + const target = Location2.fromTextSpan(this.client.toResource(location.file), location); + if (location.contextStart && location.contextEnd) { + return { + originSelectionRange: span, + targetRange: Range2.fromLocations(location.contextStart, location.contextEnd), + targetUri: target.uri, + targetSelectionRange: target.range + }; + } + return { + originSelectionRange: span, + targetRange: target.range, + targetUri: target.uri, + targetSelectionRange: target.range + }; + }); + } + return await this.getSymbolLocations("definition", document, position, token); } provideTypeDefinition(document, position, token) { return this.getSymbolLocations("typeDefinition", document, position, token); @@ -6925,8 +8701,8 @@ var TypeScriptDefinitionProvider = class { var definitionProvider_default = TypeScriptDefinitionProvider; // src/server/features/directiveCommentCompletions.ts -var import_vscode_languageserver_protocol9 = __toModule(require_main3()); -var import_coc6 = __toModule(require("coc.nvim")); +var import_coc9 = __toModule(require("coc.nvim")); +var import_coc10 = __toModule(require("coc.nvim")); var tsDirectives = [ { value: "@ts-check", @@ -6960,18 +8736,18 @@ var DirectiveCommentCompletionProvider = class { if (!file2) { return []; } - const doc = import_coc6.workspace.getDocument(document.uri); + const doc = import_coc10.workspace.getDocument(document.uri); const line = doc.getline(position.line); const prefix = line.slice(0, position.character); const match = prefix.match(/^\s*\/\/+\s?(@[a-zA-Z\-]*)?$/); if (match) { const directives = this.client.apiVersion.gte(api_default.v390) ? tsDirectives390 : tsDirectives; let items = directives.map((directive) => { - const item = import_vscode_languageserver_protocol9.CompletionItem.create(directive.value); - item.kind = import_vscode_languageserver_protocol9.CompletionItemKind.Snippet; + const item = {label: directive.value}; + item.kind = import_coc9.CompletionItemKind.Snippet; item.detail = directive.description; item.textEdit = { - range: import_vscode_languageserver_protocol9.Range.create(position.line, Math.max(0, position.character - (match[1] ? match[1].length : 0)), position.line, position.character), + range: import_coc9.Range.create(position.line, Math.max(0, position.character - (match[1] ? match[1].length : 0)), position.line, position.character), newText: directive.value }; return item; @@ -7017,7 +8793,7 @@ var documentHighlight_default = TypeScriptDocumentHighlightProvider; function convertDocumentHighlight(highlight) { return highlight.highlightSpans.map((span) => { return { - range: Range.fromTextSpan(span), + range: Range2.fromTextSpan(span), kind: span.kind === "writtenReference" ? import_vscode_languageserver_protocol10.DocumentHighlightKind.Write : import_vscode_languageserver_protocol10.DocumentHighlightKind.Read }; }); @@ -7085,26 +8861,45 @@ var TypeScriptDocumentSymbolProvider = class { return []; } } - static convertNavTree(bucket, item) { + static convertNavTree(output, item) { let shouldInclude = TypeScriptDocumentSymbolProvider.shouldInclueEntry(item); const children = new Set(item.childItems || []); for (const span of item.spans) { - const range = Range.fromTextSpan(span); - const symbolInfo = import_vscode_languageserver_protocol11.DocumentSymbol.create(item.text, "", getSymbolKind2(item.kind), range, range); - symbolInfo.children = children.size > 0 ? [] : null; + const range = Range2.fromTextSpan(span); + const symbolInfo = TypeScriptDocumentSymbolProvider.convertSymbol(item, range); + if (children.size) + symbolInfo.children = []; for (const child of children) { - if (child.spans.some((span2) => !!containsRange(range, Range.fromTextSpan(span2)))) { + if (child.spans.some((span2) => !!containsRange(range, Range2.fromTextSpan(span2)))) { const includedChild = TypeScriptDocumentSymbolProvider.convertNavTree(symbolInfo.children, child); shouldInclude = shouldInclude || includedChild; children.delete(child); } } if (shouldInclude) { - bucket.push(symbolInfo); + output.push(symbolInfo); } } return shouldInclude; } + static convertSymbol(item, range) { + const selectionRange = item.nameSpan ? Range2.fromTextSpan(item.nameSpan) : range; + let label = item.text; + switch (item.kind) { + case Kind.memberGetAccessor: + label = `(get) ${label}`; + break; + case Kind.memberSetAccessor: + label = `(set) ${label}`; + break; + } + const symbolInfo = import_vscode_languageserver_protocol11.DocumentSymbol.create(label, "", getSymbolKind2(item.kind), range, containsRange(range, selectionRange) ? selectionRange : range); + const kindModifiers = parseKindModifier3(item.kindModifiers); + if (kindModifiers.has(KindModifiers.deprecated)) { + symbolInfo.tags = [import_vscode_languageserver_protocol11.SymbolTag.Deprecated]; + } + return symbolInfo; + } static shouldInclueEntry(item) { if (item.kind === Kind.alias) { return false; @@ -7128,9 +8923,12 @@ function containsRange(range, otherRange) { } return true; } +function parseKindModifier3(kindModifiers) { + return new Set(kindModifiers.split(/,|\s+/g)); +} // src/server/features/folding.ts -var import_coc7 = __toModule(require("coc.nvim")); +var import_coc11 = __toModule(require("coc.nvim")); var import_vscode_languageserver_types = __toModule(require_main2()); var TypeScriptFoldingProvider = class { constructor(client) { @@ -7153,10 +8951,10 @@ var TypeScriptFoldingProvider = class { return body.map((span) => this.convertOutliningSpan(span, document)).filter((foldingRange) => !!foldingRange); } convertOutliningSpan(span, document) { - const range = Range.fromTextSpan(span.textSpan); + const range = Range2.fromTextSpan(span.textSpan); const kind = TypeScriptFoldingProvider.getFoldingRangeKind(span); if (span.kind === "comment") { - let doc = import_coc7.workspace.getDocument(document.uri); + let doc = import_coc11.workspace.getDocument(document.uri); const line = doc.getline(range.start.line); if (line.match(/\/\/\s*#endregion/gi)) { return void 0; @@ -7180,7 +8978,7 @@ var TypeScriptFoldingProvider = class { var folding_default = TypeScriptFoldingProvider; // src/server/features/formatting.ts -var import_coc8 = __toModule(require("coc.nvim")); +var import_coc12 = __toModule(require("coc.nvim")); var TypeScriptFormattingProvider = class { constructor(client, formattingOptionsManager) { this.client = client; @@ -7242,7 +9040,7 @@ var TypeScriptFormattingProvider = class { if (!file2) return []; await this.formattingOptionsManager.ensureConfigurationOptions(document, options.insertSpaces, options.tabSize, token); - const doc = import_coc8.workspace.getDocument(document.uri); + const doc = import_coc12.workspace.getDocument(document.uri); const args = { ...Position.toFileLocationRequestArgs(file2, position), key: ch @@ -7295,7 +9093,7 @@ var TypeScriptHoverProvider = class { const data = response.body; return { contents: TypeScriptHoverProvider.getContents(data), - range: Range.fromTextSpan(data) + range: Range2.fromTextSpan(data) }; } } catch (e) { @@ -7377,7 +9175,7 @@ var TypeScriptImplementationsCodeLensProvider = class extends TypeScriptBaseCode var implementationsCodeLens_default = TypeScriptImplementationsCodeLensProvider; // src/server/features/importFix.ts -var import_coc9 = __toModule(require("coc.nvim")); +var import_coc13 = __toModule(require("coc.nvim")); var import_vscode_languageserver_protocol12 = __toModule(require_main3()); // src/server/utils/helper.ts @@ -7426,7 +9224,7 @@ var ImportFixProvider = class { return []; let edits = []; let names = []; - let doc = import_coc9.workspace.getDocument(document.uri); + let doc = import_coc13.workspace.getDocument(document.uri); let command; for (const diagnostic of diagnostics) { let {range} = diagnostic; @@ -7465,14 +9263,14 @@ var ImportFixProvider = class { var importFix_default = ImportFixProvider; // src/server/features/moduleInstall.ts -var import_coc11 = __toModule(require("coc.nvim")); +var import_coc15 = __toModule(require("coc.nvim")); var import_vscode_languageserver_protocol13 = __toModule(require_main3()); // src/server/utils/modules.ts var import_child_process = __toModule(require("child_process")); -var import_coc10 = __toModule(require("coc.nvim")); +var import_coc14 = __toModule(require("coc.nvim")); var import_fs = __toModule(require("fs")); -var import_path2 = __toModule(require("path")); +var import_path3 = __toModule(require("path")); function runCommand(cmd, cwd, timeout) { return new Promise((resolve, reject) => { let timer; @@ -7493,7 +9291,7 @@ function runCommand(cmd, cwd, timeout) { }); } async function getManager() { - let res = await import_coc10.workspace.findUp(["yarn.lock", "package-lock.json"]); + let res = await import_coc14.workspace.findUp(["yarn.lock", "package-lock.json"]); if (!res) return "yarn"; return res.endsWith("yarn.lock") ? "yarn" : "npm"; @@ -7530,14 +9328,14 @@ function distinct(array, keyFn) { } async function installModules(uri, names) { names = distinct(names); - let workspaceFolder = import_coc10.workspace.getWorkspaceFolder(uri); - let root = workspaceFolder ? import_coc10.Uri.parse(workspaceFolder.uri).fsPath : void 0; - if (!root || !import_fs.default.existsSync(import_path2.default.join(root, "package.json"))) { - import_coc10.window.showMessage(`package.json not found from workspaceFolder: ${root}`, "error"); + let workspaceFolder = import_coc14.workspace.getWorkspaceFolder(uri); + let root = workspaceFolder ? import_coc14.Uri.parse(workspaceFolder.uri).fsPath : void 0; + if (!root || !import_fs.default.existsSync(import_path3.default.join(root, "package.json"))) { + import_coc14.window.showMessage(`package.json not found from workspaceFolder: ${root}`, "error"); return; } let arr = names.concat(names.map((s) => `@types/${s}`)); - let statusItem = import_coc10.window.createStatusBarItem(99, {progress: true}); + let statusItem = import_coc14.window.createStatusBarItem(99, {progress: true}); statusItem.text = `Checking module ${arr.join(" ")}`; statusItem.show(); let exists = await Promise.all(arr.map((name) => { @@ -7559,23 +9357,23 @@ async function installModules(uri, names) { await runCommand(cmd, root); } catch (e) { statusItem.dispose(); - import_coc10.window.showMessage(`Install error ${e.message}`, "error"); + import_coc14.window.showMessage(`Install error ${e.message}`, "error"); return; } statusItem.dispose(); - import_coc10.window.showMessage(`Installed: ${exists.join(" ")}`, "more"); + import_coc14.window.showMessage(`Installed: ${exists.join(" ")}`, "more"); } // src/server/features/moduleInstall.ts var InstallModuleProvider = class { constructor(client) { this.client = client; - import_coc11.commands.registerCommand("_tsserver.installModule", async (uri, name) => { + import_coc15.commands.registerCommand("_tsserver.installModule", async (uri, name) => { await installModules(uri, [name]); }); } async provideCodeActions(document, _range, context, _token) { - const uri = import_coc11.Uri.parse(document.uri); + const uri = import_coc15.Uri.parse(document.uri); if (uri.scheme != "file") return null; let {diagnostics} = context; @@ -7604,11 +9402,11 @@ var InstallModuleProvider = class { var moduleInstall_default = InstallModuleProvider; // src/server/features/quickfix.ts -var import_coc13 = __toModule(require("coc.nvim")); +var import_coc17 = __toModule(require("coc.nvim")); var import_vscode_languageserver_protocol14 = __toModule(require_main3()); // src/server/commands.ts -var import_coc12 = __toModule(require("coc.nvim")); +var import_coc16 = __toModule(require("coc.nvim")); var import_vscode_languageserver_types2 = __toModule(require_main2()); var ReloadProjectsCommand = class { constructor(service) { @@ -7618,7 +9416,7 @@ var ReloadProjectsCommand = class { async execute() { let client = await this.service.getClientHost(); client.reloadProjects(); - import_coc12.window.showMessage("projects reloaded"); + import_coc16.window.showMessage("projects reloaded"); } }; var OpenTsServerLogCommand = class { @@ -7638,7 +9436,7 @@ var TypeScriptGoToProjectConfigCommand = class { } async execute() { let client = await this.service.getClientHost(); - let doc = await import_coc12.workspace.document; + let doc = await import_coc16.workspace.document; let {languageId} = doc.textDocument; if (client.serviceClient.modeIds.indexOf(languageId) == -1) { throw new Error(`Could not determine TypeScript or JavaScript project. Unsupported file type: ${languageId}`); @@ -7652,19 +9450,19 @@ async function goToProjectConfig(clientHost, uri) { const file2 = client.toPath(uri); let res; try { - res = await client.execute("projectInfo", {file: file2, needFileNameList: false}, import_coc12.CancellationToken.None); + res = await client.execute("projectInfo", {file: file2, needFileNameList: false}, import_coc16.CancellationToken.None); } catch { } if (!res || !res.body) { - import_coc12.window.showMessage("Could not determine TypeScript or JavaScript project.", "warning"); + import_coc16.window.showMessage("Could not determine TypeScript or JavaScript project.", "warning"); return; } const {configFileName} = res.body; if (configFileName && !isImplicitProjectConfigFile(configFileName)) { - await import_coc12.workspace.openResource(import_coc12.Uri.file(configFileName).toString()); + await import_coc16.workspace.openResource(import_coc16.Uri.file(configFileName).toString()); return; } - import_coc12.window.showMessage("Config file not found", "warning"); + import_coc16.window.showMessage("Config file not found", "warning"); } function isImplicitProjectConfigFile(configFileName) { return configFileName.indexOf("/dev/null/") === 0; @@ -7680,19 +9478,19 @@ var AutoFixCommand = class { this.id = "tsserver.executeAutofix"; } async execute() { - if (this.service.state != import_coc12.ServiceStat.Running) { + if (this.service.state != import_coc16.ServiceStat.Running) { throw new Error("service not running"); return; } let client = await this.service.getClientHost(); - let document = await import_coc12.workspace.document; + let document = await import_coc16.workspace.document; let handles = await client.handles(document.textDocument); if (!handles) { throw new Error(`Document ${document.uri} is not handled by tsserver.`); return; } let file2 = client.serviceClient.toPath(document.uri); - let diagnostics = import_coc12.diagnosticManager.getDiagnostics(document.uri).slice(); + let diagnostics = client.serviceClient.diagnosticsManager.getDiagnostics(document.uri); let missingDiagnostics = diagnostics.filter((o) => o.code == 2307); if (missingDiagnostics.length) { let names2 = missingDiagnostics.map((o) => { @@ -7720,10 +9518,10 @@ var AutoFixCommand = class { let names = []; for (let diagnostic of diagnostics) { const args = { - ...Range.toFileRangeRequestArgs(file2, diagnostic.range), + ...Range2.toFileRangeRequestArgs(file2, diagnostic.range), errorCodes: [+diagnostic.code] }; - const response = await client.serviceClient.execute("getCodeFixes", args, import_coc12.CancellationToken.None); + const response = await client.serviceClient.execute("getCodeFixes", args, import_coc16.CancellationToken.None); if (response.type !== "response" || !response.body || response.body.length < 1) { if (diagnostic.code == 2304) { let {range} = diagnostic; @@ -7747,7 +9545,7 @@ var AutoFixCommand = class { continue; for (let ch of change.textChanges) { edits.push({ - range: Range.fromTextSpan(ch), + range: Range2.fromTextSpan(ch), newText: ch.newText }); } @@ -7756,7 +9554,7 @@ var AutoFixCommand = class { if (edits.length) await document.applyEdits(edits); if (command) - import_coc12.commands.executeCommand(command); + import_coc16.commands.executeCommand(command); } }; var ConfigurePluginCommand = class { @@ -7768,9 +9566,36 @@ var ConfigurePluginCommand = class { this.pluginManager.setConfiguration(pluginId, configuration); } }; +var FileReferencesCommand2 = class { + constructor(service) { + this.service = service; + this.id = "tsserver.findAllFileReferences"; + } + async execute() { + const client = await this.service.getClientHost(); + if (client.serviceClient.apiVersion.lt(FileReferencesCommand2.minVersion)) { + import_coc16.window.showMessage("Find file references failed. Requires TypeScript 4.2+.", "error"); + return; + } + const doc = await import_coc16.workspace.document; + let {languageId} = doc.textDocument; + if (client.serviceClient.modeIds.indexOf(languageId) == -1) + return; + const openedFiledPath = client.serviceClient.toOpenedFilePath(doc.uri); + if (!openedFiledPath) + return; + const response = await client.serviceClient.execute("fileReferences", {file: openedFiledPath}, import_coc16.CancellationToken.None); + if (response.type !== "response" || !response.body) + return; + const locations = response.body.refs.map((r) => Location2.fromTextSpan(client.serviceClient.toResource(r.file), r)); + await import_coc16.commands.executeCommand("editor.action.showReferences", doc.uri, import_vscode_languageserver_types2.Position.create(0, 0), locations); + } +}; +var FileReferencesCommand = FileReferencesCommand2; +FileReferencesCommand.minVersion = api_default.v420; function registCommand(cmd) { let {id, execute} = cmd; - return import_coc12.commands.registerCommand(id, execute, cmd); + return import_coc16.commands.registerCommand(id, execute, cmd); } // src/server/features/quickfix.ts @@ -7811,7 +9636,7 @@ var ApplyFixAllCodeAction2 = class { } let {body} = res; const edit = WorkspaceEdit.fromFileCodeEdits(this.client, body.changes); - await import_coc13.workspace.applyEdit(edit); + await import_coc17.workspace.applyEdit(edit); const token = import_vscode_languageserver_protocol14.CancellationToken.None; const {commands: commands7} = body; if (commands7 && commands7.length) { @@ -7898,7 +9723,7 @@ var TypeScriptQuickFixProvider = class { } async getFixesForDiagnostic(document, file2, diagnostic, token) { const args = { - ...Range.toFileRangeRequestArgs(file2, diagnostic.range), + ...Range2.toFileRangeRequestArgs(file2, diagnostic.range), errorCodes: [+diagnostic.code] }; const codeFixesResponse = await this.client.execute("getCodeFixes", args, token); @@ -7959,7 +9784,7 @@ var TypeScriptQuickFixProvider = class { var quickfix_default = TypeScriptQuickFixProvider; // src/server/features/refactor.ts -var import_coc14 = __toModule(require("coc.nvim")); +var import_coc18 = __toModule(require("coc.nvim")); var import_vscode_languageserver_protocol15 = __toModule(require_main3()); var ApplyRefactoringCommand2 = class { constructor(client) { @@ -7968,7 +9793,7 @@ var ApplyRefactoringCommand2 = class { } async execute(document, file2, refactor, action, range) { const args = { - ...Range.toFileRangeRequestArgs(file2, range), + ...Range2.toFileRangeRequestArgs(file2, range), refactor, action }; @@ -7978,18 +9803,18 @@ var ApplyRefactoringCommand2 = class { return false; } const workspaceEdit = await this.toWorkspaceEdit(body); - if (!await import_coc14.workspace.applyEdit(workspaceEdit)) { + if (!await import_coc18.workspace.applyEdit(workspaceEdit)) { return false; } const renameLocation = body.renameLocation; if (renameLocation) { - import_coc14.commands.executeCommand("editor.action.rename", document.uri, Position.fromLocation(renameLocation)); + import_coc18.commands.executeCommand("editor.action.rename", document.uri, Position.fromLocation(renameLocation)); } return true; } async toWorkspaceEdit(body) { for (const edit of body.edits) { - await import_coc14.workspace.createFile(edit.fileName, {ignoreIfExists: true}); + await import_coc18.workspace.createFile(edit.fileName, {ignoreIfExists: true}); } let workspaceEdit = WorkspaceEdit.fromFileCodeEdits(this.client, body.edits); return workspaceEdit; @@ -8004,7 +9829,7 @@ var SelectRefactorCommand2 = class { } async execute(document, file2, info, range) { let {actions} = info; - const idx = actions.length == 1 ? 0 : await import_coc14.window.showQuickpick(actions.map((action) => action.description || action.name)); + const idx = actions.length == 1 ? 0 : await import_coc18.window.showQuickpick(actions.map((action) => action.description || action.name)); if (idx == -1) return false; let label = info.actions[idx].name; @@ -8031,7 +9856,7 @@ var TypeScriptRefactorProvider2 = class { if (!file2) return void 0; await this.formattingOptionsManager.ensureConfigurationForDocument(document, token); - const args = Range.toFileRangeRequestArgs(file2, range); + const args = Range2.toFileRangeRequestArgs(file2, range); let response; try { response = await this.client.interruptGetErr(() => { @@ -8225,8 +10050,8 @@ var TypeScriptReferencesCodeLensProvider = class extends TypeScriptBaseCodeLensP var referencesCodeLens_default = TypeScriptReferencesCodeLensProvider; // src/server/features/rename.ts -var import_coc15 = __toModule(require("coc.nvim")); -var import_path3 = __toModule(require("path")); +var import_coc19 = __toModule(require("coc.nvim")); +var import_path4 = __toModule(require("path")); var TypeScriptRenameProvider = class { constructor(client, fileConfigurationManager) { this.client = client; @@ -8244,7 +10069,7 @@ var TypeScriptRenameProvider = class { if (this.client.apiVersion.gte(api_default.v310)) { const triggerSpan = renameInfo.triggerSpan; if (triggerSpan) { - const range = Range.fromTextSpan(triggerSpan); + const range = Range2.fromTextSpan(triggerSpan); return range; } } @@ -8293,7 +10118,7 @@ var TypeScriptRenameProvider = class { changes[uri] = []; for (const textSpan of spanGroup.locs) { changes[uri].push({ - range: Range.fromTextSpan(textSpan), + range: Range2.fromTextSpan(textSpan), newText: (textSpan.prefixText || "") + newName + (textSpan.suffixText || "") }); } @@ -8302,11 +10127,11 @@ var TypeScriptRenameProvider = class { return {changes}; } async renameFile(fileToRename, newName, token) { - if (!import_path3.default.extname(newName)) { - newName += import_path3.default.extname(fileToRename); + if (!import_path4.default.extname(newName)) { + newName += import_path4.default.extname(fileToRename); } - const dirname = import_path3.default.dirname(fileToRename); - const newFilePath = import_path3.default.join(dirname, newName); + const dirname = import_path4.default.dirname(fileToRename); + const newFilePath = import_path4.default.join(dirname, newName); const args = { file: fileToRename, oldFilePath: fileToRename, @@ -8320,8 +10145,8 @@ var TypeScriptRenameProvider = class { edits.documentChanges = edits.documentChanges || []; edits.documentChanges.push({ kind: "rename", - oldUri: import_coc15.Uri.file(fileToRename).toString(), - newUri: import_coc15.Uri.file(newFilePath).toString(), + oldUri: import_coc19.Uri.file(fileToRename).toString(), + newUri: import_coc19.Uri.file(newFilePath).toString(), options: { overwrite: false, ignoreIfExists: true @@ -8412,15 +10237,117 @@ var SmartSelection = class { } static convertSelectionRange(selectionRange) { return { - range: Range.fromTextSpan(selectionRange.textSpan), + range: Range2.fromTextSpan(selectionRange.textSpan), parent: selectionRange.parent ? SmartSelection.convertSelectionRange(selectionRange.parent) : void 0 }; } }; var smartSelect_default = SmartSelection; +// src/server/features/tagClosing.ts +var import_coc20 = __toModule(require("coc.nvim")); +var TagClosing2 = class { + constructor(client, descriptionLanguageId) { + this.client = client; + this.descriptionLanguageId = descriptionLanguageId; + this._disposables = []; + this._disposed = false; + this._timeout = void 0; + this._cancel = void 0; + import_coc20.events.on("InsertCharPre", (character) => { + this.lastInsert = character; + }, null, this._disposables); + import_coc20.events.on("TextChangedI", this.onChange, this, this._disposables); + import_coc20.events.on("TextChangedP", this.onChange, this, this._disposables); + } + async onChange(bufnr, change) { + let doc = import_coc20.workspace.getDocument(bufnr); + if (!doc || !doc.attached) + return; + let enabled = this.isEnabled(doc.filetype, doc.uri); + if (!enabled) + return; + let {pre, changedtick, lnum} = change; + if (!pre.endsWith("/") && !pre.endsWith(">")) + return; + if (!pre.endsWith(this.lastInsert)) + return; + if (pre.length > 1 && pre[pre.length - 2] == ">") + return; + const filepath = this.client.toOpenedFilePath(doc.uri); + if (!filepath) + return; + if (this._timeout) { + clearTimeout(this._timeout); + } + if (this._cancel) { + this._cancel.cancel(); + this._cancel.dispose(); + this._cancel = void 0; + } + await doc.patchChange(); + this._timeout = setTimeout(async () => { + this._timeout = void 0; + if (this._disposed) + return; + if (doc.changedtick > changedtick) + return; + const position = import_coc20.Position.create(lnum - 1, pre.length); + const args = Position.toFileLocationRequestArgs(filepath, position); + this._cancel = new import_coc20.CancellationTokenSource(); + const response = await this.client.execute("jsxClosingTag", args, this._cancel.token); + if (response.type !== "response" || !response.body) { + return; + } + if (this._disposed) + return; + const insertion = response.body; + if (doc.changedtick === changedtick) { + import_coc20.snippetManager.insertSnippet(this.getTagSnippet(insertion).value, false, import_coc20.Range.create(position, position)); + } + }, 50); + } + isEnabled(languageId, uri) { + const configLang = TagClosing2._configurationLanguages[languageId]; + if (!configLang || configLang !== this.descriptionLanguageId) { + return false; + } + if (!import_coc20.workspace.getConfiguration(void 0, uri).get(`${configLang}.autoClosingTags`)) { + return false; + } + return true; + } + dispose() { + this._disposed = true; + if (this._timeout) { + clearTimeout(this._timeout); + this._timeout = void 0; + } + if (this._cancel) { + this._cancel.cancel(); + this._cancel.dispose(); + this._cancel = void 0; + } + import_coc20.disposeAll(this._disposables); + this._disposables = []; + } + getTagSnippet(closingTag) { + const snippet = new SnippetString_default(); + snippet.appendPlaceholder("", 0); + snippet.appendText(closingTag.newText); + return snippet; + } +}; +var TagClosing = TagClosing2; +TagClosing.minVersion = api_default.v300; +TagClosing._configurationLanguages = { + javascriptreact: "javascript", + typescriptreact: "typescript" +}; +var tagClosing_default = TagClosing; + // src/server/features/updatePathOnRename.ts -var import_coc16 = __toModule(require("coc.nvim")); +var import_coc21 = __toModule(require("coc.nvim")); var import_vscode_languageserver_protocol16 = __toModule(require_main3()); // src/server/utils/mutex.ts @@ -8482,7 +10409,7 @@ var UpdateImportsOnFileRenameHandler = class { this.fileConfigurationManager = fileConfigurationManager; this.disposables = []; let glob = languageId == "typescript" ? "**/*.{ts,tsx}" : "**/*.{js,jsx}"; - const watcher = import_coc16.workspace.createFileSystemWatcher(glob); + const watcher = import_coc21.workspace.createFileSystemWatcher(glob); this.disposables.push(watcher); let mutex = new Mutex(); watcher.onDidRename(async (e) => { @@ -8497,7 +10424,7 @@ var UpdateImportsOnFileRenameHandler = class { }, null, this.disposables); } dispose() { - import_coc16.disposeAll(this.disposables); + import_coc21.disposeAll(this.disposables); } async doRename(oldResource, newResource) { if (oldResource.scheme !== "file" || newResource.scheme !== "file") { @@ -8506,16 +10433,16 @@ var UpdateImportsOnFileRenameHandler = class { const targetFile = newResource.fsPath; const oldFile = oldResource.fsPath; const newUri = newResource.toString(); - let oldDocument = import_coc16.workspace.getDocument(oldResource.toString()); + let oldDocument = import_coc21.workspace.getDocument(oldResource.toString()); if (oldDocument) { - await import_coc16.workspace.nvim.command(`silent ${oldDocument.bufnr}bwipeout!`); + await import_coc21.workspace.nvim.command(`silent ${oldDocument.bufnr}bwipeout!`); } - let document = import_coc16.workspace.getDocument(newUri); + let document = import_coc21.workspace.getDocument(newUri); if (document) { - await import_coc16.workspace.nvim.command(`silent ${document.bufnr}bwipeout!`); + await import_coc21.workspace.nvim.command(`silent ${document.bufnr}bwipeout!`); await wait(30); } - document = await import_coc16.workspace.loadFile(newUri); + document = await import_coc21.workspace.loadFile(newUri); if (!document) return; await wait(50); @@ -8523,11 +10450,11 @@ var UpdateImportsOnFileRenameHandler = class { if (!edits) return; if (await this.promptUser(newResource)) { - await import_coc16.workspace.applyEdit(edits); + await import_coc21.workspace.applyEdit(edits); } } async promptUser(newResource) { - return await import_coc16.window.showPrompt(`Update imports for moved file: ${newResource.fsPath}?`); + return await import_coc21.window.showPrompt(`Update imports for moved file: ${newResource.fsPath}?`); } async getEditsForFileRename(document, oldFile, newFile) { await this.fileConfigurationManager.ensureConfigurationForDocument(document, import_vscode_languageserver_protocol16.CancellationToken.None); @@ -8559,7 +10486,7 @@ var UpdateImportsOnFileRenameHandler = class { var updatePathOnRename_default = UpdateImportsOnFileRenameHandler; // src/server/organizeImports.ts -var import_coc17 = __toModule(require("coc.nvim")); +var import_coc22 = __toModule(require("coc.nvim")); var import_vscode_languageserver_protocol17 = __toModule(require_main3()); var OrganizeImportsCommand = class { constructor(service) { @@ -8583,19 +10510,19 @@ var OrganizeImportsCommand = class { const edit = WorkspaceEdit.fromFileCodeEdits(client, response.body); let keys = Object.keys(edit.changes); if (keys.length == 1) { - let doc = import_coc17.workspace.getDocument(keys[0]); + let doc = import_coc22.workspace.getDocument(keys[0]); if (doc) { await doc.applyEdits(edit.changes[keys[0]]); return; } } if (edit) - await import_coc17.workspace.applyEdit(edit); + await import_coc22.workspace.applyEdit(edit); } async execute(document) { let client = await this.service.getClientHost(); if (!document) { - let doc = await import_coc17.workspace.document; + let doc = await import_coc22.workspace.document; if (!doc.attached) { throw new Error(`Document not attached.`); } @@ -8638,9 +10565,8 @@ var LanguageProvider = class { this.client = client; this.fileConfigurationManager = fileConfigurationManager; this.description = description; - this.typingsStatus = typingsStatus; this.disposables = []; - import_coc18.workspace.onDidChangeConfiguration(this.configurationChanged, this, this.disposables); + import_coc23.workspace.onDidChangeConfiguration(this.configurationChanged, this, this.disposables); this.configurationChanged(); let initialized = false; client.onTsServerStarted(async () => { @@ -8651,11 +10577,11 @@ var LanguageProvider = class { }); } configurationChanged() { - const config = import_coc18.workspace.getConfiguration(this.id, null); + const config = import_coc23.workspace.getConfiguration(this.id, null); this.client.diagnosticsManager.setEnableSuggestions(this.id, config.get(suggestionSetting, true)); } dispose() { - import_coc18.disposeAll(this.disposables); + import_coc23.disposeAll(this.disposables); } _register(disposable) { this.disposables.push(disposable); @@ -8663,25 +10589,28 @@ var LanguageProvider = class { registerProviders(client, typingsStatus) { let languageIds = this.description.modeIds; let clientId = `tsserver-${this.description.id}`; - this._register(import_coc18.languages.registerCompletionItemProvider(clientId, "TSC", languageIds, new completionItemProvider_default(client, typingsStatus, this.fileConfigurationManager, this.description.id), completionItemProvider_default.triggerCharacters)); + this._register(import_coc23.languages.registerCompletionItemProvider(clientId, "TSC", languageIds, new completionItemProvider_default(client, typingsStatus, this.fileConfigurationManager, this.description.id), completionItemProvider_default.triggerCharacters)); if (this.client.apiVersion.gte(api_default.v230)) { - this._register(import_coc18.languages.registerCompletionItemProvider(`${this.description.id}-directive`, "TSC", languageIds, new directiveCommentCompletions_default(client), ["@"])); + this._register(import_coc23.languages.registerCompletionItemProvider(`${this.description.id}-directive`, "TSC", languageIds, new directiveCommentCompletions_default(client), ["@"])); } let definitionProvider = new definitionProvider_default(client); - this._register(import_coc18.languages.registerDefinitionProvider(languageIds, definitionProvider)); - this._register(import_coc18.languages.registerTypeDefinitionProvider(languageIds, definitionProvider)); - this._register(import_coc18.languages.registerImplementationProvider(languageIds, definitionProvider)); - this._register(import_coc18.languages.registerReferencesProvider(languageIds, new references_default(client))); - this._register(import_coc18.languages.registerHoverProvider(languageIds, new hover_default(client))); - this._register(import_coc18.languages.registerDocumentHighlightProvider(languageIds, new documentHighlight_default(this.client))); - this._register(import_coc18.languages.registerSignatureHelpProvider(languageIds, new signatureHelp_default(client), ["(", ",", "<", ")"])); - this._register(import_coc18.languages.registerDocumentSymbolProvider(languageIds, new documentSymbol_default(client))); - this._register(import_coc18.languages.registerRenameProvider(languageIds, new rename_default(client, this.fileConfigurationManager))); + this._register(import_coc23.languages.registerDefinitionProvider(languageIds, definitionProvider)); + this._register(import_coc23.languages.registerTypeDefinitionProvider(languageIds, definitionProvider)); + this._register(import_coc23.languages.registerImplementationProvider(languageIds, definitionProvider)); + this._register(import_coc23.languages.registerReferencesProvider(languageIds, new references_default(client))); + this._register(import_coc23.languages.registerHoverProvider(languageIds, new hover_default(client))); + this._register(import_coc23.languages.registerDocumentHighlightProvider(languageIds, new documentHighlight_default(this.client))); + this._register(import_coc23.languages.registerSignatureHelpProvider(languageIds, new signatureHelp_default(client), ["(", ",", "<", ")"])); + this._register(import_coc23.languages.registerDocumentSymbolProvider(languageIds, new documentSymbol_default(client))); + this._register(import_coc23.languages.registerRenameProvider(languageIds, new rename_default(client, this.fileConfigurationManager))); let formatProvider = new formatting_default(client, this.fileConfigurationManager); - this._register(import_coc18.languages.registerDocumentFormatProvider(languageIds, formatProvider)); - this._register(import_coc18.languages.registerDocumentRangeFormatProvider(languageIds, formatProvider)); - this._register(import_coc18.languages.registerOnTypeFormattingEditProvider(languageIds, formatProvider, [";", "}", "\n", String.fromCharCode(27)])); - this._register(import_coc18.languages.registerCodeActionProvider(languageIds, new moduleInstall_default(client), "tsserver")); + this._register(import_coc23.languages.registerDocumentFormatProvider(languageIds, formatProvider)); + this._register(import_coc23.languages.registerDocumentRangeFormatProvider(languageIds, formatProvider)); + this._register(import_coc23.languages.registerOnTypeFormattingEditProvider(languageIds, formatProvider, [";", "}", "\n", String.fromCharCode(27)])); + this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new moduleInstall_default(client), "tsserver")); + if (typeof import_coc23.languages["registerCallHierarchyProvider"] === "function") { + this._register(import_coc23.languages.registerCallHierarchyProvider(languageIds, new callHierarchy_default(client))); + } let {fileConfigurationManager} = this; let conf = fileConfigurationManager.getLanguageConfiguration(this.id); if (["javascript", "typescript"].includes(this.id)) { @@ -8690,30 +10619,33 @@ var LanguageProvider = class { } } if (this.client.apiVersion.gte(api_default.v280)) { - this._register(import_coc18.languages.registerFoldingRangeProvider(languageIds, new folding_default(this.client))); - this._register(import_coc18.languages.registerCodeActionProvider(languageIds, new OrganizeImportsCodeActionProvider(this.client, this.fileConfigurationManager), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.SourceOrganizeImports])); + this._register(import_coc23.languages.registerFoldingRangeProvider(languageIds, new folding_default(this.client))); + this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new OrganizeImportsCodeActionProvider(this.client, this.fileConfigurationManager), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.SourceOrganizeImports])); } if (this.client.apiVersion.gte(api_default.v240)) { - this._register(import_coc18.languages.registerCodeActionProvider(languageIds, new refactor_default(client, this.fileConfigurationManager), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.Refactor])); + this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new refactor_default(client, this.fileConfigurationManager), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.Refactor])); } - this._register(import_coc18.languages.registerCodeActionProvider(languageIds, new quickfix_default(client, this.fileConfigurationManager), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.QuickFix])); - this._register(import_coc18.languages.registerCodeActionProvider(languageIds, new importFix_default(this.client.bufferSyncSupport), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.QuickFix])); + this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new quickfix_default(client, this.fileConfigurationManager), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.QuickFix])); + this._register(import_coc23.languages.registerCodeActionProvider(languageIds, new importFix_default(this.client.bufferSyncSupport), "tsserver", [import_vscode_languageserver_protocol18.CodeActionKind.QuickFix])); let cachedResponse = new CachedNavTreeResponse(); if (this.client.apiVersion.gte(api_default.v206) && conf.get("referencesCodeLens.enable")) { - this._register(import_coc18.languages.registerCodeLensProvider(languageIds, new referencesCodeLens_default(client, cachedResponse))); + this._register(import_coc23.languages.registerCodeLensProvider(languageIds, new referencesCodeLens_default(client, cachedResponse))); } if (this.client.apiVersion.gte(api_default.v220) && conf.get("implementationsCodeLens.enable")) { - this._register(import_coc18.languages.registerCodeLensProvider(languageIds, new implementationsCodeLens_default(client, cachedResponse))); + this._register(import_coc23.languages.registerCodeLensProvider(languageIds, new implementationsCodeLens_default(client, cachedResponse))); } if (this.client.apiVersion.gte(api_default.v350)) { - this._register(import_coc18.languages.registerSelectionRangeProvider(languageIds, new smartSelect_default(this.client))); + this._register(import_coc23.languages.registerSelectionRangeProvider(languageIds, new smartSelect_default(this.client))); + } + if (this.client.apiVersion.gte(api_default.v300)) { + this._register(new tagClosing_default(this.client, this.description.id)); } } handles(resource, doc) { if (doc && this.description.modeIds.indexOf(doc.languageId) >= 0) { return true; } - const base = import_path4.default.basename(import_coc18.Uri.parse(resource).fsPath); + const base = import_path5.default.basename(import_coc23.Uri.parse(resource).fsPath); return !!base && (!!this.description.configFilePattern && this.description.configFilePattern.test(base)); } get id() { @@ -8726,15 +10658,20 @@ var LanguageProvider = class { this.client.bufferSyncSupport.requestAllDiagnostics(); } diagnosticsReceived(diagnosticsKind, file2, diagnostics) { - const config = import_coc18.workspace.getConfiguration(this.id, file2.toString()); + const config = import_coc23.workspace.getConfiguration(this.id, file2.toString()); const reportUnnecessary = config.get("showUnused", true); + const reportDeprecated = config.get("showDeprecated", true); this.client.diagnosticsManager.diagnosticsReceived(diagnosticsKind, file2.toString(), diagnostics.filter((diag) => { if (!reportUnnecessary) { - diag.tags = void 0; if (diag.reportUnnecessary && diag.severity === import_vscode_languageserver_protocol18.DiagnosticSeverity.Information) { return false; } } + if (!reportDeprecated) { + if (diag.reportDeprecated && diag.severity === import_vscode_languageserver_protocol18.DiagnosticSeverity.Hint) { + return false; + } + } return true; })); } @@ -8742,11 +10679,11 @@ var LanguageProvider = class { var languageProvider_default = LanguageProvider; // src/server/typescriptServiceClient.ts -var import_coc27 = __toModule(require("coc.nvim")); +var import_coc32 = __toModule(require("coc.nvim")); var import_fs4 = __toModule(require("fs")); var import_os2 = __toModule(require("os")); -var import_path7 = __toModule(require("path")); -var import_vscode_languageserver_protocol20 = __toModule(require_main3()); +var import_path8 = __toModule(require("path")); +var import_vscode_languageserver_protocol21 = __toModule(require_main3()); // src/utils/fileSchemess.ts var file = "file"; @@ -8816,7 +10753,7 @@ var CallbackMap = class { }; // src/server/features/bufferSyncSupport.ts -var import_coc20 = __toModule(require("coc.nvim")); +var import_coc25 = __toModule(require("coc.nvim")); var import_vscode_languageserver_protocol19 = __toModule(require_main3()); // src/server/utils/async.ts @@ -8889,9 +10826,9 @@ function mode2ScriptKind(mode) { } // src/server/features/resourceMap.ts -var import_coc19 = __toModule(require("coc.nvim")); +var import_coc24 = __toModule(require("coc.nvim")); function defaultPathNormalizer(resource) { - let u = import_coc19.Uri.parse(resource); + let u = import_coc24.Uri.parse(resource); if (u.scheme === "file") { return u.fsPath; } @@ -8947,11 +10884,11 @@ var ResourceMap = class { } return this.isCaseInsensitivePath(key) ? key.toLowerCase() : key; } - isCaseInsensitivePath(path8) { - if (isWindowsPath(path8)) { + isCaseInsensitivePath(path9) { + if (isWindowsPath(path9)) { return true; } - return path8[0] === "/" && this.onIsCaseInsenitiveFileSystem; + return path9[0] === "/" && this.onIsCaseInsenitiveFileSystem; } get onIsCaseInsenitiveFileSystem() { if (process.platform === "win32") { @@ -8963,8 +10900,8 @@ var ResourceMap = class { return false; } }; -function isWindowsPath(path8) { - return /^[a-zA-Z]:\\/.test(path8); +function isWindowsPath(path9) { + return /^[a-zA-Z]:\\/.test(path9); } // src/server/features/bufferSyncSupport.ts @@ -9050,16 +10987,16 @@ var SyncedBuffer = class { this.state = 2; return this.synchronizer.close(this.resource, this.filepath); } - onContentChanged(events2) { + onContentChanged(events3) { if (this.state !== 2) { console.error(`Unexpected buffer state: ${this.state}`); } - this.synchronizer.change(this.resource, this.filepath, events2); + this.synchronizer.change(this.resource, this.filepath, events3); } }; var SyncedBufferMap = class extends ResourceMap { getForPath(filePath) { - return this.get(import_coc20.Uri.file(filePath).toString()); + return this.get(import_coc25.Uri.file(filePath).toString()); } get allBuffers() { return this.values; @@ -9096,24 +11033,24 @@ var BufferSynchronizer = class { return true; } } - change(resource, filepath, events2) { - if (!events2.length) { + change(resource, filepath, events3) { + if (!events3.length) { return; } if (this.supportsBatching) { this.updatePending(resource, new ChangeOperation({ fileName: filepath, - textChanges: events2.map((change) => ({ + textChanges: events3.map((change) => ({ newText: change.text, start: Position.toLocation(change.range.start), end: Position.toLocation(change.range.end) })).reverse() })); } else { - for (const {range, text} of events2) { + for (const {range, text} of events3) { const args = { insertString: text, - ...Range.toFormattingRequestArgs(filepath, range) + ...Range2.toFormattingRequestArgs(filepath, range) }; this.client.executeWithoutWaitingForResponse("change", args); } @@ -9218,29 +11155,29 @@ var BufferSyncSupport = class { this.client = client; this.modeIds = new Set(modeIds); this.diagnosticDelayer = new Delayer(300); - const pathNormalizer = (path8) => this.client.toPath(path8); + const pathNormalizer = (path9) => this.client.toPath(path9); this.syncedBuffers = new SyncedBufferMap(pathNormalizer); this.pendingDiagnostics = new PendingDiagnostics(pathNormalizer); this.synchronizer = new BufferSynchronizer(client, pathNormalizer); this.updateConfiguration(); - import_coc20.workspace.onDidChangeConfiguration(this.updateConfiguration, this, this.disposables); + import_coc25.workspace.onDidChangeConfiguration(this.updateConfiguration, this, this.disposables); } listen() { if (this.listening) { return; } this.listening = true; - import_coc20.workspace.onDidOpenTextDocument(this.openTextDocument, this, this.disposables); - import_coc20.workspace.onDidCloseTextDocument(this.onDidCloseTextDocument, this, this.disposables); - import_coc20.workspace.onDidChangeTextDocument(this.onDidChangeTextDocument, this, this.disposables); - import_coc20.workspace.textDocuments.forEach(this.openTextDocument, this); + import_coc25.workspace.onDidOpenTextDocument(this.openTextDocument, this, this.disposables); + import_coc25.workspace.onDidCloseTextDocument(this.onDidCloseTextDocument, this, this.disposables); + import_coc25.workspace.onDidChangeTextDocument(this.onDidChangeTextDocument, this, this.disposables); + import_coc25.workspace.textDocuments.forEach(this.openTextDocument, this); } handles(resource) { return this.syncedBuffers.has(resource); } dispose() { this.pendingDiagnostics.clear(); - import_coc20.disposeAll(this.disposables); + import_coc25.disposeAll(this.disposables); this._onWillChange.dispose(); this._onDelete.dispose(); } @@ -9248,7 +11185,7 @@ var BufferSyncSupport = class { if (this.syncedBuffers.has(resource)) { return true; } - const existingDocument = import_coc20.workspace.textDocuments.find((doc) => doc.uri.toString() === resource); + const existingDocument = import_coc25.workspace.textDocuments.find((doc) => doc.uri.toString() === resource); if (existingDocument) { return this.openTextDocument(existingDocument); } @@ -9258,7 +11195,7 @@ var BufferSyncSupport = class { const buffer = this.syncedBuffers.getForPath(filePath); if (buffer) return buffer.resource; - return import_coc20.Uri.file(filePath).toString(); + return import_coc25.Uri.file(filePath).toString(); } reset() { var _a; @@ -9277,7 +11214,7 @@ var BufferSyncSupport = class { return false; } const resource = document.uri; - const filepath = this.client.normalizePath(import_coc20.Uri.parse(resource)); + const filepath = this.client.normalizePath(import_coc25.Uri.parse(resource)); if (!filepath) { return false; } @@ -9392,7 +11329,7 @@ var BufferSyncSupport = class { } } if (orderedFileSet.size) { - let uris = Array.from(orderedFileSet.uris).map((uri) => import_coc20.Uri.parse(uri)); + let uris = Array.from(orderedFileSet.uris).map((uri) => import_coc25.Uri.parse(uri)); const getErr = this.pendingGetErr = GetErrRequest.executeGetErrRequest(this.client, uris, () => { if (this.pendingGetErr === getErr) { this.pendingGetErr = void 0; @@ -9402,8 +11339,8 @@ var BufferSyncSupport = class { this.pendingDiagnostics.clear(); } updateConfiguration() { - const jsConfig = import_coc20.workspace.getConfiguration("javascript", null); - const tsConfig = import_coc20.workspace.getConfiguration("typescript", null); + const jsConfig = import_coc25.workspace.getConfiguration("javascript", null); + const tsConfig = import_coc25.workspace.getConfiguration("typescript", null); this._validateJavaScript = jsConfig.get("validate.enable", true); this._validateTypeScript = tsConfig.get("validate.enable", true); } @@ -9420,7 +11357,8 @@ var BufferSyncSupport = class { var bufferSyncSupport_default = BufferSyncSupport; // src/server/features/diagnostics.ts -var import_coc21 = __toModule(require("coc.nvim")); +var import_coc26 = __toModule(require("coc.nvim")); +var import_vscode_languageserver_protocol20 = __toModule(require_main3()); var DiagnosticSet = class { constructor() { this._map = new ResourceMap(); @@ -9456,7 +11394,7 @@ var DiagnosticsManager = class { for (const kind of allDiagnosticKinds) { this._diagnostics.set(kind, new DiagnosticSet()); } - this._currentDiagnostics = import_coc21.languages.createDiagnosticCollection("tsserver"); + this._currentDiagnostics = import_coc26.languages.createDiagnosticCollection("tsserver"); } dispose() { this._currentDiagnostics.dispose(); @@ -9486,7 +11424,7 @@ var DiagnosticsManager = class { const collection = this._diagnostics.get(kind); if (!collection) return; - let doc = import_coc21.workspace.getDocument(uri); + let doc = import_coc26.workspace.getDocument(uri); if (doc) uri = doc.uri; if (diagnostics.length === 0) { @@ -9529,13 +11467,13 @@ var DiagnosticsManager = class { const enabled = this.suggestionsEnabled(uri); return this._diagnostics.get(2).get(uri).filter((x) => { if (!enabled) { - return x.code == 6133; + return x.tags && (x.tags.includes(import_vscode_languageserver_protocol20.DiagnosticTag.Unnecessary) || x.tags.includes(import_vscode_languageserver_protocol20.DiagnosticTag.Deprecated)); } return enabled; }); } suggestionsEnabled(uri) { - let doc = import_coc21.workspace.getDocument(uri); + let doc = import_coc26.workspace.getDocument(uri); if (!doc) return false; if (doc.filetype.startsWith("javascript")) { @@ -9600,7 +11538,7 @@ var RequestQueue = class { }; // src/server/utils/configuration.ts -var import_coc22 = __toModule(require("coc.nvim")); +var import_coc27 = __toModule(require("coc.nvim")); var import_which = __toModule(require_which()); var TsServerLogLevel; (function(TsServerLogLevel2) { @@ -9641,9 +11579,9 @@ var TsServerLogLevel; })(TsServerLogLevel || (TsServerLogLevel = {})); var TypeScriptServiceConfiguration = class { constructor() { - this._configuration = import_coc22.workspace.getConfiguration("tsserver"); - import_coc22.workspace.onDidChangeConfiguration(() => { - this._configuration = import_coc22.workspace.getConfiguration("tsserver"); + this._configuration = import_coc27.workspace.getConfiguration("tsserver"); + import_coc27.workspace.onDidChangeConfiguration(() => { + this._configuration = import_coc27.workspace.getConfiguration("tsserver"); }); } get locale() { @@ -9686,15 +11624,15 @@ var TypeScriptServiceConfiguration = class { return this._configuration.get("debugPort", parseInt(process.env["TSS_DEBUG"], 10)); } get npmLocation() { - let path8 = this._configuration.get("npm", ""); - if (path8) - return import_coc22.workspace.expand(path8); + let path9 = this._configuration.get("npm", ""); + if (path9) + return import_coc27.workspace.expand(path9); try { - path8 = import_which.default.sync("npm"); + path9 = import_which.default.sync("npm"); } catch (e) { return null; } - return path8; + return path9; } static loadFromWorkspace() { return new TypeScriptServiceConfiguration(); @@ -9702,7 +11640,7 @@ var TypeScriptServiceConfiguration = class { }; // src/server/utils/logger.ts -var import_coc23 = __toModule(require("coc.nvim")); +var import_coc28 = __toModule(require("coc.nvim")); // src/server/utils/is.ts var toString = Object.prototype.toString; @@ -9719,7 +11657,7 @@ var Logger = class { if (this._channel) { return this._channel; } - this._channel = import_coc23.window.createOutputChannel("tsserver"); + this._channel = import_coc28.window.createOutputChannel("tsserver"); return this._channel; } dispose() { @@ -9767,7 +11705,7 @@ var logger_default = Logger; var import_child_process2 = __toModule(require("child_process")); var import_net = __toModule(require("net")); var import_os = __toModule(require("os")); -var import_path5 = __toModule(require("path")); +var import_path6 = __toModule(require("path")); var import_fs2 = __toModule(require("fs")); function makeRandomHexString(length) { let chars = ["0", "1", "2", "3", "4", "5", "6", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; @@ -9779,7 +11717,7 @@ function makeRandomHexString(length) { return result; } function getTempDirectory() { - let dir = import_path5.default.join(import_os.default.tmpdir(), `coc.nvim-${process.pid}`); + let dir = import_path6.default.join(import_os.default.tmpdir(), `coc.nvim-${process.pid}`); if (!import_fs2.default.existsSync(dir)) { import_fs2.default.mkdirSync(dir); } @@ -9794,18 +11732,18 @@ function getPipeName(name) { return "\\\\.\\pipe\\" + fullName + "-sock"; } const tmpdir = getTempDirectory(); - return import_path5.default.join(tmpdir, fullName + ".sock"); + return import_path6.default.join(tmpdir, fullName + ".sock"); } function getTempFile(name) { const fullName = "coc-nvim-" + name; - return import_path5.default.join(getTempDirectory(), fullName + ".sock"); + return import_path6.default.join(getTempDirectory(), fullName + ".sock"); } function generatePatchedEnv(env, stdInPipeName, stdOutPipeName, stdErrPipeName) { const newEnv = Object.assign({}, env); newEnv["STDIN_PIPE_NAME"] = stdInPipeName; newEnv["STDOUT_PIPE_NAME"] = stdOutPipeName; newEnv["STDERR_PIPE_NAME"] = stdErrPipeName; - newEnv["TSS_LOG"] = `-level verbose -file ${import_path5.default.join(import_os.default.tmpdir(), "coc-nvim-tsc.log")}`; + newEnv["TSS_LOG"] = `-level verbose -file ${import_path6.default.join(import_os.default.tmpdir(), "coc-nvim-tsc.log")}`; newEnv["PATH"] = newEnv["PATH"] || process.env.PATH; return newEnv; } @@ -9829,7 +11767,7 @@ function fork(modulePath, args, options, logger, callback) { const stdOutPipeName = generatePipeName(); const stdErrPipeName = generatePipeName(); const newEnv = generatePatchedEnv(process.env, stdInPipeName, stdOutPipeName, stdErrPipeName); - newEnv["NODE_PATH"] = import_path5.default.join(modulePath, "..", "..", ".."); + newEnv["NODE_PATH"] = import_path6.default.join(modulePath, "..", "..", ".."); let childProcess; let stdErrServer = import_net.default.createServer((stdErrStream) => { childProcess.stderr = stdErrStream; @@ -9853,7 +11791,7 @@ function fork(modulePath, args, options, logger, callback) { stdErrServer.close(); }; logger.info("Forking TSServer", `PATH: ${newEnv["PATH"]} `); - const bootstrapperPath = import_path5.default.resolve(__dirname, "../bin/tsserverForkStart"); + const bootstrapperPath = import_path6.default.resolve(__dirname, "../bin/tsserverForkStart"); childProcess = import_child_process2.default.fork(bootstrapperPath, [modulePath].concat(args), { silent: true, env: newEnv, @@ -9870,7 +11808,7 @@ function fork(modulePath, args, options, logger, callback) { } // src/server/utils/tracer.ts -var import_coc24 = __toModule(require("coc.nvim")); +var import_coc29 = __toModule(require("coc.nvim")); var Trace; (function(Trace2) { Trace2[Trace2["Off"] = 0] = "Off"; @@ -9900,7 +11838,7 @@ var Tracer = class { this.trace = Tracer.readTrace(); } static readTrace() { - let result = Trace.fromString(import_coc24.workspace.getConfiguration("tsserver").get("trace.server", "off")); + let result = Trace.fromString(import_coc29.workspace.getConfiguration("tsserver").get("trace.server", "off")); if (result === 0 && !!process.env.TSS_TRACE) { result = 1; } @@ -9966,20 +11904,20 @@ function inferredProjectConfig(config) { } // src/server/utils/versionProvider.ts -var import_coc25 = __toModule(require("coc.nvim")); +var import_coc30 = __toModule(require("coc.nvim")); var import_fs3 = __toModule(require("fs")); -var import_path6 = __toModule(require("path")); +var import_path7 = __toModule(require("path")); var TypeScriptVersion = class { - constructor(path8, _pathLabel) { - this.path = path8; + constructor(path9, _pathLabel) { + this.path = path9; this._pathLabel = _pathLabel; this._api = null; } get tscPath() { - return import_path6.default.resolve(this.path, "../bin/tsc"); + return import_path7.default.resolve(this.path, "../bin/tsc"); } get tsServerPath() { - return import_path6.default.resolve(this.path, "tsserver.js"); + return import_path7.default.resolve(this.path, "tsserver.js"); } get pathLabel() { return typeof this._pathLabel === "undefined" ? this.path : this._pathLabel; @@ -10001,16 +11939,16 @@ var TypeScriptVersion = class { if (!import_fs3.default.existsSync(serverPath)) { return void 0; } - const p = serverPath.split(import_path6.default.sep); + const p = serverPath.split(import_path7.default.sep); if (p.length <= 2) { return void 0; } const p2 = p.slice(0, -2); - const modulePath = p2.join(import_path6.default.sep); - let fileName = import_path6.default.join(modulePath, "package.json"); + const modulePath = p2.join(import_path7.default.sep); + let fileName = import_path7.default.join(modulePath, "package.json"); if (!import_fs3.default.existsSync(fileName)) { - if (import_path6.default.basename(modulePath) === "built") { - fileName = import_path6.default.join(modulePath, "..", "package.json"); + if (import_path7.default.basename(modulePath) === "built") { + fileName = import_path7.default.join(modulePath, "..", "package.json"); } } if (!import_fs3.default.existsSync(fileName)) { @@ -10046,14 +11984,14 @@ var TypeScriptVersionProvider = class { get globalVersion() { let {globalTsdk} = this.configuration; if (globalTsdk) - return new TypeScriptVersion(import_coc25.workspace.expand(globalTsdk)); + return new TypeScriptVersion(import_coc30.workspace.expand(globalTsdk)); return void 0; } getLocalVersion() { - let folders = import_coc25.workspace.workspaceFolders.map((f) => import_coc25.Uri.parse(f.uri).fsPath); + let folders = import_coc30.workspace.workspaceFolders.map((f) => import_coc30.Uri.parse(f.uri).fsPath); for (let p of folders) { for (let folder of MODULE_FOLDERS) { - let libFolder = import_path6.default.join(p, folder); + let libFolder = import_path7.default.join(p, folder); if (import_fs3.default.existsSync(libFolder)) { let version = new TypeScriptVersion(libFolder); if (version.isValid) @@ -10066,24 +12004,24 @@ var TypeScriptVersionProvider = class { get bundledVersion() { try { const file2 = require.resolve("typescript"); - const bundledVersion = new TypeScriptVersion(import_path6.default.dirname(file2), ""); + const bundledVersion = new TypeScriptVersion(import_path7.default.dirname(file2), ""); return bundledVersion; } catch (e) { - import_coc25.window.showMessage("Bundled typescript module not found", "error"); + import_coc30.window.showMessage("Bundled typescript module not found", "error"); return null; } } }; // src/server/utils/versionStatus.ts -var import_coc26 = __toModule(require("coc.nvim")); +var import_coc31 = __toModule(require("coc.nvim")); var VersionStatus = class { constructor(_normalizePath, enableJavascript) { this._normalizePath = _normalizePath; this.enableJavascript = enableJavascript; this._versionString = ""; - this._versionBarEntry = import_coc26.window.createStatusBarItem(99); - this._onChangeEditorSub = import_coc26.events.on("BufEnter", this.onBufEnter, this); + this._versionBarEntry = import_coc31.window.createStatusBarItem(99); + this._onChangeEditorSub = import_coc31.events.on("BufEnter", this.onBufEnter, this); this._versionBarEntry.show(); } dispose() { @@ -10095,7 +12033,7 @@ var VersionStatus = class { } set loading(isLoading) { if (isLoading) { - this._versionBarEntry.text = `Initialing tsserver ${this._versionString}`; + this._versionBarEntry.text = `Initializing tsserver ${this._versionString}`; } else { this._versionBarEntry.text = `TSC ${this._versionString}`; } @@ -10108,7 +12046,7 @@ var VersionStatus = class { return filetype.startsWith("typescript"); } async onBufEnter(bufnr) { - let filetype = await import_coc26.workspace.nvim.call("getbufvar", [bufnr, "&filetype", ""]); + let filetype = await import_coc31.workspace.nvim.call("getbufvar", [bufnr, "&filetype", ""]); if (this.checkFiletype(filetype)) { this._versionBarEntry.show(); } else { @@ -10248,24 +12186,24 @@ var TypeScriptServiceClient = class { constructor(pluginManager, modeIds) { this.pluginManager = pluginManager; this.modeIds = modeIds; - this.state = import_coc27.ServiceStat.Initial; + this.state = import_coc32.ServiceStat.Initial; this.logger = new logger_default(); this.tsServerLogFile = null; this.cancellationPipeName = null; this._callbacks = new CallbackMap(); this._requestQueue = new RequestQueue(); this._pendingResponses = new Set(); - this._onTsServerStarted = new import_vscode_languageserver_protocol20.Emitter(); - this._onProjectLanguageServiceStateChanged = new import_vscode_languageserver_protocol20.Emitter(); - this._onDidBeginInstallTypings = new import_vscode_languageserver_protocol20.Emitter(); - this._onDidEndInstallTypings = new import_vscode_languageserver_protocol20.Emitter(); - this._onTypesInstallerInitializationFailed = new import_vscode_languageserver_protocol20.Emitter(); + this._onTsServerStarted = new import_vscode_languageserver_protocol21.Emitter(); + this._onProjectLanguageServiceStateChanged = new import_vscode_languageserver_protocol21.Emitter(); + this._onDidBeginInstallTypings = new import_vscode_languageserver_protocol21.Emitter(); + this._onDidEndInstallTypings = new import_vscode_languageserver_protocol21.Emitter(); + this._onTypesInstallerInitializationFailed = new import_vscode_languageserver_protocol21.Emitter(); this.disposables = []; this.isRestarting = false; - this._onDiagnosticsReceived = new import_vscode_languageserver_protocol20.Emitter(); - this._onConfigDiagnosticsReceived = new import_vscode_languageserver_protocol20.Emitter(); - this._onResendModelsRequested = new import_vscode_languageserver_protocol20.Emitter(); - this.pathSeparator = import_path7.default.sep; + this._onDiagnosticsReceived = new import_vscode_languageserver_protocol21.Emitter(); + this._onConfigDiagnosticsReceived = new import_vscode_languageserver_protocol21.Emitter(); + this._onResendModelsRequested = new import_vscode_languageserver_protocol21.Emitter(); + this.pathSeparator = import_path8.default.sep; this.lastStart = Date.now(); this.servicePromise = null; this.lastError = null; @@ -10332,7 +12270,7 @@ var TypeScriptServiceClient = class { }; if (this.servicePromise) { return Promise.resolve(this.servicePromise.then((childProcess) => { - this.state = import_coc27.ServiceStat.Stopping; + this.state = import_coc32.ServiceStat.Stopping; this.info("Killing TS Server"); this.isRestarting = true; childProcess.kill(); @@ -10347,7 +12285,7 @@ var TypeScriptServiceClient = class { return; return new Promise((resolve, reject) => { this.servicePromise.then((childProcess) => { - if (this.state == import_coc27.ServiceStat.Running) { + if (this.state == import_coc32.ServiceStat.Running) { this.info("Killing TS Server"); childProcess.onExit(() => { resolve(); @@ -10397,7 +12335,7 @@ var TypeScriptServiceClient = class { ensureServiceStarted() { if (!this.servicePromise) { this.startService().catch((err) => { - import_coc27.window.showMessage(`TSServer start failed: ${err.message}`, "error"); + import_coc32.window.showMessage(`TSServer start failed: ${err.message}`, "error"); this.error(`Service start failed: ${err.stack}`); }); } @@ -10412,9 +12350,9 @@ var TypeScriptServiceClient = class { } if (!currentVersion || !currentVersion.isValid) { if (this.configuration.globalTsdk) { - import_coc27.window.showMessage(`Can not find typescript module, in 'tsserver.tsdk': ${this.configuration.globalTsdk}`, "error"); + import_coc32.window.showMessage(`Can not find typescript module, in 'tsserver.tsdk': ${this.configuration.globalTsdk}`, "error"); } else { - import_coc27.window.showMessage(`Can not find typescript module, run ':CocInstall coc-tsserver' to fix it!`, "error"); + import_coc32.window.showMessage(`Can not find typescript module, run ':CocInstall coc-tsserver' to fix it!`, "error"); } return; } @@ -10430,23 +12368,23 @@ var TypeScriptServiceClient = class { ...debugPort ? [`--inspect=${debugPort}`] : [], ...maxTsServerMemory ? [`--max-old-space-size=${maxTsServerMemory}`] : [] ], - cwd: import_coc27.workspace.root + cwd: import_coc32.workspace.root }; this.servicePromise = this.startProcess(currentVersion, tsServerForkArgs, options, resendModels); return this.servicePromise; } startProcess(currentVersion, args, options, resendModels) { - this.state = import_coc27.ServiceStat.Starting; + this.state = import_coc32.ServiceStat.Starting; return new Promise((resolve, reject) => { try { fork(currentVersion.tsServerPath, args, options, this.logger, (err, childProcess) => { if (err || !childProcess) { - this.state = import_coc27.ServiceStat.StartFailed; + this.state = import_coc32.ServiceStat.StartFailed; this.lastError = err; this.error("Starting TSServer failed with error.", err.stack); return; } - this.state = import_coc27.ServiceStat.Running; + this.state = import_coc32.ServiceStat.Running; this.info("Started TSServer", JSON.stringify(currentVersion, null, 2)); const handle = new ForkedTsServerProcess(childProcess); this.tsServerProcess = handle; @@ -10455,7 +12393,7 @@ var TypeScriptServiceClient = class { this.lastError = err2; this.error("TSServer errored with error.", err2); this.error(`TSServer log file: ${this.tsServerLogFile || ""}`); - import_coc27.window.showMessage(`TSServer errored with error. ${err2.message}`, "error"); + import_coc32.window.showMessage(`TSServer errored with error. ${err2.message}`, "error"); this.serviceExited(false); }); handle.onExit((code) => { @@ -10485,7 +12423,7 @@ var TypeScriptServiceClient = class { async openTsServerLogFile() { const isRoot = process.getuid && process.getuid() == 0; let echoErr = (msg) => { - import_coc27.window.showMessage(msg, "error"); + import_coc32.window.showMessage(msg, "error"); }; if (isRoot) { echoErr("Log disabled for root user."); @@ -10504,7 +12442,7 @@ var TypeScriptServiceClient = class { return false; } try { - await import_coc27.workspace.nvim.command(`edit ${this.tsServerLogFile}`); + await import_coc32.workspace.nvim.command(`edit ${this.tsServerLogFile}`); return true; } catch { echoErr("Could not open TS Server log file"); @@ -10551,7 +12489,7 @@ var TypeScriptServiceClient = class { }; } serviceExited(restart) { - this.state = import_coc27.ServiceStat.Stopped; + this.state = import_coc32.ServiceStat.Stopped; this.servicePromise = null; this.tsServerLogFile = null; this._callbacks.destroy("Service died."); @@ -10567,10 +12505,10 @@ var TypeScriptServiceClient = class { if (diff < 10 * 1e3) { this.lastStart = Date.now(); startService = false; - import_coc27.window.showMessage("The TypeScript language service died 5 times right after it got started.", "error"); + import_coc32.window.showMessage("The TypeScript language service died 5 times right after it got started.", "error"); } else if (diff < 60 * 1e3) { this.lastStart = Date.now(); - import_coc27.window.showMessage("The TypeScript language service died unexpectedly 5 times in the last 5 Minutes.", "error"); + import_coc32.window.showMessage("The TypeScript language service died unexpectedly 5 times in the last 5 Minutes.", "error"); } } if (startService) { @@ -10579,7 +12517,7 @@ var TypeScriptServiceClient = class { } } toPath(uri) { - return this.normalizePath(import_coc27.Uri.parse(uri)); + return this.normalizePath(import_coc32.Uri.parse(uri)); } toOpenedFilePath(uri, options = {}) { if (!this.bufferSyncSupport.ensureHasBuffer(uri)) { @@ -10593,18 +12531,18 @@ var TypeScriptServiceClient = class { toResource(filepath) { if (this._apiVersion.gte(api_default.v213)) { if (filepath.startsWith(this.inMemoryResourcePrefix + "untitled:")) { - let resource = import_coc27.Uri.parse(filepath); + let resource = import_coc32.Uri.parse(filepath); if (this.inMemoryResourcePrefix) { - const dirName = import_path7.default.dirname(resource.path); - const fileName = import_path7.default.basename(resource.path); + const dirName = import_path8.default.dirname(resource.path); + const fileName = import_path8.default.basename(resource.path); if (fileName.startsWith(this.inMemoryResourcePrefix)) { - resource = resource.with({path: import_path7.default.posix.join(dirName, fileName.slice(this.inMemoryResourcePrefix.length))}); + resource = resource.with({path: import_path8.default.posix.join(dirName, fileName.slice(this.inMemoryResourcePrefix.length))}); } } return resource.toString(); } } - return import_coc27.Uri.file(filepath).toString(); + return import_coc32.Uri.file(filepath).toString(); } normalizePath(resource) { if (disabledSchemes.has(resource.scheme)) { @@ -10615,7 +12553,7 @@ var TypeScriptServiceClient = class { let result = resource.fsPath; if (!result) return void 0; - result = import_path7.default.normalize(result); + result = import_path8.default.normalize(result); return result.replace(new RegExp("\\" + this.pathSeparator, "g"), "/"); } default: { @@ -10626,9 +12564,9 @@ var TypeScriptServiceClient = class { getDocument(resource) { if (resource.startsWith("untitled:")) { let bufnr = parseInt(resource.split(":", 2)[1], 10); - return import_coc27.workspace.getDocument(bufnr); + return import_coc32.workspace.getDocument(bufnr); } - return import_coc27.workspace.getDocument(resource); + return import_coc32.workspace.getDocument(resource); } get inMemoryResourcePrefix() { return this._apiVersion.gte(api_default.v270) ? "^" : ""; @@ -10636,26 +12574,26 @@ var TypeScriptServiceClient = class { asUrl(filepath) { if (this._apiVersion.gte(api_default.v213)) { if (filepath.startsWith(this.inMemoryResourcePrefix + "untitled:")) { - let resource = import_coc27.Uri.parse(filepath.slice(this.inMemoryResourcePrefix.length)); + let resource = import_coc32.Uri.parse(filepath.slice(this.inMemoryResourcePrefix.length)); if (this.inMemoryResourcePrefix) { - const dirName = import_path7.default.dirname(resource.path); - const fileName = import_path7.default.basename(resource.path); + const dirName = import_path8.default.dirname(resource.path); + const fileName = import_path8.default.basename(resource.path); if (fileName.startsWith(this.inMemoryResourcePrefix)) { resource = resource.with({ - path: import_path7.default.posix.join(dirName, fileName.slice(this.inMemoryResourcePrefix.length)) + path: import_path8.default.posix.join(dirName, fileName.slice(this.inMemoryResourcePrefix.length)) }); } } return resource; } } - return import_coc27.Uri.file(filepath); + return import_coc32.Uri.file(filepath); } execute(command, args, token, config) { var _a; let execution; if (config == null ? void 0 : config.cancelOnResourceChange) { - const source = new import_vscode_languageserver_protocol20.CancellationTokenSource(); + const source = new import_vscode_languageserver_protocol21.CancellationTokenSource(); token.onCancellationRequested(() => source.cancel()); const inFlight = { resource: config.cancelOnResourceChange, @@ -10687,7 +12625,7 @@ var TypeScriptServiceClient = class { } fatalError(command, error) { console.error(`A non-recoverable error occured while executing tsserver command: ${command}`); - if (this.state === import_coc27.ServiceStat.Running) { + if (this.state === import_coc32.ServiceStat.Running) { this.info("Killing TS Server by fatal error:", error); this.service().then((service) => { service.kill(); @@ -10868,7 +12806,7 @@ var TypeScriptServiceClient = class { break; case "projectsUpdatedInBackground": const body = event.body; - const resources = body.openFiles.map(import_coc27.Uri.file); + const resources = body.openFiles.map(import_coc32.Uri.file); this.bufferSyncSupport.getErr(resources); break; case "typesInstallerInitializationFailed": @@ -10904,7 +12842,7 @@ var TypeScriptServiceClient = class { if (this._configuration.tsServerLogLevel !== TsServerLogLevel.Off && !isRoot) { const logDir = getTempDirectory(); if (logDir) { - this.tsServerLogFile = import_path7.default.join(logDir, `tsserver.log`); + this.tsServerLogFile = import_path8.default.join(logDir, `tsserver.log`); this.info("TSServer log file :", this.tsServerLogFile); } else { this.tsServerLogFile = null; @@ -10920,11 +12858,11 @@ var TypeScriptServiceClient = class { const pluginNames = this.pluginManager.plugins.map((x) => x.name); let pluginPaths = this._configuration.tsServerPluginPaths; pluginPaths = pluginPaths.reduce((p, c) => { - if (import_path7.default.isAbsolute(c)) { + if (import_path8.default.isAbsolute(c)) { p.push(c); } else { - let roots = import_coc27.workspace.workspaceFolders.map((o) => import_coc27.Uri.parse(o.uri).fsPath); - p.push(...roots.map((r) => import_path7.default.join(r, c))); + let roots = import_coc32.workspace.workspaceFolders.map((o) => import_coc32.Uri.parse(o.uri).fsPath); + p.push(...roots.map((r) => import_path8.default.join(r, c))); } return p; }, []); @@ -10963,17 +12901,17 @@ var TypeScriptServiceClient = class { return args; } getProjectRootPath(uri) { - let root = import_coc27.workspace.cwd; - let u = import_coc27.Uri.parse(uri); + let root = import_coc32.workspace.cwd; + let u = import_coc32.Uri.parse(uri); if (u.scheme !== "file") return void 0; - let folder = import_coc27.workspace.getWorkspaceFolder(uri); + let folder = import_coc32.workspace.getWorkspaceFolder(uri); if (folder) { - root = import_coc27.Uri.parse(folder.uri).fsPath; + root = import_coc32.Uri.parse(folder.uri).fsPath; } else { - let filepath = import_coc27.Uri.parse(uri).fsPath; + let filepath = import_coc32.Uri.parse(uri).fsPath; if (!filepath.startsWith(root)) { - root = import_path7.default.dirname(filepath); + root = import_path8.default.dirname(filepath); } } if (root == import_os2.default.homedir()) @@ -10993,7 +12931,7 @@ var TypeScriptServiceClient = class { return this.bufferSyncSupport.interuptGetErr(f); } cancelInflightRequestsForResource(resource) { - if (this.state !== import_coc27.ServiceStat.Running || !this.tsServerProcess) { + if (this.state !== import_coc32.ServiceStat.Running || !this.tsServerProcess) { return; } for (const request of this.tsServerProcess.toCancelOnResourceChange) { @@ -11056,8 +12994,8 @@ var standardLanguageDescriptions = [ ]; // src/server/utils/typingsStatus.ts -var import_coc28 = __toModule(require("coc.nvim")); -var import_vscode_languageserver_protocol21 = __toModule(require_main3()); +var import_coc33 = __toModule(require("coc.nvim")); +var import_vscode_languageserver_protocol22 = __toModule(require_main3()); var typingsInstallTimeout = 30 * 1e3; var TypingsStatus = class { constructor(client) { @@ -11097,12 +13035,12 @@ var AtaProgressReporter = class { constructor(client) { this._promises = new Map(); this._invalid = false; - this.statusItem = import_coc28.window.createStatusBarItem(10, {progress: true}); + this.statusItem = import_coc33.window.createStatusBarItem(10, {progress: true}); const disposables = []; disposables.push(client.onDidBeginInstallTypings((e) => this._onBegin(e.eventId))); disposables.push(client.onDidEndInstallTypings((e) => this._onEndOrTimeout(e.eventId))); disposables.push(client.onTypesInstallerInitializationFailed((_) => this.onTypesInstallerInitializationFailed())); - this._disposable = import_vscode_languageserver_protocol21.Disposable.create(() => { + this._disposable = import_vscode_languageserver_protocol22.Disposable.create(() => { disposables.forEach((disposable) => { disposable.dispose(); }); @@ -11134,7 +13072,7 @@ var AtaProgressReporter = class { onTypesInstallerInitializationFailed() { this.statusItem.hide(); if (!this._invalid) { - import_coc28.window.showMessage("Could not install typings files for JavaScript language features. Please ensure that NPM is installed", "error"); + import_coc33.window.showMessage("Could not install typings files for JavaScript language features. Please ensure that NPM is installed", "error"); } this._invalid = true; } @@ -11162,12 +13100,12 @@ var TypeScriptServiceClientHost = class { this.triggerAllDiagnostics(); }, 1500); }; - const configFileWatcher = import_coc29.workspace.createFileSystemWatcher("**/[tj]sconfig.json"); + const configFileWatcher = import_coc34.workspace.createFileSystemWatcher("**/[tj]sconfig.json"); this.disposables.push(configFileWatcher); configFileWatcher.onDidCreate(this.reloadProjects, this, this.disposables); configFileWatcher.onDidDelete(this.reloadProjects, this, this.disposables); configFileWatcher.onDidChange(handleProjectChange, this, this.disposables); - const packageFileWatcher = import_coc29.workspace.createFileSystemWatcher("**/package.json"); + const packageFileWatcher = import_coc34.workspace.createFileSystemWatcher("**/package.json"); packageFileWatcher.onDidCreate(this.reloadProjects, this, this.disposables); packageFileWatcher.onDidChange(handleProjectChange, this, this.disposables); const allModeIds = this.getAllModeIds(descriptions, pluginManager); @@ -11179,12 +13117,12 @@ var TypeScriptServiceClientHost = class { }); }, null, this.disposables); this.disposables.push(new watchBuild_default(this.client)); - this.disposables.push(import_coc29.languages.registerWorkspaceSymbolProvider(new workspaceSymbols_default(this.client, allModeIds))); + this.disposables.push(import_coc34.languages.registerWorkspaceSymbolProvider(new workspaceSymbols_default(this.client, allModeIds))); this.client.onConfigDiagnosticsReceived((diag) => { let {body} = diag; if (body) { let {configFile, diagnostics} = body; - let uri = import_coc29.Uri.file(configFile); + let uri = import_coc34.Uri.file(configFile); if (diagnostics.length == 0) { this.client.diagnosticsManager.configFileDiagnosticsReceived(uri.toString(), []); } else { @@ -11192,12 +13130,12 @@ var TypeScriptServiceClientHost = class { let {text, code, category, start, end} = o; let range; if (!start || !end) { - range = import_vscode_languageserver_protocol22.Range.create(import_vscode_languageserver_protocol22.Position.create(0, 0), import_vscode_languageserver_protocol22.Position.create(0, 1)); + range = import_vscode_languageserver_protocol23.Range.create(import_vscode_languageserver_protocol23.Position.create(0, 0), import_vscode_languageserver_protocol23.Position.create(0, 1)); } else { - range = import_vscode_languageserver_protocol22.Range.create(start.line - 1, start.offset - 1, end.line - 1, end.offset - 1); + range = import_vscode_languageserver_protocol23.Range.create(start.line - 1, start.offset - 1, end.line - 1, end.offset - 1); } - let severity = category == "error" ? import_vscode_languageserver_protocol22.DiagnosticSeverity.Error : import_vscode_languageserver_protocol22.DiagnosticSeverity.Warning; - return import_vscode_languageserver_protocol22.Diagnostic.create(range, text, severity, code); + let severity = category == "error" ? import_vscode_languageserver_protocol23.DiagnosticSeverity.Error : import_vscode_languageserver_protocol23.DiagnosticSeverity.Warning; + return import_vscode_languageserver_protocol23.Diagnostic.create(range, text, severity, code); }); this.client.diagnosticsManager.configFileDiagnosticsReceived(uri.toString(), diagnosticList); } @@ -11222,8 +13160,8 @@ var TypeScriptServiceClientHost = class { isExternal: true }); } else { - for (const language of plugin.languages) { - languageIds.add(language); + for (const language2 of plugin.languages) { + languageIds.add(language2); } } } @@ -11241,7 +13179,7 @@ var TypeScriptServiceClientHost = class { this.client.onTsServerStarted(() => { this.triggerAllDiagnostics(); }); - import_coc29.workspace.onDidChangeConfiguration(this.configurationChanged, this, this.disposables); + import_coc34.workspace.onDidChangeConfiguration(this.configurationChanged, this, this.disposables); this.configurationChanged(); } registerExtensionLanguageProvider(description) { @@ -11249,9 +13187,9 @@ var TypeScriptServiceClientHost = class { this.languagePerId.set(description.id, manager); } dispose() { - import_coc29.disposeAll(this.disposables); - for (let language of this.languagePerId.values()) { - language.dispose(); + import_coc34.disposeAll(this.disposables); + for (let language2 of this.languagePerId.values()) { + language2.dispose(); } this.languagePerId.clear(); this.fileConfigurationManager.dispose(); @@ -11266,14 +13204,14 @@ var TypeScriptServiceClientHost = class { } reloadProjects() { this.client.diagnosticsManager.reInitialize(); - this.client.execute("reloadProjects", null, import_vscode_languageserver_protocol22.CancellationToken.None); + this.client.execute("reloadProjects", null, import_vscode_languageserver_protocol23.CancellationToken.None); this.triggerAllDiagnostics(); } getProvider(languageId) { return this.languagePerId.get(languageId); } configurationChanged() { - const config = import_coc29.workspace.getConfiguration("tsserver"); + const config = import_coc34.workspace.getConfiguration("tsserver"); this.reportStyleCheckAsWarnings = config.get("reportStyleChecksAsWarnings", true); } async findLanguage(uri) { @@ -11282,27 +13220,27 @@ var TypeScriptServiceClientHost = class { if (!doc) return void 0; let languages4 = Array.from(this.languagePerId.values()); - return languages4.find((language) => language.handles(uri, doc.textDocument)); + return languages4.find((language2) => language2.handles(uri, doc.textDocument)); } catch { return void 0; } } async handles(doc) { let languages4 = Array.from(this.languagePerId.values()); - let idx = languages4.findIndex((language) => language.handles(doc.uri, doc)); + let idx = languages4.findIndex((language2) => language2.handles(doc.uri, doc)); if (idx != -1) return true; return this.client.bufferSyncSupport.handles(doc.uri); } triggerAllDiagnostics() { - for (const language of this.languagePerId.values()) { - language.triggerAllDiagnostics(); + for (const language2 of this.languagePerId.values()) { + language2.triggerAllDiagnostics(); } } async diagnosticsReceived(kind, resource, diagnostics) { - const language = await this.findLanguage(resource.toString()); - if (language) { - language.diagnosticsReceived(kind, resource, this.createMarkerDatas(diagnostics)); + const language2 = await this.findLanguage(resource.toString()); + if (language2) { + language2.diagnosticsReceived(kind, resource, this.createMarkerDatas(diagnostics)); } } createMarkerDatas(diagnostics) { @@ -11324,11 +13262,21 @@ var TypeScriptServiceClientHost = class { }; }); } + let tags = []; + if (diagnostic.reportsUnnecessary) { + tags.push(import_vscode_languageserver_protocol23.DiagnosticTag.Unnecessary); + } + if (diagnostic.reportsDeprecated) { + tags.push(import_vscode_languageserver_protocol23.DiagnosticTag.Deprecated); + } + tags = tags.length ? tags : void 0; return { range, + tags, message: text, code: diagnostic.code ? diagnostic.code : null, severity: this.getDiagnosticSeverity(diagnostic), + reportDeprecated: diagnostic.reportsDeprecated, reportUnnecessary: diagnostic.reportsUnnecessary, source: diagnostic.source || "tsserver", relatedInformation @@ -11336,17 +13284,17 @@ var TypeScriptServiceClientHost = class { } getDiagnosticSeverity(diagnostic) { if (this.reportStyleCheckAsWarnings && this.isStyleCheckDiagnostic(diagnostic.code) && diagnostic.category === DiagnosticCategory.error) { - return import_vscode_languageserver_protocol22.DiagnosticSeverity.Warning; + return import_vscode_languageserver_protocol23.DiagnosticSeverity.Warning; } switch (diagnostic.category) { case DiagnosticCategory.error: - return import_vscode_languageserver_protocol22.DiagnosticSeverity.Error; + return import_vscode_languageserver_protocol23.DiagnosticSeverity.Error; case DiagnosticCategory.warning: - return import_vscode_languageserver_protocol22.DiagnosticSeverity.Warning; + return import_vscode_languageserver_protocol23.DiagnosticSeverity.Warning; case DiagnosticCategory.suggestion: - return import_vscode_languageserver_protocol22.DiagnosticSeverity.Information; + return import_vscode_languageserver_protocol23.DiagnosticSeverity.Information; default: - return import_vscode_languageserver_protocol22.DiagnosticSeverity.Error; + return import_vscode_languageserver_protocol23.DiagnosticSeverity.Error; } } isStyleCheckDiagnostic(code) { @@ -11368,12 +13316,12 @@ var TsserverService = class { this.pluginManager = pluginManager; this.id = "tsserver"; this.name = "tsserver"; - this.state = import_coc30.ServiceStat.Initial; - this._onDidServiceReady = new import_vscode_languageserver_protocol23.Emitter(); + this.state = import_coc35.ServiceStat.Initial; + this._onDidServiceReady = new import_vscode_languageserver_protocol24.Emitter(); this.onServiceReady = this._onDidServiceReady.event; this.disposables = []; this.descriptions = []; - const config = import_coc30.workspace.getConfiguration("tsserver"); + const config = import_coc35.workspace.getConfiguration("tsserver"); const enableJavascript = !!config.get("enableJavascript"); this.enable = config.get("enable"); this.descriptions = standardLanguageDescriptions.filter((o) => { @@ -11384,10 +13332,10 @@ var TsserverService = class { }, []); } get config() { - return import_coc30.workspace.getConfiguration("tsserver"); + return import_coc35.workspace.getConfiguration("tsserver"); } getClientHost() { - if (this.state == import_coc30.ServiceStat.Running) + if (this.state == import_coc35.ServiceStat.Running) return Promise.resolve(this.clientHost); this.start(); return new Promise((resolve, reject) => { @@ -11404,7 +13352,7 @@ var TsserverService = class { start() { if (this.clientHost) return; - this.state = import_coc30.ServiceStat.Starting; + this.state = import_coc35.ServiceStat.Starting; this.clientHost = new typescriptServiceClientHost_default(this.descriptions, this.pluginManager); this.disposables.push(this.clientHost); let client = this.clientHost.serviceClient; @@ -11425,7 +13373,7 @@ var TsserverService = class { }); } dispose() { - import_coc30.disposeAll(this.disposables); + import_coc35.disposeAll(this.disposables); } async restart() { if (!this.clientHost) @@ -11445,8 +13393,8 @@ var TsserverService = class { var server_default = TsserverService; // src/utils/plugins.ts -var import_coc31 = __toModule(require("coc.nvim")); -var import_vscode_languageserver_protocol24 = __toModule(require_main3()); +var import_coc36 = __toModule(require("coc.nvim")); +var import_vscode_languageserver_protocol25 = __toModule(require_main3()); var TypeScriptServerPlugin; (function(TypeScriptServerPlugin2) { function equals2(a, b) { @@ -11458,9 +13406,9 @@ var PluginManager = class { constructor() { this._pluginConfigurations = new Map(); this._disposables = []; - this._onDidUpdatePlugins = this._register(new import_vscode_languageserver_protocol24.Emitter()); + this._onDidUpdatePlugins = this._register(new import_vscode_languageserver_protocol25.Emitter()); this.onDidChangePlugins = this._onDidUpdatePlugins.event; - this._onDidUpdateConfig = this._register(new import_vscode_languageserver_protocol24.Emitter()); + this._onDidUpdateConfig = this._register(new import_vscode_languageserver_protocol25.Emitter()); this.onDidUpdateConfig = this._onDidUpdateConfig.event; let loadPlugins = () => { if (!this._plugins) { @@ -11472,11 +13420,11 @@ var PluginManager = class { this._onDidUpdatePlugins.fire(this); } }; - import_coc31.extensions.onDidActiveExtension(loadPlugins, void 0, this._disposables); - import_coc31.extensions.onDidUnloadExtension(loadPlugins, void 0, this._disposables); + import_coc36.extensions.onDidActiveExtension(loadPlugins, void 0, this._disposables); + import_coc36.extensions.onDidUnloadExtension(loadPlugins, void 0, this._disposables); } dispose() { - import_coc31.disposeAll(this._disposables); + import_coc36.disposeAll(this._disposables); } get plugins() { if (!this._plugins) { @@ -11497,7 +13445,7 @@ var PluginManager = class { } readPlugins() { const pluginMap = new Map(); - for (const extension of import_coc31.extensions.all) { + for (const extension of import_coc36.extensions.all) { const pack = extension.packageJSON; if (pack.contributes && Array.isArray(pack.contributes.typescriptServerPlugins)) { const plugins = []; @@ -11521,18 +13469,19 @@ var PluginManager = class { // src/index.ts async function activate(context) { let {subscriptions, logger} = context; - const config = import_coc32.workspace.getConfiguration().get("tsserver", {}); + const config = import_coc37.workspace.getConfiguration().get("tsserver", {}); if (!config.enable) return; const pluginManager = new PluginManager(); const service = new server_default(pluginManager); function registCommand2(cmd) { let {id, execute} = cmd; - subscriptions.push(import_coc32.commands.registerCommand(id, execute, cmd)); + subscriptions.push(import_coc37.commands.registerCommand(id, execute, cmd)); } registCommand2(new ConfigurePluginCommand(pluginManager)); registCommand2(new AutoFixCommand(service)); registCommand2(new ReloadProjectsCommand(service)); + registCommand2(new FileReferencesCommand(service)); registCommand2(new OpenTsServerLogCommand(service)); registCommand2(new TypeScriptGoToProjectConfigCommand(service)); registCommand2(new OrganizeImportsCommand(service)); @@ -11547,7 +13496,7 @@ async function activate(context) { } }); service.start().then(() => { - subscriptions.push(import_coc32.services.regist(service)); + subscriptions.push(import_coc37.services.regist(service)); }, (e) => { logger.error(`Error on service start:`, e); });