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(/