{
  "version": 3,
  "sources": ["../../node_modules/vscode-languageclient/lib/common/utils/is.js", "../../node_modules/vscode-jsonrpc/lib/common/is.js", "../../node_modules/vscode-jsonrpc/lib/common/messages.js", "../../node_modules/vscode-jsonrpc/lib/common/linkedMap.js", "../../node_modules/vscode-jsonrpc/lib/common/disposable.js", "../../node_modules/vscode-jsonrpc/lib/common/ral.js", "../../node_modules/vscode-jsonrpc/lib/common/events.js", "../../node_modules/vscode-jsonrpc/lib/common/cancellation.js", "../../node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js", "../../node_modules/vscode-jsonrpc/lib/common/semaphore.js", "../../node_modules/vscode-jsonrpc/lib/common/messageReader.js", "../../node_modules/vscode-jsonrpc/lib/common/messageWriter.js", "../../node_modules/vscode-jsonrpc/lib/common/messageBuffer.js", "../../node_modules/vscode-jsonrpc/lib/common/connection.js", "../../node_modules/vscode-jsonrpc/lib/common/api.js", "../../node_modules/vscode-jsonrpc/lib/node/ril.js", "../../node_modules/vscode-jsonrpc/lib/node/main.js", "../../node_modules/vscode-jsonrpc/node.js", "../../node_modules/vscode-languageserver-types/lib/umd/main.js", "../../node_modules/vscode-languageserver-protocol/lib/common/messages.js", "../../node_modules/vscode-languageserver-protocol/lib/common/utils/is.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js", "../../node_modules/vscode-languageserver-protocol/lib/common/protocol.js", "../../node_modules/vscode-languageserver-protocol/lib/common/connection.js", "../../node_modules/vscode-languageserver-protocol/lib/common/api.js", "../../node_modules/vscode-languageserver-protocol/lib/node/main.js", "../../node_modules/vscode-languageclient/lib/common/utils/async.js", "../../node_modules/vscode-languageclient/lib/common/protocolCompletionItem.js", "../../node_modules/vscode-languageclient/lib/common/protocolCodeLens.js", "../../node_modules/vscode-languageclient/lib/common/protocolDocumentLink.js", "../../node_modules/vscode-languageclient/lib/common/protocolCodeAction.js", "../../node_modules/vscode-languageclient/lib/common/protocolDiagnostic.js", "../../node_modules/vscode-languageclient/lib/common/protocolCallHierarchyItem.js", "../../node_modules/vscode-languageclient/lib/common/protocolTypeHierarchyItem.js", "../../node_modules/vscode-languageclient/lib/common/protocolWorkspaceSymbol.js", "../../node_modules/vscode-languageclient/lib/common/protocolInlayHint.js", "../../node_modules/vscode-languageclient/lib/common/codeConverter.js", "../../node_modules/vscode-languageclient/lib/common/protocolConverter.js", "../../node_modules/vscode-languageclient/lib/common/utils/uuid.js", "../../node_modules/vscode-languageclient/lib/common/progressPart.js", "../../node_modules/vscode-languageclient/lib/common/features.js", "../../node_modules/vscode-languageclient/node_modules/minimatch/lib/path.js", "../../node_modules/balanced-match/index.js", "../../node_modules/brace-expansion/index.js", "../../node_modules/vscode-languageclient/node_modules/minimatch/minimatch.js", "../../node_modules/vscode-languageclient/lib/common/diagnostic.js", "../../node_modules/vscode-languageclient/lib/common/notebook.js", "../../node_modules/vscode-languageclient/lib/common/configuration.js", "../../node_modules/vscode-languageclient/lib/common/textSynchronization.js", "../../node_modules/vscode-languageclient/lib/common/completion.js", "../../node_modules/vscode-languageclient/lib/common/hover.js", "../../node_modules/vscode-languageclient/lib/common/definition.js", "../../node_modules/vscode-languageclient/lib/common/signatureHelp.js", "../../node_modules/vscode-languageclient/lib/common/documentHighlight.js", "../../node_modules/vscode-languageclient/lib/common/documentSymbol.js", "../../node_modules/vscode-languageclient/lib/common/workspaceSymbol.js", "../../node_modules/vscode-languageclient/lib/common/reference.js", "../../node_modules/vscode-languageclient/lib/common/codeAction.js", "../../node_modules/vscode-languageclient/lib/common/codeLens.js", "../../node_modules/vscode-languageclient/lib/common/formatting.js", "../../node_modules/vscode-languageclient/lib/common/rename.js", "../../node_modules/vscode-languageclient/lib/common/documentLink.js", "../../node_modules/vscode-languageclient/lib/common/executeCommand.js", "../../node_modules/vscode-languageclient/lib/common/fileSystemWatcher.js", "../../node_modules/vscode-languageclient/lib/common/colorProvider.js", "../../node_modules/vscode-languageclient/lib/common/implementation.js", "../../node_modules/vscode-languageclient/lib/common/typeDefinition.js", "../../node_modules/vscode-languageclient/lib/common/workspaceFolder.js", "../../node_modules/vscode-languageclient/lib/common/foldingRange.js", "../../node_modules/vscode-languageclient/lib/common/declaration.js", "../../node_modules/vscode-languageclient/lib/common/selectionRange.js", "../../node_modules/vscode-languageclient/lib/common/progress.js", "../../node_modules/vscode-languageclient/lib/common/callHierarchy.js", "../../node_modules/vscode-languageclient/lib/common/semanticTokens.js", "../../node_modules/vscode-languageclient/lib/common/fileOperations.js", "../../node_modules/vscode-languageclient/lib/common/linkedEditingRange.js", "../../node_modules/vscode-languageclient/lib/common/typeHierarchy.js", "../../node_modules/vscode-languageclient/lib/common/inlineValue.js", "../../node_modules/vscode-languageclient/lib/common/inlayHint.js", "../../node_modules/vscode-languageclient/lib/common/inlineCompletion.js", "../../node_modules/vscode-languageclient/lib/common/client.js", "../../node_modules/vscode-languageclient/lib/node/processes.js", "../../node_modules/vscode-languageserver-protocol/node.js", "../../node_modules/semver/internal/debug.js", "../../node_modules/semver/internal/constants.js", "../../node_modules/semver/internal/re.js", "../../node_modules/semver/internal/parse-options.js", "../../node_modules/semver/internal/identifiers.js", "../../node_modules/semver/classes/semver.js", "../../node_modules/semver/functions/parse.js", "../../node_modules/semver/internal/lrucache.js", "../../node_modules/semver/functions/compare.js", "../../node_modules/semver/functions/eq.js", "../../node_modules/semver/functions/neq.js", "../../node_modules/semver/functions/gt.js", "../../node_modules/semver/functions/gte.js", "../../node_modules/semver/functions/lt.js", "../../node_modules/semver/functions/lte.js", "../../node_modules/semver/functions/cmp.js", "../../node_modules/semver/classes/comparator.js", "../../node_modules/semver/classes/range.js", "../../node_modules/semver/functions/satisfies.js", "../../node_modules/vscode-languageclient/lib/common/api.js", "../../node_modules/vscode-languageclient/lib/node/main.js", "../../node_modules/vscode-languageclient/node.js", "../../src/extension/main.ts"],
  "sourcesContent": ["\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.asPromise = exports.thenable = exports.typedArray = exports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n    return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n    return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n    return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n    return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n    return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n    return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n    return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\nfunction typedArray(value, check) {\n    return Array.isArray(value) && value.every(check);\n}\nexports.typedArray = typedArray;\nfunction thenable(value) {\n    return value && func(value.then);\n}\nexports.thenable = thenable;\nfunction asPromise(value) {\n    if (value instanceof Promise) {\n        return value;\n    }\n    else if (thenable(value)) {\n        return new Promise((resolve, reject) => {\n            value.then((resolved) => resolve(resolved), (error) => reject(error));\n        });\n    }\n    else {\n        return Promise.resolve(value);\n    }\n}\nexports.asPromise = asPromise;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n    return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n    return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n    return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n    return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n    return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n    return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n    return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0;\nconst is = require(\"./is\");\n/**\n * Predefined error codes.\n */\nvar ErrorCodes;\n(function (ErrorCodes) {\n    // Defined by JSON RPC\n    ErrorCodes.ParseError = -32700;\n    ErrorCodes.InvalidRequest = -32600;\n    ErrorCodes.MethodNotFound = -32601;\n    ErrorCodes.InvalidParams = -32602;\n    ErrorCodes.InternalError = -32603;\n    /**\n     * This is the start range of JSON RPC reserved error codes.\n     * It doesn't denote a real error code. No application error codes should\n     * be defined between the start and end range. For backwards\n     * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`\n     * are left in the range.\n     *\n     * @since 3.16.0\n    */\n    ErrorCodes.jsonrpcReservedErrorRangeStart = -32099;\n    /** @deprecated use  jsonrpcReservedErrorRangeStart */\n    ErrorCodes.serverErrorStart = -32099;\n    /**\n     * An error occurred when write a message to the transport layer.\n     */\n    ErrorCodes.MessageWriteError = -32099;\n    /**\n     * An error occurred when reading a message from the transport layer.\n     */\n    ErrorCodes.MessageReadError = -32098;\n    /**\n     * The connection got disposed or lost and all pending responses got\n     * rejected.\n     */\n    ErrorCodes.PendingResponseRejected = -32097;\n    /**\n     * The connection is inactive and a use of it failed.\n     */\n    ErrorCodes.ConnectionInactive = -32096;\n    /**\n     * Error code indicating that a server received a notification or\n     * request before the server has received the `initialize` request.\n     */\n    ErrorCodes.ServerNotInitialized = -32002;\n    ErrorCodes.UnknownErrorCode = -32001;\n    /**\n     * This is the end range of JSON RPC reserved error codes.\n     * It doesn't denote a real error code.\n     *\n     * @since 3.16.0\n    */\n    ErrorCodes.jsonrpcReservedErrorRangeEnd = -32000;\n    /** @deprecated use  jsonrpcReservedErrorRangeEnd */\n    ErrorCodes.serverErrorEnd = -32000;\n})(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));\n/**\n * An error object return in a response in case a request\n * has failed.\n */\nclass ResponseError extends Error {\n    constructor(code, message, data) {\n        super(message);\n        this.code = is.number(code) ? code : ErrorCodes.UnknownErrorCode;\n        this.data = data;\n        Object.setPrototypeOf(this, ResponseError.prototype);\n    }\n    toJson() {\n        const result = {\n            code: this.code,\n            message: this.message\n        };\n        if (this.data !== undefined) {\n            result.data = this.data;\n        }\n        return result;\n    }\n}\nexports.ResponseError = ResponseError;\nclass ParameterStructures {\n    constructor(kind) {\n        this.kind = kind;\n    }\n    static is(value) {\n        return value === ParameterStructures.auto || value === ParameterStructures.byName || value === ParameterStructures.byPosition;\n    }\n    toString() {\n        return this.kind;\n    }\n}\nexports.ParameterStructures = ParameterStructures;\n/**\n * The parameter structure is automatically inferred on the number of parameters\n * and the parameter type in case of a single param.\n */\nParameterStructures.auto = new ParameterStructures('auto');\n/**\n * Forces `byPosition` parameter structure. This is useful if you have a single\n * parameter which has a literal type.\n */\nParameterStructures.byPosition = new ParameterStructures('byPosition');\n/**\n * Forces `byName` parameter structure. This is only useful when having a single\n * parameter. The library will report errors if used with a different number of\n * parameters.\n */\nParameterStructures.byName = new ParameterStructures('byName');\n/**\n * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n    constructor(method, numberOfParams) {\n        this.method = method;\n        this.numberOfParams = numberOfParams;\n    }\n    get parameterStructures() {\n        return ParameterStructures.auto;\n    }\n}\nexports.AbstractMessageSignature = AbstractMessageSignature;\n/**\n * Classes to type request response pairs\n */\nclass RequestType0 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 0);\n    }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n    constructor(method, _parameterStructures = ParameterStructures.auto) {\n        super(method, 1);\n        this._parameterStructures = _parameterStructures;\n    }\n    get parameterStructures() {\n        return this._parameterStructures;\n    }\n}\nexports.RequestType = RequestType;\nclass RequestType1 extends AbstractMessageSignature {\n    constructor(method, _parameterStructures = ParameterStructures.auto) {\n        super(method, 1);\n        this._parameterStructures = _parameterStructures;\n    }\n    get parameterStructures() {\n        return this._parameterStructures;\n    }\n}\nexports.RequestType1 = RequestType1;\nclass RequestType2 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 2);\n    }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 3);\n    }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 4);\n    }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 5);\n    }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 6);\n    }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 7);\n    }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 8);\n    }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 9);\n    }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n    constructor(method, _parameterStructures = ParameterStructures.auto) {\n        super(method, 1);\n        this._parameterStructures = _parameterStructures;\n    }\n    get parameterStructures() {\n        return this._parameterStructures;\n    }\n}\nexports.NotificationType = NotificationType;\nclass NotificationType0 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 0);\n    }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n    constructor(method, _parameterStructures = ParameterStructures.auto) {\n        super(method, 1);\n        this._parameterStructures = _parameterStructures;\n    }\n    get parameterStructures() {\n        return this._parameterStructures;\n    }\n}\nexports.NotificationType1 = NotificationType1;\nclass NotificationType2 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 2);\n    }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 3);\n    }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 4);\n    }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 5);\n    }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 6);\n    }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 7);\n    }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 8);\n    }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n    constructor(method) {\n        super(method, 9);\n    }\n}\nexports.NotificationType9 = NotificationType9;\nvar Message;\n(function (Message) {\n    /**\n     * Tests if the given message is a request message\n     */\n    function isRequest(message) {\n        const candidate = message;\n        return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id));\n    }\n    Message.isRequest = isRequest;\n    /**\n     * Tests if the given message is a notification message\n     */\n    function isNotification(message) {\n        const candidate = message;\n        return candidate && is.string(candidate.method) && message.id === void 0;\n    }\n    Message.isNotification = isNotification;\n    /**\n     * Tests if the given message is a response message\n     */\n    function isResponse(message) {\n        const candidate = message;\n        return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null);\n    }\n    Message.isResponse = isResponse;\n})(Message || (exports.Message = Message = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LRUCache = exports.LinkedMap = exports.Touch = void 0;\nvar Touch;\n(function (Touch) {\n    Touch.None = 0;\n    Touch.First = 1;\n    Touch.AsOld = Touch.First;\n    Touch.Last = 2;\n    Touch.AsNew = Touch.Last;\n})(Touch || (exports.Touch = Touch = {}));\nclass LinkedMap {\n    constructor() {\n        this[_a] = 'LinkedMap';\n        this._map = new Map();\n        this._head = undefined;\n        this._tail = undefined;\n        this._size = 0;\n        this._state = 0;\n    }\n    clear() {\n        this._map.clear();\n        this._head = undefined;\n        this._tail = undefined;\n        this._size = 0;\n        this._state++;\n    }\n    isEmpty() {\n        return !this._head && !this._tail;\n    }\n    get size() {\n        return this._size;\n    }\n    get first() {\n        return this._head?.value;\n    }\n    get last() {\n        return this._tail?.value;\n    }\n    has(key) {\n        return this._map.has(key);\n    }\n    get(key, touch = Touch.None) {\n        const item = this._map.get(key);\n        if (!item) {\n            return undefined;\n        }\n        if (touch !== Touch.None) {\n            this.touch(item, touch);\n        }\n        return item.value;\n    }\n    set(key, value, touch = Touch.None) {\n        let item = this._map.get(key);\n        if (item) {\n            item.value = value;\n            if (touch !== Touch.None) {\n                this.touch(item, touch);\n            }\n        }\n        else {\n            item = { key, value, next: undefined, previous: undefined };\n            switch (touch) {\n                case Touch.None:\n                    this.addItemLast(item);\n                    break;\n                case Touch.First:\n                    this.addItemFirst(item);\n                    break;\n                case Touch.Last:\n                    this.addItemLast(item);\n                    break;\n                default:\n                    this.addItemLast(item);\n                    break;\n            }\n            this._map.set(key, item);\n            this._size++;\n        }\n        return this;\n    }\n    delete(key) {\n        return !!this.remove(key);\n    }\n    remove(key) {\n        const item = this._map.get(key);\n        if (!item) {\n            return undefined;\n        }\n        this._map.delete(key);\n        this.removeItem(item);\n        this._size--;\n        return item.value;\n    }\n    shift() {\n        if (!this._head && !this._tail) {\n            return undefined;\n        }\n        if (!this._head || !this._tail) {\n            throw new Error('Invalid list');\n        }\n        const item = this._head;\n        this._map.delete(item.key);\n        this.removeItem(item);\n        this._size--;\n        return item.value;\n    }\n    forEach(callbackfn, thisArg) {\n        const state = this._state;\n        let current = this._head;\n        while (current) {\n            if (thisArg) {\n                callbackfn.bind(thisArg)(current.value, current.key, this);\n            }\n            else {\n                callbackfn(current.value, current.key, this);\n            }\n            if (this._state !== state) {\n                throw new Error(`LinkedMap got modified during iteration.`);\n            }\n            current = current.next;\n        }\n    }\n    keys() {\n        const state = this._state;\n        let current = this._head;\n        const iterator = {\n            [Symbol.iterator]: () => {\n                return iterator;\n            },\n            next: () => {\n                if (this._state !== state) {\n                    throw new Error(`LinkedMap got modified during iteration.`);\n                }\n                if (current) {\n                    const result = { value: current.key, done: false };\n                    current = current.next;\n                    return result;\n                }\n                else {\n                    return { value: undefined, done: true };\n                }\n            }\n        };\n        return iterator;\n    }\n    values() {\n        const state = this._state;\n        let current = this._head;\n        const iterator = {\n            [Symbol.iterator]: () => {\n                return iterator;\n            },\n            next: () => {\n                if (this._state !== state) {\n                    throw new Error(`LinkedMap got modified during iteration.`);\n                }\n                if (current) {\n                    const result = { value: current.value, done: false };\n                    current = current.next;\n                    return result;\n                }\n                else {\n                    return { value: undefined, done: true };\n                }\n            }\n        };\n        return iterator;\n    }\n    entries() {\n        const state = this._state;\n        let current = this._head;\n        const iterator = {\n            [Symbol.iterator]: () => {\n                return iterator;\n            },\n            next: () => {\n                if (this._state !== state) {\n                    throw new Error(`LinkedMap got modified during iteration.`);\n                }\n                if (current) {\n                    const result = { value: [current.key, current.value], done: false };\n                    current = current.next;\n                    return result;\n                }\n                else {\n                    return { value: undefined, done: true };\n                }\n            }\n        };\n        return iterator;\n    }\n    [(_a = Symbol.toStringTag, Symbol.iterator)]() {\n        return this.entries();\n    }\n    trimOld(newSize) {\n        if (newSize >= this.size) {\n            return;\n        }\n        if (newSize === 0) {\n            this.clear();\n            return;\n        }\n        let current = this._head;\n        let currentSize = this.size;\n        while (current && currentSize > newSize) {\n            this._map.delete(current.key);\n            current = current.next;\n            currentSize--;\n        }\n        this._head = current;\n        this._size = currentSize;\n        if (current) {\n            current.previous = undefined;\n        }\n        this._state++;\n    }\n    addItemFirst(item) {\n        // First time Insert\n        if (!this._head && !this._tail) {\n            this._tail = item;\n        }\n        else if (!this._head) {\n            throw new Error('Invalid list');\n        }\n        else {\n            item.next = this._head;\n            this._head.previous = item;\n        }\n        this._head = item;\n        this._state++;\n    }\n    addItemLast(item) {\n        // First time Insert\n        if (!this._head && !this._tail) {\n            this._head = item;\n        }\n        else if (!this._tail) {\n            throw new Error('Invalid list');\n        }\n        else {\n            item.previous = this._tail;\n            this._tail.next = item;\n        }\n        this._tail = item;\n        this._state++;\n    }\n    removeItem(item) {\n        if (item === this._head && item === this._tail) {\n            this._head = undefined;\n            this._tail = undefined;\n        }\n        else if (item === this._head) {\n            // This can only happened if size === 1 which is handle\n            // by the case above.\n            if (!item.next) {\n                throw new Error('Invalid list');\n            }\n            item.next.previous = undefined;\n            this._head = item.next;\n        }\n        else if (item === this._tail) {\n            // This can only happened if size === 1 which is handle\n            // by the case above.\n            if (!item.previous) {\n                throw new Error('Invalid list');\n            }\n            item.previous.next = undefined;\n            this._tail = item.previous;\n        }\n        else {\n            const next = item.next;\n            const previous = item.previous;\n            if (!next || !previous) {\n                throw new Error('Invalid list');\n            }\n            next.previous = previous;\n            previous.next = next;\n        }\n        item.next = undefined;\n        item.previous = undefined;\n        this._state++;\n    }\n    touch(item, touch) {\n        if (!this._head || !this._tail) {\n            throw new Error('Invalid list');\n        }\n        if ((touch !== Touch.First && touch !== Touch.Last)) {\n            return;\n        }\n        if (touch === Touch.First) {\n            if (item === this._head) {\n                return;\n            }\n            const next = item.next;\n            const previous = item.previous;\n            // Unlink the item\n            if (item === this._tail) {\n                // previous must be defined since item was not head but is tail\n                // So there are more than on item in the map\n                previous.next = undefined;\n                this._tail = previous;\n            }\n            else {\n                // Both next and previous are not undefined since item was neither head nor tail.\n                next.previous = previous;\n                previous.next = next;\n            }\n            // Insert the node at head\n            item.previous = undefined;\n            item.next = this._head;\n            this._head.previous = item;\n            this._head = item;\n            this._state++;\n        }\n        else if (touch === Touch.Last) {\n            if (item === this._tail) {\n                return;\n            }\n            const next = item.next;\n            const previous = item.previous;\n            // Unlink the item.\n            if (item === this._head) {\n                // next must be defined since item was not tail but is head\n                // So there are more than on item in the map\n                next.previous = undefined;\n                this._head = next;\n            }\n            else {\n                // Both next and previous are not undefined since item was neither head nor tail.\n                next.previous = previous;\n                previous.next = next;\n            }\n            item.next = undefined;\n            item.previous = this._tail;\n            this._tail.next = item;\n            this._tail = item;\n            this._state++;\n        }\n    }\n    toJSON() {\n        const data = [];\n        this.forEach((value, key) => {\n            data.push([key, value]);\n        });\n        return data;\n    }\n    fromJSON(data) {\n        this.clear();\n        for (const [key, value] of data) {\n            this.set(key, value);\n        }\n    }\n}\nexports.LinkedMap = LinkedMap;\nclass LRUCache extends LinkedMap {\n    constructor(limit, ratio = 1) {\n        super();\n        this._limit = limit;\n        this._ratio = Math.min(Math.max(0, ratio), 1);\n    }\n    get limit() {\n        return this._limit;\n    }\n    set limit(limit) {\n        this._limit = limit;\n        this.checkTrim();\n    }\n    get ratio() {\n        return this._ratio;\n    }\n    set ratio(ratio) {\n        this._ratio = Math.min(Math.max(0, ratio), 1);\n        this.checkTrim();\n    }\n    get(key, touch = Touch.AsNew) {\n        return super.get(key, touch);\n    }\n    peek(key) {\n        return super.get(key, Touch.None);\n    }\n    set(key, value) {\n        super.set(key, value, Touch.Last);\n        this.checkTrim();\n        return this;\n    }\n    checkTrim() {\n        if (this.size > this._limit) {\n            this.trimOld(Math.round(this._limit * this._ratio));\n        }\n    }\n}\nexports.LRUCache = LRUCache;\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Disposable = void 0;\nvar Disposable;\n(function (Disposable) {\n    function create(func) {\n        return {\n            dispose: func\n        };\n    }\n    Disposable.create = create;\n})(Disposable || (exports.Disposable = Disposable = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet _ral;\nfunction RAL() {\n    if (_ral === undefined) {\n        throw new Error(`No runtime abstraction layer installed`);\n    }\n    return _ral;\n}\n(function (RAL) {\n    function install(ral) {\n        if (ral === undefined) {\n            throw new Error(`No runtime abstraction layer provided`);\n        }\n        _ral = ral;\n    }\n    RAL.install = install;\n})(RAL || (RAL = {}));\nexports.default = RAL;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = require(\"./ral\");\nvar Event;\n(function (Event) {\n    const _disposable = { dispose() { } };\n    Event.None = function () { return _disposable; };\n})(Event || (exports.Event = Event = {}));\nclass CallbackList {\n    add(callback, context = null, bucket) {\n        if (!this._callbacks) {\n            this._callbacks = [];\n            this._contexts = [];\n        }\n        this._callbacks.push(callback);\n        this._contexts.push(context);\n        if (Array.isArray(bucket)) {\n            bucket.push({ dispose: () => this.remove(callback, context) });\n        }\n    }\n    remove(callback, context = null) {\n        if (!this._callbacks) {\n            return;\n        }\n        let foundCallbackWithDifferentContext = false;\n        for (let i = 0, len = this._callbacks.length; i < len; i++) {\n            if (this._callbacks[i] === callback) {\n                if (this._contexts[i] === context) {\n                    // callback & context match => remove it\n                    this._callbacks.splice(i, 1);\n                    this._contexts.splice(i, 1);\n                    return;\n                }\n                else {\n                    foundCallbackWithDifferentContext = true;\n                }\n            }\n        }\n        if (foundCallbackWithDifferentContext) {\n            throw new Error('When adding a listener with a context, you should remove it with the same context');\n        }\n    }\n    invoke(...args) {\n        if (!this._callbacks) {\n            return [];\n        }\n        const ret = [], callbacks = this._callbacks.slice(0), contexts = this._contexts.slice(0);\n        for (let i = 0, len = callbacks.length; i < len; i++) {\n            try {\n                ret.push(callbacks[i].apply(contexts[i], args));\n            }\n            catch (e) {\n                // eslint-disable-next-line no-console\n                (0, ral_1.default)().console.error(e);\n            }\n        }\n        return ret;\n    }\n    isEmpty() {\n        return !this._callbacks || this._callbacks.length === 0;\n    }\n    dispose() {\n        this._callbacks = undefined;\n        this._contexts = undefined;\n    }\n}\nclass Emitter {\n    constructor(_options) {\n        this._options = _options;\n    }\n    /**\n     * For the public to allow to subscribe\n     * to events from this Emitter\n     */\n    get event() {\n        if (!this._event) {\n            this._event = (listener, thisArgs, disposables) => {\n                if (!this._callbacks) {\n                    this._callbacks = new CallbackList();\n                }\n                if (this._options && this._options.onFirstListenerAdd && this._callbacks.isEmpty()) {\n                    this._options.onFirstListenerAdd(this);\n                }\n                this._callbacks.add(listener, thisArgs);\n                const result = {\n                    dispose: () => {\n                        if (!this._callbacks) {\n                            // disposable is disposed after emitter is disposed.\n                            return;\n                        }\n                        this._callbacks.remove(listener, thisArgs);\n                        result.dispose = Emitter._noop;\n                        if (this._options && this._options.onLastListenerRemove && this._callbacks.isEmpty()) {\n                            this._options.onLastListenerRemove(this);\n                        }\n                    }\n                };\n                if (Array.isArray(disposables)) {\n                    disposables.push(result);\n                }\n                return result;\n            };\n        }\n        return this._event;\n    }\n    /**\n     * To be kept private to fire an event to\n     * subscribers\n     */\n    fire(event) {\n        if (this._callbacks) {\n            this._callbacks.invoke.call(this._callbacks, event);\n        }\n    }\n    dispose() {\n        if (this._callbacks) {\n            this._callbacks.dispose();\n            this._callbacks = undefined;\n        }\n    }\n}\nexports.Emitter = Emitter;\nEmitter._noop = function () { };\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nvar CancellationToken;\n(function (CancellationToken) {\n    CancellationToken.None = Object.freeze({\n        isCancellationRequested: false,\n        onCancellationRequested: events_1.Event.None\n    });\n    CancellationToken.Cancelled = Object.freeze({\n        isCancellationRequested: true,\n        onCancellationRequested: events_1.Event.None\n    });\n    function is(value) {\n        const candidate = value;\n        return candidate && (candidate === CancellationToken.None\n            || candidate === CancellationToken.Cancelled\n            || (Is.boolean(candidate.isCancellationRequested) && !!candidate.onCancellationRequested));\n    }\n    CancellationToken.is = is;\n})(CancellationToken || (exports.CancellationToken = CancellationToken = {}));\nconst shortcutEvent = Object.freeze(function (callback, context) {\n    const handle = (0, ral_1.default)().timer.setTimeout(callback.bind(context), 0);\n    return { dispose() { handle.dispose(); } };\n});\nclass MutableToken {\n    constructor() {\n        this._isCancelled = false;\n    }\n    cancel() {\n        if (!this._isCancelled) {\n            this._isCancelled = true;\n            if (this._emitter) {\n                this._emitter.fire(undefined);\n                this.dispose();\n            }\n        }\n    }\n    get isCancellationRequested() {\n        return this._isCancelled;\n    }\n    get onCancellationRequested() {\n        if (this._isCancelled) {\n            return shortcutEvent;\n        }\n        if (!this._emitter) {\n            this._emitter = new events_1.Emitter();\n        }\n        return this._emitter.event;\n    }\n    dispose() {\n        if (this._emitter) {\n            this._emitter.dispose();\n            this._emitter = undefined;\n        }\n    }\n}\nclass CancellationTokenSource {\n    get token() {\n        if (!this._token) {\n            // be lazy and create the token only when\n            // actually needed\n            this._token = new MutableToken();\n        }\n        return this._token;\n    }\n    cancel() {\n        if (!this._token) {\n            // save an object by returning the default\n            // cancelled token when cancellation happens\n            // before someone asks for the token\n            this._token = CancellationToken.Cancelled;\n        }\n        else {\n            this._token.cancel();\n        }\n    }\n    dispose() {\n        if (!this._token) {\n            // ensure to initialize with an empty token if we had none\n            this._token = CancellationToken.None;\n        }\n        else if (this._token instanceof MutableToken) {\n            // actually dispose\n            this._token.dispose();\n        }\n    }\n}\nexports.CancellationTokenSource = CancellationTokenSource;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = void 0;\nconst cancellation_1 = require(\"./cancellation\");\nvar CancellationState;\n(function (CancellationState) {\n    CancellationState.Continue = 0;\n    CancellationState.Cancelled = 1;\n})(CancellationState || (CancellationState = {}));\nclass SharedArraySenderStrategy {\n    constructor() {\n        this.buffers = new Map();\n    }\n    enableCancellation(request) {\n        if (request.id === null) {\n            return;\n        }\n        const buffer = new SharedArrayBuffer(4);\n        const data = new Int32Array(buffer, 0, 1);\n        data[0] = CancellationState.Continue;\n        this.buffers.set(request.id, buffer);\n        request.$cancellationData = buffer;\n    }\n    async sendCancellation(_conn, id) {\n        const buffer = this.buffers.get(id);\n        if (buffer === undefined) {\n            return;\n        }\n        const data = new Int32Array(buffer, 0, 1);\n        Atomics.store(data, 0, CancellationState.Cancelled);\n    }\n    cleanup(id) {\n        this.buffers.delete(id);\n    }\n    dispose() {\n        this.buffers.clear();\n    }\n}\nexports.SharedArraySenderStrategy = SharedArraySenderStrategy;\nclass SharedArrayBufferCancellationToken {\n    constructor(buffer) {\n        this.data = new Int32Array(buffer, 0, 1);\n    }\n    get isCancellationRequested() {\n        return Atomics.load(this.data, 0) === CancellationState.Cancelled;\n    }\n    get onCancellationRequested() {\n        throw new Error(`Cancellation over SharedArrayBuffer doesn't support cancellation events`);\n    }\n}\nclass SharedArrayBufferCancellationTokenSource {\n    constructor(buffer) {\n        this.token = new SharedArrayBufferCancellationToken(buffer);\n    }\n    cancel() {\n    }\n    dispose() {\n    }\n}\nclass SharedArrayReceiverStrategy {\n    constructor() {\n        this.kind = 'request';\n    }\n    createCancellationTokenSource(request) {\n        const buffer = request.$cancellationData;\n        if (buffer === undefined) {\n            return new cancellation_1.CancellationTokenSource();\n        }\n        return new SharedArrayBufferCancellationTokenSource(buffer);\n    }\n}\nexports.SharedArrayReceiverStrategy = SharedArrayReceiverStrategy;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Semaphore = void 0;\nconst ral_1 = require(\"./ral\");\nclass Semaphore {\n    constructor(capacity = 1) {\n        if (capacity <= 0) {\n            throw new Error('Capacity must be greater than 0');\n        }\n        this._capacity = capacity;\n        this._active = 0;\n        this._waiting = [];\n    }\n    lock(thunk) {\n        return new Promise((resolve, reject) => {\n            this._waiting.push({ thunk, resolve, reject });\n            this.runNext();\n        });\n    }\n    get active() {\n        return this._active;\n    }\n    runNext() {\n        if (this._waiting.length === 0 || this._active === this._capacity) {\n            return;\n        }\n        (0, ral_1.default)().timer.setImmediate(() => this.doRunNext());\n    }\n    doRunNext() {\n        if (this._waiting.length === 0 || this._active === this._capacity) {\n            return;\n        }\n        const next = this._waiting.shift();\n        this._active++;\n        if (this._active > this._capacity) {\n            throw new Error(`To many thunks active`);\n        }\n        try {\n            const result = next.thunk();\n            if (result instanceof Promise) {\n                result.then((value) => {\n                    this._active--;\n                    next.resolve(value);\n                    this.runNext();\n                }, (err) => {\n                    this._active--;\n                    next.reject(err);\n                    this.runNext();\n                });\n            }\n            else {\n                this._active--;\n                next.resolve(result);\n                this.runNext();\n            }\n        }\n        catch (err) {\n            this._active--;\n            next.reject(err);\n            this.runNext();\n        }\n    }\n}\nexports.Semaphore = Semaphore;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst events_1 = require(\"./events\");\nconst semaphore_1 = require(\"./semaphore\");\nvar MessageReader;\n(function (MessageReader) {\n    function is(value) {\n        let candidate = value;\n        return candidate && Is.func(candidate.listen) && Is.func(candidate.dispose) &&\n            Is.func(candidate.onError) && Is.func(candidate.onClose) && Is.func(candidate.onPartialMessage);\n    }\n    MessageReader.is = is;\n})(MessageReader || (exports.MessageReader = MessageReader = {}));\nclass AbstractMessageReader {\n    constructor() {\n        this.errorEmitter = new events_1.Emitter();\n        this.closeEmitter = new events_1.Emitter();\n        this.partialMessageEmitter = new events_1.Emitter();\n    }\n    dispose() {\n        this.errorEmitter.dispose();\n        this.closeEmitter.dispose();\n    }\n    get onError() {\n        return this.errorEmitter.event;\n    }\n    fireError(error) {\n        this.errorEmitter.fire(this.asError(error));\n    }\n    get onClose() {\n        return this.closeEmitter.event;\n    }\n    fireClose() {\n        this.closeEmitter.fire(undefined);\n    }\n    get onPartialMessage() {\n        return this.partialMessageEmitter.event;\n    }\n    firePartialMessage(info) {\n        this.partialMessageEmitter.fire(info);\n    }\n    asError(error) {\n        if (error instanceof Error) {\n            return error;\n        }\n        else {\n            return new Error(`Reader received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n        }\n    }\n}\nexports.AbstractMessageReader = AbstractMessageReader;\nvar ResolvedMessageReaderOptions;\n(function (ResolvedMessageReaderOptions) {\n    function fromOptions(options) {\n        let charset;\n        let result;\n        let contentDecoder;\n        const contentDecoders = new Map();\n        let contentTypeDecoder;\n        const contentTypeDecoders = new Map();\n        if (options === undefined || typeof options === 'string') {\n            charset = options ?? 'utf-8';\n        }\n        else {\n            charset = options.charset ?? 'utf-8';\n            if (options.contentDecoder !== undefined) {\n                contentDecoder = options.contentDecoder;\n                contentDecoders.set(contentDecoder.name, contentDecoder);\n            }\n            if (options.contentDecoders !== undefined) {\n                for (const decoder of options.contentDecoders) {\n                    contentDecoders.set(decoder.name, decoder);\n                }\n            }\n            if (options.contentTypeDecoder !== undefined) {\n                contentTypeDecoder = options.contentTypeDecoder;\n                contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n            }\n            if (options.contentTypeDecoders !== undefined) {\n                for (const decoder of options.contentTypeDecoders) {\n                    contentTypeDecoders.set(decoder.name, decoder);\n                }\n            }\n        }\n        if (contentTypeDecoder === undefined) {\n            contentTypeDecoder = (0, ral_1.default)().applicationJson.decoder;\n            contentTypeDecoders.set(contentTypeDecoder.name, contentTypeDecoder);\n        }\n        return { charset, contentDecoder, contentDecoders, contentTypeDecoder, contentTypeDecoders };\n    }\n    ResolvedMessageReaderOptions.fromOptions = fromOptions;\n})(ResolvedMessageReaderOptions || (ResolvedMessageReaderOptions = {}));\nclass ReadableStreamMessageReader extends AbstractMessageReader {\n    constructor(readable, options) {\n        super();\n        this.readable = readable;\n        this.options = ResolvedMessageReaderOptions.fromOptions(options);\n        this.buffer = (0, ral_1.default)().messageBuffer.create(this.options.charset);\n        this._partialMessageTimeout = 10000;\n        this.nextMessageLength = -1;\n        this.messageToken = 0;\n        this.readSemaphore = new semaphore_1.Semaphore(1);\n    }\n    set partialMessageTimeout(timeout) {\n        this._partialMessageTimeout = timeout;\n    }\n    get partialMessageTimeout() {\n        return this._partialMessageTimeout;\n    }\n    listen(callback) {\n        this.nextMessageLength = -1;\n        this.messageToken = 0;\n        this.partialMessageTimer = undefined;\n        this.callback = callback;\n        const result = this.readable.onData((data) => {\n            this.onData(data);\n        });\n        this.readable.onError((error) => this.fireError(error));\n        this.readable.onClose(() => this.fireClose());\n        return result;\n    }\n    onData(data) {\n        try {\n            this.buffer.append(data);\n            while (true) {\n                if (this.nextMessageLength === -1) {\n                    const headers = this.buffer.tryReadHeaders(true);\n                    if (!headers) {\n                        return;\n                    }\n                    const contentLength = headers.get('content-length');\n                    if (!contentLength) {\n                        this.fireError(new Error(`Header must provide a Content-Length property.\\n${JSON.stringify(Object.fromEntries(headers))}`));\n                        return;\n                    }\n                    const length = parseInt(contentLength);\n                    if (isNaN(length)) {\n                        this.fireError(new Error(`Content-Length value must be a number. Got ${contentLength}`));\n                        return;\n                    }\n                    this.nextMessageLength = length;\n                }\n                const body = this.buffer.tryReadBody(this.nextMessageLength);\n                if (body === undefined) {\n                    /** We haven't received the full message yet. */\n                    this.setPartialMessageTimer();\n                    return;\n                }\n                this.clearPartialMessageTimer();\n                this.nextMessageLength = -1;\n                // Make sure that we convert one received message after the\n                // other. Otherwise it could happen that a decoding of a second\n                // smaller message finished before the decoding of a first larger\n                // message and then we would deliver the second message first.\n                this.readSemaphore.lock(async () => {\n                    const bytes = this.options.contentDecoder !== undefined\n                        ? await this.options.contentDecoder.decode(body)\n                        : body;\n                    const message = await this.options.contentTypeDecoder.decode(bytes, this.options);\n                    this.callback(message);\n                }).catch((error) => {\n                    this.fireError(error);\n                });\n            }\n        }\n        catch (error) {\n            this.fireError(error);\n        }\n    }\n    clearPartialMessageTimer() {\n        if (this.partialMessageTimer) {\n            this.partialMessageTimer.dispose();\n            this.partialMessageTimer = undefined;\n        }\n    }\n    setPartialMessageTimer() {\n        this.clearPartialMessageTimer();\n        if (this._partialMessageTimeout <= 0) {\n            return;\n        }\n        this.partialMessageTimer = (0, ral_1.default)().timer.setTimeout((token, timeout) => {\n            this.partialMessageTimer = undefined;\n            if (token === this.messageToken) {\n                this.firePartialMessage({ messageToken: token, waitingTime: timeout });\n                this.setPartialMessageTimer();\n            }\n        }, this._partialMessageTimeout, this.messageToken, this._partialMessageTimeout);\n    }\n}\nexports.ReadableStreamMessageReader = ReadableStreamMessageReader;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst semaphore_1 = require(\"./semaphore\");\nconst events_1 = require(\"./events\");\nconst ContentLength = 'Content-Length: ';\nconst CRLF = '\\r\\n';\nvar MessageWriter;\n(function (MessageWriter) {\n    function is(value) {\n        let candidate = value;\n        return candidate && Is.func(candidate.dispose) && Is.func(candidate.onClose) &&\n            Is.func(candidate.onError) && Is.func(candidate.write);\n    }\n    MessageWriter.is = is;\n})(MessageWriter || (exports.MessageWriter = MessageWriter = {}));\nclass AbstractMessageWriter {\n    constructor() {\n        this.errorEmitter = new events_1.Emitter();\n        this.closeEmitter = new events_1.Emitter();\n    }\n    dispose() {\n        this.errorEmitter.dispose();\n        this.closeEmitter.dispose();\n    }\n    get onError() {\n        return this.errorEmitter.event;\n    }\n    fireError(error, message, count) {\n        this.errorEmitter.fire([this.asError(error), message, count]);\n    }\n    get onClose() {\n        return this.closeEmitter.event;\n    }\n    fireClose() {\n        this.closeEmitter.fire(undefined);\n    }\n    asError(error) {\n        if (error instanceof Error) {\n            return error;\n        }\n        else {\n            return new Error(`Writer received error. Reason: ${Is.string(error.message) ? error.message : 'unknown'}`);\n        }\n    }\n}\nexports.AbstractMessageWriter = AbstractMessageWriter;\nvar ResolvedMessageWriterOptions;\n(function (ResolvedMessageWriterOptions) {\n    function fromOptions(options) {\n        if (options === undefined || typeof options === 'string') {\n            return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder };\n        }\n        else {\n            return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder };\n        }\n    }\n    ResolvedMessageWriterOptions.fromOptions = fromOptions;\n})(ResolvedMessageWriterOptions || (ResolvedMessageWriterOptions = {}));\nclass WriteableStreamMessageWriter extends AbstractMessageWriter {\n    constructor(writable, options) {\n        super();\n        this.writable = writable;\n        this.options = ResolvedMessageWriterOptions.fromOptions(options);\n        this.errorCount = 0;\n        this.writeSemaphore = new semaphore_1.Semaphore(1);\n        this.writable.onError((error) => this.fireError(error));\n        this.writable.onClose(() => this.fireClose());\n    }\n    async write(msg) {\n        return this.writeSemaphore.lock(async () => {\n            const payload = this.options.contentTypeEncoder.encode(msg, this.options).then((buffer) => {\n                if (this.options.contentEncoder !== undefined) {\n                    return this.options.contentEncoder.encode(buffer);\n                }\n                else {\n                    return buffer;\n                }\n            });\n            return payload.then((buffer) => {\n                const headers = [];\n                headers.push(ContentLength, buffer.byteLength.toString(), CRLF);\n                headers.push(CRLF);\n                return this.doWrite(msg, headers, buffer);\n            }, (error) => {\n                this.fireError(error);\n                throw error;\n            });\n        });\n    }\n    async doWrite(msg, headers, data) {\n        try {\n            await this.writable.write(headers.join(''), 'ascii');\n            return this.writable.write(data);\n        }\n        catch (error) {\n            this.handleError(error, msg);\n            return Promise.reject(error);\n        }\n    }\n    handleError(error, msg) {\n        this.errorCount++;\n        this.fireError(error, msg, this.errorCount);\n    }\n    end() {\n        this.writable.end();\n    }\n}\nexports.WriteableStreamMessageWriter = WriteableStreamMessageWriter;\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n    constructor(encoding = 'utf-8') {\n        this._encoding = encoding;\n        this._chunks = [];\n        this._totalLength = 0;\n    }\n    get encoding() {\n        return this._encoding;\n    }\n    append(chunk) {\n        const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;\n        this._chunks.push(toAppend);\n        this._totalLength += toAppend.byteLength;\n    }\n    tryReadHeaders(lowerCaseKeys = false) {\n        if (this._chunks.length === 0) {\n            return undefined;\n        }\n        let state = 0;\n        let chunkIndex = 0;\n        let offset = 0;\n        let chunkBytesRead = 0;\n        row: while (chunkIndex < this._chunks.length) {\n            const chunk = this._chunks[chunkIndex];\n            offset = 0;\n            column: while (offset < chunk.length) {\n                const value = chunk[offset];\n                switch (value) {\n                    case CR:\n                        switch (state) {\n                            case 0:\n                                state = 1;\n                                break;\n                            case 2:\n                                state = 3;\n                                break;\n                            default:\n                                state = 0;\n                        }\n                        break;\n                    case LF:\n                        switch (state) {\n                            case 1:\n                                state = 2;\n                                break;\n                            case 3:\n                                state = 4;\n                                offset++;\n                                break row;\n                            default:\n                                state = 0;\n                        }\n                        break;\n                    default:\n                        state = 0;\n                }\n                offset++;\n            }\n            chunkBytesRead += chunk.byteLength;\n            chunkIndex++;\n        }\n        if (state !== 4) {\n            return undefined;\n        }\n        // The buffer contains the two CRLF at the end. So we will\n        // have two empty lines after the split at the end as well.\n        const buffer = this._read(chunkBytesRead + offset);\n        const result = new Map();\n        const headers = this.toString(buffer, 'ascii').split(CRLF);\n        if (headers.length < 2) {\n            return result;\n        }\n        for (let i = 0; i < headers.length - 2; i++) {\n            const header = headers[i];\n            const index = header.indexOf(':');\n            if (index === -1) {\n                throw new Error(`Message header must separate key and value using ':'\\n${header}`);\n            }\n            const key = header.substr(0, index);\n            const value = header.substr(index + 1).trim();\n            result.set(lowerCaseKeys ? key.toLowerCase() : key, value);\n        }\n        return result;\n    }\n    tryReadBody(length) {\n        if (this._totalLength < length) {\n            return undefined;\n        }\n        return this._read(length);\n    }\n    get numberOfBytes() {\n        return this._totalLength;\n    }\n    _read(byteCount) {\n        if (byteCount === 0) {\n            return this.emptyBuffer();\n        }\n        if (byteCount > this._totalLength) {\n            throw new Error(`Cannot read so many bytes!`);\n        }\n        if (this._chunks[0].byteLength === byteCount) {\n            // super fast path, precisely first chunk must be returned\n            const chunk = this._chunks[0];\n            this._chunks.shift();\n            this._totalLength -= byteCount;\n            return this.asNative(chunk);\n        }\n        if (this._chunks[0].byteLength > byteCount) {\n            // fast path, the reading is entirely within the first chunk\n            const chunk = this._chunks[0];\n            const result = this.asNative(chunk, byteCount);\n            this._chunks[0] = chunk.slice(byteCount);\n            this._totalLength -= byteCount;\n            return result;\n        }\n        const result = this.allocNative(byteCount);\n        let resultOffset = 0;\n        let chunkIndex = 0;\n        while (byteCount > 0) {\n            const chunk = this._chunks[chunkIndex];\n            if (chunk.byteLength > byteCount) {\n                // this chunk will survive\n                const chunkPart = chunk.slice(0, byteCount);\n                result.set(chunkPart, resultOffset);\n                resultOffset += byteCount;\n                this._chunks[chunkIndex] = chunk.slice(byteCount);\n                this._totalLength -= byteCount;\n                byteCount -= byteCount;\n            }\n            else {\n                // this chunk will be entirely read\n                result.set(chunk, resultOffset);\n                resultOffset += chunk.byteLength;\n                this._chunks.shift();\n                this._totalLength -= chunk.byteLength;\n                byteCount -= chunk.byteLength;\n            }\n        }\n        return result;\n    }\n}\nexports.AbstractMessageBuffer = AbstractMessageBuffer;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.ConnectionOptions = exports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nconst ral_1 = require(\"./ral\");\nconst Is = require(\"./is\");\nconst messages_1 = require(\"./messages\");\nconst linkedMap_1 = require(\"./linkedMap\");\nconst events_1 = require(\"./events\");\nconst cancellation_1 = require(\"./cancellation\");\nvar CancelNotification;\n(function (CancelNotification) {\n    CancelNotification.type = new messages_1.NotificationType('$/cancelRequest');\n})(CancelNotification || (CancelNotification = {}));\nvar ProgressToken;\n(function (ProgressToken) {\n    function is(value) {\n        return typeof value === 'string' || typeof value === 'number';\n    }\n    ProgressToken.is = is;\n})(ProgressToken || (exports.ProgressToken = ProgressToken = {}));\nvar ProgressNotification;\n(function (ProgressNotification) {\n    ProgressNotification.type = new messages_1.NotificationType('$/progress');\n})(ProgressNotification || (ProgressNotification = {}));\nclass ProgressType {\n    constructor() {\n    }\n}\nexports.ProgressType = ProgressType;\nvar StarRequestHandler;\n(function (StarRequestHandler) {\n    function is(value) {\n        return Is.func(value);\n    }\n    StarRequestHandler.is = is;\n})(StarRequestHandler || (StarRequestHandler = {}));\nexports.NullLogger = Object.freeze({\n    error: () => { },\n    warn: () => { },\n    info: () => { },\n    log: () => { }\n});\nvar Trace;\n(function (Trace) {\n    Trace[Trace[\"Off\"] = 0] = \"Off\";\n    Trace[Trace[\"Messages\"] = 1] = \"Messages\";\n    Trace[Trace[\"Compact\"] = 2] = \"Compact\";\n    Trace[Trace[\"Verbose\"] = 3] = \"Verbose\";\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceValues;\n(function (TraceValues) {\n    /**\n     * Turn tracing off.\n     */\n    TraceValues.Off = 'off';\n    /**\n     * Trace messages only.\n     */\n    TraceValues.Messages = 'messages';\n    /**\n     * Compact message tracing.\n     */\n    TraceValues.Compact = 'compact';\n    /**\n     * Verbose message tracing.\n     */\n    TraceValues.Verbose = 'verbose';\n})(TraceValues || (exports.TraceValues = TraceValues = {}));\n(function (Trace) {\n    function fromString(value) {\n        if (!Is.string(value)) {\n            return Trace.Off;\n        }\n        value = value.toLowerCase();\n        switch (value) {\n            case 'off':\n                return Trace.Off;\n            case 'messages':\n                return Trace.Messages;\n            case 'compact':\n                return Trace.Compact;\n            case 'verbose':\n                return Trace.Verbose;\n            default:\n                return Trace.Off;\n        }\n    }\n    Trace.fromString = fromString;\n    function toString(value) {\n        switch (value) {\n            case Trace.Off:\n                return 'off';\n            case Trace.Messages:\n                return 'messages';\n            case Trace.Compact:\n                return 'compact';\n            case Trace.Verbose:\n                return 'verbose';\n            default:\n                return 'off';\n        }\n    }\n    Trace.toString = toString;\n})(Trace || (exports.Trace = Trace = {}));\nvar TraceFormat;\n(function (TraceFormat) {\n    TraceFormat[\"Text\"] = \"text\";\n    TraceFormat[\"JSON\"] = \"json\";\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\n(function (TraceFormat) {\n    function fromString(value) {\n        if (!Is.string(value)) {\n            return TraceFormat.Text;\n        }\n        value = value.toLowerCase();\n        if (value === 'json') {\n            return TraceFormat.JSON;\n        }\n        else {\n            return TraceFormat.Text;\n        }\n    }\n    TraceFormat.fromString = fromString;\n})(TraceFormat || (exports.TraceFormat = TraceFormat = {}));\nvar SetTraceNotification;\n(function (SetTraceNotification) {\n    SetTraceNotification.type = new messages_1.NotificationType('$/setTrace');\n})(SetTraceNotification || (exports.SetTraceNotification = SetTraceNotification = {}));\nvar LogTraceNotification;\n(function (LogTraceNotification) {\n    LogTraceNotification.type = new messages_1.NotificationType('$/logTrace');\n})(LogTraceNotification || (exports.LogTraceNotification = LogTraceNotification = {}));\nvar ConnectionErrors;\n(function (ConnectionErrors) {\n    /**\n     * The connection is closed.\n     */\n    ConnectionErrors[ConnectionErrors[\"Closed\"] = 1] = \"Closed\";\n    /**\n     * The connection got disposed.\n     */\n    ConnectionErrors[ConnectionErrors[\"Disposed\"] = 2] = \"Disposed\";\n    /**\n     * The connection is already in listening mode.\n     */\n    ConnectionErrors[ConnectionErrors[\"AlreadyListening\"] = 3] = \"AlreadyListening\";\n})(ConnectionErrors || (exports.ConnectionErrors = ConnectionErrors = {}));\nclass ConnectionError extends Error {\n    constructor(code, message) {\n        super(message);\n        this.code = code;\n        Object.setPrototypeOf(this, ConnectionError.prototype);\n    }\n}\nexports.ConnectionError = ConnectionError;\nvar ConnectionStrategy;\n(function (ConnectionStrategy) {\n    function is(value) {\n        const candidate = value;\n        return candidate && Is.func(candidate.cancelUndispatched);\n    }\n    ConnectionStrategy.is = is;\n})(ConnectionStrategy || (exports.ConnectionStrategy = ConnectionStrategy = {}));\nvar IdCancellationReceiverStrategy;\n(function (IdCancellationReceiverStrategy) {\n    function is(value) {\n        const candidate = value;\n        return candidate && (candidate.kind === undefined || candidate.kind === 'id') && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n    }\n    IdCancellationReceiverStrategy.is = is;\n})(IdCancellationReceiverStrategy || (exports.IdCancellationReceiverStrategy = IdCancellationReceiverStrategy = {}));\nvar RequestCancellationReceiverStrategy;\n(function (RequestCancellationReceiverStrategy) {\n    function is(value) {\n        const candidate = value;\n        return candidate && candidate.kind === 'request' && Is.func(candidate.createCancellationTokenSource) && (candidate.dispose === undefined || Is.func(candidate.dispose));\n    }\n    RequestCancellationReceiverStrategy.is = is;\n})(RequestCancellationReceiverStrategy || (exports.RequestCancellationReceiverStrategy = RequestCancellationReceiverStrategy = {}));\nvar CancellationReceiverStrategy;\n(function (CancellationReceiverStrategy) {\n    CancellationReceiverStrategy.Message = Object.freeze({\n        createCancellationTokenSource(_) {\n            return new cancellation_1.CancellationTokenSource();\n        }\n    });\n    function is(value) {\n        return IdCancellationReceiverStrategy.is(value) || RequestCancellationReceiverStrategy.is(value);\n    }\n    CancellationReceiverStrategy.is = is;\n})(CancellationReceiverStrategy || (exports.CancellationReceiverStrategy = CancellationReceiverStrategy = {}));\nvar CancellationSenderStrategy;\n(function (CancellationSenderStrategy) {\n    CancellationSenderStrategy.Message = Object.freeze({\n        sendCancellation(conn, id) {\n            return conn.sendNotification(CancelNotification.type, { id });\n        },\n        cleanup(_) { }\n    });\n    function is(value) {\n        const candidate = value;\n        return candidate && Is.func(candidate.sendCancellation) && Is.func(candidate.cleanup);\n    }\n    CancellationSenderStrategy.is = is;\n})(CancellationSenderStrategy || (exports.CancellationSenderStrategy = CancellationSenderStrategy = {}));\nvar CancellationStrategy;\n(function (CancellationStrategy) {\n    CancellationStrategy.Message = Object.freeze({\n        receiver: CancellationReceiverStrategy.Message,\n        sender: CancellationSenderStrategy.Message\n    });\n    function is(value) {\n        const candidate = value;\n        return candidate && CancellationReceiverStrategy.is(candidate.receiver) && CancellationSenderStrategy.is(candidate.sender);\n    }\n    CancellationStrategy.is = is;\n})(CancellationStrategy || (exports.CancellationStrategy = CancellationStrategy = {}));\nvar MessageStrategy;\n(function (MessageStrategy) {\n    function is(value) {\n        const candidate = value;\n        return candidate && Is.func(candidate.handleMessage);\n    }\n    MessageStrategy.is = is;\n})(MessageStrategy || (exports.MessageStrategy = MessageStrategy = {}));\nvar ConnectionOptions;\n(function (ConnectionOptions) {\n    function is(value) {\n        const candidate = value;\n        return candidate && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy));\n    }\n    ConnectionOptions.is = is;\n})(ConnectionOptions || (exports.ConnectionOptions = ConnectionOptions = {}));\nvar ConnectionState;\n(function (ConnectionState) {\n    ConnectionState[ConnectionState[\"New\"] = 1] = \"New\";\n    ConnectionState[ConnectionState[\"Listening\"] = 2] = \"Listening\";\n    ConnectionState[ConnectionState[\"Closed\"] = 3] = \"Closed\";\n    ConnectionState[ConnectionState[\"Disposed\"] = 4] = \"Disposed\";\n})(ConnectionState || (ConnectionState = {}));\nfunction createMessageConnection(messageReader, messageWriter, _logger, options) {\n    const logger = _logger !== undefined ? _logger : exports.NullLogger;\n    let sequenceNumber = 0;\n    let notificationSequenceNumber = 0;\n    let unknownResponseSequenceNumber = 0;\n    const version = '2.0';\n    let starRequestHandler = undefined;\n    const requestHandlers = new Map();\n    let starNotificationHandler = undefined;\n    const notificationHandlers = new Map();\n    const progressHandlers = new Map();\n    let timer;\n    let messageQueue = new linkedMap_1.LinkedMap();\n    let responsePromises = new Map();\n    let knownCanceledRequests = new Set();\n    let requestTokens = new Map();\n    let trace = Trace.Off;\n    let traceFormat = TraceFormat.Text;\n    let tracer;\n    let state = ConnectionState.New;\n    const errorEmitter = new events_1.Emitter();\n    const closeEmitter = new events_1.Emitter();\n    const unhandledNotificationEmitter = new events_1.Emitter();\n    const unhandledProgressEmitter = new events_1.Emitter();\n    const disposeEmitter = new events_1.Emitter();\n    const cancellationStrategy = (options && options.cancellationStrategy) ? options.cancellationStrategy : CancellationStrategy.Message;\n    function createRequestQueueKey(id) {\n        if (id === null) {\n            throw new Error(`Can't send requests with id null since the response can't be correlated.`);\n        }\n        return 'req-' + id.toString();\n    }\n    function createResponseQueueKey(id) {\n        if (id === null) {\n            return 'res-unknown-' + (++unknownResponseSequenceNumber).toString();\n        }\n        else {\n            return 'res-' + id.toString();\n        }\n    }\n    function createNotificationQueueKey() {\n        return 'not-' + (++notificationSequenceNumber).toString();\n    }\n    function addMessageToQueue(queue, message) {\n        if (messages_1.Message.isRequest(message)) {\n            queue.set(createRequestQueueKey(message.id), message);\n        }\n        else if (messages_1.Message.isResponse(message)) {\n            queue.set(createResponseQueueKey(message.id), message);\n        }\n        else {\n            queue.set(createNotificationQueueKey(), message);\n        }\n    }\n    function cancelUndispatched(_message) {\n        return undefined;\n    }\n    function isListening() {\n        return state === ConnectionState.Listening;\n    }\n    function isClosed() {\n        return state === ConnectionState.Closed;\n    }\n    function isDisposed() {\n        return state === ConnectionState.Disposed;\n    }\n    function closeHandler() {\n        if (state === ConnectionState.New || state === ConnectionState.Listening) {\n            state = ConnectionState.Closed;\n            closeEmitter.fire(undefined);\n        }\n        // If the connection is disposed don't sent close events.\n    }\n    function readErrorHandler(error) {\n        errorEmitter.fire([error, undefined, undefined]);\n    }\n    function writeErrorHandler(data) {\n        errorEmitter.fire(data);\n    }\n    messageReader.onClose(closeHandler);\n    messageReader.onError(readErrorHandler);\n    messageWriter.onClose(closeHandler);\n    messageWriter.onError(writeErrorHandler);\n    function triggerMessageQueue() {\n        if (timer || messageQueue.size === 0) {\n            return;\n        }\n        timer = (0, ral_1.default)().timer.setImmediate(() => {\n            timer = undefined;\n            processMessageQueue();\n        });\n    }\n    function handleMessage(message) {\n        if (messages_1.Message.isRequest(message)) {\n            handleRequest(message);\n        }\n        else if (messages_1.Message.isNotification(message)) {\n            handleNotification(message);\n        }\n        else if (messages_1.Message.isResponse(message)) {\n            handleResponse(message);\n        }\n        else {\n            handleInvalidMessage(message);\n        }\n    }\n    function processMessageQueue() {\n        if (messageQueue.size === 0) {\n            return;\n        }\n        const message = messageQueue.shift();\n        try {\n            const messageStrategy = options?.messageStrategy;\n            if (MessageStrategy.is(messageStrategy)) {\n                messageStrategy.handleMessage(message, handleMessage);\n            }\n            else {\n                handleMessage(message);\n            }\n        }\n        finally {\n            triggerMessageQueue();\n        }\n    }\n    const callback = (message) => {\n        try {\n            // We have received a cancellation message. Check if the message is still in the queue\n            // and cancel it if allowed to do so.\n            if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) {\n                const cancelId = message.params.id;\n                const key = createRequestQueueKey(cancelId);\n                const toCancel = messageQueue.get(key);\n                if (messages_1.Message.isRequest(toCancel)) {\n                    const strategy = options?.connectionStrategy;\n                    const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel);\n                    if (response && (response.error !== undefined || response.result !== undefined)) {\n                        messageQueue.delete(key);\n                        requestTokens.delete(cancelId);\n                        response.id = toCancel.id;\n                        traceSendingResponse(response, message.method, Date.now());\n                        messageWriter.write(response).catch(() => logger.error(`Sending response for canceled message failed.`));\n                        return;\n                    }\n                }\n                const cancellationToken = requestTokens.get(cancelId);\n                // The request is already running. Cancel the token\n                if (cancellationToken !== undefined) {\n                    cancellationToken.cancel();\n                    traceReceivedNotification(message);\n                    return;\n                }\n                else {\n                    // Remember the cancel but still queue the message to\n                    // clean up state in process message.\n                    knownCanceledRequests.add(cancelId);\n                }\n            }\n            addMessageToQueue(messageQueue, message);\n        }\n        finally {\n            triggerMessageQueue();\n        }\n    };\n    function handleRequest(requestMessage) {\n        if (isDisposed()) {\n            // we return here silently since we fired an event when the\n            // connection got disposed.\n            return;\n        }\n        function reply(resultOrError, method, startTime) {\n            const message = {\n                jsonrpc: version,\n                id: requestMessage.id\n            };\n            if (resultOrError instanceof messages_1.ResponseError) {\n                message.error = resultOrError.toJson();\n            }\n            else {\n                message.result = resultOrError === undefined ? null : resultOrError;\n            }\n            traceSendingResponse(message, method, startTime);\n            messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n        }\n        function replyError(error, method, startTime) {\n            const message = {\n                jsonrpc: version,\n                id: requestMessage.id,\n                error: error.toJson()\n            };\n            traceSendingResponse(message, method, startTime);\n            messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n        }\n        function replySuccess(result, method, startTime) {\n            // The JSON RPC defines that a response must either have a result or an error\n            // So we can't treat undefined as a valid response result.\n            if (result === undefined) {\n                result = null;\n            }\n            const message = {\n                jsonrpc: version,\n                id: requestMessage.id,\n                result: result\n            };\n            traceSendingResponse(message, method, startTime);\n            messageWriter.write(message).catch(() => logger.error(`Sending response failed.`));\n        }\n        traceReceivedRequest(requestMessage);\n        const element = requestHandlers.get(requestMessage.method);\n        let type;\n        let requestHandler;\n        if (element) {\n            type = element.type;\n            requestHandler = element.handler;\n        }\n        const startTime = Date.now();\n        if (requestHandler || starRequestHandler) {\n            const tokenKey = requestMessage.id ?? String(Date.now()); //\n            const cancellationSource = IdCancellationReceiverStrategy.is(cancellationStrategy.receiver)\n                ? cancellationStrategy.receiver.createCancellationTokenSource(tokenKey)\n                : cancellationStrategy.receiver.createCancellationTokenSource(requestMessage);\n            if (requestMessage.id !== null && knownCanceledRequests.has(requestMessage.id)) {\n                cancellationSource.cancel();\n            }\n            if (requestMessage.id !== null) {\n                requestTokens.set(tokenKey, cancellationSource);\n            }\n            try {\n                let handlerResult;\n                if (requestHandler) {\n                    if (requestMessage.params === undefined) {\n                        if (type !== undefined && type.numberOfParams !== 0) {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\n                            return;\n                        }\n                        handlerResult = requestHandler(cancellationSource.token);\n                    }\n                    else if (Array.isArray(requestMessage.params)) {\n                        if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byName) {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by name but received parameters by position`), requestMessage.method, startTime);\n                            return;\n                        }\n                        handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n                    }\n                    else {\n                        if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines parameters by position but received parameters by name`), requestMessage.method, startTime);\n                            return;\n                        }\n                        handlerResult = requestHandler(requestMessage.params, cancellationSource.token);\n                    }\n                }\n                else if (starRequestHandler) {\n                    handlerResult = starRequestHandler(requestMessage.method, requestMessage.params, cancellationSource.token);\n                }\n                const promise = handlerResult;\n                if (!handlerResult) {\n                    requestTokens.delete(tokenKey);\n                    replySuccess(handlerResult, requestMessage.method, startTime);\n                }\n                else if (promise.then) {\n                    promise.then((resultOrError) => {\n                        requestTokens.delete(tokenKey);\n                        reply(resultOrError, requestMessage.method, startTime);\n                    }, error => {\n                        requestTokens.delete(tokenKey);\n                        if (error instanceof messages_1.ResponseError) {\n                            replyError(error, requestMessage.method, startTime);\n                        }\n                        else if (error && Is.string(error.message)) {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n                        }\n                        else {\n                            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n                        }\n                    });\n                }\n                else {\n                    requestTokens.delete(tokenKey);\n                    reply(handlerResult, requestMessage.method, startTime);\n                }\n            }\n            catch (error) {\n                requestTokens.delete(tokenKey);\n                if (error instanceof messages_1.ResponseError) {\n                    reply(error, requestMessage.method, startTime);\n                }\n                else if (error && Is.string(error.message)) {\n                    replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n                }\n                else {\n                    replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n                }\n            }\n        }\n        else {\n            replyError(new messages_1.ResponseError(messages_1.ErrorCodes.MethodNotFound, `Unhandled method ${requestMessage.method}`), requestMessage.method, startTime);\n        }\n    }\n    function handleResponse(responseMessage) {\n        if (isDisposed()) {\n            // See handle request.\n            return;\n        }\n        if (responseMessage.id === null) {\n            if (responseMessage.error) {\n                logger.error(`Received response message without id: Error is: \\n${JSON.stringify(responseMessage.error, undefined, 4)}`);\n            }\n            else {\n                logger.error(`Received response message without id. No further error information provided.`);\n            }\n        }\n        else {\n            const key = responseMessage.id;\n            const responsePromise = responsePromises.get(key);\n            traceReceivedResponse(responseMessage, responsePromise);\n            if (responsePromise !== undefined) {\n                responsePromises.delete(key);\n                try {\n                    if (responseMessage.error) {\n                        const error = responseMessage.error;\n                        responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n                    }\n                    else if (responseMessage.result !== undefined) {\n                        responsePromise.resolve(responseMessage.result);\n                    }\n                    else {\n                        throw new Error('Should never happen.');\n                    }\n                }\n                catch (error) {\n                    if (error.message) {\n                        logger.error(`Response handler '${responsePromise.method}' failed with message: ${error.message}`);\n                    }\n                    else {\n                        logger.error(`Response handler '${responsePromise.method}' failed unexpectedly.`);\n                    }\n                }\n            }\n        }\n    }\n    function handleNotification(message) {\n        if (isDisposed()) {\n            // See handle request.\n            return;\n        }\n        let type = undefined;\n        let notificationHandler;\n        if (message.method === CancelNotification.type.method) {\n            const cancelId = message.params.id;\n            knownCanceledRequests.delete(cancelId);\n            traceReceivedNotification(message);\n            return;\n        }\n        else {\n            const element = notificationHandlers.get(message.method);\n            if (element) {\n                notificationHandler = element.handler;\n                type = element.type;\n            }\n        }\n        if (notificationHandler || starNotificationHandler) {\n            try {\n                traceReceivedNotification(message);\n                if (notificationHandler) {\n                    if (message.params === undefined) {\n                        if (type !== undefined) {\n                            if (type.numberOfParams !== 0 && type.parameterStructures !== messages_1.ParameterStructures.byName) {\n                                logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received none.`);\n                            }\n                        }\n                        notificationHandler();\n                    }\n                    else if (Array.isArray(message.params)) {\n                        // There are JSON-RPC libraries that send progress message as positional params although\n                        // specified as named. So convert them if this is the case.\n                        const params = message.params;\n                        if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) {\n                            notificationHandler({ token: params[0], value: params[1] });\n                        }\n                        else {\n                            if (type !== undefined) {\n                                if (type.parameterStructures === messages_1.ParameterStructures.byName) {\n                                    logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`);\n                                }\n                                if (type.numberOfParams !== message.params.length) {\n                                    logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`);\n                                }\n                            }\n                            notificationHandler(...params);\n                        }\n                    }\n                    else {\n                        if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n                            logger.error(`Notification ${message.method} defines parameters by position but received parameters by name`);\n                        }\n                        notificationHandler(message.params);\n                    }\n                }\n                else if (starNotificationHandler) {\n                    starNotificationHandler(message.method, message.params);\n                }\n            }\n            catch (error) {\n                if (error.message) {\n                    logger.error(`Notification handler '${message.method}' failed with message: ${error.message}`);\n                }\n                else {\n                    logger.error(`Notification handler '${message.method}' failed unexpectedly.`);\n                }\n            }\n        }\n        else {\n            unhandledNotificationEmitter.fire(message);\n        }\n    }\n    function handleInvalidMessage(message) {\n        if (!message) {\n            logger.error('Received empty message.');\n            return;\n        }\n        logger.error(`Received message which is neither a response nor a notification message:\\n${JSON.stringify(message, null, 4)}`);\n        // Test whether we find an id to reject the promise\n        const responseMessage = message;\n        if (Is.string(responseMessage.id) || Is.number(responseMessage.id)) {\n            const key = responseMessage.id;\n            const responseHandler = responsePromises.get(key);\n            if (responseHandler) {\n                responseHandler.reject(new Error('The received response has neither a result nor an error property.'));\n            }\n        }\n    }\n    function stringifyTrace(params) {\n        if (params === undefined || params === null) {\n            return undefined;\n        }\n        switch (trace) {\n            case Trace.Verbose:\n                return JSON.stringify(params, null, 4);\n            case Trace.Compact:\n                return JSON.stringify(params);\n            default:\n                return undefined;\n        }\n    }\n    function traceSendingRequest(message) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n                data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n            }\n            tracer.log(`Sending request '${message.method} - (${message.id})'.`, data);\n        }\n        else {\n            logLSPMessage('send-request', message);\n        }\n    }\n    function traceSendingNotification(message) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if (trace === Trace.Verbose || trace === Trace.Compact) {\n                if (message.params) {\n                    data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n                }\n                else {\n                    data = 'No parameters provided.\\n\\n';\n                }\n            }\n            tracer.log(`Sending notification '${message.method}'.`, data);\n        }\n        else {\n            logLSPMessage('send-notification', message);\n        }\n    }\n    function traceSendingResponse(message, method, startTime) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if (trace === Trace.Verbose || trace === Trace.Compact) {\n                if (message.error && message.error.data) {\n                    data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n                }\n                else {\n                    if (message.result) {\n                        data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n                    }\n                    else if (message.error === undefined) {\n                        data = 'No result returned.\\n\\n';\n                    }\n                }\n            }\n            tracer.log(`Sending response '${method} - (${message.id})'. Processing request took ${Date.now() - startTime}ms`, data);\n        }\n        else {\n            logLSPMessage('send-response', message);\n        }\n    }\n    function traceReceivedRequest(message) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) {\n                data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n            }\n            tracer.log(`Received request '${message.method} - (${message.id})'.`, data);\n        }\n        else {\n            logLSPMessage('receive-request', message);\n        }\n    }\n    function traceReceivedNotification(message) {\n        if (trace === Trace.Off || !tracer || message.method === LogTraceNotification.type.method) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if (trace === Trace.Verbose || trace === Trace.Compact) {\n                if (message.params) {\n                    data = `Params: ${stringifyTrace(message.params)}\\n\\n`;\n                }\n                else {\n                    data = 'No parameters provided.\\n\\n';\n                }\n            }\n            tracer.log(`Received notification '${message.method}'.`, data);\n        }\n        else {\n            logLSPMessage('receive-notification', message);\n        }\n    }\n    function traceReceivedResponse(message, responsePromise) {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        if (traceFormat === TraceFormat.Text) {\n            let data = undefined;\n            if (trace === Trace.Verbose || trace === Trace.Compact) {\n                if (message.error && message.error.data) {\n                    data = `Error data: ${stringifyTrace(message.error.data)}\\n\\n`;\n                }\n                else {\n                    if (message.result) {\n                        data = `Result: ${stringifyTrace(message.result)}\\n\\n`;\n                    }\n                    else if (message.error === undefined) {\n                        data = 'No result returned.\\n\\n';\n                    }\n                }\n            }\n            if (responsePromise) {\n                const error = message.error ? ` Request failed: ${message.error.message} (${message.error.code}).` : '';\n                tracer.log(`Received response '${responsePromise.method} - (${message.id})' in ${Date.now() - responsePromise.timerStart}ms.${error}`, data);\n            }\n            else {\n                tracer.log(`Received response ${message.id} without active response promise.`, data);\n            }\n        }\n        else {\n            logLSPMessage('receive-response', message);\n        }\n    }\n    function logLSPMessage(type, message) {\n        if (!tracer || trace === Trace.Off) {\n            return;\n        }\n        const lspMessage = {\n            isLSPMessage: true,\n            type,\n            message,\n            timestamp: Date.now()\n        };\n        tracer.log(lspMessage);\n    }\n    function throwIfClosedOrDisposed() {\n        if (isClosed()) {\n            throw new ConnectionError(ConnectionErrors.Closed, 'Connection is closed.');\n        }\n        if (isDisposed()) {\n            throw new ConnectionError(ConnectionErrors.Disposed, 'Connection is disposed.');\n        }\n    }\n    function throwIfListening() {\n        if (isListening()) {\n            throw new ConnectionError(ConnectionErrors.AlreadyListening, 'Connection is already listening');\n        }\n    }\n    function throwIfNotListening() {\n        if (!isListening()) {\n            throw new Error('Call listen() first.');\n        }\n    }\n    function undefinedToNull(param) {\n        if (param === undefined) {\n            return null;\n        }\n        else {\n            return param;\n        }\n    }\n    function nullToUndefined(param) {\n        if (param === null) {\n            return undefined;\n        }\n        else {\n            return param;\n        }\n    }\n    function isNamedParam(param) {\n        return param !== undefined && param !== null && !Array.isArray(param) && typeof param === 'object';\n    }\n    function computeSingleParam(parameterStructures, param) {\n        switch (parameterStructures) {\n            case messages_1.ParameterStructures.auto:\n                if (isNamedParam(param)) {\n                    return nullToUndefined(param);\n                }\n                else {\n                    return [undefinedToNull(param)];\n                }\n            case messages_1.ParameterStructures.byName:\n                if (!isNamedParam(param)) {\n                    throw new Error(`Received parameters by name but param is not an object literal.`);\n                }\n                return nullToUndefined(param);\n            case messages_1.ParameterStructures.byPosition:\n                return [undefinedToNull(param)];\n            default:\n                throw new Error(`Unknown parameter structure ${parameterStructures.toString()}`);\n        }\n    }\n    function computeMessageParams(type, params) {\n        let result;\n        const numberOfParams = type.numberOfParams;\n        switch (numberOfParams) {\n            case 0:\n                result = undefined;\n                break;\n            case 1:\n                result = computeSingleParam(type.parameterStructures, params[0]);\n                break;\n            default:\n                result = [];\n                for (let i = 0; i < params.length && i < numberOfParams; i++) {\n                    result.push(undefinedToNull(params[i]));\n                }\n                if (params.length < numberOfParams) {\n                    for (let i = params.length; i < numberOfParams; i++) {\n                        result.push(null);\n                    }\n                }\n                break;\n        }\n        return result;\n    }\n    const connection = {\n        sendNotification: (type, ...args) => {\n            throwIfClosedOrDisposed();\n            let method;\n            let messageParams;\n            if (Is.string(type)) {\n                method = type;\n                const first = args[0];\n                let paramStart = 0;\n                let parameterStructures = messages_1.ParameterStructures.auto;\n                if (messages_1.ParameterStructures.is(first)) {\n                    paramStart = 1;\n                    parameterStructures = first;\n                }\n                let paramEnd = args.length;\n                const numberOfParams = paramEnd - paramStart;\n                switch (numberOfParams) {\n                    case 0:\n                        messageParams = undefined;\n                        break;\n                    case 1:\n                        messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n                        break;\n                    default:\n                        if (parameterStructures === messages_1.ParameterStructures.byName) {\n                            throw new Error(`Received ${numberOfParams} parameters for 'by Name' notification parameter structure.`);\n                        }\n                        messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n                        break;\n                }\n            }\n            else {\n                const params = args;\n                method = type.method;\n                messageParams = computeMessageParams(type, params);\n            }\n            const notificationMessage = {\n                jsonrpc: version,\n                method: method,\n                params: messageParams\n            };\n            traceSendingNotification(notificationMessage);\n            return messageWriter.write(notificationMessage).catch((error) => {\n                logger.error(`Sending notification failed.`);\n                throw error;\n            });\n        },\n        onNotification: (type, handler) => {\n            throwIfClosedOrDisposed();\n            let method;\n            if (Is.func(type)) {\n                starNotificationHandler = type;\n            }\n            else if (handler) {\n                if (Is.string(type)) {\n                    method = type;\n                    notificationHandlers.set(type, { type: undefined, handler });\n                }\n                else {\n                    method = type.method;\n                    notificationHandlers.set(type.method, { type, handler });\n                }\n            }\n            return {\n                dispose: () => {\n                    if (method !== undefined) {\n                        notificationHandlers.delete(method);\n                    }\n                    else {\n                        starNotificationHandler = undefined;\n                    }\n                }\n            };\n        },\n        onProgress: (_type, token, handler) => {\n            if (progressHandlers.has(token)) {\n                throw new Error(`Progress handler for token ${token} already registered`);\n            }\n            progressHandlers.set(token, handler);\n            return {\n                dispose: () => {\n                    progressHandlers.delete(token);\n                }\n            };\n        },\n        sendProgress: (_type, token, value) => {\n            // This should not await but simple return to ensure that we don't have another\n            // async scheduling. Otherwise one send could overtake another send.\n            return connection.sendNotification(ProgressNotification.type, { token, value });\n        },\n        onUnhandledProgress: unhandledProgressEmitter.event,\n        sendRequest: (type, ...args) => {\n            throwIfClosedOrDisposed();\n            throwIfNotListening();\n            let method;\n            let messageParams;\n            let token = undefined;\n            if (Is.string(type)) {\n                method = type;\n                const first = args[0];\n                const last = args[args.length - 1];\n                let paramStart = 0;\n                let parameterStructures = messages_1.ParameterStructures.auto;\n                if (messages_1.ParameterStructures.is(first)) {\n                    paramStart = 1;\n                    parameterStructures = first;\n                }\n                let paramEnd = args.length;\n                if (cancellation_1.CancellationToken.is(last)) {\n                    paramEnd = paramEnd - 1;\n                    token = last;\n                }\n                const numberOfParams = paramEnd - paramStart;\n                switch (numberOfParams) {\n                    case 0:\n                        messageParams = undefined;\n                        break;\n                    case 1:\n                        messageParams = computeSingleParam(parameterStructures, args[paramStart]);\n                        break;\n                    default:\n                        if (parameterStructures === messages_1.ParameterStructures.byName) {\n                            throw new Error(`Received ${numberOfParams} parameters for 'by Name' request parameter structure.`);\n                        }\n                        messageParams = args.slice(paramStart, paramEnd).map(value => undefinedToNull(value));\n                        break;\n                }\n            }\n            else {\n                const params = args;\n                method = type.method;\n                messageParams = computeMessageParams(type, params);\n                const numberOfParams = type.numberOfParams;\n                token = cancellation_1.CancellationToken.is(params[numberOfParams]) ? params[numberOfParams] : undefined;\n            }\n            const id = sequenceNumber++;\n            let disposable;\n            if (token) {\n                disposable = token.onCancellationRequested(() => {\n                    const p = cancellationStrategy.sender.sendCancellation(connection, id);\n                    if (p === undefined) {\n                        logger.log(`Received no promise from cancellation strategy when cancelling id ${id}`);\n                        return Promise.resolve();\n                    }\n                    else {\n                        return p.catch(() => {\n                            logger.log(`Sending cancellation messages for id ${id} failed`);\n                        });\n                    }\n                });\n            }\n            const requestMessage = {\n                jsonrpc: version,\n                id: id,\n                method: method,\n                params: messageParams\n            };\n            traceSendingRequest(requestMessage);\n            if (typeof cancellationStrategy.sender.enableCancellation === 'function') {\n                cancellationStrategy.sender.enableCancellation(requestMessage);\n            }\n            return new Promise(async (resolve, reject) => {\n                const resolveWithCleanup = (r) => {\n                    resolve(r);\n                    cancellationStrategy.sender.cleanup(id);\n                    disposable?.dispose();\n                };\n                const rejectWithCleanup = (r) => {\n                    reject(r);\n                    cancellationStrategy.sender.cleanup(id);\n                    disposable?.dispose();\n                };\n                const responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup };\n                try {\n                    await messageWriter.write(requestMessage);\n                    responsePromises.set(id, responsePromise);\n                }\n                catch (error) {\n                    logger.error(`Sending request failed.`);\n                    // Writing the message failed. So we need to reject the promise.\n                    responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n                    throw error;\n                }\n            });\n        },\n        onRequest: (type, handler) => {\n            throwIfClosedOrDisposed();\n            let method = null;\n            if (StarRequestHandler.is(type)) {\n                method = undefined;\n                starRequestHandler = type;\n            }\n            else if (Is.string(type)) {\n                method = null;\n                if (handler !== undefined) {\n                    method = type;\n                    requestHandlers.set(type, { handler: handler, type: undefined });\n                }\n            }\n            else {\n                if (handler !== undefined) {\n                    method = type.method;\n                    requestHandlers.set(type.method, { type, handler });\n                }\n            }\n            return {\n                dispose: () => {\n                    if (method === null) {\n                        return;\n                    }\n                    if (method !== undefined) {\n                        requestHandlers.delete(method);\n                    }\n                    else {\n                        starRequestHandler = undefined;\n                    }\n                }\n            };\n        },\n        hasPendingResponse: () => {\n            return responsePromises.size > 0;\n        },\n        trace: async (_value, _tracer, sendNotificationOrTraceOptions) => {\n            let _sendNotification = false;\n            let _traceFormat = TraceFormat.Text;\n            if (sendNotificationOrTraceOptions !== undefined) {\n                if (Is.boolean(sendNotificationOrTraceOptions)) {\n                    _sendNotification = sendNotificationOrTraceOptions;\n                }\n                else {\n                    _sendNotification = sendNotificationOrTraceOptions.sendNotification || false;\n                    _traceFormat = sendNotificationOrTraceOptions.traceFormat || TraceFormat.Text;\n                }\n            }\n            trace = _value;\n            traceFormat = _traceFormat;\n            if (trace === Trace.Off) {\n                tracer = undefined;\n            }\n            else {\n                tracer = _tracer;\n            }\n            if (_sendNotification && !isClosed() && !isDisposed()) {\n                await connection.sendNotification(SetTraceNotification.type, { value: Trace.toString(_value) });\n            }\n        },\n        onError: errorEmitter.event,\n        onClose: closeEmitter.event,\n        onUnhandledNotification: unhandledNotificationEmitter.event,\n        onDispose: disposeEmitter.event,\n        end: () => {\n            messageWriter.end();\n        },\n        dispose: () => {\n            if (isDisposed()) {\n                return;\n            }\n            state = ConnectionState.Disposed;\n            disposeEmitter.fire(undefined);\n            const error = new messages_1.ResponseError(messages_1.ErrorCodes.PendingResponseRejected, 'Pending response rejected since connection got disposed');\n            for (const promise of responsePromises.values()) {\n                promise.reject(error);\n            }\n            responsePromises = new Map();\n            requestTokens = new Map();\n            knownCanceledRequests = new Set();\n            messageQueue = new linkedMap_1.LinkedMap();\n            // Test for backwards compatibility\n            if (Is.func(messageWriter.dispose)) {\n                messageWriter.dispose();\n            }\n            if (Is.func(messageReader.dispose)) {\n                messageReader.dispose();\n            }\n        },\n        listen: () => {\n            throwIfClosedOrDisposed();\n            throwIfListening();\n            state = ConnectionState.Listening;\n            messageReader.listen(callback);\n        },\n        inspect: () => {\n            // eslint-disable-next-line no-console\n            (0, ral_1.default)().console.log('inspect');\n        }\n    };\n    connection.onNotification(LogTraceNotification.type, (params) => {\n        if (trace === Trace.Off || !tracer) {\n            return;\n        }\n        const verbose = trace === Trace.Verbose || trace === Trace.Compact;\n        tracer.log(params.message, verbose ? params.verbose : undefined);\n    });\n    connection.onNotification(ProgressNotification.type, (params) => {\n        const handler = progressHandlers.get(params.token);\n        if (handler) {\n            handler(params.value);\n        }\n        else {\n            unhandledProgressEmitter.fire(params);\n        }\n    });\n    return connection;\n}\nexports.createMessageConnection = createMessageConnection;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n/// <reference path=\"../../typings/thenable.d.ts\" />\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.AbstractMessageBuffer = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.SharedArrayReceiverStrategy = exports.SharedArraySenderStrategy = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0;\nexports.MessageStrategy = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.Trace = void 0;\nconst messages_1 = require(\"./messages\");\nObject.defineProperty(exports, \"Message\", { enumerable: true, get: function () { return messages_1.Message; } });\nObject.defineProperty(exports, \"RequestType\", { enumerable: true, get: function () { return messages_1.RequestType; } });\nObject.defineProperty(exports, \"RequestType0\", { enumerable: true, get: function () { return messages_1.RequestType0; } });\nObject.defineProperty(exports, \"RequestType1\", { enumerable: true, get: function () { return messages_1.RequestType1; } });\nObject.defineProperty(exports, \"RequestType2\", { enumerable: true, get: function () { return messages_1.RequestType2; } });\nObject.defineProperty(exports, \"RequestType3\", { enumerable: true, get: function () { return messages_1.RequestType3; } });\nObject.defineProperty(exports, \"RequestType4\", { enumerable: true, get: function () { return messages_1.RequestType4; } });\nObject.defineProperty(exports, \"RequestType5\", { enumerable: true, get: function () { return messages_1.RequestType5; } });\nObject.defineProperty(exports, \"RequestType6\", { enumerable: true, get: function () { return messages_1.RequestType6; } });\nObject.defineProperty(exports, \"RequestType7\", { enumerable: true, get: function () { return messages_1.RequestType7; } });\nObject.defineProperty(exports, \"RequestType8\", { enumerable: true, get: function () { return messages_1.RequestType8; } });\nObject.defineProperty(exports, \"RequestType9\", { enumerable: true, get: function () { return messages_1.RequestType9; } });\nObject.defineProperty(exports, \"ResponseError\", { enumerable: true, get: function () { return messages_1.ResponseError; } });\nObject.defineProperty(exports, \"ErrorCodes\", { enumerable: true, get: function () { return messages_1.ErrorCodes; } });\nObject.defineProperty(exports, \"NotificationType\", { enumerable: true, get: function () { return messages_1.NotificationType; } });\nObject.defineProperty(exports, \"NotificationType0\", { enumerable: true, get: function () { return messages_1.NotificationType0; } });\nObject.defineProperty(exports, \"NotificationType1\", { enumerable: true, get: function () { return messages_1.NotificationType1; } });\nObject.defineProperty(exports, \"NotificationType2\", { enumerable: true, get: function () { return messages_1.NotificationType2; } });\nObject.defineProperty(exports, \"NotificationType3\", { enumerable: true, get: function () { return messages_1.NotificationType3; } });\nObject.defineProperty(exports, \"NotificationType4\", { enumerable: true, get: function () { return messages_1.NotificationType4; } });\nObject.defineProperty(exports, \"NotificationType5\", { enumerable: true, get: function () { return messages_1.NotificationType5; } });\nObject.defineProperty(exports, \"NotificationType6\", { enumerable: true, get: function () { return messages_1.NotificationType6; } });\nObject.defineProperty(exports, \"NotificationType7\", { enumerable: true, get: function () { return messages_1.NotificationType7; } });\nObject.defineProperty(exports, \"NotificationType8\", { enumerable: true, get: function () { return messages_1.NotificationType8; } });\nObject.defineProperty(exports, \"NotificationType9\", { enumerable: true, get: function () { return messages_1.NotificationType9; } });\nObject.defineProperty(exports, \"ParameterStructures\", { enumerable: true, get: function () { return messages_1.ParameterStructures; } });\nconst linkedMap_1 = require(\"./linkedMap\");\nObject.defineProperty(exports, \"LinkedMap\", { enumerable: true, get: function () { return linkedMap_1.LinkedMap; } });\nObject.defineProperty(exports, \"LRUCache\", { enumerable: true, get: function () { return linkedMap_1.LRUCache; } });\nObject.defineProperty(exports, \"Touch\", { enumerable: true, get: function () { return linkedMap_1.Touch; } });\nconst disposable_1 = require(\"./disposable\");\nObject.defineProperty(exports, \"Disposable\", { enumerable: true, get: function () { return disposable_1.Disposable; } });\nconst events_1 = require(\"./events\");\nObject.defineProperty(exports, \"Event\", { enumerable: true, get: function () { return events_1.Event; } });\nObject.defineProperty(exports, \"Emitter\", { enumerable: true, get: function () { return events_1.Emitter; } });\nconst cancellation_1 = require(\"./cancellation\");\nObject.defineProperty(exports, \"CancellationTokenSource\", { enumerable: true, get: function () { return cancellation_1.CancellationTokenSource; } });\nObject.defineProperty(exports, \"CancellationToken\", { enumerable: true, get: function () { return cancellation_1.CancellationToken; } });\nconst sharedArrayCancellation_1 = require(\"./sharedArrayCancellation\");\nObject.defineProperty(exports, \"SharedArraySenderStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArraySenderStrategy; } });\nObject.defineProperty(exports, \"SharedArrayReceiverStrategy\", { enumerable: true, get: function () { return sharedArrayCancellation_1.SharedArrayReceiverStrategy; } });\nconst messageReader_1 = require(\"./messageReader\");\nObject.defineProperty(exports, \"MessageReader\", { enumerable: true, get: function () { return messageReader_1.MessageReader; } });\nObject.defineProperty(exports, \"AbstractMessageReader\", { enumerable: true, get: function () { return messageReader_1.AbstractMessageReader; } });\nObject.defineProperty(exports, \"ReadableStreamMessageReader\", { enumerable: true, get: function () { return messageReader_1.ReadableStreamMessageReader; } });\nconst messageWriter_1 = require(\"./messageWriter\");\nObject.defineProperty(exports, \"MessageWriter\", { enumerable: true, get: function () { return messageWriter_1.MessageWriter; } });\nObject.defineProperty(exports, \"AbstractMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.AbstractMessageWriter; } });\nObject.defineProperty(exports, \"WriteableStreamMessageWriter\", { enumerable: true, get: function () { return messageWriter_1.WriteableStreamMessageWriter; } });\nconst messageBuffer_1 = require(\"./messageBuffer\");\nObject.defineProperty(exports, \"AbstractMessageBuffer\", { enumerable: true, get: function () { return messageBuffer_1.AbstractMessageBuffer; } });\nconst connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"ConnectionStrategy\", { enumerable: true, get: function () { return connection_1.ConnectionStrategy; } });\nObject.defineProperty(exports, \"ConnectionOptions\", { enumerable: true, get: function () { return connection_1.ConnectionOptions; } });\nObject.defineProperty(exports, \"NullLogger\", { enumerable: true, get: function () { return connection_1.NullLogger; } });\nObject.defineProperty(exports, \"createMessageConnection\", { enumerable: true, get: function () { return connection_1.createMessageConnection; } });\nObject.defineProperty(exports, \"ProgressToken\", { enumerable: true, get: function () { return connection_1.ProgressToken; } });\nObject.defineProperty(exports, \"ProgressType\", { enumerable: true, get: function () { return connection_1.ProgressType; } });\nObject.defineProperty(exports, \"Trace\", { enumerable: true, get: function () { return connection_1.Trace; } });\nObject.defineProperty(exports, \"TraceValues\", { enumerable: true, get: function () { return connection_1.TraceValues; } });\nObject.defineProperty(exports, \"TraceFormat\", { enumerable: true, get: function () { return connection_1.TraceFormat; } });\nObject.defineProperty(exports, \"SetTraceNotification\", { enumerable: true, get: function () { return connection_1.SetTraceNotification; } });\nObject.defineProperty(exports, \"LogTraceNotification\", { enumerable: true, get: function () { return connection_1.LogTraceNotification; } });\nObject.defineProperty(exports, \"ConnectionErrors\", { enumerable: true, get: function () { return connection_1.ConnectionErrors; } });\nObject.defineProperty(exports, \"ConnectionError\", { enumerable: true, get: function () { return connection_1.ConnectionError; } });\nObject.defineProperty(exports, \"CancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.CancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"CancellationSenderStrategy\", { enumerable: true, get: function () { return connection_1.CancellationSenderStrategy; } });\nObject.defineProperty(exports, \"CancellationStrategy\", { enumerable: true, get: function () { return connection_1.CancellationStrategy; } });\nObject.defineProperty(exports, \"MessageStrategy\", { enumerable: true, get: function () { return connection_1.MessageStrategy; } });\nconst ral_1 = require(\"./ral\");\nexports.RAL = ral_1.default;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"util\");\nconst api_1 = require(\"../common/api\");\nclass MessageBuffer extends api_1.AbstractMessageBuffer {\n    constructor(encoding = 'utf-8') {\n        super(encoding);\n    }\n    emptyBuffer() {\n        return MessageBuffer.emptyBuffer;\n    }\n    fromString(value, encoding) {\n        return Buffer.from(value, encoding);\n    }\n    toString(value, encoding) {\n        if (value instanceof Buffer) {\n            return value.toString(encoding);\n        }\n        else {\n            return new util_1.TextDecoder(encoding).decode(value);\n        }\n    }\n    asNative(buffer, length) {\n        if (length === undefined) {\n            return buffer instanceof Buffer ? buffer : Buffer.from(buffer);\n        }\n        else {\n            return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);\n        }\n    }\n    allocNative(length) {\n        return Buffer.allocUnsafe(length);\n    }\n}\nMessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);\nclass ReadableStreamWrapper {\n    constructor(stream) {\n        this.stream = stream;\n    }\n    onClose(listener) {\n        this.stream.on('close', listener);\n        return api_1.Disposable.create(() => this.stream.off('close', listener));\n    }\n    onError(listener) {\n        this.stream.on('error', listener);\n        return api_1.Disposable.create(() => this.stream.off('error', listener));\n    }\n    onEnd(listener) {\n        this.stream.on('end', listener);\n        return api_1.Disposable.create(() => this.stream.off('end', listener));\n    }\n    onData(listener) {\n        this.stream.on('data', listener);\n        return api_1.Disposable.create(() => this.stream.off('data', listener));\n    }\n}\nclass WritableStreamWrapper {\n    constructor(stream) {\n        this.stream = stream;\n    }\n    onClose(listener) {\n        this.stream.on('close', listener);\n        return api_1.Disposable.create(() => this.stream.off('close', listener));\n    }\n    onError(listener) {\n        this.stream.on('error', listener);\n        return api_1.Disposable.create(() => this.stream.off('error', listener));\n    }\n    onEnd(listener) {\n        this.stream.on('end', listener);\n        return api_1.Disposable.create(() => this.stream.off('end', listener));\n    }\n    write(data, encoding) {\n        return new Promise((resolve, reject) => {\n            const callback = (error) => {\n                if (error === undefined || error === null) {\n                    resolve();\n                }\n                else {\n                    reject(error);\n                }\n            };\n            if (typeof data === 'string') {\n                this.stream.write(data, encoding, callback);\n            }\n            else {\n                this.stream.write(data, callback);\n            }\n        });\n    }\n    end() {\n        this.stream.end();\n    }\n}\nconst _ril = Object.freeze({\n    messageBuffer: Object.freeze({\n        create: (encoding) => new MessageBuffer(encoding)\n    }),\n    applicationJson: Object.freeze({\n        encoder: Object.freeze({\n            name: 'application/json',\n            encode: (msg, options) => {\n                try {\n                    return Promise.resolve(Buffer.from(JSON.stringify(msg, undefined, 0), options.charset));\n                }\n                catch (err) {\n                    return Promise.reject(err);\n                }\n            }\n        }),\n        decoder: Object.freeze({\n            name: 'application/json',\n            decode: (buffer, options) => {\n                try {\n                    if (buffer instanceof Buffer) {\n                        return Promise.resolve(JSON.parse(buffer.toString(options.charset)));\n                    }\n                    else {\n                        return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));\n                    }\n                }\n                catch (err) {\n                    return Promise.reject(err);\n                }\n            }\n        })\n    }),\n    stream: Object.freeze({\n        asReadableStream: (stream) => new ReadableStreamWrapper(stream),\n        asWritableStream: (stream) => new WritableStreamWrapper(stream)\n    }),\n    console: console,\n    timer: Object.freeze({\n        setTimeout(callback, ms, ...args) {\n            const handle = setTimeout(callback, ms, ...args);\n            return { dispose: () => clearTimeout(handle) };\n        },\n        setImmediate(callback, ...args) {\n            const handle = setImmediate(callback, ...args);\n            return { dispose: () => clearImmediate(handle) };\n        },\n        setInterval(callback, ms, ...args) {\n            const handle = setInterval(callback, ms, ...args);\n            return { dispose: () => clearInterval(handle) };\n        }\n    })\n});\nfunction RIL() {\n    return _ril;\n}\n(function (RIL) {\n    function install() {\n        api_1.RAL.install(_ril);\n    }\n    RIL.install = install;\n})(RIL || (RIL = {}));\nexports.default = RIL;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMessageConnection = exports.createServerSocketTransport = exports.createClientSocketTransport = exports.createServerPipeTransport = exports.createClientPipeTransport = exports.generateRandomPipeName = exports.StreamMessageWriter = exports.StreamMessageReader = exports.SocketMessageWriter = exports.SocketMessageReader = exports.PortMessageWriter = exports.PortMessageReader = exports.IPCMessageWriter = exports.IPCMessageReader = void 0;\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\nconst ril_1 = require(\"./ril\");\n// Install the node runtime abstract.\nril_1.default.install();\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst crypto_1 = require(\"crypto\");\nconst net_1 = require(\"net\");\nconst api_1 = require(\"../common/api\");\n__exportStar(require(\"../common/api\"), exports);\nclass IPCMessageReader extends api_1.AbstractMessageReader {\n    constructor(process) {\n        super();\n        this.process = process;\n        let eventEmitter = this.process;\n        eventEmitter.on('error', (error) => this.fireError(error));\n        eventEmitter.on('close', () => this.fireClose());\n    }\n    listen(callback) {\n        this.process.on('message', callback);\n        return api_1.Disposable.create(() => this.process.off('message', callback));\n    }\n}\nexports.IPCMessageReader = IPCMessageReader;\nclass IPCMessageWriter extends api_1.AbstractMessageWriter {\n    constructor(process) {\n        super();\n        this.process = process;\n        this.errorCount = 0;\n        const eventEmitter = this.process;\n        eventEmitter.on('error', (error) => this.fireError(error));\n        eventEmitter.on('close', () => this.fireClose);\n    }\n    write(msg) {\n        try {\n            if (typeof this.process.send === 'function') {\n                this.process.send(msg, undefined, undefined, (error) => {\n                    if (error) {\n                        this.errorCount++;\n                        this.handleError(error, msg);\n                    }\n                    else {\n                        this.errorCount = 0;\n                    }\n                });\n            }\n            return Promise.resolve();\n        }\n        catch (error) {\n            this.handleError(error, msg);\n            return Promise.reject(error);\n        }\n    }\n    handleError(error, msg) {\n        this.errorCount++;\n        this.fireError(error, msg, this.errorCount);\n    }\n    end() {\n    }\n}\nexports.IPCMessageWriter = IPCMessageWriter;\nclass PortMessageReader extends api_1.AbstractMessageReader {\n    constructor(port) {\n        super();\n        this.onData = new api_1.Emitter;\n        port.on('close', () => this.fireClose);\n        port.on('error', (error) => this.fireError(error));\n        port.on('message', (message) => {\n            this.onData.fire(message);\n        });\n    }\n    listen(callback) {\n        return this.onData.event(callback);\n    }\n}\nexports.PortMessageReader = PortMessageReader;\nclass PortMessageWriter extends api_1.AbstractMessageWriter {\n    constructor(port) {\n        super();\n        this.port = port;\n        this.errorCount = 0;\n        port.on('close', () => this.fireClose());\n        port.on('error', (error) => this.fireError(error));\n    }\n    write(msg) {\n        try {\n            this.port.postMessage(msg);\n            return Promise.resolve();\n        }\n        catch (error) {\n            this.handleError(error, msg);\n            return Promise.reject(error);\n        }\n    }\n    handleError(error, msg) {\n        this.errorCount++;\n        this.fireError(error, msg, this.errorCount);\n    }\n    end() {\n    }\n}\nexports.PortMessageWriter = PortMessageWriter;\nclass SocketMessageReader extends api_1.ReadableStreamMessageReader {\n    constructor(socket, encoding = 'utf-8') {\n        super((0, ril_1.default)().stream.asReadableStream(socket), encoding);\n    }\n}\nexports.SocketMessageReader = SocketMessageReader;\nclass SocketMessageWriter extends api_1.WriteableStreamMessageWriter {\n    constructor(socket, options) {\n        super((0, ril_1.default)().stream.asWritableStream(socket), options);\n        this.socket = socket;\n    }\n    dispose() {\n        super.dispose();\n        this.socket.destroy();\n    }\n}\nexports.SocketMessageWriter = SocketMessageWriter;\nclass StreamMessageReader extends api_1.ReadableStreamMessageReader {\n    constructor(readable, encoding) {\n        super((0, ril_1.default)().stream.asReadableStream(readable), encoding);\n    }\n}\nexports.StreamMessageReader = StreamMessageReader;\nclass StreamMessageWriter extends api_1.WriteableStreamMessageWriter {\n    constructor(writable, options) {\n        super((0, ril_1.default)().stream.asWritableStream(writable), options);\n    }\n}\nexports.StreamMessageWriter = StreamMessageWriter;\nconst XDG_RUNTIME_DIR = process.env['XDG_RUNTIME_DIR'];\nconst safeIpcPathLengths = new Map([\n    ['linux', 107],\n    ['darwin', 103]\n]);\nfunction generateRandomPipeName() {\n    const randomSuffix = (0, crypto_1.randomBytes)(21).toString('hex');\n    if (process.platform === 'win32') {\n        return `\\\\\\\\.\\\\pipe\\\\vscode-jsonrpc-${randomSuffix}-sock`;\n    }\n    let result;\n    if (XDG_RUNTIME_DIR) {\n        result = path.join(XDG_RUNTIME_DIR, `vscode-ipc-${randomSuffix}.sock`);\n    }\n    else {\n        result = path.join(os.tmpdir(), `vscode-${randomSuffix}.sock`);\n    }\n    const limit = safeIpcPathLengths.get(process.platform);\n    if (limit !== undefined && result.length > limit) {\n        (0, ril_1.default)().console.warn(`WARNING: IPC handle \"${result}\" is longer than ${limit} characters.`);\n    }\n    return result;\n}\nexports.generateRandomPipeName = generateRandomPipeName;\nfunction createClientPipeTransport(pipeName, encoding = 'utf-8') {\n    let connectResolve;\n    const connected = new Promise((resolve, _reject) => {\n        connectResolve = resolve;\n    });\n    return new Promise((resolve, reject) => {\n        let server = (0, net_1.createServer)((socket) => {\n            server.close();\n            connectResolve([\n                new SocketMessageReader(socket, encoding),\n                new SocketMessageWriter(socket, encoding)\n            ]);\n        });\n        server.on('error', reject);\n        server.listen(pipeName, () => {\n            server.removeListener('error', reject);\n            resolve({\n                onConnected: () => { return connected; }\n            });\n        });\n    });\n}\nexports.createClientPipeTransport = createClientPipeTransport;\nfunction createServerPipeTransport(pipeName, encoding = 'utf-8') {\n    const socket = (0, net_1.createConnection)(pipeName);\n    return [\n        new SocketMessageReader(socket, encoding),\n        new SocketMessageWriter(socket, encoding)\n    ];\n}\nexports.createServerPipeTransport = createServerPipeTransport;\nfunction createClientSocketTransport(port, encoding = 'utf-8') {\n    let connectResolve;\n    const connected = new Promise((resolve, _reject) => {\n        connectResolve = resolve;\n    });\n    return new Promise((resolve, reject) => {\n        const server = (0, net_1.createServer)((socket) => {\n            server.close();\n            connectResolve([\n                new SocketMessageReader(socket, encoding),\n                new SocketMessageWriter(socket, encoding)\n            ]);\n        });\n        server.on('error', reject);\n        server.listen(port, '127.0.0.1', () => {\n            server.removeListener('error', reject);\n            resolve({\n                onConnected: () => { return connected; }\n            });\n        });\n    });\n}\nexports.createClientSocketTransport = createClientSocketTransport;\nfunction createServerSocketTransport(port, encoding = 'utf-8') {\n    const socket = (0, net_1.createConnection)(port, '127.0.0.1');\n    return [\n        new SocketMessageReader(socket, encoding),\n        new SocketMessageWriter(socket, encoding)\n    ];\n}\nexports.createServerSocketTransport = createServerSocketTransport;\nfunction isReadableStream(value) {\n    const candidate = value;\n    return candidate.read !== undefined && candidate.addListener !== undefined;\n}\nfunction isWritableStream(value) {\n    const candidate = value;\n    return candidate.write !== undefined && candidate.addListener !== undefined;\n}\nfunction createMessageConnection(input, output, logger, options) {\n    if (!logger) {\n        logger = api_1.NullLogger;\n    }\n    const reader = isReadableStream(input) ? new StreamMessageReader(input) : input;\n    const writer = isWritableStream(output) ? new StreamMessageWriter(output) : output;\n    if (api_1.ConnectionStrategy.is(options)) {\n        options = { connectionStrategy: options };\n    }\n    return (0, api_1.createMessageConnection)(reader, writer, logger, options);\n}\nexports.createMessageConnection = createMessageConnection;\n", "/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');", "(function (factory) {\n    if (typeof module === \"object\" && typeof module.exports === \"object\") {\n        var v = factory(require, exports);\n        if (v !== undefined) module.exports = v;\n    }\n    else if (typeof define === \"function\" && define.amd) {\n        define([\"require\", \"exports\"], factory);\n    }\n})(function (require, exports) {\n    /* --------------------------------------------------------------------------------------------\n     * Copyright (c) Microsoft Corporation. All rights reserved.\n     * Licensed under the MIT License. See License.txt in the project root for license information.\n     * ------------------------------------------------------------------------------------------ */\n    'use strict';\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    exports.TextDocument = exports.EOL = exports.WorkspaceFolder = exports.InlineCompletionContext = exports.SelectedCompletionInfo = exports.InlineCompletionTriggerKind = exports.InlineCompletionList = exports.InlineCompletionItem = exports.StringValue = exports.InlayHint = exports.InlayHintLabelPart = exports.InlayHintKind = exports.InlineValueContext = exports.InlineValueEvaluatableExpression = exports.InlineValueVariableLookup = exports.InlineValueText = exports.SemanticTokens = exports.SemanticTokenModifiers = exports.SemanticTokenTypes = exports.SelectionRange = exports.DocumentLink = exports.FormattingOptions = exports.CodeLens = exports.CodeAction = exports.CodeActionContext = exports.CodeActionTriggerKind = exports.CodeActionKind = exports.DocumentSymbol = exports.WorkspaceSymbol = exports.SymbolInformation = exports.SymbolTag = exports.SymbolKind = exports.DocumentHighlight = exports.DocumentHighlightKind = exports.SignatureInformation = exports.ParameterInformation = exports.Hover = exports.MarkedString = exports.CompletionList = exports.CompletionItem = exports.CompletionItemLabelDetails = exports.InsertTextMode = exports.InsertReplaceEdit = exports.CompletionItemTag = exports.InsertTextFormat = exports.CompletionItemKind = exports.MarkupContent = exports.MarkupKind = exports.TextDocumentItem = exports.OptionalVersionedTextDocumentIdentifier = exports.VersionedTextDocumentIdentifier = exports.TextDocumentIdentifier = exports.WorkspaceChange = exports.WorkspaceEdit = exports.DeleteFile = exports.RenameFile = exports.CreateFile = exports.TextDocumentEdit = exports.AnnotatedTextEdit = exports.ChangeAnnotationIdentifier = exports.ChangeAnnotation = exports.TextEdit = exports.Command = exports.Diagnostic = exports.CodeDescription = exports.DiagnosticTag = exports.DiagnosticSeverity = exports.DiagnosticRelatedInformation = exports.FoldingRange = exports.FoldingRangeKind = exports.ColorPresentation = exports.ColorInformation = exports.Color = exports.LocationLink = exports.Location = exports.Range = exports.Position = exports.uinteger = exports.integer = exports.URI = exports.DocumentUri = void 0;\n    var DocumentUri;\n    (function (DocumentUri) {\n        function is(value) {\n            return typeof value === 'string';\n        }\n        DocumentUri.is = is;\n    })(DocumentUri || (exports.DocumentUri = DocumentUri = {}));\n    var URI;\n    (function (URI) {\n        function is(value) {\n            return typeof value === 'string';\n        }\n        URI.is = is;\n    })(URI || (exports.URI = URI = {}));\n    var integer;\n    (function (integer) {\n        integer.MIN_VALUE = -2147483648;\n        integer.MAX_VALUE = 2147483647;\n        function is(value) {\n            return typeof value === 'number' && integer.MIN_VALUE <= value && value <= integer.MAX_VALUE;\n        }\n        integer.is = is;\n    })(integer || (exports.integer = integer = {}));\n    var uinteger;\n    (function (uinteger) {\n        uinteger.MIN_VALUE = 0;\n        uinteger.MAX_VALUE = 2147483647;\n        function is(value) {\n            return typeof value === 'number' && uinteger.MIN_VALUE <= value && value <= uinteger.MAX_VALUE;\n        }\n        uinteger.is = is;\n    })(uinteger || (exports.uinteger = uinteger = {}));\n    /**\n     * The Position namespace provides helper functions to work with\n     * {@link Position} literals.\n     */\n    var Position;\n    (function (Position) {\n        /**\n         * Creates a new Position literal from the given line and character.\n         * @param line The position's line.\n         * @param character The position's character.\n         */\n        function create(line, character) {\n            if (line === Number.MAX_VALUE) {\n                line = uinteger.MAX_VALUE;\n            }\n            if (character === Number.MAX_VALUE) {\n                character = uinteger.MAX_VALUE;\n            }\n            return { line: line, character: character };\n        }\n        Position.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link Position} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n        }\n        Position.is = is;\n    })(Position || (exports.Position = Position = {}));\n    /**\n     * The Range namespace provides helper functions to work with\n     * {@link Range} literals.\n     */\n    var Range;\n    (function (Range) {\n        function create(one, two, three, four) {\n            if (Is.uinteger(one) && Is.uinteger(two) && Is.uinteger(three) && Is.uinteger(four)) {\n                return { start: Position.create(one, two), end: Position.create(three, four) };\n            }\n            else if (Position.is(one) && Position.is(two)) {\n                return { start: one, end: two };\n            }\n            else {\n                throw new Error(\"Range#create called with invalid arguments[\".concat(one, \", \").concat(two, \", \").concat(three, \", \").concat(four, \"]\"));\n            }\n        }\n        Range.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link Range} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n        }\n        Range.is = is;\n    })(Range || (exports.Range = Range = {}));\n    /**\n     * The Location namespace provides helper functions to work with\n     * {@link Location} literals.\n     */\n    var Location;\n    (function (Location) {\n        /**\n         * Creates a Location literal.\n         * @param uri The location's uri.\n         * @param range The location's range.\n         */\n        function create(uri, range) {\n            return { uri: uri, range: range };\n        }\n        Location.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link Location} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\n        }\n        Location.is = is;\n    })(Location || (exports.Location = Location = {}));\n    /**\n     * The LocationLink namespace provides helper functions to work with\n     * {@link LocationLink} literals.\n     */\n    var LocationLink;\n    (function (LocationLink) {\n        /**\n         * Creates a LocationLink literal.\n         * @param targetUri The definition's uri.\n         * @param targetRange The full range of the definition.\n         * @param targetSelectionRange The span of the symbol definition at the target.\n         * @param originSelectionRange The span of the symbol being defined in the originating source file.\n         */\n        function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\n            return { targetUri: targetUri, targetRange: targetRange, targetSelectionRange: targetSelectionRange, originSelectionRange: originSelectionRange };\n        }\n        LocationLink.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link LocationLink} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri)\n                && Range.is(candidate.targetSelectionRange)\n                && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\n        }\n        LocationLink.is = is;\n    })(LocationLink || (exports.LocationLink = LocationLink = {}));\n    /**\n     * The Color namespace provides helper functions to work with\n     * {@link Color} literals.\n     */\n    var Color;\n    (function (Color) {\n        /**\n         * Creates a new Color literal.\n         */\n        function create(red, green, blue, alpha) {\n            return {\n                red: red,\n                green: green,\n                blue: blue,\n                alpha: alpha,\n            };\n        }\n        Color.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link Color} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Is.numberRange(candidate.red, 0, 1)\n                && Is.numberRange(candidate.green, 0, 1)\n                && Is.numberRange(candidate.blue, 0, 1)\n                && Is.numberRange(candidate.alpha, 0, 1);\n        }\n        Color.is = is;\n    })(Color || (exports.Color = Color = {}));\n    /**\n     * The ColorInformation namespace provides helper functions to work with\n     * {@link ColorInformation} literals.\n     */\n    var ColorInformation;\n    (function (ColorInformation) {\n        /**\n         * Creates a new ColorInformation literal.\n         */\n        function create(range, color) {\n            return {\n                range: range,\n                color: color,\n            };\n        }\n        ColorInformation.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link ColorInformation} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color.is(candidate.color);\n        }\n        ColorInformation.is = is;\n    })(ColorInformation || (exports.ColorInformation = ColorInformation = {}));\n    /**\n     * The Color namespace provides helper functions to work with\n     * {@link ColorPresentation} literals.\n     */\n    var ColorPresentation;\n    (function (ColorPresentation) {\n        /**\n         * Creates a new ColorInformation literal.\n         */\n        function create(label, textEdit, additionalTextEdits) {\n            return {\n                label: label,\n                textEdit: textEdit,\n                additionalTextEdits: additionalTextEdits,\n            };\n        }\n        ColorPresentation.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link ColorInformation} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Is.string(candidate.label)\n                && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate))\n                && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\n        }\n        ColorPresentation.is = is;\n    })(ColorPresentation || (exports.ColorPresentation = ColorPresentation = {}));\n    /**\n     * A set of predefined range kinds.\n     */\n    var FoldingRangeKind;\n    (function (FoldingRangeKind) {\n        /**\n         * Folding range for a comment\n         */\n        FoldingRangeKind.Comment = 'comment';\n        /**\n         * Folding range for an import or include\n         */\n        FoldingRangeKind.Imports = 'imports';\n        /**\n         * Folding range for a region (e.g. `#region`)\n         */\n        FoldingRangeKind.Region = 'region';\n    })(FoldingRangeKind || (exports.FoldingRangeKind = FoldingRangeKind = {}));\n    /**\n     * The folding range namespace provides helper functions to work with\n     * {@link FoldingRange} literals.\n     */\n    var FoldingRange;\n    (function (FoldingRange) {\n        /**\n         * Creates a new FoldingRange literal.\n         */\n        function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) {\n            var result = {\n                startLine: startLine,\n                endLine: endLine\n            };\n            if (Is.defined(startCharacter)) {\n                result.startCharacter = startCharacter;\n            }\n            if (Is.defined(endCharacter)) {\n                result.endCharacter = endCharacter;\n            }\n            if (Is.defined(kind)) {\n                result.kind = kind;\n            }\n            if (Is.defined(collapsedText)) {\n                result.collapsedText = collapsedText;\n            }\n            return result;\n        }\n        FoldingRange.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link FoldingRange} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Is.uinteger(candidate.startLine) && Is.uinteger(candidate.startLine)\n                && (Is.undefined(candidate.startCharacter) || Is.uinteger(candidate.startCharacter))\n                && (Is.undefined(candidate.endCharacter) || Is.uinteger(candidate.endCharacter))\n                && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\n        }\n        FoldingRange.is = is;\n    })(FoldingRange || (exports.FoldingRange = FoldingRange = {}));\n    /**\n     * The DiagnosticRelatedInformation namespace provides helper functions to work with\n     * {@link DiagnosticRelatedInformation} literals.\n     */\n    var DiagnosticRelatedInformation;\n    (function (DiagnosticRelatedInformation) {\n        /**\n         * Creates a new DiagnosticRelatedInformation literal.\n         */\n        function create(location, message) {\n            return {\n                location: location,\n                message: message\n            };\n        }\n        DiagnosticRelatedInformation.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link DiagnosticRelatedInformation} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n        }\n        DiagnosticRelatedInformation.is = is;\n    })(DiagnosticRelatedInformation || (exports.DiagnosticRelatedInformation = DiagnosticRelatedInformation = {}));\n    /**\n     * The diagnostic's severity.\n     */\n    var DiagnosticSeverity;\n    (function (DiagnosticSeverity) {\n        /**\n         * Reports an error.\n         */\n        DiagnosticSeverity.Error = 1;\n        /**\n         * Reports a warning.\n         */\n        DiagnosticSeverity.Warning = 2;\n        /**\n         * Reports an information.\n         */\n        DiagnosticSeverity.Information = 3;\n        /**\n         * Reports a hint.\n         */\n        DiagnosticSeverity.Hint = 4;\n    })(DiagnosticSeverity || (exports.DiagnosticSeverity = DiagnosticSeverity = {}));\n    /**\n     * The diagnostic tags.\n     *\n     * @since 3.15.0\n     */\n    var DiagnosticTag;\n    (function (DiagnosticTag) {\n        /**\n         * Unused or unnecessary code.\n         *\n         * Clients are allowed to render diagnostics with this tag faded out instead of having\n         * an error squiggle.\n         */\n        DiagnosticTag.Unnecessary = 1;\n        /**\n         * Deprecated or obsolete code.\n         *\n         * Clients are allowed to rendered diagnostics with this tag strike through.\n         */\n        DiagnosticTag.Deprecated = 2;\n    })(DiagnosticTag || (exports.DiagnosticTag = DiagnosticTag = {}));\n    /**\n     * The CodeDescription namespace provides functions to deal with descriptions for diagnostic codes.\n     *\n     * @since 3.16.0\n     */\n    var CodeDescription;\n    (function (CodeDescription) {\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Is.string(candidate.href);\n        }\n        CodeDescription.is = is;\n    })(CodeDescription || (exports.CodeDescription = CodeDescription = {}));\n    /**\n     * The Diagnostic namespace provides helper functions to work with\n     * {@link Diagnostic} literals.\n     */\n    var Diagnostic;\n    (function (Diagnostic) {\n        /**\n         * Creates a new Diagnostic literal.\n         */\n        function create(range, message, severity, code, source, relatedInformation) {\n            var result = { range: range, message: message };\n            if (Is.defined(severity)) {\n                result.severity = severity;\n            }\n            if (Is.defined(code)) {\n                result.code = code;\n            }\n            if (Is.defined(source)) {\n                result.source = source;\n            }\n            if (Is.defined(relatedInformation)) {\n                result.relatedInformation = relatedInformation;\n            }\n            return result;\n        }\n        Diagnostic.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link Diagnostic} interface.\n         */\n        function is(value) {\n            var _a;\n            var candidate = value;\n            return Is.defined(candidate)\n                && Range.is(candidate.range)\n                && Is.string(candidate.message)\n                && (Is.number(candidate.severity) || Is.undefined(candidate.severity))\n                && (Is.integer(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code))\n                && (Is.undefined(candidate.codeDescription) || (Is.string((_a = candidate.codeDescription) === null || _a === void 0 ? void 0 : _a.href)))\n                && (Is.string(candidate.source) || Is.undefined(candidate.source))\n                && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\n        }\n        Diagnostic.is = is;\n    })(Diagnostic || (exports.Diagnostic = Diagnostic = {}));\n    /**\n     * The Command namespace provides helper functions to work with\n     * {@link Command} literals.\n     */\n    var Command;\n    (function (Command) {\n        /**\n         * Creates a new Command literal.\n         */\n        function create(title, command) {\n            var args = [];\n            for (var _i = 2; _i < arguments.length; _i++) {\n                args[_i - 2] = arguments[_i];\n            }\n            var result = { title: title, command: command };\n            if (Is.defined(args) && args.length > 0) {\n                result.arguments = args;\n            }\n            return result;\n        }\n        Command.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link Command} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\n        }\n        Command.is = is;\n    })(Command || (exports.Command = Command = {}));\n    /**\n     * The TextEdit namespace provides helper function to create replace,\n     * insert and delete edits more easily.\n     */\n    var TextEdit;\n    (function (TextEdit) {\n        /**\n         * Creates a replace text edit.\n         * @param range The range of text to be replaced.\n         * @param newText The new text.\n         */\n        function replace(range, newText) {\n            return { range: range, newText: newText };\n        }\n        TextEdit.replace = replace;\n        /**\n         * Creates an insert text edit.\n         * @param position The position to insert the text at.\n         * @param newText The text to be inserted.\n         */\n        function insert(position, newText) {\n            return { range: { start: position, end: position }, newText: newText };\n        }\n        TextEdit.insert = insert;\n        /**\n         * Creates a delete text edit.\n         * @param range The range of text to be deleted.\n         */\n        function del(range) {\n            return { range: range, newText: '' };\n        }\n        TextEdit.del = del;\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate)\n                && Is.string(candidate.newText)\n                && Range.is(candidate.range);\n        }\n        TextEdit.is = is;\n    })(TextEdit || (exports.TextEdit = TextEdit = {}));\n    var ChangeAnnotation;\n    (function (ChangeAnnotation) {\n        function create(label, needsConfirmation, description) {\n            var result = { label: label };\n            if (needsConfirmation !== undefined) {\n                result.needsConfirmation = needsConfirmation;\n            }\n            if (description !== undefined) {\n                result.description = description;\n            }\n            return result;\n        }\n        ChangeAnnotation.create = create;\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Is.string(candidate.label) &&\n                (Is.boolean(candidate.needsConfirmation) || candidate.needsConfirmation === undefined) &&\n                (Is.string(candidate.description) || candidate.description === undefined);\n        }\n        ChangeAnnotation.is = is;\n    })(ChangeAnnotation || (exports.ChangeAnnotation = ChangeAnnotation = {}));\n    var ChangeAnnotationIdentifier;\n    (function (ChangeAnnotationIdentifier) {\n        function is(value) {\n            var candidate = value;\n            return Is.string(candidate);\n        }\n        ChangeAnnotationIdentifier.is = is;\n    })(ChangeAnnotationIdentifier || (exports.ChangeAnnotationIdentifier = ChangeAnnotationIdentifier = {}));\n    var AnnotatedTextEdit;\n    (function (AnnotatedTextEdit) {\n        /**\n         * Creates an annotated replace text edit.\n         *\n         * @param range The range of text to be replaced.\n         * @param newText The new text.\n         * @param annotation The annotation.\n         */\n        function replace(range, newText, annotation) {\n            return { range: range, newText: newText, annotationId: annotation };\n        }\n        AnnotatedTextEdit.replace = replace;\n        /**\n         * Creates an annotated insert text edit.\n         *\n         * @param position The position to insert the text at.\n         * @param newText The text to be inserted.\n         * @param annotation The annotation.\n         */\n        function insert(position, newText, annotation) {\n            return { range: { start: position, end: position }, newText: newText, annotationId: annotation };\n        }\n        AnnotatedTextEdit.insert = insert;\n        /**\n         * Creates an annotated delete text edit.\n         *\n         * @param range The range of text to be deleted.\n         * @param annotation The annotation.\n         */\n        function del(range, annotation) {\n            return { range: range, newText: '', annotationId: annotation };\n        }\n        AnnotatedTextEdit.del = del;\n        function is(value) {\n            var candidate = value;\n            return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));\n        }\n        AnnotatedTextEdit.is = is;\n    })(AnnotatedTextEdit || (exports.AnnotatedTextEdit = AnnotatedTextEdit = {}));\n    /**\n     * The TextDocumentEdit namespace provides helper function to create\n     * an edit that manipulates a text document.\n     */\n    var TextDocumentEdit;\n    (function (TextDocumentEdit) {\n        /**\n         * Creates a new `TextDocumentEdit`\n         */\n        function create(textDocument, edits) {\n            return { textDocument: textDocument, edits: edits };\n        }\n        TextDocumentEdit.create = create;\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate)\n                && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument)\n                && Array.isArray(candidate.edits);\n        }\n        TextDocumentEdit.is = is;\n    })(TextDocumentEdit || (exports.TextDocumentEdit = TextDocumentEdit = {}));\n    var CreateFile;\n    (function (CreateFile) {\n        function create(uri, options, annotation) {\n            var result = {\n                kind: 'create',\n                uri: uri\n            };\n            if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n                result.options = options;\n            }\n            if (annotation !== undefined) {\n                result.annotationId = annotation;\n            }\n            return result;\n        }\n        CreateFile.create = create;\n        function is(value) {\n            var candidate = value;\n            return candidate && candidate.kind === 'create' && Is.string(candidate.uri) && (candidate.options === undefined ||\n                ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n        }\n        CreateFile.is = is;\n    })(CreateFile || (exports.CreateFile = CreateFile = {}));\n    var RenameFile;\n    (function (RenameFile) {\n        function create(oldUri, newUri, options, annotation) {\n            var result = {\n                kind: 'rename',\n                oldUri: oldUri,\n                newUri: newUri\n            };\n            if (options !== undefined && (options.overwrite !== undefined || options.ignoreIfExists !== undefined)) {\n                result.options = options;\n            }\n            if (annotation !== undefined) {\n                result.annotationId = annotation;\n            }\n            return result;\n        }\n        RenameFile.create = create;\n        function is(value) {\n            var candidate = value;\n            return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) && (candidate.options === undefined ||\n                ((candidate.options.overwrite === undefined || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === undefined || Is.boolean(candidate.options.ignoreIfExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n        }\n        RenameFile.is = is;\n    })(RenameFile || (exports.RenameFile = RenameFile = {}));\n    var DeleteFile;\n    (function (DeleteFile) {\n        function create(uri, options, annotation) {\n            var result = {\n                kind: 'delete',\n                uri: uri\n            };\n            if (options !== undefined && (options.recursive !== undefined || options.ignoreIfNotExists !== undefined)) {\n                result.options = options;\n            }\n            if (annotation !== undefined) {\n                result.annotationId = annotation;\n            }\n            return result;\n        }\n        DeleteFile.create = create;\n        function is(value) {\n            var candidate = value;\n            return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) && (candidate.options === undefined ||\n                ((candidate.options.recursive === undefined || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === undefined || Is.boolean(candidate.options.ignoreIfNotExists)))) && (candidate.annotationId === undefined || ChangeAnnotationIdentifier.is(candidate.annotationId));\n        }\n        DeleteFile.is = is;\n    })(DeleteFile || (exports.DeleteFile = DeleteFile = {}));\n    var WorkspaceEdit;\n    (function (WorkspaceEdit) {\n        function is(value) {\n            var candidate = value;\n            return candidate &&\n                (candidate.changes !== undefined || candidate.documentChanges !== undefined) &&\n                (candidate.documentChanges === undefined || candidate.documentChanges.every(function (change) {\n                    if (Is.string(change.kind)) {\n                        return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\n                    }\n                    else {\n                        return TextDocumentEdit.is(change);\n                    }\n                }));\n        }\n        WorkspaceEdit.is = is;\n    })(WorkspaceEdit || (exports.WorkspaceEdit = WorkspaceEdit = {}));\n    var TextEditChangeImpl = /** @class */ (function () {\n        function TextEditChangeImpl(edits, changeAnnotations) {\n            this.edits = edits;\n            this.changeAnnotations = changeAnnotations;\n        }\n        TextEditChangeImpl.prototype.insert = function (position, newText, annotation) {\n            var edit;\n            var id;\n            if (annotation === undefined) {\n                edit = TextEdit.insert(position, newText);\n            }\n            else if (ChangeAnnotationIdentifier.is(annotation)) {\n                id = annotation;\n                edit = AnnotatedTextEdit.insert(position, newText, annotation);\n            }\n            else {\n                this.assertChangeAnnotations(this.changeAnnotations);\n                id = this.changeAnnotations.manage(annotation);\n                edit = AnnotatedTextEdit.insert(position, newText, id);\n            }\n            this.edits.push(edit);\n            if (id !== undefined) {\n                return id;\n            }\n        };\n        TextEditChangeImpl.prototype.replace = function (range, newText, annotation) {\n            var edit;\n            var id;\n            if (annotation === undefined) {\n                edit = TextEdit.replace(range, newText);\n            }\n            else if (ChangeAnnotationIdentifier.is(annotation)) {\n                id = annotation;\n                edit = AnnotatedTextEdit.replace(range, newText, annotation);\n            }\n            else {\n                this.assertChangeAnnotations(this.changeAnnotations);\n                id = this.changeAnnotations.manage(annotation);\n                edit = AnnotatedTextEdit.replace(range, newText, id);\n            }\n            this.edits.push(edit);\n            if (id !== undefined) {\n                return id;\n            }\n        };\n        TextEditChangeImpl.prototype.delete = function (range, annotation) {\n            var edit;\n            var id;\n            if (annotation === undefined) {\n                edit = TextEdit.del(range);\n            }\n            else if (ChangeAnnotationIdentifier.is(annotation)) {\n                id = annotation;\n                edit = AnnotatedTextEdit.del(range, annotation);\n            }\n            else {\n                this.assertChangeAnnotations(this.changeAnnotations);\n                id = this.changeAnnotations.manage(annotation);\n                edit = AnnotatedTextEdit.del(range, id);\n            }\n            this.edits.push(edit);\n            if (id !== undefined) {\n                return id;\n            }\n        };\n        TextEditChangeImpl.prototype.add = function (edit) {\n            this.edits.push(edit);\n        };\n        TextEditChangeImpl.prototype.all = function () {\n            return this.edits;\n        };\n        TextEditChangeImpl.prototype.clear = function () {\n            this.edits.splice(0, this.edits.length);\n        };\n        TextEditChangeImpl.prototype.assertChangeAnnotations = function (value) {\n            if (value === undefined) {\n                throw new Error(\"Text edit change is not configured to manage change annotations.\");\n            }\n        };\n        return TextEditChangeImpl;\n    }());\n    /**\n     * A helper class\n     */\n    var ChangeAnnotations = /** @class */ (function () {\n        function ChangeAnnotations(annotations) {\n            this._annotations = annotations === undefined ? Object.create(null) : annotations;\n            this._counter = 0;\n            this._size = 0;\n        }\n        ChangeAnnotations.prototype.all = function () {\n            return this._annotations;\n        };\n        Object.defineProperty(ChangeAnnotations.prototype, \"size\", {\n            get: function () {\n                return this._size;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        ChangeAnnotations.prototype.manage = function (idOrAnnotation, annotation) {\n            var id;\n            if (ChangeAnnotationIdentifier.is(idOrAnnotation)) {\n                id = idOrAnnotation;\n            }\n            else {\n                id = this.nextId();\n                annotation = idOrAnnotation;\n            }\n            if (this._annotations[id] !== undefined) {\n                throw new Error(\"Id \".concat(id, \" is already in use.\"));\n            }\n            if (annotation === undefined) {\n                throw new Error(\"No annotation provided for id \".concat(id));\n            }\n            this._annotations[id] = annotation;\n            this._size++;\n            return id;\n        };\n        ChangeAnnotations.prototype.nextId = function () {\n            this._counter++;\n            return this._counter.toString();\n        };\n        return ChangeAnnotations;\n    }());\n    /**\n     * A workspace change helps constructing changes to a workspace.\n     */\n    var WorkspaceChange = /** @class */ (function () {\n        function WorkspaceChange(workspaceEdit) {\n            var _this = this;\n            this._textEditChanges = Object.create(null);\n            if (workspaceEdit !== undefined) {\n                this._workspaceEdit = workspaceEdit;\n                if (workspaceEdit.documentChanges) {\n                    this._changeAnnotations = new ChangeAnnotations(workspaceEdit.changeAnnotations);\n                    workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n                    workspaceEdit.documentChanges.forEach(function (change) {\n                        if (TextDocumentEdit.is(change)) {\n                            var textEditChange = new TextEditChangeImpl(change.edits, _this._changeAnnotations);\n                            _this._textEditChanges[change.textDocument.uri] = textEditChange;\n                        }\n                    });\n                }\n                else if (workspaceEdit.changes) {\n                    Object.keys(workspaceEdit.changes).forEach(function (key) {\n                        var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n                        _this._textEditChanges[key] = textEditChange;\n                    });\n                }\n            }\n            else {\n                this._workspaceEdit = {};\n            }\n        }\n        Object.defineProperty(WorkspaceChange.prototype, \"edit\", {\n            /**\n             * Returns the underlying {@link WorkspaceEdit} literal\n             * use to be returned from a workspace edit operation like rename.\n             */\n            get: function () {\n                this.initDocumentChanges();\n                if (this._changeAnnotations !== undefined) {\n                    if (this._changeAnnotations.size === 0) {\n                        this._workspaceEdit.changeAnnotations = undefined;\n                    }\n                    else {\n                        this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n                    }\n                }\n                return this._workspaceEdit;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        WorkspaceChange.prototype.getTextEditChange = function (key) {\n            if (OptionalVersionedTextDocumentIdentifier.is(key)) {\n                this.initDocumentChanges();\n                if (this._workspaceEdit.documentChanges === undefined) {\n                    throw new Error('Workspace edit is not configured for document changes.');\n                }\n                var textDocument = { uri: key.uri, version: key.version };\n                var result = this._textEditChanges[textDocument.uri];\n                if (!result) {\n                    var edits = [];\n                    var textDocumentEdit = {\n                        textDocument: textDocument,\n                        edits: edits\n                    };\n                    this._workspaceEdit.documentChanges.push(textDocumentEdit);\n                    result = new TextEditChangeImpl(edits, this._changeAnnotations);\n                    this._textEditChanges[textDocument.uri] = result;\n                }\n                return result;\n            }\n            else {\n                this.initChanges();\n                if (this._workspaceEdit.changes === undefined) {\n                    throw new Error('Workspace edit is not configured for normal text edit changes.');\n                }\n                var result = this._textEditChanges[key];\n                if (!result) {\n                    var edits = [];\n                    this._workspaceEdit.changes[key] = edits;\n                    result = new TextEditChangeImpl(edits);\n                    this._textEditChanges[key] = result;\n                }\n                return result;\n            }\n        };\n        WorkspaceChange.prototype.initDocumentChanges = function () {\n            if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n                this._changeAnnotations = new ChangeAnnotations();\n                this._workspaceEdit.documentChanges = [];\n                this._workspaceEdit.changeAnnotations = this._changeAnnotations.all();\n            }\n        };\n        WorkspaceChange.prototype.initChanges = function () {\n            if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n                this._workspaceEdit.changes = Object.create(null);\n            }\n        };\n        WorkspaceChange.prototype.createFile = function (uri, optionsOrAnnotation, options) {\n            this.initDocumentChanges();\n            if (this._workspaceEdit.documentChanges === undefined) {\n                throw new Error('Workspace edit is not configured for document changes.');\n            }\n            var annotation;\n            if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n                annotation = optionsOrAnnotation;\n            }\n            else {\n                options = optionsOrAnnotation;\n            }\n            var operation;\n            var id;\n            if (annotation === undefined) {\n                operation = CreateFile.create(uri, options);\n            }\n            else {\n                id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n                operation = CreateFile.create(uri, options, id);\n            }\n            this._workspaceEdit.documentChanges.push(operation);\n            if (id !== undefined) {\n                return id;\n            }\n        };\n        WorkspaceChange.prototype.renameFile = function (oldUri, newUri, optionsOrAnnotation, options) {\n            this.initDocumentChanges();\n            if (this._workspaceEdit.documentChanges === undefined) {\n                throw new Error('Workspace edit is not configured for document changes.');\n            }\n            var annotation;\n            if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n                annotation = optionsOrAnnotation;\n            }\n            else {\n                options = optionsOrAnnotation;\n            }\n            var operation;\n            var id;\n            if (annotation === undefined) {\n                operation = RenameFile.create(oldUri, newUri, options);\n            }\n            else {\n                id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n                operation = RenameFile.create(oldUri, newUri, options, id);\n            }\n            this._workspaceEdit.documentChanges.push(operation);\n            if (id !== undefined) {\n                return id;\n            }\n        };\n        WorkspaceChange.prototype.deleteFile = function (uri, optionsOrAnnotation, options) {\n            this.initDocumentChanges();\n            if (this._workspaceEdit.documentChanges === undefined) {\n                throw new Error('Workspace edit is not configured for document changes.');\n            }\n            var annotation;\n            if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n                annotation = optionsOrAnnotation;\n            }\n            else {\n                options = optionsOrAnnotation;\n            }\n            var operation;\n            var id;\n            if (annotation === undefined) {\n                operation = DeleteFile.create(uri, options);\n            }\n            else {\n                id = ChangeAnnotationIdentifier.is(annotation) ? annotation : this._changeAnnotations.manage(annotation);\n                operation = DeleteFile.create(uri, options, id);\n            }\n            this._workspaceEdit.documentChanges.push(operation);\n            if (id !== undefined) {\n                return id;\n            }\n        };\n        return WorkspaceChange;\n    }());\n    exports.WorkspaceChange = WorkspaceChange;\n    /**\n     * The TextDocumentIdentifier namespace provides helper functions to work with\n     * {@link TextDocumentIdentifier} literals.\n     */\n    var TextDocumentIdentifier;\n    (function (TextDocumentIdentifier) {\n        /**\n         * Creates a new TextDocumentIdentifier literal.\n         * @param uri The document's uri.\n         */\n        function create(uri) {\n            return { uri: uri };\n        }\n        TextDocumentIdentifier.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link TextDocumentIdentifier} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Is.string(candidate.uri);\n        }\n        TextDocumentIdentifier.is = is;\n    })(TextDocumentIdentifier || (exports.TextDocumentIdentifier = TextDocumentIdentifier = {}));\n    /**\n     * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\n     * {@link VersionedTextDocumentIdentifier} literals.\n     */\n    var VersionedTextDocumentIdentifier;\n    (function (VersionedTextDocumentIdentifier) {\n        /**\n         * Creates a new VersionedTextDocumentIdentifier literal.\n         * @param uri The document's uri.\n         * @param version The document's version.\n         */\n        function create(uri, version) {\n            return { uri: uri, version: version };\n        }\n        VersionedTextDocumentIdentifier.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link VersionedTextDocumentIdentifier} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n        }\n        VersionedTextDocumentIdentifier.is = is;\n    })(VersionedTextDocumentIdentifier || (exports.VersionedTextDocumentIdentifier = VersionedTextDocumentIdentifier = {}));\n    /**\n     * The OptionalVersionedTextDocumentIdentifier namespace provides helper functions to work with\n     * {@link OptionalVersionedTextDocumentIdentifier} literals.\n     */\n    var OptionalVersionedTextDocumentIdentifier;\n    (function (OptionalVersionedTextDocumentIdentifier) {\n        /**\n         * Creates a new OptionalVersionedTextDocumentIdentifier literal.\n         * @param uri The document's uri.\n         * @param version The document's version.\n         */\n        function create(uri, version) {\n            return { uri: uri, version: version };\n        }\n        OptionalVersionedTextDocumentIdentifier.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link OptionalVersionedTextDocumentIdentifier} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.integer(candidate.version));\n        }\n        OptionalVersionedTextDocumentIdentifier.is = is;\n    })(OptionalVersionedTextDocumentIdentifier || (exports.OptionalVersionedTextDocumentIdentifier = OptionalVersionedTextDocumentIdentifier = {}));\n    /**\n     * The TextDocumentItem namespace provides helper functions to work with\n     * {@link TextDocumentItem} literals.\n     */\n    var TextDocumentItem;\n    (function (TextDocumentItem) {\n        /**\n         * Creates a new TextDocumentItem literal.\n         * @param uri The document's uri.\n         * @param languageId The document's language identifier.\n         * @param version The document's version number.\n         * @param text The document's text.\n         */\n        function create(uri, languageId, version, text) {\n            return { uri: uri, languageId: languageId, version: version, text: text };\n        }\n        TextDocumentItem.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link TextDocumentItem} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.integer(candidate.version) && Is.string(candidate.text);\n        }\n        TextDocumentItem.is = is;\n    })(TextDocumentItem || (exports.TextDocumentItem = TextDocumentItem = {}));\n    /**\n     * Describes the content type that a client supports in various\n     * result literals like `Hover`, `ParameterInfo` or `CompletionItem`.\n     *\n     * Please note that `MarkupKinds` must not start with a `$`. This kinds\n     * are reserved for internal usage.\n     */\n    var MarkupKind;\n    (function (MarkupKind) {\n        /**\n         * Plain text is supported as a content format\n         */\n        MarkupKind.PlainText = 'plaintext';\n        /**\n         * Markdown is supported as a content format\n         */\n        MarkupKind.Markdown = 'markdown';\n        /**\n         * Checks whether the given value is a value of the {@link MarkupKind} type.\n         */\n        function is(value) {\n            var candidate = value;\n            return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\n        }\n        MarkupKind.is = is;\n    })(MarkupKind || (exports.MarkupKind = MarkupKind = {}));\n    var MarkupContent;\n    (function (MarkupContent) {\n        /**\n         * Checks whether the given value conforms to the {@link MarkupContent} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n        }\n        MarkupContent.is = is;\n    })(MarkupContent || (exports.MarkupContent = MarkupContent = {}));\n    /**\n     * The kind of a completion entry.\n     */\n    var CompletionItemKind;\n    (function (CompletionItemKind) {\n        CompletionItemKind.Text = 1;\n        CompletionItemKind.Method = 2;\n        CompletionItemKind.Function = 3;\n        CompletionItemKind.Constructor = 4;\n        CompletionItemKind.Field = 5;\n        CompletionItemKind.Variable = 6;\n        CompletionItemKind.Class = 7;\n        CompletionItemKind.Interface = 8;\n        CompletionItemKind.Module = 9;\n        CompletionItemKind.Property = 10;\n        CompletionItemKind.Unit = 11;\n        CompletionItemKind.Value = 12;\n        CompletionItemKind.Enum = 13;\n        CompletionItemKind.Keyword = 14;\n        CompletionItemKind.Snippet = 15;\n        CompletionItemKind.Color = 16;\n        CompletionItemKind.File = 17;\n        CompletionItemKind.Reference = 18;\n        CompletionItemKind.Folder = 19;\n        CompletionItemKind.EnumMember = 20;\n        CompletionItemKind.Constant = 21;\n        CompletionItemKind.Struct = 22;\n        CompletionItemKind.Event = 23;\n        CompletionItemKind.Operator = 24;\n        CompletionItemKind.TypeParameter = 25;\n    })(CompletionItemKind || (exports.CompletionItemKind = CompletionItemKind = {}));\n    /**\n     * Defines whether the insert text in a completion item should be interpreted as\n     * plain text or a snippet.\n     */\n    var InsertTextFormat;\n    (function (InsertTextFormat) {\n        /**\n         * The primary text to be inserted is treated as a plain string.\n         */\n        InsertTextFormat.PlainText = 1;\n        /**\n         * The primary text to be inserted is treated as a snippet.\n         *\n         * A snippet can define tab stops and placeholders with `$1`, `$2`\n         * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\n         * the end of the snippet. Placeholders with equal identifiers are linked,\n         * that is typing in one will update others too.\n         *\n         * See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax\n         */\n        InsertTextFormat.Snippet = 2;\n    })(InsertTextFormat || (exports.InsertTextFormat = InsertTextFormat = {}));\n    /**\n     * Completion item tags are extra annotations that tweak the rendering of a completion\n     * item.\n     *\n     * @since 3.15.0\n     */\n    var CompletionItemTag;\n    (function (CompletionItemTag) {\n        /**\n         * Render a completion as obsolete, usually using a strike-out.\n         */\n        CompletionItemTag.Deprecated = 1;\n    })(CompletionItemTag || (exports.CompletionItemTag = CompletionItemTag = {}));\n    /**\n     * The InsertReplaceEdit namespace provides functions to deal with insert / replace edits.\n     *\n     * @since 3.16.0\n     */\n    var InsertReplaceEdit;\n    (function (InsertReplaceEdit) {\n        /**\n         * Creates a new insert / replace edit\n         */\n        function create(newText, insert, replace) {\n            return { newText: newText, insert: insert, replace: replace };\n        }\n        InsertReplaceEdit.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link InsertReplaceEdit} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);\n        }\n        InsertReplaceEdit.is = is;\n    })(InsertReplaceEdit || (exports.InsertReplaceEdit = InsertReplaceEdit = {}));\n    /**\n     * How whitespace and indentation is handled during completion\n     * item insertion.\n     *\n     * @since 3.16.0\n     */\n    var InsertTextMode;\n    (function (InsertTextMode) {\n        /**\n         * The insertion or replace strings is taken as it is. If the\n         * value is multi line the lines below the cursor will be\n         * inserted using the indentation defined in the string value.\n         * The client will not apply any kind of adjustments to the\n         * string.\n         */\n        InsertTextMode.asIs = 1;\n        /**\n         * The editor adjusts leading whitespace of new lines so that\n         * they match the indentation up to the cursor of the line for\n         * which the item is accepted.\n         *\n         * Consider a line like this: <2tabs><cursor><3tabs>foo. Accepting a\n         * multi line completion item is indented using 2 tabs and all\n         * following lines inserted will be indented using 2 tabs as well.\n         */\n        InsertTextMode.adjustIndentation = 2;\n    })(InsertTextMode || (exports.InsertTextMode = InsertTextMode = {}));\n    var CompletionItemLabelDetails;\n    (function (CompletionItemLabelDetails) {\n        function is(value) {\n            var candidate = value;\n            return candidate && (Is.string(candidate.detail) || candidate.detail === undefined) &&\n                (Is.string(candidate.description) || candidate.description === undefined);\n        }\n        CompletionItemLabelDetails.is = is;\n    })(CompletionItemLabelDetails || (exports.CompletionItemLabelDetails = CompletionItemLabelDetails = {}));\n    /**\n     * The CompletionItem namespace provides functions to deal with\n     * completion items.\n     */\n    var CompletionItem;\n    (function (CompletionItem) {\n        /**\n         * Create a completion item and seed it with a label.\n         * @param label The completion item's label\n         */\n        function create(label) {\n            return { label: label };\n        }\n        CompletionItem.create = create;\n    })(CompletionItem || (exports.CompletionItem = CompletionItem = {}));\n    /**\n     * The CompletionList namespace provides functions to deal with\n     * completion lists.\n     */\n    var CompletionList;\n    (function (CompletionList) {\n        /**\n         * Creates a new completion list.\n         *\n         * @param items The completion items.\n         * @param isIncomplete The list is not complete.\n         */\n        function create(items, isIncomplete) {\n            return { items: items ? items : [], isIncomplete: !!isIncomplete };\n        }\n        CompletionList.create = create;\n    })(CompletionList || (exports.CompletionList = CompletionList = {}));\n    var MarkedString;\n    (function (MarkedString) {\n        /**\n         * Creates a marked string from plain text.\n         *\n         * @param plainText The plain text.\n         */\n        function fromPlainText(plainText) {\n            return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n        }\n        MarkedString.fromPlainText = fromPlainText;\n        /**\n         * Checks whether the given value conforms to the {@link MarkedString} type.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.string(candidate) || (Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value));\n        }\n        MarkedString.is = is;\n    })(MarkedString || (exports.MarkedString = MarkedString = {}));\n    var Hover;\n    (function (Hover) {\n        /**\n         * Checks whether the given value conforms to the {@link Hover} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) ||\n                MarkedString.is(candidate.contents) ||\n                Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === undefined || Range.is(value.range));\n        }\n        Hover.is = is;\n    })(Hover || (exports.Hover = Hover = {}));\n    /**\n     * The ParameterInformation namespace provides helper functions to work with\n     * {@link ParameterInformation} literals.\n     */\n    var ParameterInformation;\n    (function (ParameterInformation) {\n        /**\n         * Creates a new parameter information literal.\n         *\n         * @param label A label string.\n         * @param documentation A doc string.\n         */\n        function create(label, documentation) {\n            return documentation ? { label: label, documentation: documentation } : { label: label };\n        }\n        ParameterInformation.create = create;\n    })(ParameterInformation || (exports.ParameterInformation = ParameterInformation = {}));\n    /**\n     * The SignatureInformation namespace provides helper functions to work with\n     * {@link SignatureInformation} literals.\n     */\n    var SignatureInformation;\n    (function (SignatureInformation) {\n        function create(label, documentation) {\n            var parameters = [];\n            for (var _i = 2; _i < arguments.length; _i++) {\n                parameters[_i - 2] = arguments[_i];\n            }\n            var result = { label: label };\n            if (Is.defined(documentation)) {\n                result.documentation = documentation;\n            }\n            if (Is.defined(parameters)) {\n                result.parameters = parameters;\n            }\n            else {\n                result.parameters = [];\n            }\n            return result;\n        }\n        SignatureInformation.create = create;\n    })(SignatureInformation || (exports.SignatureInformation = SignatureInformation = {}));\n    /**\n     * A document highlight kind.\n     */\n    var DocumentHighlightKind;\n    (function (DocumentHighlightKind) {\n        /**\n         * A textual occurrence.\n         */\n        DocumentHighlightKind.Text = 1;\n        /**\n         * Read-access of a symbol, like reading a variable.\n         */\n        DocumentHighlightKind.Read = 2;\n        /**\n         * Write-access of a symbol, like writing to a variable.\n         */\n        DocumentHighlightKind.Write = 3;\n    })(DocumentHighlightKind || (exports.DocumentHighlightKind = DocumentHighlightKind = {}));\n    /**\n     * DocumentHighlight namespace to provide helper functions to work with\n     * {@link DocumentHighlight} literals.\n     */\n    var DocumentHighlight;\n    (function (DocumentHighlight) {\n        /**\n         * Create a DocumentHighlight object.\n         * @param range The range the highlight applies to.\n         * @param kind The highlight kind\n         */\n        function create(range, kind) {\n            var result = { range: range };\n            if (Is.number(kind)) {\n                result.kind = kind;\n            }\n            return result;\n        }\n        DocumentHighlight.create = create;\n    })(DocumentHighlight || (exports.DocumentHighlight = DocumentHighlight = {}));\n    /**\n     * A symbol kind.\n     */\n    var SymbolKind;\n    (function (SymbolKind) {\n        SymbolKind.File = 1;\n        SymbolKind.Module = 2;\n        SymbolKind.Namespace = 3;\n        SymbolKind.Package = 4;\n        SymbolKind.Class = 5;\n        SymbolKind.Method = 6;\n        SymbolKind.Property = 7;\n        SymbolKind.Field = 8;\n        SymbolKind.Constructor = 9;\n        SymbolKind.Enum = 10;\n        SymbolKind.Interface = 11;\n        SymbolKind.Function = 12;\n        SymbolKind.Variable = 13;\n        SymbolKind.Constant = 14;\n        SymbolKind.String = 15;\n        SymbolKind.Number = 16;\n        SymbolKind.Boolean = 17;\n        SymbolKind.Array = 18;\n        SymbolKind.Object = 19;\n        SymbolKind.Key = 20;\n        SymbolKind.Null = 21;\n        SymbolKind.EnumMember = 22;\n        SymbolKind.Struct = 23;\n        SymbolKind.Event = 24;\n        SymbolKind.Operator = 25;\n        SymbolKind.TypeParameter = 26;\n    })(SymbolKind || (exports.SymbolKind = SymbolKind = {}));\n    /**\n     * Symbol tags are extra annotations that tweak the rendering of a symbol.\n     *\n     * @since 3.16\n     */\n    var SymbolTag;\n    (function (SymbolTag) {\n        /**\n         * Render a symbol as obsolete, usually using a strike-out.\n         */\n        SymbolTag.Deprecated = 1;\n    })(SymbolTag || (exports.SymbolTag = SymbolTag = {}));\n    var SymbolInformation;\n    (function (SymbolInformation) {\n        /**\n         * Creates a new symbol information literal.\n         *\n         * @param name The name of the symbol.\n         * @param kind The kind of the symbol.\n         * @param range The range of the location of the symbol.\n         * @param uri The resource of the location of symbol.\n         * @param containerName The name of the symbol containing the symbol.\n         */\n        function create(name, kind, range, uri, containerName) {\n            var result = {\n                name: name,\n                kind: kind,\n                location: { uri: uri, range: range }\n            };\n            if (containerName) {\n                result.containerName = containerName;\n            }\n            return result;\n        }\n        SymbolInformation.create = create;\n    })(SymbolInformation || (exports.SymbolInformation = SymbolInformation = {}));\n    var WorkspaceSymbol;\n    (function (WorkspaceSymbol) {\n        /**\n         * Create a new workspace symbol.\n         *\n         * @param name The name of the symbol.\n         * @param kind The kind of the symbol.\n         * @param uri The resource of the location of the symbol.\n         * @param range An options range of the location.\n         * @returns A WorkspaceSymbol.\n         */\n        function create(name, kind, uri, range) {\n            return range !== undefined\n                ? { name: name, kind: kind, location: { uri: uri, range: range } }\n                : { name: name, kind: kind, location: { uri: uri } };\n        }\n        WorkspaceSymbol.create = create;\n    })(WorkspaceSymbol || (exports.WorkspaceSymbol = WorkspaceSymbol = {}));\n    var DocumentSymbol;\n    (function (DocumentSymbol) {\n        /**\n         * Creates a new symbol information literal.\n         *\n         * @param name The name of the symbol.\n         * @param detail The detail of the symbol.\n         * @param kind The kind of the symbol.\n         * @param range The range of the symbol.\n         * @param selectionRange The selectionRange of the symbol.\n         * @param children Children of the symbol.\n         */\n        function create(name, detail, kind, range, selectionRange, children) {\n            var result = {\n                name: name,\n                detail: detail,\n                kind: kind,\n                range: range,\n                selectionRange: selectionRange\n            };\n            if (children !== undefined) {\n                result.children = children;\n            }\n            return result;\n        }\n        DocumentSymbol.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link DocumentSymbol} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return candidate &&\n                Is.string(candidate.name) && Is.number(candidate.kind) &&\n                Range.is(candidate.range) && Range.is(candidate.selectionRange) &&\n                (candidate.detail === undefined || Is.string(candidate.detail)) &&\n                (candidate.deprecated === undefined || Is.boolean(candidate.deprecated)) &&\n                (candidate.children === undefined || Array.isArray(candidate.children)) &&\n                (candidate.tags === undefined || Array.isArray(candidate.tags));\n        }\n        DocumentSymbol.is = is;\n    })(DocumentSymbol || (exports.DocumentSymbol = DocumentSymbol = {}));\n    /**\n     * A set of predefined code action kinds\n     */\n    var CodeActionKind;\n    (function (CodeActionKind) {\n        /**\n         * Empty kind.\n         */\n        CodeActionKind.Empty = '';\n        /**\n         * Base kind for quickfix actions: 'quickfix'\n         */\n        CodeActionKind.QuickFix = 'quickfix';\n        /**\n         * Base kind for refactoring actions: 'refactor'\n         */\n        CodeActionKind.Refactor = 'refactor';\n        /**\n         * Base kind for refactoring extraction actions: 'refactor.extract'\n         *\n         * Example extract actions:\n         *\n         * - Extract method\n         * - Extract function\n         * - Extract variable\n         * - Extract interface from class\n         * - ...\n         */\n        CodeActionKind.RefactorExtract = 'refactor.extract';\n        /**\n         * Base kind for refactoring inline actions: 'refactor.inline'\n         *\n         * Example inline actions:\n         *\n         * - Inline function\n         * - Inline variable\n         * - Inline constant\n         * - ...\n         */\n        CodeActionKind.RefactorInline = 'refactor.inline';\n        /**\n         * Base kind for refactoring rewrite actions: 'refactor.rewrite'\n         *\n         * Example rewrite actions:\n         *\n         * - Convert JavaScript function to class\n         * - Add or remove parameter\n         * - Encapsulate field\n         * - Make method static\n         * - Move method to base class\n         * - ...\n         */\n        CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n        /**\n         * Base kind for source actions: `source`\n         *\n         * Source code actions apply to the entire file.\n         */\n        CodeActionKind.Source = 'source';\n        /**\n         * Base kind for an organize imports source action: `source.organizeImports`\n         */\n        CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\n        /**\n         * Base kind for auto-fix source actions: `source.fixAll`.\n         *\n         * Fix all actions automatically fix errors that have a clear fix that do not require user input.\n         * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\n         *\n         * @since 3.15.0\n         */\n        CodeActionKind.SourceFixAll = 'source.fixAll';\n    })(CodeActionKind || (exports.CodeActionKind = CodeActionKind = {}));\n    /**\n     * The reason why code actions were requested.\n     *\n     * @since 3.17.0\n     */\n    var CodeActionTriggerKind;\n    (function (CodeActionTriggerKind) {\n        /**\n         * Code actions were explicitly requested by the user or by an extension.\n         */\n        CodeActionTriggerKind.Invoked = 1;\n        /**\n         * Code actions were requested automatically.\n         *\n         * This typically happens when current selection in a file changes, but can\n         * also be triggered when file content changes.\n         */\n        CodeActionTriggerKind.Automatic = 2;\n    })(CodeActionTriggerKind || (exports.CodeActionTriggerKind = CodeActionTriggerKind = {}));\n    /**\n     * The CodeActionContext namespace provides helper functions to work with\n     * {@link CodeActionContext} literals.\n     */\n    var CodeActionContext;\n    (function (CodeActionContext) {\n        /**\n         * Creates a new CodeActionContext literal.\n         */\n        function create(diagnostics, only, triggerKind) {\n            var result = { diagnostics: diagnostics };\n            if (only !== undefined && only !== null) {\n                result.only = only;\n            }\n            if (triggerKind !== undefined && triggerKind !== null) {\n                result.triggerKind = triggerKind;\n            }\n            return result;\n        }\n        CodeActionContext.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link CodeActionContext} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is)\n                && (candidate.only === undefined || Is.typedArray(candidate.only, Is.string))\n                && (candidate.triggerKind === undefined || candidate.triggerKind === CodeActionTriggerKind.Invoked || candidate.triggerKind === CodeActionTriggerKind.Automatic);\n        }\n        CodeActionContext.is = is;\n    })(CodeActionContext || (exports.CodeActionContext = CodeActionContext = {}));\n    var CodeAction;\n    (function (CodeAction) {\n        function create(title, kindOrCommandOrEdit, kind) {\n            var result = { title: title };\n            var checkKind = true;\n            if (typeof kindOrCommandOrEdit === 'string') {\n                checkKind = false;\n                result.kind = kindOrCommandOrEdit;\n            }\n            else if (Command.is(kindOrCommandOrEdit)) {\n                result.command = kindOrCommandOrEdit;\n            }\n            else {\n                result.edit = kindOrCommandOrEdit;\n            }\n            if (checkKind && kind !== undefined) {\n                result.kind = kind;\n            }\n            return result;\n        }\n        CodeAction.create = create;\n        function is(value) {\n            var candidate = value;\n            return candidate && Is.string(candidate.title) &&\n                (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) &&\n                (candidate.kind === undefined || Is.string(candidate.kind)) &&\n                (candidate.edit !== undefined || candidate.command !== undefined) &&\n                (candidate.command === undefined || Command.is(candidate.command)) &&\n                (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) &&\n                (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit));\n        }\n        CodeAction.is = is;\n    })(CodeAction || (exports.CodeAction = CodeAction = {}));\n    /**\n     * The CodeLens namespace provides helper functions to work with\n     * {@link CodeLens} literals.\n     */\n    var CodeLens;\n    (function (CodeLens) {\n        /**\n         * Creates a new CodeLens literal.\n         */\n        function create(range, data) {\n            var result = { range: range };\n            if (Is.defined(data)) {\n                result.data = data;\n            }\n            return result;\n        }\n        CodeLens.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link CodeLens} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\n        }\n        CodeLens.is = is;\n    })(CodeLens || (exports.CodeLens = CodeLens = {}));\n    /**\n     * The FormattingOptions namespace provides helper functions to work with\n     * {@link FormattingOptions} literals.\n     */\n    var FormattingOptions;\n    (function (FormattingOptions) {\n        /**\n         * Creates a new FormattingOptions literal.\n         */\n        function create(tabSize, insertSpaces) {\n            return { tabSize: tabSize, insertSpaces: insertSpaces };\n        }\n        FormattingOptions.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link FormattingOptions} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n        }\n        FormattingOptions.is = is;\n    })(FormattingOptions || (exports.FormattingOptions = FormattingOptions = {}));\n    /**\n     * The DocumentLink namespace provides helper functions to work with\n     * {@link DocumentLink} literals.\n     */\n    var DocumentLink;\n    (function (DocumentLink) {\n        /**\n         * Creates a new DocumentLink literal.\n         */\n        function create(range, target, data) {\n            return { range: range, target: target, data: data };\n        }\n        DocumentLink.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link DocumentLink} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\n        }\n        DocumentLink.is = is;\n    })(DocumentLink || (exports.DocumentLink = DocumentLink = {}));\n    /**\n     * The SelectionRange namespace provides helper function to work with\n     * SelectionRange literals.\n     */\n    var SelectionRange;\n    (function (SelectionRange) {\n        /**\n         * Creates a new SelectionRange\n         * @param range the range.\n         * @param parent an optional parent.\n         */\n        function create(range, parent) {\n            return { range: range, parent: parent };\n        }\n        SelectionRange.create = create;\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\n        }\n        SelectionRange.is = is;\n    })(SelectionRange || (exports.SelectionRange = SelectionRange = {}));\n    /**\n     * A set of predefined token types. This set is not fixed\n     * an clients can specify additional token types via the\n     * corresponding client capabilities.\n     *\n     * @since 3.16.0\n     */\n    var SemanticTokenTypes;\n    (function (SemanticTokenTypes) {\n        SemanticTokenTypes[\"namespace\"] = \"namespace\";\n        /**\n         * Represents a generic type. Acts as a fallback for types which can't be mapped to\n         * a specific type like class or enum.\n         */\n        SemanticTokenTypes[\"type\"] = \"type\";\n        SemanticTokenTypes[\"class\"] = \"class\";\n        SemanticTokenTypes[\"enum\"] = \"enum\";\n        SemanticTokenTypes[\"interface\"] = \"interface\";\n        SemanticTokenTypes[\"struct\"] = \"struct\";\n        SemanticTokenTypes[\"typeParameter\"] = \"typeParameter\";\n        SemanticTokenTypes[\"parameter\"] = \"parameter\";\n        SemanticTokenTypes[\"variable\"] = \"variable\";\n        SemanticTokenTypes[\"property\"] = \"property\";\n        SemanticTokenTypes[\"enumMember\"] = \"enumMember\";\n        SemanticTokenTypes[\"event\"] = \"event\";\n        SemanticTokenTypes[\"function\"] = \"function\";\n        SemanticTokenTypes[\"method\"] = \"method\";\n        SemanticTokenTypes[\"macro\"] = \"macro\";\n        SemanticTokenTypes[\"keyword\"] = \"keyword\";\n        SemanticTokenTypes[\"modifier\"] = \"modifier\";\n        SemanticTokenTypes[\"comment\"] = \"comment\";\n        SemanticTokenTypes[\"string\"] = \"string\";\n        SemanticTokenTypes[\"number\"] = \"number\";\n        SemanticTokenTypes[\"regexp\"] = \"regexp\";\n        SemanticTokenTypes[\"operator\"] = \"operator\";\n        /**\n         * @since 3.17.0\n         */\n        SemanticTokenTypes[\"decorator\"] = \"decorator\";\n    })(SemanticTokenTypes || (exports.SemanticTokenTypes = SemanticTokenTypes = {}));\n    /**\n     * A set of predefined token modifiers. This set is not fixed\n     * an clients can specify additional token types via the\n     * corresponding client capabilities.\n     *\n     * @since 3.16.0\n     */\n    var SemanticTokenModifiers;\n    (function (SemanticTokenModifiers) {\n        SemanticTokenModifiers[\"declaration\"] = \"declaration\";\n        SemanticTokenModifiers[\"definition\"] = \"definition\";\n        SemanticTokenModifiers[\"readonly\"] = \"readonly\";\n        SemanticTokenModifiers[\"static\"] = \"static\";\n        SemanticTokenModifiers[\"deprecated\"] = \"deprecated\";\n        SemanticTokenModifiers[\"abstract\"] = \"abstract\";\n        SemanticTokenModifiers[\"async\"] = \"async\";\n        SemanticTokenModifiers[\"modification\"] = \"modification\";\n        SemanticTokenModifiers[\"documentation\"] = \"documentation\";\n        SemanticTokenModifiers[\"defaultLibrary\"] = \"defaultLibrary\";\n    })(SemanticTokenModifiers || (exports.SemanticTokenModifiers = SemanticTokenModifiers = {}));\n    /**\n     * @since 3.16.0\n     */\n    var SemanticTokens;\n    (function (SemanticTokens) {\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && (candidate.resultId === undefined || typeof candidate.resultId === 'string') &&\n                Array.isArray(candidate.data) && (candidate.data.length === 0 || typeof candidate.data[0] === 'number');\n        }\n        SemanticTokens.is = is;\n    })(SemanticTokens || (exports.SemanticTokens = SemanticTokens = {}));\n    /**\n     * The InlineValueText namespace provides functions to deal with InlineValueTexts.\n     *\n     * @since 3.17.0\n     */\n    var InlineValueText;\n    (function (InlineValueText) {\n        /**\n         * Creates a new InlineValueText literal.\n         */\n        function create(range, text) {\n            return { range: range, text: text };\n        }\n        InlineValueText.create = create;\n        function is(value) {\n            var candidate = value;\n            return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text);\n        }\n        InlineValueText.is = is;\n    })(InlineValueText || (exports.InlineValueText = InlineValueText = {}));\n    /**\n     * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups.\n     *\n     * @since 3.17.0\n     */\n    var InlineValueVariableLookup;\n    (function (InlineValueVariableLookup) {\n        /**\n         * Creates a new InlineValueText literal.\n         */\n        function create(range, variableName, caseSensitiveLookup) {\n            return { range: range, variableName: variableName, caseSensitiveLookup: caseSensitiveLookup };\n        }\n        InlineValueVariableLookup.create = create;\n        function is(value) {\n            var candidate = value;\n            return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.boolean(candidate.caseSensitiveLookup)\n                && (Is.string(candidate.variableName) || candidate.variableName === undefined);\n        }\n        InlineValueVariableLookup.is = is;\n    })(InlineValueVariableLookup || (exports.InlineValueVariableLookup = InlineValueVariableLookup = {}));\n    /**\n     * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression.\n     *\n     * @since 3.17.0\n     */\n    var InlineValueEvaluatableExpression;\n    (function (InlineValueEvaluatableExpression) {\n        /**\n         * Creates a new InlineValueEvaluatableExpression literal.\n         */\n        function create(range, expression) {\n            return { range: range, expression: expression };\n        }\n        InlineValueEvaluatableExpression.create = create;\n        function is(value) {\n            var candidate = value;\n            return candidate !== undefined && candidate !== null && Range.is(candidate.range)\n                && (Is.string(candidate.expression) || candidate.expression === undefined);\n        }\n        InlineValueEvaluatableExpression.is = is;\n    })(InlineValueEvaluatableExpression || (exports.InlineValueEvaluatableExpression = InlineValueEvaluatableExpression = {}));\n    /**\n     * The InlineValueContext namespace provides helper functions to work with\n     * {@link InlineValueContext} literals.\n     *\n     * @since 3.17.0\n     */\n    var InlineValueContext;\n    (function (InlineValueContext) {\n        /**\n         * Creates a new InlineValueContext literal.\n         */\n        function create(frameId, stoppedLocation) {\n            return { frameId: frameId, stoppedLocation: stoppedLocation };\n        }\n        InlineValueContext.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link InlineValueContext} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Range.is(value.stoppedLocation);\n        }\n        InlineValueContext.is = is;\n    })(InlineValueContext || (exports.InlineValueContext = InlineValueContext = {}));\n    /**\n     * Inlay hint kinds.\n     *\n     * @since 3.17.0\n     */\n    var InlayHintKind;\n    (function (InlayHintKind) {\n        /**\n         * An inlay hint that for a type annotation.\n         */\n        InlayHintKind.Type = 1;\n        /**\n         * An inlay hint that is for a parameter.\n         */\n        InlayHintKind.Parameter = 2;\n        function is(value) {\n            return value === 1 || value === 2;\n        }\n        InlayHintKind.is = is;\n    })(InlayHintKind || (exports.InlayHintKind = InlayHintKind = {}));\n    var InlayHintLabelPart;\n    (function (InlayHintLabelPart) {\n        function create(value) {\n            return { value: value };\n        }\n        InlayHintLabelPart.create = create;\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate)\n                && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip))\n                && (candidate.location === undefined || Location.is(candidate.location))\n                && (candidate.command === undefined || Command.is(candidate.command));\n        }\n        InlayHintLabelPart.is = is;\n    })(InlayHintLabelPart || (exports.InlayHintLabelPart = InlayHintLabelPart = {}));\n    var InlayHint;\n    (function (InlayHint) {\n        function create(position, label, kind) {\n            var result = { position: position, label: label };\n            if (kind !== undefined) {\n                result.kind = kind;\n            }\n            return result;\n        }\n        InlayHint.create = create;\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && Position.is(candidate.position)\n                && (Is.string(candidate.label) || Is.typedArray(candidate.label, InlayHintLabelPart.is))\n                && (candidate.kind === undefined || InlayHintKind.is(candidate.kind))\n                && (candidate.textEdits === undefined) || Is.typedArray(candidate.textEdits, TextEdit.is)\n                && (candidate.tooltip === undefined || Is.string(candidate.tooltip) || MarkupContent.is(candidate.tooltip))\n                && (candidate.paddingLeft === undefined || Is.boolean(candidate.paddingLeft))\n                && (candidate.paddingRight === undefined || Is.boolean(candidate.paddingRight));\n        }\n        InlayHint.is = is;\n    })(InlayHint || (exports.InlayHint = InlayHint = {}));\n    var StringValue;\n    (function (StringValue) {\n        function createSnippet(value) {\n            return { kind: 'snippet', value: value };\n        }\n        StringValue.createSnippet = createSnippet;\n    })(StringValue || (exports.StringValue = StringValue = {}));\n    var InlineCompletionItem;\n    (function (InlineCompletionItem) {\n        function create(insertText, filterText, range, command) {\n            return { insertText: insertText, filterText: filterText, range: range, command: command };\n        }\n        InlineCompletionItem.create = create;\n    })(InlineCompletionItem || (exports.InlineCompletionItem = InlineCompletionItem = {}));\n    var InlineCompletionList;\n    (function (InlineCompletionList) {\n        function create(items) {\n            return { items: items };\n        }\n        InlineCompletionList.create = create;\n    })(InlineCompletionList || (exports.InlineCompletionList = InlineCompletionList = {}));\n    /**\n     * Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.\n     *\n     * @since 3.18.0\n     * @proposed\n     */\n    var InlineCompletionTriggerKind;\n    (function (InlineCompletionTriggerKind) {\n        /**\n         * Completion was triggered explicitly by a user gesture.\n         */\n        InlineCompletionTriggerKind.Invoked = 0;\n        /**\n         * Completion was triggered automatically while editing.\n         */\n        InlineCompletionTriggerKind.Automatic = 1;\n    })(InlineCompletionTriggerKind || (exports.InlineCompletionTriggerKind = InlineCompletionTriggerKind = {}));\n    var SelectedCompletionInfo;\n    (function (SelectedCompletionInfo) {\n        function create(range, text) {\n            return { range: range, text: text };\n        }\n        SelectedCompletionInfo.create = create;\n    })(SelectedCompletionInfo || (exports.SelectedCompletionInfo = SelectedCompletionInfo = {}));\n    var InlineCompletionContext;\n    (function (InlineCompletionContext) {\n        function create(triggerKind, selectedCompletionInfo) {\n            return { triggerKind: triggerKind, selectedCompletionInfo: selectedCompletionInfo };\n        }\n        InlineCompletionContext.create = create;\n    })(InlineCompletionContext || (exports.InlineCompletionContext = InlineCompletionContext = {}));\n    var WorkspaceFolder;\n    (function (WorkspaceFolder) {\n        function is(value) {\n            var candidate = value;\n            return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name);\n        }\n        WorkspaceFolder.is = is;\n    })(WorkspaceFolder || (exports.WorkspaceFolder = WorkspaceFolder = {}));\n    exports.EOL = ['\\n', '\\r\\n', '\\r'];\n    /**\n     * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n     */\n    var TextDocument;\n    (function (TextDocument) {\n        /**\n         * Creates a new ITextDocument literal from the given uri and content.\n         * @param uri The document's uri.\n         * @param languageId The document's language Id.\n         * @param version The document's version.\n         * @param content The document's content.\n         */\n        function create(uri, languageId, version, content) {\n            return new FullTextDocument(uri, languageId, version, content);\n        }\n        TextDocument.create = create;\n        /**\n         * Checks whether the given literal conforms to the {@link ITextDocument} interface.\n         */\n        function is(value) {\n            var candidate = value;\n            return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.uinteger(candidate.lineCount)\n                && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\n        }\n        TextDocument.is = is;\n        function applyEdits(document, edits) {\n            var text = document.getText();\n            var sortedEdits = mergeSort(edits, function (a, b) {\n                var diff = a.range.start.line - b.range.start.line;\n                if (diff === 0) {\n                    return a.range.start.character - b.range.start.character;\n                }\n                return diff;\n            });\n            var lastModifiedOffset = text.length;\n            for (var i = sortedEdits.length - 1; i >= 0; i--) {\n                var e = sortedEdits[i];\n                var startOffset = document.offsetAt(e.range.start);\n                var endOffset = document.offsetAt(e.range.end);\n                if (endOffset <= lastModifiedOffset) {\n                    text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\n                }\n                else {\n                    throw new Error('Overlapping edit');\n                }\n                lastModifiedOffset = startOffset;\n            }\n            return text;\n        }\n        TextDocument.applyEdits = applyEdits;\n        function mergeSort(data, compare) {\n            if (data.length <= 1) {\n                // sorted\n                return data;\n            }\n            var p = (data.length / 2) | 0;\n            var left = data.slice(0, p);\n            var right = data.slice(p);\n            mergeSort(left, compare);\n            mergeSort(right, compare);\n            var leftIdx = 0;\n            var rightIdx = 0;\n            var i = 0;\n            while (leftIdx < left.length && rightIdx < right.length) {\n                var ret = compare(left[leftIdx], right[rightIdx]);\n                if (ret <= 0) {\n                    // smaller_equal -> take left to preserve order\n                    data[i++] = left[leftIdx++];\n                }\n                else {\n                    // greater -> take right\n                    data[i++] = right[rightIdx++];\n                }\n            }\n            while (leftIdx < left.length) {\n                data[i++] = left[leftIdx++];\n            }\n            while (rightIdx < right.length) {\n                data[i++] = right[rightIdx++];\n            }\n            return data;\n        }\n    })(TextDocument || (exports.TextDocument = TextDocument = {}));\n    /**\n     * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n     */\n    var FullTextDocument = /** @class */ (function () {\n        function FullTextDocument(uri, languageId, version, content) {\n            this._uri = uri;\n            this._languageId = languageId;\n            this._version = version;\n            this._content = content;\n            this._lineOffsets = undefined;\n        }\n        Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n            get: function () {\n                return this._uri;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n            get: function () {\n                return this._languageId;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        Object.defineProperty(FullTextDocument.prototype, \"version\", {\n            get: function () {\n                return this._version;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        FullTextDocument.prototype.getText = function (range) {\n            if (range) {\n                var start = this.offsetAt(range.start);\n                var end = this.offsetAt(range.end);\n                return this._content.substring(start, end);\n            }\n            return this._content;\n        };\n        FullTextDocument.prototype.update = function (event, version) {\n            this._content = event.text;\n            this._version = version;\n            this._lineOffsets = undefined;\n        };\n        FullTextDocument.prototype.getLineOffsets = function () {\n            if (this._lineOffsets === undefined) {\n                var lineOffsets = [];\n                var text = this._content;\n                var isLineStart = true;\n                for (var i = 0; i < text.length; i++) {\n                    if (isLineStart) {\n                        lineOffsets.push(i);\n                        isLineStart = false;\n                    }\n                    var ch = text.charAt(i);\n                    isLineStart = (ch === '\\r' || ch === '\\n');\n                    if (ch === '\\r' && i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n                        i++;\n                    }\n                }\n                if (isLineStart && text.length > 0) {\n                    lineOffsets.push(text.length);\n                }\n                this._lineOffsets = lineOffsets;\n            }\n            return this._lineOffsets;\n        };\n        FullTextDocument.prototype.positionAt = function (offset) {\n            offset = Math.max(Math.min(offset, this._content.length), 0);\n            var lineOffsets = this.getLineOffsets();\n            var low = 0, high = lineOffsets.length;\n            if (high === 0) {\n                return Position.create(0, offset);\n            }\n            while (low < high) {\n                var mid = Math.floor((low + high) / 2);\n                if (lineOffsets[mid] > offset) {\n                    high = mid;\n                }\n                else {\n                    low = mid + 1;\n                }\n            }\n            // low is the least x for which the line offset is larger than the current offset\n            // or array.length if no line offset is larger than the current offset\n            var line = low - 1;\n            return Position.create(line, offset - lineOffsets[line]);\n        };\n        FullTextDocument.prototype.offsetAt = function (position) {\n            var lineOffsets = this.getLineOffsets();\n            if (position.line >= lineOffsets.length) {\n                return this._content.length;\n            }\n            else if (position.line < 0) {\n                return 0;\n            }\n            var lineOffset = lineOffsets[position.line];\n            var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n            return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n        };\n        Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\n            get: function () {\n                return this.getLineOffsets().length;\n            },\n            enumerable: false,\n            configurable: true\n        });\n        return FullTextDocument;\n    }());\n    var Is;\n    (function (Is) {\n        var toString = Object.prototype.toString;\n        function defined(value) {\n            return typeof value !== 'undefined';\n        }\n        Is.defined = defined;\n        function undefined(value) {\n            return typeof value === 'undefined';\n        }\n        Is.undefined = undefined;\n        function boolean(value) {\n            return value === true || value === false;\n        }\n        Is.boolean = boolean;\n        function string(value) {\n            return toString.call(value) === '[object String]';\n        }\n        Is.string = string;\n        function number(value) {\n            return toString.call(value) === '[object Number]';\n        }\n        Is.number = number;\n        function numberRange(value, min, max) {\n            return toString.call(value) === '[object Number]' && min <= value && value <= max;\n        }\n        Is.numberRange = numberRange;\n        function integer(value) {\n            return toString.call(value) === '[object Number]' && -2147483648 <= value && value <= 2147483647;\n        }\n        Is.integer = integer;\n        function uinteger(value) {\n            return toString.call(value) === '[object Number]' && 0 <= value && value <= 2147483647;\n        }\n        Is.uinteger = uinteger;\n        function func(value) {\n            return toString.call(value) === '[object Function]';\n        }\n        Is.func = func;\n        function objectLiteral(value) {\n            // Strictly speaking class instances pass this check as well. Since the LSP\n            // doesn't use classes we ignore this for now. If we do we need to add something\n            // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n            return value !== null && typeof value === 'object';\n        }\n        Is.objectLiteral = objectLiteral;\n        function typedArray(value, check) {\n            return Array.isArray(value) && value.every(check);\n        }\n        Is.typedArray = typedArray;\n    })(Is || (Is = {}));\n});\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolNotificationType = exports.ProtocolNotificationType0 = exports.ProtocolRequestType = exports.ProtocolRequestType0 = exports.RegistrationType = exports.MessageDirection = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nvar MessageDirection;\n(function (MessageDirection) {\n    MessageDirection[\"clientToServer\"] = \"clientToServer\";\n    MessageDirection[\"serverToClient\"] = \"serverToClient\";\n    MessageDirection[\"both\"] = \"both\";\n})(MessageDirection || (exports.MessageDirection = MessageDirection = {}));\nclass RegistrationType {\n    constructor(method) {\n        this.method = method;\n    }\n}\nexports.RegistrationType = RegistrationType;\nclass ProtocolRequestType0 extends vscode_jsonrpc_1.RequestType0 {\n    constructor(method) {\n        super(method);\n    }\n}\nexports.ProtocolRequestType0 = ProtocolRequestType0;\nclass ProtocolRequestType extends vscode_jsonrpc_1.RequestType {\n    constructor(method) {\n        super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n    }\n}\nexports.ProtocolRequestType = ProtocolRequestType;\nclass ProtocolNotificationType0 extends vscode_jsonrpc_1.NotificationType0 {\n    constructor(method) {\n        super(method);\n    }\n}\nexports.ProtocolNotificationType0 = ProtocolNotificationType0;\nclass ProtocolNotificationType extends vscode_jsonrpc_1.NotificationType {\n    constructor(method) {\n        super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n    }\n}\nexports.ProtocolNotificationType = ProtocolNotificationType;\n", "/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.objectLiteral = exports.typedArray = exports.stringArray = exports.array = exports.func = exports.error = exports.number = exports.string = exports.boolean = void 0;\nfunction boolean(value) {\n    return value === true || value === false;\n}\nexports.boolean = boolean;\nfunction string(value) {\n    return typeof value === 'string' || value instanceof String;\n}\nexports.string = string;\nfunction number(value) {\n    return typeof value === 'number' || value instanceof Number;\n}\nexports.number = number;\nfunction error(value) {\n    return value instanceof Error;\n}\nexports.error = error;\nfunction func(value) {\n    return typeof value === 'function';\n}\nexports.func = func;\nfunction array(value) {\n    return Array.isArray(value);\n}\nexports.array = array;\nfunction stringArray(value) {\n    return array(value) && value.every(elem => string(elem));\n}\nexports.stringArray = stringArray;\nfunction typedArray(value, check) {\n    return Array.isArray(value) && value.every(check);\n}\nexports.typedArray = typedArray;\nfunction objectLiteral(value) {\n    // Strictly speaking class instances pass this check as well. Since the LSP\n    // doesn't use classes we ignore this for now. If we do we need to add something\n    // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\n    return value !== null && typeof value === 'object';\n}\nexports.objectLiteral = objectLiteral;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImplementationRequest = void 0;\nconst messages_1 = require(\"./messages\");\n// @ts-ignore: to avoid inlining LocationLink as dynamic import\nlet __noDynamicImport;\n/**\n * A request to resolve the implementation locations of a symbol at a given text\n * document position. The request's parameter is of type {@link TextDocumentPositionParams}\n * the response is of type {@link Definition} or a Thenable that resolves to such.\n */\nvar ImplementationRequest;\n(function (ImplementationRequest) {\n    ImplementationRequest.method = 'textDocument/implementation';\n    ImplementationRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    ImplementationRequest.type = new messages_1.ProtocolRequestType(ImplementationRequest.method);\n})(ImplementationRequest || (exports.ImplementationRequest = ImplementationRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeDefinitionRequest = void 0;\nconst messages_1 = require(\"./messages\");\n// @ts-ignore: to avoid inlining LocatioLink as dynamic import\nlet __noDynamicImport;\n/**\n * A request to resolve the type definition locations of a symbol at a given text\n * document position. The request's parameter is of type {@link TextDocumentPositionParams}\n * the response is of type {@link Definition} or a Thenable that resolves to such.\n */\nvar TypeDefinitionRequest;\n(function (TypeDefinitionRequest) {\n    TypeDefinitionRequest.method = 'textDocument/typeDefinition';\n    TypeDefinitionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    TypeDefinitionRequest.type = new messages_1.ProtocolRequestType(TypeDefinitionRequest.method);\n})(TypeDefinitionRequest || (exports.TypeDefinitionRequest = TypeDefinitionRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DidChangeWorkspaceFoldersNotification = exports.WorkspaceFoldersRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders.\n */\nvar WorkspaceFoldersRequest;\n(function (WorkspaceFoldersRequest) {\n    WorkspaceFoldersRequest.method = 'workspace/workspaceFolders';\n    WorkspaceFoldersRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    WorkspaceFoldersRequest.type = new messages_1.ProtocolRequestType0(WorkspaceFoldersRequest.method);\n})(WorkspaceFoldersRequest || (exports.WorkspaceFoldersRequest = WorkspaceFoldersRequest = {}));\n/**\n * The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace\n * folder configuration changes.\n */\nvar DidChangeWorkspaceFoldersNotification;\n(function (DidChangeWorkspaceFoldersNotification) {\n    DidChangeWorkspaceFoldersNotification.method = 'workspace/didChangeWorkspaceFolders';\n    DidChangeWorkspaceFoldersNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidChangeWorkspaceFoldersNotification.type = new messages_1.ProtocolNotificationType(DidChangeWorkspaceFoldersNotification.method);\n})(DidChangeWorkspaceFoldersNotification || (exports.DidChangeWorkspaceFoldersNotification = DidChangeWorkspaceFoldersNotification = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConfigurationRequest = void 0;\nconst messages_1 = require(\"./messages\");\n//---- Get Configuration request ----\n/**\n * The 'workspace/configuration' request is sent from the server to the client to fetch a certain\n * configuration setting.\n *\n * This pull model replaces the old push model were the client signaled configuration change via an\n * event. If the server still needs to react to configuration changes (since the server caches the\n * result of `workspace/configuration` requests) the server should register for an empty configuration\n * change event and empty the cache if such an event is received.\n */\nvar ConfigurationRequest;\n(function (ConfigurationRequest) {\n    ConfigurationRequest.method = 'workspace/configuration';\n    ConfigurationRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    ConfigurationRequest.type = new messages_1.ProtocolRequestType(ConfigurationRequest.method);\n})(ConfigurationRequest || (exports.ConfigurationRequest = ConfigurationRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ColorPresentationRequest = exports.DocumentColorRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to list all color symbols found in a given text document. The request's\n * parameter is of type {@link DocumentColorParams} the\n * response is of type {@link ColorInformation ColorInformation[]} or a Thenable\n * that resolves to such.\n */\nvar DocumentColorRequest;\n(function (DocumentColorRequest) {\n    DocumentColorRequest.method = 'textDocument/documentColor';\n    DocumentColorRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentColorRequest.type = new messages_1.ProtocolRequestType(DocumentColorRequest.method);\n})(DocumentColorRequest || (exports.DocumentColorRequest = DocumentColorRequest = {}));\n/**\n * A request to list all presentation for a color. The request's\n * parameter is of type {@link ColorPresentationParams} the\n * response is of type {@link ColorInformation ColorInformation[]} or a Thenable\n * that resolves to such.\n */\nvar ColorPresentationRequest;\n(function (ColorPresentationRequest) {\n    ColorPresentationRequest.method = 'textDocument/colorPresentation';\n    ColorPresentationRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    ColorPresentationRequest.type = new messages_1.ProtocolRequestType(ColorPresentationRequest.method);\n})(ColorPresentationRequest || (exports.ColorPresentationRequest = ColorPresentationRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FoldingRangeRefreshRequest = exports.FoldingRangeRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide folding ranges in a document. The request's\n * parameter is of type {@link FoldingRangeParams}, the\n * response is of type {@link FoldingRangeList} or a Thenable\n * that resolves to such.\n */\nvar FoldingRangeRequest;\n(function (FoldingRangeRequest) {\n    FoldingRangeRequest.method = 'textDocument/foldingRange';\n    FoldingRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    FoldingRangeRequest.type = new messages_1.ProtocolRequestType(FoldingRangeRequest.method);\n})(FoldingRangeRequest || (exports.FoldingRangeRequest = FoldingRangeRequest = {}));\n/**\n * @since 3.18.0\n * @proposed\n */\nvar FoldingRangeRefreshRequest;\n(function (FoldingRangeRefreshRequest) {\n    FoldingRangeRefreshRequest.method = `workspace/foldingRange/refresh`;\n    FoldingRangeRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    FoldingRangeRefreshRequest.type = new messages_1.ProtocolRequestType0(FoldingRangeRefreshRequest.method);\n})(FoldingRangeRefreshRequest || (exports.FoldingRangeRefreshRequest = FoldingRangeRefreshRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeclarationRequest = void 0;\nconst messages_1 = require(\"./messages\");\n// @ts-ignore: to avoid inlining LocationLink as dynamic import\nlet __noDynamicImport;\n/**\n * A request to resolve the type definition locations of a symbol at a given text\n * document position. The request's parameter is of type {@link TextDocumentPositionParams}\n * the response is of type {@link Declaration} or a typed array of {@link DeclarationLink}\n * or a Thenable that resolves to such.\n */\nvar DeclarationRequest;\n(function (DeclarationRequest) {\n    DeclarationRequest.method = 'textDocument/declaration';\n    DeclarationRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DeclarationRequest.type = new messages_1.ProtocolRequestType(DeclarationRequest.method);\n})(DeclarationRequest || (exports.DeclarationRequest = DeclarationRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelectionRangeRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide selection ranges in a document. The request's\n * parameter is of type {@link SelectionRangeParams}, the\n * response is of type {@link SelectionRange SelectionRange[]} or a Thenable\n * that resolves to such.\n */\nvar SelectionRangeRequest;\n(function (SelectionRangeRequest) {\n    SelectionRangeRequest.method = 'textDocument/selectionRange';\n    SelectionRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    SelectionRangeRequest.type = new messages_1.ProtocolRequestType(SelectionRangeRequest.method);\n})(SelectionRangeRequest || (exports.SelectionRangeRequest = SelectionRangeRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkDoneProgressCancelNotification = exports.WorkDoneProgressCreateRequest = exports.WorkDoneProgress = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nconst messages_1 = require(\"./messages\");\nvar WorkDoneProgress;\n(function (WorkDoneProgress) {\n    WorkDoneProgress.type = new vscode_jsonrpc_1.ProgressType();\n    function is(value) {\n        return value === WorkDoneProgress.type;\n    }\n    WorkDoneProgress.is = is;\n})(WorkDoneProgress || (exports.WorkDoneProgress = WorkDoneProgress = {}));\n/**\n * The `window/workDoneProgress/create` request is sent from the server to the client to initiate progress\n * reporting from the server.\n */\nvar WorkDoneProgressCreateRequest;\n(function (WorkDoneProgressCreateRequest) {\n    WorkDoneProgressCreateRequest.method = 'window/workDoneProgress/create';\n    WorkDoneProgressCreateRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    WorkDoneProgressCreateRequest.type = new messages_1.ProtocolRequestType(WorkDoneProgressCreateRequest.method);\n})(WorkDoneProgressCreateRequest || (exports.WorkDoneProgressCreateRequest = WorkDoneProgressCreateRequest = {}));\n/**\n * The `window/workDoneProgress/cancel` notification is sent from  the client to the server to cancel a progress\n * initiated on the server side.\n */\nvar WorkDoneProgressCancelNotification;\n(function (WorkDoneProgressCancelNotification) {\n    WorkDoneProgressCancelNotification.method = 'window/workDoneProgress/cancel';\n    WorkDoneProgressCancelNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    WorkDoneProgressCancelNotification.type = new messages_1.ProtocolNotificationType(WorkDoneProgressCancelNotification.method);\n})(WorkDoneProgressCancelNotification || (exports.WorkDoneProgressCancelNotification = WorkDoneProgressCancelNotification = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) TypeFox, Microsoft and others. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallHierarchyOutgoingCallsRequest = exports.CallHierarchyIncomingCallsRequest = exports.CallHierarchyPrepareRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to result a `CallHierarchyItem` in a document at a given position.\n * Can be used as an input to an incoming or outgoing call hierarchy.\n *\n * @since 3.16.0\n */\nvar CallHierarchyPrepareRequest;\n(function (CallHierarchyPrepareRequest) {\n    CallHierarchyPrepareRequest.method = 'textDocument/prepareCallHierarchy';\n    CallHierarchyPrepareRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    CallHierarchyPrepareRequest.type = new messages_1.ProtocolRequestType(CallHierarchyPrepareRequest.method);\n})(CallHierarchyPrepareRequest || (exports.CallHierarchyPrepareRequest = CallHierarchyPrepareRequest = {}));\n/**\n * A request to resolve the incoming calls for a given `CallHierarchyItem`.\n *\n * @since 3.16.0\n */\nvar CallHierarchyIncomingCallsRequest;\n(function (CallHierarchyIncomingCallsRequest) {\n    CallHierarchyIncomingCallsRequest.method = 'callHierarchy/incomingCalls';\n    CallHierarchyIncomingCallsRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    CallHierarchyIncomingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyIncomingCallsRequest.method);\n})(CallHierarchyIncomingCallsRequest || (exports.CallHierarchyIncomingCallsRequest = CallHierarchyIncomingCallsRequest = {}));\n/**\n * A request to resolve the outgoing calls for a given `CallHierarchyItem`.\n *\n * @since 3.16.0\n */\nvar CallHierarchyOutgoingCallsRequest;\n(function (CallHierarchyOutgoingCallsRequest) {\n    CallHierarchyOutgoingCallsRequest.method = 'callHierarchy/outgoingCalls';\n    CallHierarchyOutgoingCallsRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    CallHierarchyOutgoingCallsRequest.type = new messages_1.ProtocolRequestType(CallHierarchyOutgoingCallsRequest.method);\n})(CallHierarchyOutgoingCallsRequest || (exports.CallHierarchyOutgoingCallsRequest = CallHierarchyOutgoingCallsRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SemanticTokensRefreshRequest = exports.SemanticTokensRangeRequest = exports.SemanticTokensDeltaRequest = exports.SemanticTokensRequest = exports.SemanticTokensRegistrationType = exports.TokenFormat = void 0;\nconst messages_1 = require(\"./messages\");\n//------- 'textDocument/semanticTokens' -----\nvar TokenFormat;\n(function (TokenFormat) {\n    TokenFormat.Relative = 'relative';\n})(TokenFormat || (exports.TokenFormat = TokenFormat = {}));\nvar SemanticTokensRegistrationType;\n(function (SemanticTokensRegistrationType) {\n    SemanticTokensRegistrationType.method = 'textDocument/semanticTokens';\n    SemanticTokensRegistrationType.type = new messages_1.RegistrationType(SemanticTokensRegistrationType.method);\n})(SemanticTokensRegistrationType || (exports.SemanticTokensRegistrationType = SemanticTokensRegistrationType = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensRequest;\n(function (SemanticTokensRequest) {\n    SemanticTokensRequest.method = 'textDocument/semanticTokens/full';\n    SemanticTokensRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    SemanticTokensRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRequest.method);\n    SemanticTokensRequest.registrationMethod = SemanticTokensRegistrationType.method;\n})(SemanticTokensRequest || (exports.SemanticTokensRequest = SemanticTokensRequest = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensDeltaRequest;\n(function (SemanticTokensDeltaRequest) {\n    SemanticTokensDeltaRequest.method = 'textDocument/semanticTokens/full/delta';\n    SemanticTokensDeltaRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    SemanticTokensDeltaRequest.type = new messages_1.ProtocolRequestType(SemanticTokensDeltaRequest.method);\n    SemanticTokensDeltaRequest.registrationMethod = SemanticTokensRegistrationType.method;\n})(SemanticTokensDeltaRequest || (exports.SemanticTokensDeltaRequest = SemanticTokensDeltaRequest = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensRangeRequest;\n(function (SemanticTokensRangeRequest) {\n    SemanticTokensRangeRequest.method = 'textDocument/semanticTokens/range';\n    SemanticTokensRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    SemanticTokensRangeRequest.type = new messages_1.ProtocolRequestType(SemanticTokensRangeRequest.method);\n    SemanticTokensRangeRequest.registrationMethod = SemanticTokensRegistrationType.method;\n})(SemanticTokensRangeRequest || (exports.SemanticTokensRangeRequest = SemanticTokensRangeRequest = {}));\n/**\n * @since 3.16.0\n */\nvar SemanticTokensRefreshRequest;\n(function (SemanticTokensRefreshRequest) {\n    SemanticTokensRefreshRequest.method = `workspace/semanticTokens/refresh`;\n    SemanticTokensRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    SemanticTokensRefreshRequest.type = new messages_1.ProtocolRequestType0(SemanticTokensRefreshRequest.method);\n})(SemanticTokensRefreshRequest || (exports.SemanticTokensRefreshRequest = SemanticTokensRefreshRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ShowDocumentRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to show a document. This request might open an\n * external program depending on the value of the URI to open.\n * For example a request to open `https://code.visualstudio.com/`\n * will very likely open the URI in a WEB browser.\n *\n * @since 3.16.0\n*/\nvar ShowDocumentRequest;\n(function (ShowDocumentRequest) {\n    ShowDocumentRequest.method = 'window/showDocument';\n    ShowDocumentRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    ShowDocumentRequest.type = new messages_1.ProtocolRequestType(ShowDocumentRequest.method);\n})(ShowDocumentRequest || (exports.ShowDocumentRequest = ShowDocumentRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedEditingRangeRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide ranges that can be edited together.\n *\n * @since 3.16.0\n */\nvar LinkedEditingRangeRequest;\n(function (LinkedEditingRangeRequest) {\n    LinkedEditingRangeRequest.method = 'textDocument/linkedEditingRange';\n    LinkedEditingRangeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    LinkedEditingRangeRequest.type = new messages_1.ProtocolRequestType(LinkedEditingRangeRequest.method);\n})(LinkedEditingRangeRequest || (exports.LinkedEditingRangeRequest = LinkedEditingRangeRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WillDeleteFilesRequest = exports.DidDeleteFilesNotification = exports.DidRenameFilesNotification = exports.WillRenameFilesRequest = exports.DidCreateFilesNotification = exports.WillCreateFilesRequest = exports.FileOperationPatternKind = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A pattern kind describing if a glob pattern matches a file a folder or\n * both.\n *\n * @since 3.16.0\n */\nvar FileOperationPatternKind;\n(function (FileOperationPatternKind) {\n    /**\n     * The pattern matches a file only.\n     */\n    FileOperationPatternKind.file = 'file';\n    /**\n     * The pattern matches a folder only.\n     */\n    FileOperationPatternKind.folder = 'folder';\n})(FileOperationPatternKind || (exports.FileOperationPatternKind = FileOperationPatternKind = {}));\n/**\n * The will create files request is sent from the client to the server before files are actually\n * created as long as the creation is triggered from within the client.\n *\n * The request can return a `WorkspaceEdit` which will be applied to workspace before the\n * files are created. Hence the `WorkspaceEdit` can not manipulate the content of the file\n * to be created.\n *\n * @since 3.16.0\n */\nvar WillCreateFilesRequest;\n(function (WillCreateFilesRequest) {\n    WillCreateFilesRequest.method = 'workspace/willCreateFiles';\n    WillCreateFilesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    WillCreateFilesRequest.type = new messages_1.ProtocolRequestType(WillCreateFilesRequest.method);\n})(WillCreateFilesRequest || (exports.WillCreateFilesRequest = WillCreateFilesRequest = {}));\n/**\n * The did create files notification is sent from the client to the server when\n * files were created from within the client.\n *\n * @since 3.16.0\n */\nvar DidCreateFilesNotification;\n(function (DidCreateFilesNotification) {\n    DidCreateFilesNotification.method = 'workspace/didCreateFiles';\n    DidCreateFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidCreateFilesNotification.type = new messages_1.ProtocolNotificationType(DidCreateFilesNotification.method);\n})(DidCreateFilesNotification || (exports.DidCreateFilesNotification = DidCreateFilesNotification = {}));\n/**\n * The will rename files request is sent from the client to the server before files are actually\n * renamed as long as the rename is triggered from within the client.\n *\n * @since 3.16.0\n */\nvar WillRenameFilesRequest;\n(function (WillRenameFilesRequest) {\n    WillRenameFilesRequest.method = 'workspace/willRenameFiles';\n    WillRenameFilesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    WillRenameFilesRequest.type = new messages_1.ProtocolRequestType(WillRenameFilesRequest.method);\n})(WillRenameFilesRequest || (exports.WillRenameFilesRequest = WillRenameFilesRequest = {}));\n/**\n * The did rename files notification is sent from the client to the server when\n * files were renamed from within the client.\n *\n * @since 3.16.0\n */\nvar DidRenameFilesNotification;\n(function (DidRenameFilesNotification) {\n    DidRenameFilesNotification.method = 'workspace/didRenameFiles';\n    DidRenameFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidRenameFilesNotification.type = new messages_1.ProtocolNotificationType(DidRenameFilesNotification.method);\n})(DidRenameFilesNotification || (exports.DidRenameFilesNotification = DidRenameFilesNotification = {}));\n/**\n * The will delete files request is sent from the client to the server before files are actually\n * deleted as long as the deletion is triggered from within the client.\n *\n * @since 3.16.0\n */\nvar DidDeleteFilesNotification;\n(function (DidDeleteFilesNotification) {\n    DidDeleteFilesNotification.method = 'workspace/didDeleteFiles';\n    DidDeleteFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidDeleteFilesNotification.type = new messages_1.ProtocolNotificationType(DidDeleteFilesNotification.method);\n})(DidDeleteFilesNotification || (exports.DidDeleteFilesNotification = DidDeleteFilesNotification = {}));\n/**\n * The did delete files notification is sent from the client to the server when\n * files were deleted from within the client.\n *\n * @since 3.16.0\n */\nvar WillDeleteFilesRequest;\n(function (WillDeleteFilesRequest) {\n    WillDeleteFilesRequest.method = 'workspace/willDeleteFiles';\n    WillDeleteFilesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    WillDeleteFilesRequest.type = new messages_1.ProtocolRequestType(WillDeleteFilesRequest.method);\n})(WillDeleteFilesRequest || (exports.WillDeleteFilesRequest = WillDeleteFilesRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MonikerRequest = exports.MonikerKind = exports.UniquenessLevel = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * Moniker uniqueness level to define scope of the moniker.\n *\n * @since 3.16.0\n */\nvar UniquenessLevel;\n(function (UniquenessLevel) {\n    /**\n     * The moniker is only unique inside a document\n     */\n    UniquenessLevel.document = 'document';\n    /**\n     * The moniker is unique inside a project for which a dump got created\n     */\n    UniquenessLevel.project = 'project';\n    /**\n     * The moniker is unique inside the group to which a project belongs\n     */\n    UniquenessLevel.group = 'group';\n    /**\n     * The moniker is unique inside the moniker scheme.\n     */\n    UniquenessLevel.scheme = 'scheme';\n    /**\n     * The moniker is globally unique\n     */\n    UniquenessLevel.global = 'global';\n})(UniquenessLevel || (exports.UniquenessLevel = UniquenessLevel = {}));\n/**\n * The moniker kind.\n *\n * @since 3.16.0\n */\nvar MonikerKind;\n(function (MonikerKind) {\n    /**\n     * The moniker represent a symbol that is imported into a project\n     */\n    MonikerKind.$import = 'import';\n    /**\n     * The moniker represents a symbol that is exported from a project\n     */\n    MonikerKind.$export = 'export';\n    /**\n     * The moniker represents a symbol that is local to a project (e.g. a local\n     * variable of a function, a class not visible outside the project, ...)\n     */\n    MonikerKind.local = 'local';\n})(MonikerKind || (exports.MonikerKind = MonikerKind = {}));\n/**\n * A request to get the moniker of a symbol at a given text document position.\n * The request parameter is of type {@link TextDocumentPositionParams}.\n * The response is of type {@link Moniker Moniker[]} or `null`.\n */\nvar MonikerRequest;\n(function (MonikerRequest) {\n    MonikerRequest.method = 'textDocument/moniker';\n    MonikerRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    MonikerRequest.type = new messages_1.ProtocolRequestType(MonikerRequest.method);\n})(MonikerRequest || (exports.MonikerRequest = MonikerRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) TypeFox, Microsoft and others. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHierarchySubtypesRequest = exports.TypeHierarchySupertypesRequest = exports.TypeHierarchyPrepareRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to result a `TypeHierarchyItem` in a document at a given position.\n * Can be used as an input to a subtypes or supertypes type hierarchy.\n *\n * @since 3.17.0\n */\nvar TypeHierarchyPrepareRequest;\n(function (TypeHierarchyPrepareRequest) {\n    TypeHierarchyPrepareRequest.method = 'textDocument/prepareTypeHierarchy';\n    TypeHierarchyPrepareRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    TypeHierarchyPrepareRequest.type = new messages_1.ProtocolRequestType(TypeHierarchyPrepareRequest.method);\n})(TypeHierarchyPrepareRequest || (exports.TypeHierarchyPrepareRequest = TypeHierarchyPrepareRequest = {}));\n/**\n * A request to resolve the supertypes for a given `TypeHierarchyItem`.\n *\n * @since 3.17.0\n */\nvar TypeHierarchySupertypesRequest;\n(function (TypeHierarchySupertypesRequest) {\n    TypeHierarchySupertypesRequest.method = 'typeHierarchy/supertypes';\n    TypeHierarchySupertypesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    TypeHierarchySupertypesRequest.type = new messages_1.ProtocolRequestType(TypeHierarchySupertypesRequest.method);\n})(TypeHierarchySupertypesRequest || (exports.TypeHierarchySupertypesRequest = TypeHierarchySupertypesRequest = {}));\n/**\n * A request to resolve the subtypes for a given `TypeHierarchyItem`.\n *\n * @since 3.17.0\n */\nvar TypeHierarchySubtypesRequest;\n(function (TypeHierarchySubtypesRequest) {\n    TypeHierarchySubtypesRequest.method = 'typeHierarchy/subtypes';\n    TypeHierarchySubtypesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    TypeHierarchySubtypesRequest.type = new messages_1.ProtocolRequestType(TypeHierarchySubtypesRequest.method);\n})(TypeHierarchySubtypesRequest || (exports.TypeHierarchySubtypesRequest = TypeHierarchySubtypesRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlineValueRefreshRequest = exports.InlineValueRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide inline values in a document. The request's parameter is of\n * type {@link InlineValueParams}, the response is of type\n * {@link InlineValue InlineValue[]} or a Thenable that resolves to such.\n *\n * @since 3.17.0\n */\nvar InlineValueRequest;\n(function (InlineValueRequest) {\n    InlineValueRequest.method = 'textDocument/inlineValue';\n    InlineValueRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    InlineValueRequest.type = new messages_1.ProtocolRequestType(InlineValueRequest.method);\n})(InlineValueRequest || (exports.InlineValueRequest = InlineValueRequest = {}));\n/**\n * @since 3.17.0\n */\nvar InlineValueRefreshRequest;\n(function (InlineValueRefreshRequest) {\n    InlineValueRefreshRequest.method = `workspace/inlineValue/refresh`;\n    InlineValueRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    InlineValueRefreshRequest.type = new messages_1.ProtocolRequestType0(InlineValueRefreshRequest.method);\n})(InlineValueRefreshRequest || (exports.InlineValueRefreshRequest = InlineValueRefreshRequest = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlayHintRefreshRequest = exports.InlayHintResolveRequest = exports.InlayHintRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide inlay hints in a document. The request's parameter is of\n * type {@link InlayHintsParams}, the response is of type\n * {@link InlayHint InlayHint[]} or a Thenable that resolves to such.\n *\n * @since 3.17.0\n */\nvar InlayHintRequest;\n(function (InlayHintRequest) {\n    InlayHintRequest.method = 'textDocument/inlayHint';\n    InlayHintRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    InlayHintRequest.type = new messages_1.ProtocolRequestType(InlayHintRequest.method);\n})(InlayHintRequest || (exports.InlayHintRequest = InlayHintRequest = {}));\n/**\n * A request to resolve additional properties for an inlay hint.\n * The request's parameter is of type {@link InlayHint}, the response is\n * of type {@link InlayHint} or a Thenable that resolves to such.\n *\n * @since 3.17.0\n */\nvar InlayHintResolveRequest;\n(function (InlayHintResolveRequest) {\n    InlayHintResolveRequest.method = 'inlayHint/resolve';\n    InlayHintResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    InlayHintResolveRequest.type = new messages_1.ProtocolRequestType(InlayHintResolveRequest.method);\n})(InlayHintResolveRequest || (exports.InlayHintResolveRequest = InlayHintResolveRequest = {}));\n/**\n * @since 3.17.0\n */\nvar InlayHintRefreshRequest;\n(function (InlayHintRefreshRequest) {\n    InlayHintRefreshRequest.method = `workspace/inlayHint/refresh`;\n    InlayHintRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    InlayHintRefreshRequest.type = new messages_1.ProtocolRequestType0(InlayHintRefreshRequest.method);\n})(InlayHintRefreshRequest || (exports.InlayHintRefreshRequest = InlayHintRefreshRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagnosticRefreshRequest = exports.WorkspaceDiagnosticRequest = exports.DocumentDiagnosticRequest = exports.DocumentDiagnosticReportKind = exports.DiagnosticServerCancellationData = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nconst Is = require(\"./utils/is\");\nconst messages_1 = require(\"./messages\");\n/**\n * @since 3.17.0\n */\nvar DiagnosticServerCancellationData;\n(function (DiagnosticServerCancellationData) {\n    function is(value) {\n        const candidate = value;\n        return candidate && Is.boolean(candidate.retriggerRequest);\n    }\n    DiagnosticServerCancellationData.is = is;\n})(DiagnosticServerCancellationData || (exports.DiagnosticServerCancellationData = DiagnosticServerCancellationData = {}));\n/**\n * The document diagnostic report kinds.\n *\n * @since 3.17.0\n */\nvar DocumentDiagnosticReportKind;\n(function (DocumentDiagnosticReportKind) {\n    /**\n     * A diagnostic report with a full\n     * set of problems.\n     */\n    DocumentDiagnosticReportKind.Full = 'full';\n    /**\n     * A report indicating that the last\n     * returned report is still accurate.\n     */\n    DocumentDiagnosticReportKind.Unchanged = 'unchanged';\n})(DocumentDiagnosticReportKind || (exports.DocumentDiagnosticReportKind = DocumentDiagnosticReportKind = {}));\n/**\n * The document diagnostic request definition.\n *\n * @since 3.17.0\n */\nvar DocumentDiagnosticRequest;\n(function (DocumentDiagnosticRequest) {\n    DocumentDiagnosticRequest.method = 'textDocument/diagnostic';\n    DocumentDiagnosticRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentDiagnosticRequest.type = new messages_1.ProtocolRequestType(DocumentDiagnosticRequest.method);\n    DocumentDiagnosticRequest.partialResult = new vscode_jsonrpc_1.ProgressType();\n})(DocumentDiagnosticRequest || (exports.DocumentDiagnosticRequest = DocumentDiagnosticRequest = {}));\n/**\n * The workspace diagnostic request definition.\n *\n * @since 3.17.0\n */\nvar WorkspaceDiagnosticRequest;\n(function (WorkspaceDiagnosticRequest) {\n    WorkspaceDiagnosticRequest.method = 'workspace/diagnostic';\n    WorkspaceDiagnosticRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    WorkspaceDiagnosticRequest.type = new messages_1.ProtocolRequestType(WorkspaceDiagnosticRequest.method);\n    WorkspaceDiagnosticRequest.partialResult = new vscode_jsonrpc_1.ProgressType();\n})(WorkspaceDiagnosticRequest || (exports.WorkspaceDiagnosticRequest = WorkspaceDiagnosticRequest = {}));\n/**\n * The diagnostic refresh request definition.\n *\n * @since 3.17.0\n */\nvar DiagnosticRefreshRequest;\n(function (DiagnosticRefreshRequest) {\n    DiagnosticRefreshRequest.method = `workspace/diagnostic/refresh`;\n    DiagnosticRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    DiagnosticRefreshRequest.type = new messages_1.ProtocolRequestType0(DiagnosticRefreshRequest.method);\n})(DiagnosticRefreshRequest || (exports.DiagnosticRefreshRequest = DiagnosticRefreshRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DidCloseNotebookDocumentNotification = exports.DidSaveNotebookDocumentNotification = exports.DidChangeNotebookDocumentNotification = exports.NotebookCellArrayChange = exports.DidOpenNotebookDocumentNotification = exports.NotebookDocumentSyncRegistrationType = exports.NotebookDocument = exports.NotebookCell = exports.ExecutionSummary = exports.NotebookCellKind = void 0;\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst Is = require(\"./utils/is\");\nconst messages_1 = require(\"./messages\");\n/**\n * A notebook cell kind.\n *\n * @since 3.17.0\n */\nvar NotebookCellKind;\n(function (NotebookCellKind) {\n    /**\n     * A markup-cell is formatted source that is used for display.\n     */\n    NotebookCellKind.Markup = 1;\n    /**\n     * A code-cell is source code.\n     */\n    NotebookCellKind.Code = 2;\n    function is(value) {\n        return value === 1 || value === 2;\n    }\n    NotebookCellKind.is = is;\n})(NotebookCellKind || (exports.NotebookCellKind = NotebookCellKind = {}));\nvar ExecutionSummary;\n(function (ExecutionSummary) {\n    function create(executionOrder, success) {\n        const result = { executionOrder };\n        if (success === true || success === false) {\n            result.success = success;\n        }\n        return result;\n    }\n    ExecutionSummary.create = create;\n    function is(value) {\n        const candidate = value;\n        return Is.objectLiteral(candidate) && vscode_languageserver_types_1.uinteger.is(candidate.executionOrder) && (candidate.success === undefined || Is.boolean(candidate.success));\n    }\n    ExecutionSummary.is = is;\n    function equals(one, other) {\n        if (one === other) {\n            return true;\n        }\n        if (one === null || one === undefined || other === null || other === undefined) {\n            return false;\n        }\n        return one.executionOrder === other.executionOrder && one.success === other.success;\n    }\n    ExecutionSummary.equals = equals;\n})(ExecutionSummary || (exports.ExecutionSummary = ExecutionSummary = {}));\nvar NotebookCell;\n(function (NotebookCell) {\n    function create(kind, document) {\n        return { kind, document };\n    }\n    NotebookCell.create = create;\n    function is(value) {\n        const candidate = value;\n        return Is.objectLiteral(candidate) && NotebookCellKind.is(candidate.kind) && vscode_languageserver_types_1.DocumentUri.is(candidate.document) &&\n            (candidate.metadata === undefined || Is.objectLiteral(candidate.metadata));\n    }\n    NotebookCell.is = is;\n    function diff(one, two) {\n        const result = new Set();\n        if (one.document !== two.document) {\n            result.add('document');\n        }\n        if (one.kind !== two.kind) {\n            result.add('kind');\n        }\n        if (one.executionSummary !== two.executionSummary) {\n            result.add('executionSummary');\n        }\n        if ((one.metadata !== undefined || two.metadata !== undefined) && !equalsMetadata(one.metadata, two.metadata)) {\n            result.add('metadata');\n        }\n        if ((one.executionSummary !== undefined || two.executionSummary !== undefined) && !ExecutionSummary.equals(one.executionSummary, two.executionSummary)) {\n            result.add('executionSummary');\n        }\n        return result;\n    }\n    NotebookCell.diff = diff;\n    function equalsMetadata(one, other) {\n        if (one === other) {\n            return true;\n        }\n        if (one === null || one === undefined || other === null || other === undefined) {\n            return false;\n        }\n        if (typeof one !== typeof other) {\n            return false;\n        }\n        if (typeof one !== 'object') {\n            return false;\n        }\n        const oneArray = Array.isArray(one);\n        const otherArray = Array.isArray(other);\n        if (oneArray !== otherArray) {\n            return false;\n        }\n        if (oneArray && otherArray) {\n            if (one.length !== other.length) {\n                return false;\n            }\n            for (let i = 0; i < one.length; i++) {\n                if (!equalsMetadata(one[i], other[i])) {\n                    return false;\n                }\n            }\n        }\n        if (Is.objectLiteral(one) && Is.objectLiteral(other)) {\n            const oneKeys = Object.keys(one);\n            const otherKeys = Object.keys(other);\n            if (oneKeys.length !== otherKeys.length) {\n                return false;\n            }\n            oneKeys.sort();\n            otherKeys.sort();\n            if (!equalsMetadata(oneKeys, otherKeys)) {\n                return false;\n            }\n            for (let i = 0; i < oneKeys.length; i++) {\n                const prop = oneKeys[i];\n                if (!equalsMetadata(one[prop], other[prop])) {\n                    return false;\n                }\n            }\n        }\n        return true;\n    }\n})(NotebookCell || (exports.NotebookCell = NotebookCell = {}));\nvar NotebookDocument;\n(function (NotebookDocument) {\n    function create(uri, notebookType, version, cells) {\n        return { uri, notebookType, version, cells };\n    }\n    NotebookDocument.create = create;\n    function is(value) {\n        const candidate = value;\n        return Is.objectLiteral(candidate) && Is.string(candidate.uri) && vscode_languageserver_types_1.integer.is(candidate.version) && Is.typedArray(candidate.cells, NotebookCell.is);\n    }\n    NotebookDocument.is = is;\n})(NotebookDocument || (exports.NotebookDocument = NotebookDocument = {}));\nvar NotebookDocumentSyncRegistrationType;\n(function (NotebookDocumentSyncRegistrationType) {\n    NotebookDocumentSyncRegistrationType.method = 'notebookDocument/sync';\n    NotebookDocumentSyncRegistrationType.messageDirection = messages_1.MessageDirection.clientToServer;\n    NotebookDocumentSyncRegistrationType.type = new messages_1.RegistrationType(NotebookDocumentSyncRegistrationType.method);\n})(NotebookDocumentSyncRegistrationType || (exports.NotebookDocumentSyncRegistrationType = NotebookDocumentSyncRegistrationType = {}));\n/**\n * A notification sent when a notebook opens.\n *\n * @since 3.17.0\n */\nvar DidOpenNotebookDocumentNotification;\n(function (DidOpenNotebookDocumentNotification) {\n    DidOpenNotebookDocumentNotification.method = 'notebookDocument/didOpen';\n    DidOpenNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidOpenNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidOpenNotebookDocumentNotification.method);\n    DidOpenNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidOpenNotebookDocumentNotification || (exports.DidOpenNotebookDocumentNotification = DidOpenNotebookDocumentNotification = {}));\nvar NotebookCellArrayChange;\n(function (NotebookCellArrayChange) {\n    function is(value) {\n        const candidate = value;\n        return Is.objectLiteral(candidate) && vscode_languageserver_types_1.uinteger.is(candidate.start) && vscode_languageserver_types_1.uinteger.is(candidate.deleteCount) && (candidate.cells === undefined || Is.typedArray(candidate.cells, NotebookCell.is));\n    }\n    NotebookCellArrayChange.is = is;\n    function create(start, deleteCount, cells) {\n        const result = { start, deleteCount };\n        if (cells !== undefined) {\n            result.cells = cells;\n        }\n        return result;\n    }\n    NotebookCellArrayChange.create = create;\n})(NotebookCellArrayChange || (exports.NotebookCellArrayChange = NotebookCellArrayChange = {}));\nvar DidChangeNotebookDocumentNotification;\n(function (DidChangeNotebookDocumentNotification) {\n    DidChangeNotebookDocumentNotification.method = 'notebookDocument/didChange';\n    DidChangeNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidChangeNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidChangeNotebookDocumentNotification.method);\n    DidChangeNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidChangeNotebookDocumentNotification || (exports.DidChangeNotebookDocumentNotification = DidChangeNotebookDocumentNotification = {}));\n/**\n * A notification sent when a notebook document is saved.\n *\n * @since 3.17.0\n */\nvar DidSaveNotebookDocumentNotification;\n(function (DidSaveNotebookDocumentNotification) {\n    DidSaveNotebookDocumentNotification.method = 'notebookDocument/didSave';\n    DidSaveNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidSaveNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidSaveNotebookDocumentNotification.method);\n    DidSaveNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidSaveNotebookDocumentNotification || (exports.DidSaveNotebookDocumentNotification = DidSaveNotebookDocumentNotification = {}));\n/**\n * A notification sent when a notebook closes.\n *\n * @since 3.17.0\n */\nvar DidCloseNotebookDocumentNotification;\n(function (DidCloseNotebookDocumentNotification) {\n    DidCloseNotebookDocumentNotification.method = 'notebookDocument/didClose';\n    DidCloseNotebookDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidCloseNotebookDocumentNotification.type = new messages_1.ProtocolNotificationType(DidCloseNotebookDocumentNotification.method);\n    DidCloseNotebookDocumentNotification.registrationMethod = NotebookDocumentSyncRegistrationType.method;\n})(DidCloseNotebookDocumentNotification || (exports.DidCloseNotebookDocumentNotification = DidCloseNotebookDocumentNotification = {}));\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlineCompletionRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * A request to provide inline completions in a document. The request's parameter is of\n * type {@link InlineCompletionParams}, the response is of type\n * {@link InlineCompletion InlineCompletion[]} or a Thenable that resolves to such.\n *\n * @since 3.18.0\n * @proposed\n */\nvar InlineCompletionRequest;\n(function (InlineCompletionRequest) {\n    InlineCompletionRequest.method = 'textDocument/inlineCompletion';\n    InlineCompletionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    InlineCompletionRequest.type = new messages_1.ProtocolRequestType(InlineCompletionRequest.method);\n})(InlineCompletionRequest || (exports.InlineCompletionRequest = InlineCompletionRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceSymbolRequest = exports.CodeActionResolveRequest = exports.CodeActionRequest = exports.DocumentSymbolRequest = exports.DocumentHighlightRequest = exports.ReferencesRequest = exports.DefinitionRequest = exports.SignatureHelpRequest = exports.SignatureHelpTriggerKind = exports.HoverRequest = exports.CompletionResolveRequest = exports.CompletionRequest = exports.CompletionTriggerKind = exports.PublishDiagnosticsNotification = exports.WatchKind = exports.RelativePattern = exports.FileChangeType = exports.DidChangeWatchedFilesNotification = exports.WillSaveTextDocumentWaitUntilRequest = exports.WillSaveTextDocumentNotification = exports.TextDocumentSaveReason = exports.DidSaveTextDocumentNotification = exports.DidCloseTextDocumentNotification = exports.DidChangeTextDocumentNotification = exports.TextDocumentContentChangeEvent = exports.DidOpenTextDocumentNotification = exports.TextDocumentSyncKind = exports.TelemetryEventNotification = exports.LogMessageNotification = exports.ShowMessageRequest = exports.ShowMessageNotification = exports.MessageType = exports.DidChangeConfigurationNotification = exports.ExitNotification = exports.ShutdownRequest = exports.InitializedNotification = exports.InitializeErrorCodes = exports.InitializeRequest = exports.WorkDoneProgressOptions = exports.TextDocumentRegistrationOptions = exports.StaticRegistrationOptions = exports.PositionEncodingKind = exports.FailureHandlingKind = exports.ResourceOperationKind = exports.UnregistrationRequest = exports.RegistrationRequest = exports.DocumentSelector = exports.NotebookCellTextDocumentFilter = exports.NotebookDocumentFilter = exports.TextDocumentFilter = void 0;\nexports.MonikerRequest = exports.MonikerKind = exports.UniquenessLevel = exports.WillDeleteFilesRequest = exports.DidDeleteFilesNotification = exports.WillRenameFilesRequest = exports.DidRenameFilesNotification = exports.WillCreateFilesRequest = exports.DidCreateFilesNotification = exports.FileOperationPatternKind = exports.LinkedEditingRangeRequest = exports.ShowDocumentRequest = exports.SemanticTokensRegistrationType = exports.SemanticTokensRefreshRequest = exports.SemanticTokensRangeRequest = exports.SemanticTokensDeltaRequest = exports.SemanticTokensRequest = exports.TokenFormat = exports.CallHierarchyPrepareRequest = exports.CallHierarchyOutgoingCallsRequest = exports.CallHierarchyIncomingCallsRequest = exports.WorkDoneProgressCancelNotification = exports.WorkDoneProgressCreateRequest = exports.WorkDoneProgress = exports.SelectionRangeRequest = exports.DeclarationRequest = exports.FoldingRangeRefreshRequest = exports.FoldingRangeRequest = exports.ColorPresentationRequest = exports.DocumentColorRequest = exports.ConfigurationRequest = exports.DidChangeWorkspaceFoldersNotification = exports.WorkspaceFoldersRequest = exports.TypeDefinitionRequest = exports.ImplementationRequest = exports.ApplyWorkspaceEditRequest = exports.ExecuteCommandRequest = exports.PrepareRenameRequest = exports.RenameRequest = exports.PrepareSupportDefaultBehavior = exports.DocumentOnTypeFormattingRequest = exports.DocumentRangesFormattingRequest = exports.DocumentRangeFormattingRequest = exports.DocumentFormattingRequest = exports.DocumentLinkResolveRequest = exports.DocumentLinkRequest = exports.CodeLensRefreshRequest = exports.CodeLensResolveRequest = exports.CodeLensRequest = exports.WorkspaceSymbolResolveRequest = void 0;\nexports.InlineCompletionRequest = exports.DidCloseNotebookDocumentNotification = exports.DidSaveNotebookDocumentNotification = exports.DidChangeNotebookDocumentNotification = exports.NotebookCellArrayChange = exports.DidOpenNotebookDocumentNotification = exports.NotebookDocumentSyncRegistrationType = exports.NotebookDocument = exports.NotebookCell = exports.ExecutionSummary = exports.NotebookCellKind = exports.DiagnosticRefreshRequest = exports.WorkspaceDiagnosticRequest = exports.DocumentDiagnosticRequest = exports.DocumentDiagnosticReportKind = exports.DiagnosticServerCancellationData = exports.InlayHintRefreshRequest = exports.InlayHintResolveRequest = exports.InlayHintRequest = exports.InlineValueRefreshRequest = exports.InlineValueRequest = exports.TypeHierarchySupertypesRequest = exports.TypeHierarchySubtypesRequest = exports.TypeHierarchyPrepareRequest = void 0;\nconst messages_1 = require(\"./messages\");\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst Is = require(\"./utils/is\");\nconst protocol_implementation_1 = require(\"./protocol.implementation\");\nObject.defineProperty(exports, \"ImplementationRequest\", { enumerable: true, get: function () { return protocol_implementation_1.ImplementationRequest; } });\nconst protocol_typeDefinition_1 = require(\"./protocol.typeDefinition\");\nObject.defineProperty(exports, \"TypeDefinitionRequest\", { enumerable: true, get: function () { return protocol_typeDefinition_1.TypeDefinitionRequest; } });\nconst protocol_workspaceFolder_1 = require(\"./protocol.workspaceFolder\");\nObject.defineProperty(exports, \"WorkspaceFoldersRequest\", { enumerable: true, get: function () { return protocol_workspaceFolder_1.WorkspaceFoldersRequest; } });\nObject.defineProperty(exports, \"DidChangeWorkspaceFoldersNotification\", { enumerable: true, get: function () { return protocol_workspaceFolder_1.DidChangeWorkspaceFoldersNotification; } });\nconst protocol_configuration_1 = require(\"./protocol.configuration\");\nObject.defineProperty(exports, \"ConfigurationRequest\", { enumerable: true, get: function () { return protocol_configuration_1.ConfigurationRequest; } });\nconst protocol_colorProvider_1 = require(\"./protocol.colorProvider\");\nObject.defineProperty(exports, \"DocumentColorRequest\", { enumerable: true, get: function () { return protocol_colorProvider_1.DocumentColorRequest; } });\nObject.defineProperty(exports, \"ColorPresentationRequest\", { enumerable: true, get: function () { return protocol_colorProvider_1.ColorPresentationRequest; } });\nconst protocol_foldingRange_1 = require(\"./protocol.foldingRange\");\nObject.defineProperty(exports, \"FoldingRangeRequest\", { enumerable: true, get: function () { return protocol_foldingRange_1.FoldingRangeRequest; } });\nObject.defineProperty(exports, \"FoldingRangeRefreshRequest\", { enumerable: true, get: function () { return protocol_foldingRange_1.FoldingRangeRefreshRequest; } });\nconst protocol_declaration_1 = require(\"./protocol.declaration\");\nObject.defineProperty(exports, \"DeclarationRequest\", { enumerable: true, get: function () { return protocol_declaration_1.DeclarationRequest; } });\nconst protocol_selectionRange_1 = require(\"./protocol.selectionRange\");\nObject.defineProperty(exports, \"SelectionRangeRequest\", { enumerable: true, get: function () { return protocol_selectionRange_1.SelectionRangeRequest; } });\nconst protocol_progress_1 = require(\"./protocol.progress\");\nObject.defineProperty(exports, \"WorkDoneProgress\", { enumerable: true, get: function () { return protocol_progress_1.WorkDoneProgress; } });\nObject.defineProperty(exports, \"WorkDoneProgressCreateRequest\", { enumerable: true, get: function () { return protocol_progress_1.WorkDoneProgressCreateRequest; } });\nObject.defineProperty(exports, \"WorkDoneProgressCancelNotification\", { enumerable: true, get: function () { return protocol_progress_1.WorkDoneProgressCancelNotification; } });\nconst protocol_callHierarchy_1 = require(\"./protocol.callHierarchy\");\nObject.defineProperty(exports, \"CallHierarchyIncomingCallsRequest\", { enumerable: true, get: function () { return protocol_callHierarchy_1.CallHierarchyIncomingCallsRequest; } });\nObject.defineProperty(exports, \"CallHierarchyOutgoingCallsRequest\", { enumerable: true, get: function () { return protocol_callHierarchy_1.CallHierarchyOutgoingCallsRequest; } });\nObject.defineProperty(exports, \"CallHierarchyPrepareRequest\", { enumerable: true, get: function () { return protocol_callHierarchy_1.CallHierarchyPrepareRequest; } });\nconst protocol_semanticTokens_1 = require(\"./protocol.semanticTokens\");\nObject.defineProperty(exports, \"TokenFormat\", { enumerable: true, get: function () { return protocol_semanticTokens_1.TokenFormat; } });\nObject.defineProperty(exports, \"SemanticTokensRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRequest; } });\nObject.defineProperty(exports, \"SemanticTokensDeltaRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensDeltaRequest; } });\nObject.defineProperty(exports, \"SemanticTokensRangeRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRangeRequest; } });\nObject.defineProperty(exports, \"SemanticTokensRefreshRequest\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRefreshRequest; } });\nObject.defineProperty(exports, \"SemanticTokensRegistrationType\", { enumerable: true, get: function () { return protocol_semanticTokens_1.SemanticTokensRegistrationType; } });\nconst protocol_showDocument_1 = require(\"./protocol.showDocument\");\nObject.defineProperty(exports, \"ShowDocumentRequest\", { enumerable: true, get: function () { return protocol_showDocument_1.ShowDocumentRequest; } });\nconst protocol_linkedEditingRange_1 = require(\"./protocol.linkedEditingRange\");\nObject.defineProperty(exports, \"LinkedEditingRangeRequest\", { enumerable: true, get: function () { return protocol_linkedEditingRange_1.LinkedEditingRangeRequest; } });\nconst protocol_fileOperations_1 = require(\"./protocol.fileOperations\");\nObject.defineProperty(exports, \"FileOperationPatternKind\", { enumerable: true, get: function () { return protocol_fileOperations_1.FileOperationPatternKind; } });\nObject.defineProperty(exports, \"DidCreateFilesNotification\", { enumerable: true, get: function () { return protocol_fileOperations_1.DidCreateFilesNotification; } });\nObject.defineProperty(exports, \"WillCreateFilesRequest\", { enumerable: true, get: function () { return protocol_fileOperations_1.WillCreateFilesRequest; } });\nObject.defineProperty(exports, \"DidRenameFilesNotification\", { enumerable: true, get: function () { return protocol_fileOperations_1.DidRenameFilesNotification; } });\nObject.defineProperty(exports, \"WillRenameFilesRequest\", { enumerable: true, get: function () { return protocol_fileOperations_1.WillRenameFilesRequest; } });\nObject.defineProperty(exports, \"DidDeleteFilesNotification\", { enumerable: true, get: function () { return protocol_fileOperations_1.DidDeleteFilesNotification; } });\nObject.defineProperty(exports, \"WillDeleteFilesRequest\", { enumerable: true, get: function () { return protocol_fileOperations_1.WillDeleteFilesRequest; } });\nconst protocol_moniker_1 = require(\"./protocol.moniker\");\nObject.defineProperty(exports, \"UniquenessLevel\", { enumerable: true, get: function () { return protocol_moniker_1.UniquenessLevel; } });\nObject.defineProperty(exports, \"MonikerKind\", { enumerable: true, get: function () { return protocol_moniker_1.MonikerKind; } });\nObject.defineProperty(exports, \"MonikerRequest\", { enumerable: true, get: function () { return protocol_moniker_1.MonikerRequest; } });\nconst protocol_typeHierarchy_1 = require(\"./protocol.typeHierarchy\");\nObject.defineProperty(exports, \"TypeHierarchyPrepareRequest\", { enumerable: true, get: function () { return protocol_typeHierarchy_1.TypeHierarchyPrepareRequest; } });\nObject.defineProperty(exports, \"TypeHierarchySubtypesRequest\", { enumerable: true, get: function () { return protocol_typeHierarchy_1.TypeHierarchySubtypesRequest; } });\nObject.defineProperty(exports, \"TypeHierarchySupertypesRequest\", { enumerable: true, get: function () { return protocol_typeHierarchy_1.TypeHierarchySupertypesRequest; } });\nconst protocol_inlineValue_1 = require(\"./protocol.inlineValue\");\nObject.defineProperty(exports, \"InlineValueRequest\", { enumerable: true, get: function () { return protocol_inlineValue_1.InlineValueRequest; } });\nObject.defineProperty(exports, \"InlineValueRefreshRequest\", { enumerable: true, get: function () { return protocol_inlineValue_1.InlineValueRefreshRequest; } });\nconst protocol_inlayHint_1 = require(\"./protocol.inlayHint\");\nObject.defineProperty(exports, \"InlayHintRequest\", { enumerable: true, get: function () { return protocol_inlayHint_1.InlayHintRequest; } });\nObject.defineProperty(exports, \"InlayHintResolveRequest\", { enumerable: true, get: function () { return protocol_inlayHint_1.InlayHintResolveRequest; } });\nObject.defineProperty(exports, \"InlayHintRefreshRequest\", { enumerable: true, get: function () { return protocol_inlayHint_1.InlayHintRefreshRequest; } });\nconst protocol_diagnostic_1 = require(\"./protocol.diagnostic\");\nObject.defineProperty(exports, \"DiagnosticServerCancellationData\", { enumerable: true, get: function () { return protocol_diagnostic_1.DiagnosticServerCancellationData; } });\nObject.defineProperty(exports, \"DocumentDiagnosticReportKind\", { enumerable: true, get: function () { return protocol_diagnostic_1.DocumentDiagnosticReportKind; } });\nObject.defineProperty(exports, \"DocumentDiagnosticRequest\", { enumerable: true, get: function () { return protocol_diagnostic_1.DocumentDiagnosticRequest; } });\nObject.defineProperty(exports, \"WorkspaceDiagnosticRequest\", { enumerable: true, get: function () { return protocol_diagnostic_1.WorkspaceDiagnosticRequest; } });\nObject.defineProperty(exports, \"DiagnosticRefreshRequest\", { enumerable: true, get: function () { return protocol_diagnostic_1.DiagnosticRefreshRequest; } });\nconst protocol_notebook_1 = require(\"./protocol.notebook\");\nObject.defineProperty(exports, \"NotebookCellKind\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookCellKind; } });\nObject.defineProperty(exports, \"ExecutionSummary\", { enumerable: true, get: function () { return protocol_notebook_1.ExecutionSummary; } });\nObject.defineProperty(exports, \"NotebookCell\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookCell; } });\nObject.defineProperty(exports, \"NotebookDocument\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookDocument; } });\nObject.defineProperty(exports, \"NotebookDocumentSyncRegistrationType\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookDocumentSyncRegistrationType; } });\nObject.defineProperty(exports, \"DidOpenNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidOpenNotebookDocumentNotification; } });\nObject.defineProperty(exports, \"NotebookCellArrayChange\", { enumerable: true, get: function () { return protocol_notebook_1.NotebookCellArrayChange; } });\nObject.defineProperty(exports, \"DidChangeNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidChangeNotebookDocumentNotification; } });\nObject.defineProperty(exports, \"DidSaveNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidSaveNotebookDocumentNotification; } });\nObject.defineProperty(exports, \"DidCloseNotebookDocumentNotification\", { enumerable: true, get: function () { return protocol_notebook_1.DidCloseNotebookDocumentNotification; } });\nconst protocol_inlineCompletion_1 = require(\"./protocol.inlineCompletion\");\nObject.defineProperty(exports, \"InlineCompletionRequest\", { enumerable: true, get: function () { return protocol_inlineCompletion_1.InlineCompletionRequest; } });\n// @ts-ignore: to avoid inlining LocationLink as dynamic import\nlet __noDynamicImport;\n/**\n * The TextDocumentFilter namespace provides helper functions to work with\n * {@link TextDocumentFilter} literals.\n *\n * @since 3.17.0\n */\nvar TextDocumentFilter;\n(function (TextDocumentFilter) {\n    function is(value) {\n        const candidate = value;\n        return Is.string(candidate) || (Is.string(candidate.language) || Is.string(candidate.scheme) || Is.string(candidate.pattern));\n    }\n    TextDocumentFilter.is = is;\n})(TextDocumentFilter || (exports.TextDocumentFilter = TextDocumentFilter = {}));\n/**\n * The NotebookDocumentFilter namespace provides helper functions to work with\n * {@link NotebookDocumentFilter} literals.\n *\n * @since 3.17.0\n */\nvar NotebookDocumentFilter;\n(function (NotebookDocumentFilter) {\n    function is(value) {\n        const candidate = value;\n        return Is.objectLiteral(candidate) && (Is.string(candidate.notebookType) || Is.string(candidate.scheme) || Is.string(candidate.pattern));\n    }\n    NotebookDocumentFilter.is = is;\n})(NotebookDocumentFilter || (exports.NotebookDocumentFilter = NotebookDocumentFilter = {}));\n/**\n * The NotebookCellTextDocumentFilter namespace provides helper functions to work with\n * {@link NotebookCellTextDocumentFilter} literals.\n *\n * @since 3.17.0\n */\nvar NotebookCellTextDocumentFilter;\n(function (NotebookCellTextDocumentFilter) {\n    function is(value) {\n        const candidate = value;\n        return Is.objectLiteral(candidate)\n            && (Is.string(candidate.notebook) || NotebookDocumentFilter.is(candidate.notebook))\n            && (candidate.language === undefined || Is.string(candidate.language));\n    }\n    NotebookCellTextDocumentFilter.is = is;\n})(NotebookCellTextDocumentFilter || (exports.NotebookCellTextDocumentFilter = NotebookCellTextDocumentFilter = {}));\n/**\n * The DocumentSelector namespace provides helper functions to work with\n * {@link DocumentSelector}s.\n */\nvar DocumentSelector;\n(function (DocumentSelector) {\n    function is(value) {\n        if (!Array.isArray(value)) {\n            return false;\n        }\n        for (let elem of value) {\n            if (!Is.string(elem) && !TextDocumentFilter.is(elem) && !NotebookCellTextDocumentFilter.is(elem)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    DocumentSelector.is = is;\n})(DocumentSelector || (exports.DocumentSelector = DocumentSelector = {}));\n/**\n * The `client/registerCapability` request is sent from the server to the client to register a new capability\n * handler on the client side.\n */\nvar RegistrationRequest;\n(function (RegistrationRequest) {\n    RegistrationRequest.method = 'client/registerCapability';\n    RegistrationRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    RegistrationRequest.type = new messages_1.ProtocolRequestType(RegistrationRequest.method);\n})(RegistrationRequest || (exports.RegistrationRequest = RegistrationRequest = {}));\n/**\n * The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability\n * handler on the client side.\n */\nvar UnregistrationRequest;\n(function (UnregistrationRequest) {\n    UnregistrationRequest.method = 'client/unregisterCapability';\n    UnregistrationRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    UnregistrationRequest.type = new messages_1.ProtocolRequestType(UnregistrationRequest.method);\n})(UnregistrationRequest || (exports.UnregistrationRequest = UnregistrationRequest = {}));\nvar ResourceOperationKind;\n(function (ResourceOperationKind) {\n    /**\n     * Supports creating new files and folders.\n     */\n    ResourceOperationKind.Create = 'create';\n    /**\n     * Supports renaming existing files and folders.\n     */\n    ResourceOperationKind.Rename = 'rename';\n    /**\n     * Supports deleting existing files and folders.\n     */\n    ResourceOperationKind.Delete = 'delete';\n})(ResourceOperationKind || (exports.ResourceOperationKind = ResourceOperationKind = {}));\nvar FailureHandlingKind;\n(function (FailureHandlingKind) {\n    /**\n     * Applying the workspace change is simply aborted if one of the changes provided\n     * fails. All operations executed before the failing operation stay executed.\n     */\n    FailureHandlingKind.Abort = 'abort';\n    /**\n     * All operations are executed transactional. That means they either all\n     * succeed or no changes at all are applied to the workspace.\n     */\n    FailureHandlingKind.Transactional = 'transactional';\n    /**\n     * If the workspace edit contains only textual file changes they are executed transactional.\n     * If resource changes (create, rename or delete file) are part of the change the failure\n     * handling strategy is abort.\n     */\n    FailureHandlingKind.TextOnlyTransactional = 'textOnlyTransactional';\n    /**\n     * The client tries to undo the operations already executed. But there is no\n     * guarantee that this is succeeding.\n     */\n    FailureHandlingKind.Undo = 'undo';\n})(FailureHandlingKind || (exports.FailureHandlingKind = FailureHandlingKind = {}));\n/**\n * A set of predefined position encoding kinds.\n *\n * @since 3.17.0\n */\nvar PositionEncodingKind;\n(function (PositionEncodingKind) {\n    /**\n     * Character offsets count UTF-8 code units (e.g. bytes).\n     */\n    PositionEncodingKind.UTF8 = 'utf-8';\n    /**\n     * Character offsets count UTF-16 code units.\n     *\n     * This is the default and must always be supported\n     * by servers\n     */\n    PositionEncodingKind.UTF16 = 'utf-16';\n    /**\n     * Character offsets count UTF-32 code units.\n     *\n     * Implementation note: these are the same as Unicode codepoints,\n     * so this `PositionEncodingKind` may also be used for an\n     * encoding-agnostic representation of character offsets.\n     */\n    PositionEncodingKind.UTF32 = 'utf-32';\n})(PositionEncodingKind || (exports.PositionEncodingKind = PositionEncodingKind = {}));\n/**\n * The StaticRegistrationOptions namespace provides helper functions to work with\n * {@link StaticRegistrationOptions} literals.\n */\nvar StaticRegistrationOptions;\n(function (StaticRegistrationOptions) {\n    function hasId(value) {\n        const candidate = value;\n        return candidate && Is.string(candidate.id) && candidate.id.length > 0;\n    }\n    StaticRegistrationOptions.hasId = hasId;\n})(StaticRegistrationOptions || (exports.StaticRegistrationOptions = StaticRegistrationOptions = {}));\n/**\n * The TextDocumentRegistrationOptions namespace provides helper functions to work with\n * {@link TextDocumentRegistrationOptions} literals.\n */\nvar TextDocumentRegistrationOptions;\n(function (TextDocumentRegistrationOptions) {\n    function is(value) {\n        const candidate = value;\n        return candidate && (candidate.documentSelector === null || DocumentSelector.is(candidate.documentSelector));\n    }\n    TextDocumentRegistrationOptions.is = is;\n})(TextDocumentRegistrationOptions || (exports.TextDocumentRegistrationOptions = TextDocumentRegistrationOptions = {}));\n/**\n * The WorkDoneProgressOptions namespace provides helper functions to work with\n * {@link WorkDoneProgressOptions} literals.\n */\nvar WorkDoneProgressOptions;\n(function (WorkDoneProgressOptions) {\n    function is(value) {\n        const candidate = value;\n        return Is.objectLiteral(candidate) && (candidate.workDoneProgress === undefined || Is.boolean(candidate.workDoneProgress));\n    }\n    WorkDoneProgressOptions.is = is;\n    function hasWorkDoneProgress(value) {\n        const candidate = value;\n        return candidate && Is.boolean(candidate.workDoneProgress);\n    }\n    WorkDoneProgressOptions.hasWorkDoneProgress = hasWorkDoneProgress;\n})(WorkDoneProgressOptions || (exports.WorkDoneProgressOptions = WorkDoneProgressOptions = {}));\n/**\n * The initialize request is sent from the client to the server.\n * It is sent once as the request after starting up the server.\n * The requests parameter is of type {@link InitializeParams}\n * the response if of type {@link InitializeResult} of a Thenable that\n * resolves to such.\n */\nvar InitializeRequest;\n(function (InitializeRequest) {\n    InitializeRequest.method = 'initialize';\n    InitializeRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    InitializeRequest.type = new messages_1.ProtocolRequestType(InitializeRequest.method);\n})(InitializeRequest || (exports.InitializeRequest = InitializeRequest = {}));\n/**\n * Known error codes for an `InitializeErrorCodes`;\n */\nvar InitializeErrorCodes;\n(function (InitializeErrorCodes) {\n    /**\n     * If the protocol version provided by the client can't be handled by the server.\n     *\n     * @deprecated This initialize error got replaced by client capabilities. There is\n     * no version handshake in version 3.0x\n     */\n    InitializeErrorCodes.unknownProtocolVersion = 1;\n})(InitializeErrorCodes || (exports.InitializeErrorCodes = InitializeErrorCodes = {}));\n/**\n * The initialized notification is sent from the client to the\n * server after the client is fully initialized and the server\n * is allowed to send requests from the server to the client.\n */\nvar InitializedNotification;\n(function (InitializedNotification) {\n    InitializedNotification.method = 'initialized';\n    InitializedNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    InitializedNotification.type = new messages_1.ProtocolNotificationType(InitializedNotification.method);\n})(InitializedNotification || (exports.InitializedNotification = InitializedNotification = {}));\n//---- Shutdown Method ----\n/**\n * A shutdown request is sent from the client to the server.\n * It is sent once when the client decides to shutdown the\n * server. The only notification that is sent after a shutdown request\n * is the exit event.\n */\nvar ShutdownRequest;\n(function (ShutdownRequest) {\n    ShutdownRequest.method = 'shutdown';\n    ShutdownRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    ShutdownRequest.type = new messages_1.ProtocolRequestType0(ShutdownRequest.method);\n})(ShutdownRequest || (exports.ShutdownRequest = ShutdownRequest = {}));\n//---- Exit Notification ----\n/**\n * The exit event is sent from the client to the server to\n * ask the server to exit its process.\n */\nvar ExitNotification;\n(function (ExitNotification) {\n    ExitNotification.method = 'exit';\n    ExitNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    ExitNotification.type = new messages_1.ProtocolNotificationType0(ExitNotification.method);\n})(ExitNotification || (exports.ExitNotification = ExitNotification = {}));\n/**\n * The configuration change notification is sent from the client to the server\n * when the client's configuration has changed. The notification contains\n * the changed configuration as defined by the language client.\n */\nvar DidChangeConfigurationNotification;\n(function (DidChangeConfigurationNotification) {\n    DidChangeConfigurationNotification.method = 'workspace/didChangeConfiguration';\n    DidChangeConfigurationNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidChangeConfigurationNotification.type = new messages_1.ProtocolNotificationType(DidChangeConfigurationNotification.method);\n})(DidChangeConfigurationNotification || (exports.DidChangeConfigurationNotification = DidChangeConfigurationNotification = {}));\n//---- Message show and log notifications ----\n/**\n * The message type\n */\nvar MessageType;\n(function (MessageType) {\n    /**\n     * An error message.\n     */\n    MessageType.Error = 1;\n    /**\n     * A warning message.\n     */\n    MessageType.Warning = 2;\n    /**\n     * An information message.\n     */\n    MessageType.Info = 3;\n    /**\n     * A log message.\n     */\n    MessageType.Log = 4;\n    /**\n     * A debug message.\n     *\n     * @since 3.18.0\n     */\n    MessageType.Debug = 5;\n})(MessageType || (exports.MessageType = MessageType = {}));\n/**\n * The show message notification is sent from a server to a client to ask\n * the client to display a particular message in the user interface.\n */\nvar ShowMessageNotification;\n(function (ShowMessageNotification) {\n    ShowMessageNotification.method = 'window/showMessage';\n    ShowMessageNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n    ShowMessageNotification.type = new messages_1.ProtocolNotificationType(ShowMessageNotification.method);\n})(ShowMessageNotification || (exports.ShowMessageNotification = ShowMessageNotification = {}));\n/**\n * The show message request is sent from the server to the client to show a message\n * and a set of options actions to the user.\n */\nvar ShowMessageRequest;\n(function (ShowMessageRequest) {\n    ShowMessageRequest.method = 'window/showMessageRequest';\n    ShowMessageRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    ShowMessageRequest.type = new messages_1.ProtocolRequestType(ShowMessageRequest.method);\n})(ShowMessageRequest || (exports.ShowMessageRequest = ShowMessageRequest = {}));\n/**\n * The log message notification is sent from the server to the client to ask\n * the client to log a particular message.\n */\nvar LogMessageNotification;\n(function (LogMessageNotification) {\n    LogMessageNotification.method = 'window/logMessage';\n    LogMessageNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n    LogMessageNotification.type = new messages_1.ProtocolNotificationType(LogMessageNotification.method);\n})(LogMessageNotification || (exports.LogMessageNotification = LogMessageNotification = {}));\n//---- Telemetry notification\n/**\n * The telemetry event notification is sent from the server to the client to ask\n * the client to log telemetry data.\n */\nvar TelemetryEventNotification;\n(function (TelemetryEventNotification) {\n    TelemetryEventNotification.method = 'telemetry/event';\n    TelemetryEventNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n    TelemetryEventNotification.type = new messages_1.ProtocolNotificationType(TelemetryEventNotification.method);\n})(TelemetryEventNotification || (exports.TelemetryEventNotification = TelemetryEventNotification = {}));\n/**\n * Defines how the host (editor) should sync\n * document changes to the language server.\n */\nvar TextDocumentSyncKind;\n(function (TextDocumentSyncKind) {\n    /**\n     * Documents should not be synced at all.\n     */\n    TextDocumentSyncKind.None = 0;\n    /**\n     * Documents are synced by always sending the full content\n     * of the document.\n     */\n    TextDocumentSyncKind.Full = 1;\n    /**\n     * Documents are synced by sending the full content on open.\n     * After that only incremental updates to the document are\n     * send.\n     */\n    TextDocumentSyncKind.Incremental = 2;\n})(TextDocumentSyncKind || (exports.TextDocumentSyncKind = TextDocumentSyncKind = {}));\n/**\n * The document open notification is sent from the client to the server to signal\n * newly opened text documents. The document's truth is now managed by the client\n * and the server must not try to read the document's truth using the document's\n * uri. Open in this sense means it is managed by the client. It doesn't necessarily\n * mean that its content is presented in an editor. An open notification must not\n * be sent more than once without a corresponding close notification send before.\n * This means open and close notification must be balanced and the max open count\n * is one.\n */\nvar DidOpenTextDocumentNotification;\n(function (DidOpenTextDocumentNotification) {\n    DidOpenTextDocumentNotification.method = 'textDocument/didOpen';\n    DidOpenTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidOpenTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidOpenTextDocumentNotification.method);\n})(DidOpenTextDocumentNotification || (exports.DidOpenTextDocumentNotification = DidOpenTextDocumentNotification = {}));\nvar TextDocumentContentChangeEvent;\n(function (TextDocumentContentChangeEvent) {\n    /**\n     * Checks whether the information describes a delta event.\n     */\n    function isIncremental(event) {\n        let candidate = event;\n        return candidate !== undefined && candidate !== null &&\n            typeof candidate.text === 'string' && candidate.range !== undefined &&\n            (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n    }\n    TextDocumentContentChangeEvent.isIncremental = isIncremental;\n    /**\n     * Checks whether the information describes a full replacement event.\n     */\n    function isFull(event) {\n        let candidate = event;\n        return candidate !== undefined && candidate !== null &&\n            typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n    }\n    TextDocumentContentChangeEvent.isFull = isFull;\n})(TextDocumentContentChangeEvent || (exports.TextDocumentContentChangeEvent = TextDocumentContentChangeEvent = {}));\n/**\n * The document change notification is sent from the client to the server to signal\n * changes to a text document.\n */\nvar DidChangeTextDocumentNotification;\n(function (DidChangeTextDocumentNotification) {\n    DidChangeTextDocumentNotification.method = 'textDocument/didChange';\n    DidChangeTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidChangeTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidChangeTextDocumentNotification.method);\n})(DidChangeTextDocumentNotification || (exports.DidChangeTextDocumentNotification = DidChangeTextDocumentNotification = {}));\n/**\n * The document close notification is sent from the client to the server when\n * the document got closed in the client. The document's truth now exists where\n * the document's uri points to (e.g. if the document's uri is a file uri the\n * truth now exists on disk). As with the open notification the close notification\n * is about managing the document's content. Receiving a close notification\n * doesn't mean that the document was open in an editor before. A close\n * notification requires a previous open notification to be sent.\n */\nvar DidCloseTextDocumentNotification;\n(function (DidCloseTextDocumentNotification) {\n    DidCloseTextDocumentNotification.method = 'textDocument/didClose';\n    DidCloseTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidCloseTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidCloseTextDocumentNotification.method);\n})(DidCloseTextDocumentNotification || (exports.DidCloseTextDocumentNotification = DidCloseTextDocumentNotification = {}));\n/**\n * The document save notification is sent from the client to the server when\n * the document got saved in the client.\n */\nvar DidSaveTextDocumentNotification;\n(function (DidSaveTextDocumentNotification) {\n    DidSaveTextDocumentNotification.method = 'textDocument/didSave';\n    DidSaveTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(DidSaveTextDocumentNotification.method);\n})(DidSaveTextDocumentNotification || (exports.DidSaveTextDocumentNotification = DidSaveTextDocumentNotification = {}));\n/**\n * Represents reasons why a text document is saved.\n */\nvar TextDocumentSaveReason;\n(function (TextDocumentSaveReason) {\n    /**\n     * Manually triggered, e.g. by the user pressing save, by starting debugging,\n     * or by an API call.\n     */\n    TextDocumentSaveReason.Manual = 1;\n    /**\n     * Automatic after a delay.\n     */\n    TextDocumentSaveReason.AfterDelay = 2;\n    /**\n     * When the editor lost focus.\n     */\n    TextDocumentSaveReason.FocusOut = 3;\n})(TextDocumentSaveReason || (exports.TextDocumentSaveReason = TextDocumentSaveReason = {}));\n/**\n * A document will save notification is sent from the client to the server before\n * the document is actually saved.\n */\nvar WillSaveTextDocumentNotification;\n(function (WillSaveTextDocumentNotification) {\n    WillSaveTextDocumentNotification.method = 'textDocument/willSave';\n    WillSaveTextDocumentNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    WillSaveTextDocumentNotification.type = new messages_1.ProtocolNotificationType(WillSaveTextDocumentNotification.method);\n})(WillSaveTextDocumentNotification || (exports.WillSaveTextDocumentNotification = WillSaveTextDocumentNotification = {}));\n/**\n * A document will save request is sent from the client to the server before\n * the document is actually saved. The request can return an array of TextEdits\n * which will be applied to the text document before it is saved. Please note that\n * clients might drop results if computing the text edits took too long or if a\n * server constantly fails on this request. This is done to keep the save fast and\n * reliable.\n */\nvar WillSaveTextDocumentWaitUntilRequest;\n(function (WillSaveTextDocumentWaitUntilRequest) {\n    WillSaveTextDocumentWaitUntilRequest.method = 'textDocument/willSaveWaitUntil';\n    WillSaveTextDocumentWaitUntilRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    WillSaveTextDocumentWaitUntilRequest.type = new messages_1.ProtocolRequestType(WillSaveTextDocumentWaitUntilRequest.method);\n})(WillSaveTextDocumentWaitUntilRequest || (exports.WillSaveTextDocumentWaitUntilRequest = WillSaveTextDocumentWaitUntilRequest = {}));\n/**\n * The watched files notification is sent from the client to the server when\n * the client detects changes to file watched by the language client.\n */\nvar DidChangeWatchedFilesNotification;\n(function (DidChangeWatchedFilesNotification) {\n    DidChangeWatchedFilesNotification.method = 'workspace/didChangeWatchedFiles';\n    DidChangeWatchedFilesNotification.messageDirection = messages_1.MessageDirection.clientToServer;\n    DidChangeWatchedFilesNotification.type = new messages_1.ProtocolNotificationType(DidChangeWatchedFilesNotification.method);\n})(DidChangeWatchedFilesNotification || (exports.DidChangeWatchedFilesNotification = DidChangeWatchedFilesNotification = {}));\n/**\n * The file event type\n */\nvar FileChangeType;\n(function (FileChangeType) {\n    /**\n     * The file got created.\n     */\n    FileChangeType.Created = 1;\n    /**\n     * The file got changed.\n     */\n    FileChangeType.Changed = 2;\n    /**\n     * The file got deleted.\n     */\n    FileChangeType.Deleted = 3;\n})(FileChangeType || (exports.FileChangeType = FileChangeType = {}));\nvar RelativePattern;\n(function (RelativePattern) {\n    function is(value) {\n        const candidate = value;\n        return Is.objectLiteral(candidate) && (vscode_languageserver_types_1.URI.is(candidate.baseUri) || vscode_languageserver_types_1.WorkspaceFolder.is(candidate.baseUri)) && Is.string(candidate.pattern);\n    }\n    RelativePattern.is = is;\n})(RelativePattern || (exports.RelativePattern = RelativePattern = {}));\nvar WatchKind;\n(function (WatchKind) {\n    /**\n     * Interested in create events.\n     */\n    WatchKind.Create = 1;\n    /**\n     * Interested in change events\n     */\n    WatchKind.Change = 2;\n    /**\n     * Interested in delete events\n     */\n    WatchKind.Delete = 4;\n})(WatchKind || (exports.WatchKind = WatchKind = {}));\n/**\n * Diagnostics notification are sent from the server to the client to signal\n * results of validation runs.\n */\nvar PublishDiagnosticsNotification;\n(function (PublishDiagnosticsNotification) {\n    PublishDiagnosticsNotification.method = 'textDocument/publishDiagnostics';\n    PublishDiagnosticsNotification.messageDirection = messages_1.MessageDirection.serverToClient;\n    PublishDiagnosticsNotification.type = new messages_1.ProtocolNotificationType(PublishDiagnosticsNotification.method);\n})(PublishDiagnosticsNotification || (exports.PublishDiagnosticsNotification = PublishDiagnosticsNotification = {}));\n/**\n * How a completion was triggered\n */\nvar CompletionTriggerKind;\n(function (CompletionTriggerKind) {\n    /**\n     * Completion was triggered by typing an identifier (24x7 code\n     * complete), manual invocation (e.g Ctrl+Space) or via API.\n     */\n    CompletionTriggerKind.Invoked = 1;\n    /**\n     * Completion was triggered by a trigger character specified by\n     * the `triggerCharacters` properties of the `CompletionRegistrationOptions`.\n     */\n    CompletionTriggerKind.TriggerCharacter = 2;\n    /**\n     * Completion was re-triggered as current completion list is incomplete\n     */\n    CompletionTriggerKind.TriggerForIncompleteCompletions = 3;\n})(CompletionTriggerKind || (exports.CompletionTriggerKind = CompletionTriggerKind = {}));\n/**\n * Request to request completion at a given text document position. The request's\n * parameter is of type {@link TextDocumentPosition} the response\n * is of type {@link CompletionItem CompletionItem[]} or {@link CompletionList}\n * or a Thenable that resolves to such.\n *\n * The request can delay the computation of the {@link CompletionItem.detail `detail`}\n * and {@link CompletionItem.documentation `documentation`} properties to the `completionItem/resolve`\n * request. However, properties that are needed for the initial sorting and filtering, like `sortText`,\n * `filterText`, `insertText`, and `textEdit`, must not be changed during resolve.\n */\nvar CompletionRequest;\n(function (CompletionRequest) {\n    CompletionRequest.method = 'textDocument/completion';\n    CompletionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    CompletionRequest.type = new messages_1.ProtocolRequestType(CompletionRequest.method);\n})(CompletionRequest || (exports.CompletionRequest = CompletionRequest = {}));\n/**\n * Request to resolve additional information for a given completion item.The request's\n * parameter is of type {@link CompletionItem} the response\n * is of type {@link CompletionItem} or a Thenable that resolves to such.\n */\nvar CompletionResolveRequest;\n(function (CompletionResolveRequest) {\n    CompletionResolveRequest.method = 'completionItem/resolve';\n    CompletionResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    CompletionResolveRequest.type = new messages_1.ProtocolRequestType(CompletionResolveRequest.method);\n})(CompletionResolveRequest || (exports.CompletionResolveRequest = CompletionResolveRequest = {}));\n/**\n * Request to request hover information at a given text document position. The request's\n * parameter is of type {@link TextDocumentPosition} the response is of\n * type {@link Hover} or a Thenable that resolves to such.\n */\nvar HoverRequest;\n(function (HoverRequest) {\n    HoverRequest.method = 'textDocument/hover';\n    HoverRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    HoverRequest.type = new messages_1.ProtocolRequestType(HoverRequest.method);\n})(HoverRequest || (exports.HoverRequest = HoverRequest = {}));\n/**\n * How a signature help was triggered.\n *\n * @since 3.15.0\n */\nvar SignatureHelpTriggerKind;\n(function (SignatureHelpTriggerKind) {\n    /**\n     * Signature help was invoked manually by the user or by a command.\n     */\n    SignatureHelpTriggerKind.Invoked = 1;\n    /**\n     * Signature help was triggered by a trigger character.\n     */\n    SignatureHelpTriggerKind.TriggerCharacter = 2;\n    /**\n     * Signature help was triggered by the cursor moving or by the document content changing.\n     */\n    SignatureHelpTriggerKind.ContentChange = 3;\n})(SignatureHelpTriggerKind || (exports.SignatureHelpTriggerKind = SignatureHelpTriggerKind = {}));\nvar SignatureHelpRequest;\n(function (SignatureHelpRequest) {\n    SignatureHelpRequest.method = 'textDocument/signatureHelp';\n    SignatureHelpRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    SignatureHelpRequest.type = new messages_1.ProtocolRequestType(SignatureHelpRequest.method);\n})(SignatureHelpRequest || (exports.SignatureHelpRequest = SignatureHelpRequest = {}));\n/**\n * A request to resolve the definition location of a symbol at a given text\n * document position. The request's parameter is of type {@link TextDocumentPosition}\n * the response is of either type {@link Definition} or a typed array of\n * {@link DefinitionLink} or a Thenable that resolves to such.\n */\nvar DefinitionRequest;\n(function (DefinitionRequest) {\n    DefinitionRequest.method = 'textDocument/definition';\n    DefinitionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DefinitionRequest.type = new messages_1.ProtocolRequestType(DefinitionRequest.method);\n})(DefinitionRequest || (exports.DefinitionRequest = DefinitionRequest = {}));\n/**\n * A request to resolve project-wide references for the symbol denoted\n * by the given text document position. The request's parameter is of\n * type {@link ReferenceParams} the response is of type\n * {@link Location Location[]} or a Thenable that resolves to such.\n */\nvar ReferencesRequest;\n(function (ReferencesRequest) {\n    ReferencesRequest.method = 'textDocument/references';\n    ReferencesRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    ReferencesRequest.type = new messages_1.ProtocolRequestType(ReferencesRequest.method);\n})(ReferencesRequest || (exports.ReferencesRequest = ReferencesRequest = {}));\n/**\n * Request to resolve a {@link DocumentHighlight} for a given\n * text document position. The request's parameter is of type {@link TextDocumentPosition}\n * the request response is an array of type {@link DocumentHighlight}\n * or a Thenable that resolves to such.\n */\nvar DocumentHighlightRequest;\n(function (DocumentHighlightRequest) {\n    DocumentHighlightRequest.method = 'textDocument/documentHighlight';\n    DocumentHighlightRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentHighlightRequest.type = new messages_1.ProtocolRequestType(DocumentHighlightRequest.method);\n})(DocumentHighlightRequest || (exports.DocumentHighlightRequest = DocumentHighlightRequest = {}));\n/**\n * A request to list all symbols found in a given text document. The request's\n * parameter is of type {@link TextDocumentIdentifier} the\n * response is of type {@link SymbolInformation SymbolInformation[]} or a Thenable\n * that resolves to such.\n */\nvar DocumentSymbolRequest;\n(function (DocumentSymbolRequest) {\n    DocumentSymbolRequest.method = 'textDocument/documentSymbol';\n    DocumentSymbolRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentSymbolRequest.type = new messages_1.ProtocolRequestType(DocumentSymbolRequest.method);\n})(DocumentSymbolRequest || (exports.DocumentSymbolRequest = DocumentSymbolRequest = {}));\n/**\n * A request to provide commands for the given text document and range.\n */\nvar CodeActionRequest;\n(function (CodeActionRequest) {\n    CodeActionRequest.method = 'textDocument/codeAction';\n    CodeActionRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    CodeActionRequest.type = new messages_1.ProtocolRequestType(CodeActionRequest.method);\n})(CodeActionRequest || (exports.CodeActionRequest = CodeActionRequest = {}));\n/**\n * Request to resolve additional information for a given code action.The request's\n * parameter is of type {@link CodeAction} the response\n * is of type {@link CodeAction} or a Thenable that resolves to such.\n */\nvar CodeActionResolveRequest;\n(function (CodeActionResolveRequest) {\n    CodeActionResolveRequest.method = 'codeAction/resolve';\n    CodeActionResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    CodeActionResolveRequest.type = new messages_1.ProtocolRequestType(CodeActionResolveRequest.method);\n})(CodeActionResolveRequest || (exports.CodeActionResolveRequest = CodeActionResolveRequest = {}));\n/**\n * A request to list project-wide symbols matching the query string given\n * by the {@link WorkspaceSymbolParams}. The response is\n * of type {@link SymbolInformation SymbolInformation[]} or a Thenable that\n * resolves to such.\n *\n * @since 3.17.0 - support for WorkspaceSymbol in the returned data. Clients\n *  need to advertise support for WorkspaceSymbols via the client capability\n *  `workspace.symbol.resolveSupport`.\n *\n */\nvar WorkspaceSymbolRequest;\n(function (WorkspaceSymbolRequest) {\n    WorkspaceSymbolRequest.method = 'workspace/symbol';\n    WorkspaceSymbolRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    WorkspaceSymbolRequest.type = new messages_1.ProtocolRequestType(WorkspaceSymbolRequest.method);\n})(WorkspaceSymbolRequest || (exports.WorkspaceSymbolRequest = WorkspaceSymbolRequest = {}));\n/**\n * A request to resolve the range inside the workspace\n * symbol's location.\n *\n * @since 3.17.0\n */\nvar WorkspaceSymbolResolveRequest;\n(function (WorkspaceSymbolResolveRequest) {\n    WorkspaceSymbolResolveRequest.method = 'workspaceSymbol/resolve';\n    WorkspaceSymbolResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    WorkspaceSymbolResolveRequest.type = new messages_1.ProtocolRequestType(WorkspaceSymbolResolveRequest.method);\n})(WorkspaceSymbolResolveRequest || (exports.WorkspaceSymbolResolveRequest = WorkspaceSymbolResolveRequest = {}));\n/**\n * A request to provide code lens for the given text document.\n */\nvar CodeLensRequest;\n(function (CodeLensRequest) {\n    CodeLensRequest.method = 'textDocument/codeLens';\n    CodeLensRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    CodeLensRequest.type = new messages_1.ProtocolRequestType(CodeLensRequest.method);\n})(CodeLensRequest || (exports.CodeLensRequest = CodeLensRequest = {}));\n/**\n * A request to resolve a command for a given code lens.\n */\nvar CodeLensResolveRequest;\n(function (CodeLensResolveRequest) {\n    CodeLensResolveRequest.method = 'codeLens/resolve';\n    CodeLensResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    CodeLensResolveRequest.type = new messages_1.ProtocolRequestType(CodeLensResolveRequest.method);\n})(CodeLensResolveRequest || (exports.CodeLensResolveRequest = CodeLensResolveRequest = {}));\n/**\n * A request to refresh all code actions\n *\n * @since 3.16.0\n */\nvar CodeLensRefreshRequest;\n(function (CodeLensRefreshRequest) {\n    CodeLensRefreshRequest.method = `workspace/codeLens/refresh`;\n    CodeLensRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    CodeLensRefreshRequest.type = new messages_1.ProtocolRequestType0(CodeLensRefreshRequest.method);\n})(CodeLensRefreshRequest || (exports.CodeLensRefreshRequest = CodeLensRefreshRequest = {}));\n/**\n * A request to provide document links\n */\nvar DocumentLinkRequest;\n(function (DocumentLinkRequest) {\n    DocumentLinkRequest.method = 'textDocument/documentLink';\n    DocumentLinkRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentLinkRequest.type = new messages_1.ProtocolRequestType(DocumentLinkRequest.method);\n})(DocumentLinkRequest || (exports.DocumentLinkRequest = DocumentLinkRequest = {}));\n/**\n * Request to resolve additional information for a given document link. The request's\n * parameter is of type {@link DocumentLink} the response\n * is of type {@link DocumentLink} or a Thenable that resolves to such.\n */\nvar DocumentLinkResolveRequest;\n(function (DocumentLinkResolveRequest) {\n    DocumentLinkResolveRequest.method = 'documentLink/resolve';\n    DocumentLinkResolveRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentLinkResolveRequest.type = new messages_1.ProtocolRequestType(DocumentLinkResolveRequest.method);\n})(DocumentLinkResolveRequest || (exports.DocumentLinkResolveRequest = DocumentLinkResolveRequest = {}));\n/**\n * A request to format a whole document.\n */\nvar DocumentFormattingRequest;\n(function (DocumentFormattingRequest) {\n    DocumentFormattingRequest.method = 'textDocument/formatting';\n    DocumentFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentFormattingRequest.method);\n})(DocumentFormattingRequest || (exports.DocumentFormattingRequest = DocumentFormattingRequest = {}));\n/**\n * A request to format a range in a document.\n */\nvar DocumentRangeFormattingRequest;\n(function (DocumentRangeFormattingRequest) {\n    DocumentRangeFormattingRequest.method = 'textDocument/rangeFormatting';\n    DocumentRangeFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentRangeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentRangeFormattingRequest.method);\n})(DocumentRangeFormattingRequest || (exports.DocumentRangeFormattingRequest = DocumentRangeFormattingRequest = {}));\n/**\n * A request to format ranges in a document.\n *\n * @since 3.18.0\n * @proposed\n */\nvar DocumentRangesFormattingRequest;\n(function (DocumentRangesFormattingRequest) {\n    DocumentRangesFormattingRequest.method = 'textDocument/rangesFormatting';\n    DocumentRangesFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentRangesFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentRangesFormattingRequest.method);\n})(DocumentRangesFormattingRequest || (exports.DocumentRangesFormattingRequest = DocumentRangesFormattingRequest = {}));\n/**\n * A request to format a document on type.\n */\nvar DocumentOnTypeFormattingRequest;\n(function (DocumentOnTypeFormattingRequest) {\n    DocumentOnTypeFormattingRequest.method = 'textDocument/onTypeFormatting';\n    DocumentOnTypeFormattingRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    DocumentOnTypeFormattingRequest.type = new messages_1.ProtocolRequestType(DocumentOnTypeFormattingRequest.method);\n})(DocumentOnTypeFormattingRequest || (exports.DocumentOnTypeFormattingRequest = DocumentOnTypeFormattingRequest = {}));\n//---- Rename ----------------------------------------------\nvar PrepareSupportDefaultBehavior;\n(function (PrepareSupportDefaultBehavior) {\n    /**\n     * The client's default behavior is to select the identifier\n     * according the to language's syntax rule.\n     */\n    PrepareSupportDefaultBehavior.Identifier = 1;\n})(PrepareSupportDefaultBehavior || (exports.PrepareSupportDefaultBehavior = PrepareSupportDefaultBehavior = {}));\n/**\n * A request to rename a symbol.\n */\nvar RenameRequest;\n(function (RenameRequest) {\n    RenameRequest.method = 'textDocument/rename';\n    RenameRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    RenameRequest.type = new messages_1.ProtocolRequestType(RenameRequest.method);\n})(RenameRequest || (exports.RenameRequest = RenameRequest = {}));\n/**\n * A request to test and perform the setup necessary for a rename.\n *\n * @since 3.16 - support for default behavior\n */\nvar PrepareRenameRequest;\n(function (PrepareRenameRequest) {\n    PrepareRenameRequest.method = 'textDocument/prepareRename';\n    PrepareRenameRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    PrepareRenameRequest.type = new messages_1.ProtocolRequestType(PrepareRenameRequest.method);\n})(PrepareRenameRequest || (exports.PrepareRenameRequest = PrepareRenameRequest = {}));\n/**\n * A request send from the client to the server to execute a command. The request might return\n * a workspace edit which the client will apply to the workspace.\n */\nvar ExecuteCommandRequest;\n(function (ExecuteCommandRequest) {\n    ExecuteCommandRequest.method = 'workspace/executeCommand';\n    ExecuteCommandRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n    ExecuteCommandRequest.type = new messages_1.ProtocolRequestType(ExecuteCommandRequest.method);\n})(ExecuteCommandRequest || (exports.ExecuteCommandRequest = ExecuteCommandRequest = {}));\n/**\n * A request sent from the server to the client to modified certain resources.\n */\nvar ApplyWorkspaceEditRequest;\n(function (ApplyWorkspaceEditRequest) {\n    ApplyWorkspaceEditRequest.method = 'workspace/applyEdit';\n    ApplyWorkspaceEditRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n    ApplyWorkspaceEditRequest.type = new messages_1.ProtocolRequestType('workspace/applyEdit');\n})(ApplyWorkspaceEditRequest || (exports.ApplyWorkspaceEditRequest = ApplyWorkspaceEditRequest = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProtocolConnection = void 0;\nconst vscode_jsonrpc_1 = require(\"vscode-jsonrpc\");\nfunction createProtocolConnection(input, output, logger, options) {\n    if (vscode_jsonrpc_1.ConnectionStrategy.is(options)) {\n        options = { connectionStrategy: options };\n    }\n    return (0, vscode_jsonrpc_1.createMessageConnection)(input, output, logger, options);\n}\nexports.createProtocolConnection = createProtocolConnection;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LSPErrorCodes = exports.createProtocolConnection = void 0;\n__exportStar(require(\"vscode-jsonrpc\"), exports);\n__exportStar(require(\"vscode-languageserver-types\"), exports);\n__exportStar(require(\"./messages\"), exports);\n__exportStar(require(\"./protocol\"), exports);\nvar connection_1 = require(\"./connection\");\nObject.defineProperty(exports, \"createProtocolConnection\", { enumerable: true, get: function () { return connection_1.createProtocolConnection; } });\nvar LSPErrorCodes;\n(function (LSPErrorCodes) {\n    /**\n    * This is the start range of LSP reserved error codes.\n    * It doesn't denote a real error code.\n    *\n    * @since 3.16.0\n    */\n    LSPErrorCodes.lspReservedErrorRangeStart = -32899;\n    /**\n     * A request failed but it was syntactically correct, e.g the\n     * method name was known and the parameters were valid. The error\n     * message should contain human readable information about why\n     * the request failed.\n     *\n     * @since 3.17.0\n     */\n    LSPErrorCodes.RequestFailed = -32803;\n    /**\n     * The server cancelled the request. This error code should\n     * only be used for requests that explicitly support being\n     * server cancellable.\n     *\n     * @since 3.17.0\n     */\n    LSPErrorCodes.ServerCancelled = -32802;\n    /**\n     * The server detected that the content of a document got\n     * modified outside normal conditions. A server should\n     * NOT send this error code if it detects a content change\n     * in it unprocessed messages. The result even computed\n     * on an older state might still be useful for the client.\n     *\n     * If a client decides that a result is not of any use anymore\n     * the client should cancel the request.\n     */\n    LSPErrorCodes.ContentModified = -32801;\n    /**\n     * The client has canceled a request and a server as detected\n     * the cancel.\n     */\n    LSPErrorCodes.RequestCancelled = -32800;\n    /**\n    * This is the end range of LSP reserved error codes.\n    * It doesn't denote a real error code.\n    *\n    * @since 3.16.0\n    */\n    LSPErrorCodes.lspReservedErrorRangeEnd = -32800;\n})(LSPErrorCodes || (exports.LSPErrorCodes = LSPErrorCodes = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProtocolConnection = void 0;\nconst node_1 = require(\"vscode-jsonrpc/node\");\n__exportStar(require(\"vscode-jsonrpc/node\"), exports);\n__exportStar(require(\"../common/api\"), exports);\nfunction createProtocolConnection(input, output, logger, options) {\n    return (0, node_1.createMessageConnection)(input, output, logger, options);\n}\nexports.createProtocolConnection = createProtocolConnection;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forEach = exports.mapAsync = exports.map = exports.clearTestMode = exports.setTestMode = exports.Semaphore = exports.Delayer = void 0;\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nclass Delayer {\n    constructor(defaultDelay) {\n        this.defaultDelay = defaultDelay;\n        this.timeout = undefined;\n        this.completionPromise = undefined;\n        this.onSuccess = undefined;\n        this.task = undefined;\n    }\n    trigger(task, delay = this.defaultDelay) {\n        this.task = task;\n        if (delay >= 0) {\n            this.cancelTimeout();\n        }\n        if (!this.completionPromise) {\n            this.completionPromise = new Promise((resolve) => {\n                this.onSuccess = resolve;\n            }).then(() => {\n                this.completionPromise = undefined;\n                this.onSuccess = undefined;\n                var result = this.task();\n                this.task = undefined;\n                return result;\n            });\n        }\n        if (delay >= 0 || this.timeout === void 0) {\n            this.timeout = (0, vscode_languageserver_protocol_1.RAL)().timer.setTimeout(() => {\n                this.timeout = undefined;\n                this.onSuccess(undefined);\n            }, delay >= 0 ? delay : this.defaultDelay);\n        }\n        return this.completionPromise;\n    }\n    forceDelivery() {\n        if (!this.completionPromise) {\n            return undefined;\n        }\n        this.cancelTimeout();\n        let result = this.task();\n        this.completionPromise = undefined;\n        this.onSuccess = undefined;\n        this.task = undefined;\n        return result;\n    }\n    isTriggered() {\n        return this.timeout !== undefined;\n    }\n    cancel() {\n        this.cancelTimeout();\n        this.completionPromise = undefined;\n    }\n    cancelTimeout() {\n        if (this.timeout !== undefined) {\n            this.timeout.dispose();\n            this.timeout = undefined;\n        }\n    }\n}\nexports.Delayer = Delayer;\nclass Semaphore {\n    constructor(capacity = 1) {\n        if (capacity <= 0) {\n            throw new Error('Capacity must be greater than 0');\n        }\n        this._capacity = capacity;\n        this._active = 0;\n        this._waiting = [];\n    }\n    lock(thunk) {\n        return new Promise((resolve, reject) => {\n            this._waiting.push({ thunk, resolve, reject });\n            this.runNext();\n        });\n    }\n    get active() {\n        return this._active;\n    }\n    runNext() {\n        if (this._waiting.length === 0 || this._active === this._capacity) {\n            return;\n        }\n        (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => this.doRunNext());\n    }\n    doRunNext() {\n        if (this._waiting.length === 0 || this._active === this._capacity) {\n            return;\n        }\n        const next = this._waiting.shift();\n        this._active++;\n        if (this._active > this._capacity) {\n            throw new Error(`To many thunks active`);\n        }\n        try {\n            const result = next.thunk();\n            if (result instanceof Promise) {\n                result.then((value) => {\n                    this._active--;\n                    next.resolve(value);\n                    this.runNext();\n                }, (err) => {\n                    this._active--;\n                    next.reject(err);\n                    this.runNext();\n                });\n            }\n            else {\n                this._active--;\n                next.resolve(result);\n                this.runNext();\n            }\n        }\n        catch (err) {\n            this._active--;\n            next.reject(err);\n            this.runNext();\n        }\n    }\n}\nexports.Semaphore = Semaphore;\nlet $test = false;\nfunction setTestMode() {\n    $test = true;\n}\nexports.setTestMode = setTestMode;\nfunction clearTestMode() {\n    $test = false;\n}\nexports.clearTestMode = clearTestMode;\nconst defaultYieldTimeout = 15 /*ms*/;\nclass Timer {\n    constructor(yieldAfter = defaultYieldTimeout) {\n        this.yieldAfter = $test === true ? Math.max(yieldAfter, 2) : Math.max(yieldAfter, defaultYieldTimeout);\n        this.startTime = Date.now();\n        this.counter = 0;\n        this.total = 0;\n        // start with a counter interval of 1.\n        this.counterInterval = 1;\n    }\n    start() {\n        this.counter = 0;\n        this.total = 0;\n        this.counterInterval = 1;\n        this.startTime = Date.now();\n    }\n    shouldYield() {\n        if (++this.counter >= this.counterInterval) {\n            const timeTaken = Date.now() - this.startTime;\n            const timeLeft = Math.max(0, this.yieldAfter - timeTaken);\n            this.total += this.counter;\n            this.counter = 0;\n            if (timeTaken >= this.yieldAfter || timeLeft <= 1) {\n                // Yield also if time left <= 1 since we compute the counter\n                // for max < 2 ms.\n                // Start with interval 1 again. We could do some calculation\n                // with using 80% of the last counter however other things (GC)\n                // affect the timing heavily since we have small timings (1 - 15ms).\n                this.counterInterval = 1;\n                this.total = 0;\n                return true;\n            }\n            else {\n                // Only increase the counter until we have spent <= 2 ms. Increasing\n                // the counter further is very fragile since timing is influenced\n                // by other things and can increase the counter too much. This will result\n                // that we yield in average after [14 - 16]ms.\n                switch (timeTaken) {\n                    case 0:\n                    case 1:\n                        this.counterInterval = this.total * 2;\n                        break;\n                }\n            }\n        }\n        return false;\n    }\n}\nasync function map(items, func, token, options) {\n    if (items.length === 0) {\n        return [];\n    }\n    const result = new Array(items.length);\n    const timer = new Timer(options?.yieldAfter);\n    function convertBatch(start) {\n        timer.start();\n        for (let i = start; i < items.length; i++) {\n            result[i] = func(items[i]);\n            if (timer.shouldYield()) {\n                options?.yieldCallback && options.yieldCallback();\n                return i + 1;\n            }\n        }\n        return -1;\n    }\n    // Convert the first batch sync on the same frame.\n    let index = convertBatch(0);\n    while (index !== -1) {\n        if (token !== undefined && token.isCancellationRequested) {\n            break;\n        }\n        index = await new Promise((resolve) => {\n            (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => {\n                resolve(convertBatch(index));\n            });\n        });\n    }\n    return result;\n}\nexports.map = map;\nasync function mapAsync(items, func, token, options) {\n    if (items.length === 0) {\n        return [];\n    }\n    const result = new Array(items.length);\n    const timer = new Timer(options?.yieldAfter);\n    async function convertBatch(start) {\n        timer.start();\n        for (let i = start; i < items.length; i++) {\n            result[i] = await func(items[i], token);\n            if (timer.shouldYield()) {\n                options?.yieldCallback && options.yieldCallback();\n                return i + 1;\n            }\n        }\n        return -1;\n    }\n    let index = await convertBatch(0);\n    while (index !== -1) {\n        if (token !== undefined && token.isCancellationRequested) {\n            break;\n        }\n        index = await new Promise((resolve) => {\n            (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => {\n                resolve(convertBatch(index));\n            });\n        });\n    }\n    return result;\n}\nexports.mapAsync = mapAsync;\nasync function forEach(items, func, token, options) {\n    if (items.length === 0) {\n        return;\n    }\n    const timer = new Timer(options?.yieldAfter);\n    function runBatch(start) {\n        timer.start();\n        for (let i = start; i < items.length; i++) {\n            func(items[i]);\n            if (timer.shouldYield()) {\n                options?.yieldCallback && options.yieldCallback();\n                return i + 1;\n            }\n        }\n        return -1;\n    }\n    // Convert the first batch sync on the same frame.\n    let index = runBatch(0);\n    while (index !== -1) {\n        if (token !== undefined && token.isCancellationRequested) {\n            break;\n        }\n        index = await new Promise((resolve) => {\n            (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => {\n                resolve(runBatch(index));\n            });\n        });\n    }\n}\nexports.forEach = forEach;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolCompletionItem extends code.CompletionItem {\n    constructor(label) {\n        super(label);\n    }\n}\nexports.default = ProtocolCompletionItem;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolCodeLens extends code.CodeLens {\n    constructor(range) {\n        super(range);\n    }\n}\nexports.default = ProtocolCodeLens;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolDocumentLink extends code.DocumentLink {\n    constructor(range, target) {\n        super(range, target);\n    }\n}\nexports.default = ProtocolDocumentLink;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst vscode = require(\"vscode\");\nclass ProtocolCodeAction extends vscode.CodeAction {\n    constructor(title, data) {\n        super(title);\n        this.data = data;\n    }\n}\nexports.default = ProtocolCodeAction;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolDiagnostic = exports.DiagnosticCode = void 0;\nconst vscode = require(\"vscode\");\nconst Is = require(\"./utils/is\");\nvar DiagnosticCode;\n(function (DiagnosticCode) {\n    function is(value) {\n        const candidate = value;\n        return candidate !== undefined && candidate !== null && (Is.number(candidate.value) || Is.string(candidate.value)) && Is.string(candidate.target);\n    }\n    DiagnosticCode.is = is;\n})(DiagnosticCode || (exports.DiagnosticCode = DiagnosticCode = {}));\nclass ProtocolDiagnostic extends vscode.Diagnostic {\n    constructor(range, message, severity, data) {\n        super(range, message, severity);\n        this.data = data;\n        this.hasDiagnosticCode = false;\n    }\n}\nexports.ProtocolDiagnostic = ProtocolDiagnostic;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolCallHierarchyItem extends code.CallHierarchyItem {\n    constructor(kind, name, detail, uri, range, selectionRange, data) {\n        super(kind, name, detail, uri, range, selectionRange);\n        if (data !== undefined) {\n            this.data = data;\n        }\n    }\n}\nexports.default = ProtocolCallHierarchyItem;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolTypeHierarchyItem extends code.TypeHierarchyItem {\n    constructor(kind, name, detail, uri, range, selectionRange, data) {\n        super(kind, name, detail, uri, range, selectionRange);\n        if (data !== undefined) {\n            this.data = data;\n        }\n    }\n}\nexports.default = ProtocolTypeHierarchyItem;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass WorkspaceSymbol extends code.SymbolInformation {\n    constructor(name, kind, containerName, locationOrUri, data) {\n        const hasRange = !(locationOrUri instanceof code.Uri);\n        super(name, kind, containerName, hasRange ? locationOrUri : new code.Location(locationOrUri, new code.Range(0, 0, 0, 0)));\n        this.hasRange = hasRange;\n        if (data !== undefined) {\n            this.data = data;\n        }\n    }\n}\nexports.default = WorkspaceSymbol;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = require(\"vscode\");\nclass ProtocolInlayHint extends code.InlayHint {\n    constructor(position, label, kind) {\n        super(position, label, kind);\n    }\n}\nexports.default = ProtocolInlayHint;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConverter = void 0;\nconst code = require(\"vscode\");\nconst proto = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nconst async = require(\"./utils/async\");\nconst protocolCompletionItem_1 = require(\"./protocolCompletionItem\");\nconst protocolCodeLens_1 = require(\"./protocolCodeLens\");\nconst protocolDocumentLink_1 = require(\"./protocolDocumentLink\");\nconst protocolCodeAction_1 = require(\"./protocolCodeAction\");\nconst protocolDiagnostic_1 = require(\"./protocolDiagnostic\");\nconst protocolCallHierarchyItem_1 = require(\"./protocolCallHierarchyItem\");\nconst protocolTypeHierarchyItem_1 = require(\"./protocolTypeHierarchyItem\");\nconst protocolWorkspaceSymbol_1 = require(\"./protocolWorkspaceSymbol\");\nconst protocolInlayHint_1 = require(\"./protocolInlayHint\");\nvar InsertReplaceRange;\n(function (InsertReplaceRange) {\n    function is(value) {\n        const candidate = value;\n        return candidate && !!candidate.inserting && !!candidate.replacing;\n    }\n    InsertReplaceRange.is = is;\n})(InsertReplaceRange || (InsertReplaceRange = {}));\nfunction createConverter(uriConverter) {\n    const nullConverter = (value) => value.toString();\n    const _uriConverter = uriConverter || nullConverter;\n    function asUri(value) {\n        return _uriConverter(value);\n    }\n    function asTextDocumentIdentifier(textDocument) {\n        return {\n            uri: _uriConverter(textDocument.uri)\n        };\n    }\n    function asTextDocumentItem(textDocument) {\n        return {\n            uri: _uriConverter(textDocument.uri),\n            languageId: textDocument.languageId,\n            version: textDocument.version,\n            text: textDocument.getText()\n        };\n    }\n    function asVersionedTextDocumentIdentifier(textDocument) {\n        return {\n            uri: _uriConverter(textDocument.uri),\n            version: textDocument.version\n        };\n    }\n    function asOpenTextDocumentParams(textDocument) {\n        return {\n            textDocument: asTextDocumentItem(textDocument)\n        };\n    }\n    function isTextDocumentChangeEvent(value) {\n        const candidate = value;\n        return !!candidate.document && !!candidate.contentChanges;\n    }\n    function isTextDocument(value) {\n        const candidate = value;\n        return !!candidate.uri && !!candidate.version;\n    }\n    function asChangeTextDocumentParams(arg0, arg1, arg2) {\n        if (isTextDocument(arg0)) {\n            const result = {\n                textDocument: {\n                    uri: _uriConverter(arg0.uri),\n                    version: arg0.version\n                },\n                contentChanges: [{ text: arg0.getText() }]\n            };\n            return result;\n        }\n        else if (isTextDocumentChangeEvent(arg0)) {\n            const uri = arg1;\n            const version = arg2;\n            const result = {\n                textDocument: {\n                    uri: _uriConverter(uri),\n                    version: version\n                },\n                contentChanges: arg0.contentChanges.map((change) => {\n                    const range = change.range;\n                    return {\n                        range: {\n                            start: { line: range.start.line, character: range.start.character },\n                            end: { line: range.end.line, character: range.end.character }\n                        },\n                        rangeLength: change.rangeLength,\n                        text: change.text\n                    };\n                })\n            };\n            return result;\n        }\n        else {\n            throw Error('Unsupported text document change parameter');\n        }\n    }\n    function asCloseTextDocumentParams(textDocument) {\n        return {\n            textDocument: asTextDocumentIdentifier(textDocument)\n        };\n    }\n    function asSaveTextDocumentParams(textDocument, includeContent = false) {\n        let result = {\n            textDocument: asTextDocumentIdentifier(textDocument)\n        };\n        if (includeContent) {\n            result.text = textDocument.getText();\n        }\n        return result;\n    }\n    function asTextDocumentSaveReason(reason) {\n        switch (reason) {\n            case code.TextDocumentSaveReason.Manual:\n                return proto.TextDocumentSaveReason.Manual;\n            case code.TextDocumentSaveReason.AfterDelay:\n                return proto.TextDocumentSaveReason.AfterDelay;\n            case code.TextDocumentSaveReason.FocusOut:\n                return proto.TextDocumentSaveReason.FocusOut;\n        }\n        return proto.TextDocumentSaveReason.Manual;\n    }\n    function asWillSaveTextDocumentParams(event) {\n        return {\n            textDocument: asTextDocumentIdentifier(event.document),\n            reason: asTextDocumentSaveReason(event.reason)\n        };\n    }\n    function asDidCreateFilesParams(event) {\n        return {\n            files: event.files.map((fileUri) => ({\n                uri: _uriConverter(fileUri),\n            })),\n        };\n    }\n    function asDidRenameFilesParams(event) {\n        return {\n            files: event.files.map((file) => ({\n                oldUri: _uriConverter(file.oldUri),\n                newUri: _uriConverter(file.newUri),\n            })),\n        };\n    }\n    function asDidDeleteFilesParams(event) {\n        return {\n            files: event.files.map((fileUri) => ({\n                uri: _uriConverter(fileUri),\n            })),\n        };\n    }\n    function asWillCreateFilesParams(event) {\n        return {\n            files: event.files.map((fileUri) => ({\n                uri: _uriConverter(fileUri),\n            })),\n        };\n    }\n    function asWillRenameFilesParams(event) {\n        return {\n            files: event.files.map((file) => ({\n                oldUri: _uriConverter(file.oldUri),\n                newUri: _uriConverter(file.newUri),\n            })),\n        };\n    }\n    function asWillDeleteFilesParams(event) {\n        return {\n            files: event.files.map((fileUri) => ({\n                uri: _uriConverter(fileUri),\n            })),\n        };\n    }\n    function asTextDocumentPositionParams(textDocument, position) {\n        return {\n            textDocument: asTextDocumentIdentifier(textDocument),\n            position: asWorkerPosition(position)\n        };\n    }\n    function asCompletionTriggerKind(triggerKind) {\n        switch (triggerKind) {\n            case code.CompletionTriggerKind.TriggerCharacter:\n                return proto.CompletionTriggerKind.TriggerCharacter;\n            case code.CompletionTriggerKind.TriggerForIncompleteCompletions:\n                return proto.CompletionTriggerKind.TriggerForIncompleteCompletions;\n            default:\n                return proto.CompletionTriggerKind.Invoked;\n        }\n    }\n    function asCompletionParams(textDocument, position, context) {\n        return {\n            textDocument: asTextDocumentIdentifier(textDocument),\n            position: asWorkerPosition(position),\n            context: {\n                triggerKind: asCompletionTriggerKind(context.triggerKind),\n                triggerCharacter: context.triggerCharacter\n            }\n        };\n    }\n    function asSignatureHelpTriggerKind(triggerKind) {\n        switch (triggerKind) {\n            case code.SignatureHelpTriggerKind.Invoke:\n                return proto.SignatureHelpTriggerKind.Invoked;\n            case code.SignatureHelpTriggerKind.TriggerCharacter:\n                return proto.SignatureHelpTriggerKind.TriggerCharacter;\n            case code.SignatureHelpTriggerKind.ContentChange:\n                return proto.SignatureHelpTriggerKind.ContentChange;\n        }\n    }\n    function asParameterInformation(value) {\n        // We leave the documentation out on purpose since it usually adds no\n        // value for the server.\n        return {\n            label: value.label\n        };\n    }\n    function asParameterInformations(values) {\n        return values.map(asParameterInformation);\n    }\n    function asSignatureInformation(value) {\n        // We leave the documentation out on purpose since it usually adds no\n        // value for the server.\n        return {\n            label: value.label,\n            parameters: asParameterInformations(value.parameters)\n        };\n    }\n    function asSignatureInformations(values) {\n        return values.map(asSignatureInformation);\n    }\n    function asSignatureHelp(value) {\n        if (value === undefined) {\n            return value;\n        }\n        return {\n            signatures: asSignatureInformations(value.signatures),\n            activeSignature: value.activeSignature,\n            activeParameter: value.activeParameter\n        };\n    }\n    function asSignatureHelpParams(textDocument, position, context) {\n        return {\n            textDocument: asTextDocumentIdentifier(textDocument),\n            position: asWorkerPosition(position),\n            context: {\n                isRetrigger: context.isRetrigger,\n                triggerCharacter: context.triggerCharacter,\n                triggerKind: asSignatureHelpTriggerKind(context.triggerKind),\n                activeSignatureHelp: asSignatureHelp(context.activeSignatureHelp)\n            }\n        };\n    }\n    function asWorkerPosition(position) {\n        return { line: position.line, character: position.character };\n    }\n    function asPosition(value) {\n        if (value === undefined || value === null) {\n            return value;\n        }\n        return { line: value.line > proto.uinteger.MAX_VALUE ? proto.uinteger.MAX_VALUE : value.line, character: value.character > proto.uinteger.MAX_VALUE ? proto.uinteger.MAX_VALUE : value.character };\n    }\n    function asPositions(values, token) {\n        return async.map(values, asPosition, token);\n    }\n    function asPositionsSync(values) {\n        return values.map(asPosition);\n    }\n    function asRange(value) {\n        if (value === undefined || value === null) {\n            return value;\n        }\n        return { start: asPosition(value.start), end: asPosition(value.end) };\n    }\n    function asRanges(values) {\n        return values.map(asRange);\n    }\n    function asLocation(value) {\n        if (value === undefined || value === null) {\n            return value;\n        }\n        return proto.Location.create(asUri(value.uri), asRange(value.range));\n    }\n    function asDiagnosticSeverity(value) {\n        switch (value) {\n            case code.DiagnosticSeverity.Error:\n                return proto.DiagnosticSeverity.Error;\n            case code.DiagnosticSeverity.Warning:\n                return proto.DiagnosticSeverity.Warning;\n            case code.DiagnosticSeverity.Information:\n                return proto.DiagnosticSeverity.Information;\n            case code.DiagnosticSeverity.Hint:\n                return proto.DiagnosticSeverity.Hint;\n        }\n    }\n    function asDiagnosticTags(tags) {\n        if (!tags) {\n            return undefined;\n        }\n        let result = [];\n        for (let tag of tags) {\n            let converted = asDiagnosticTag(tag);\n            if (converted !== undefined) {\n                result.push(converted);\n            }\n        }\n        return result.length > 0 ? result : undefined;\n    }\n    function asDiagnosticTag(tag) {\n        switch (tag) {\n            case code.DiagnosticTag.Unnecessary:\n                return proto.DiagnosticTag.Unnecessary;\n            case code.DiagnosticTag.Deprecated:\n                return proto.DiagnosticTag.Deprecated;\n            default:\n                return undefined;\n        }\n    }\n    function asRelatedInformation(item) {\n        return {\n            message: item.message,\n            location: asLocation(item.location)\n        };\n    }\n    function asRelatedInformations(items) {\n        return items.map(asRelatedInformation);\n    }\n    function asDiagnosticCode(value) {\n        if (value === undefined || value === null) {\n            return undefined;\n        }\n        if (Is.number(value) || Is.string(value)) {\n            return value;\n        }\n        return { value: value.value, target: asUri(value.target) };\n    }\n    function asDiagnostic(item) {\n        const result = proto.Diagnostic.create(asRange(item.range), item.message);\n        const protocolDiagnostic = item instanceof protocolDiagnostic_1.ProtocolDiagnostic ? item : undefined;\n        if (protocolDiagnostic !== undefined && protocolDiagnostic.data !== undefined) {\n            result.data = protocolDiagnostic.data;\n        }\n        const code = asDiagnosticCode(item.code);\n        if (protocolDiagnostic_1.DiagnosticCode.is(code)) {\n            if (protocolDiagnostic !== undefined && protocolDiagnostic.hasDiagnosticCode) {\n                result.code = code;\n            }\n            else {\n                result.code = code.value;\n                result.codeDescription = { href: code.target };\n            }\n        }\n        else {\n            result.code = code;\n        }\n        if (Is.number(item.severity)) {\n            result.severity = asDiagnosticSeverity(item.severity);\n        }\n        if (Array.isArray(item.tags)) {\n            result.tags = asDiagnosticTags(item.tags);\n        }\n        if (item.relatedInformation) {\n            result.relatedInformation = asRelatedInformations(item.relatedInformation);\n        }\n        if (item.source) {\n            result.source = item.source;\n        }\n        return result;\n    }\n    function asDiagnostics(items, token) {\n        if (items === undefined || items === null) {\n            return items;\n        }\n        return async.map(items, asDiagnostic, token);\n    }\n    function asDiagnosticsSync(items) {\n        if (items === undefined || items === null) {\n            return items;\n        }\n        return items.map(asDiagnostic);\n    }\n    function asDocumentation(format, documentation) {\n        switch (format) {\n            case '$string':\n                return documentation;\n            case proto.MarkupKind.PlainText:\n                return { kind: format, value: documentation };\n            case proto.MarkupKind.Markdown:\n                return { kind: format, value: documentation.value };\n            default:\n                return `Unsupported Markup content received. Kind is: ${format}`;\n        }\n    }\n    function asCompletionItemTag(tag) {\n        switch (tag) {\n            case code.CompletionItemTag.Deprecated:\n                return proto.CompletionItemTag.Deprecated;\n        }\n        return undefined;\n    }\n    function asCompletionItemTags(tags) {\n        if (tags === undefined) {\n            return tags;\n        }\n        const result = [];\n        for (let tag of tags) {\n            const converted = asCompletionItemTag(tag);\n            if (converted !== undefined) {\n                result.push(converted);\n            }\n        }\n        return result;\n    }\n    function asCompletionItemKind(value, original) {\n        if (original !== undefined) {\n            return original;\n        }\n        return value + 1;\n    }\n    function asCompletionItem(item, labelDetailsSupport = false) {\n        let label;\n        let labelDetails;\n        if (Is.string(item.label)) {\n            label = item.label;\n        }\n        else {\n            label = item.label.label;\n            if (labelDetailsSupport && (item.label.detail !== undefined || item.label.description !== undefined)) {\n                labelDetails = { detail: item.label.detail, description: item.label.description };\n            }\n        }\n        let result = { label: label };\n        if (labelDetails !== undefined) {\n            result.labelDetails = labelDetails;\n        }\n        let protocolItem = item instanceof protocolCompletionItem_1.default ? item : undefined;\n        if (item.detail) {\n            result.detail = item.detail;\n        }\n        // We only send items back we created. So this can't be something else than\n        // a string right now.\n        if (item.documentation) {\n            if (!protocolItem || protocolItem.documentationFormat === '$string') {\n                result.documentation = item.documentation;\n            }\n            else {\n                result.documentation = asDocumentation(protocolItem.documentationFormat, item.documentation);\n            }\n        }\n        if (item.filterText) {\n            result.filterText = item.filterText;\n        }\n        fillPrimaryInsertText(result, item);\n        if (Is.number(item.kind)) {\n            result.kind = asCompletionItemKind(item.kind, protocolItem && protocolItem.originalItemKind);\n        }\n        if (item.sortText) {\n            result.sortText = item.sortText;\n        }\n        if (item.additionalTextEdits) {\n            result.additionalTextEdits = asTextEdits(item.additionalTextEdits);\n        }\n        if (item.commitCharacters) {\n            result.commitCharacters = item.commitCharacters.slice();\n        }\n        if (item.command) {\n            result.command = asCommand(item.command);\n        }\n        if (item.preselect === true || item.preselect === false) {\n            result.preselect = item.preselect;\n        }\n        const tags = asCompletionItemTags(item.tags);\n        if (protocolItem) {\n            if (protocolItem.data !== undefined) {\n                result.data = protocolItem.data;\n            }\n            if (protocolItem.deprecated === true || protocolItem.deprecated === false) {\n                if (protocolItem.deprecated === true && tags !== undefined && tags.length > 0) {\n                    const index = tags.indexOf(code.CompletionItemTag.Deprecated);\n                    if (index !== -1) {\n                        tags.splice(index, 1);\n                    }\n                }\n                result.deprecated = protocolItem.deprecated;\n            }\n            if (protocolItem.insertTextMode !== undefined) {\n                result.insertTextMode = protocolItem.insertTextMode;\n            }\n        }\n        if (tags !== undefined && tags.length > 0) {\n            result.tags = tags;\n        }\n        if (result.insertTextMode === undefined && item.keepWhitespace === true) {\n            result.insertTextMode = proto.InsertTextMode.adjustIndentation;\n        }\n        return result;\n    }\n    function fillPrimaryInsertText(target, source) {\n        let format = proto.InsertTextFormat.PlainText;\n        let text = undefined;\n        let range = undefined;\n        if (source.textEdit) {\n            text = source.textEdit.newText;\n            range = source.textEdit.range;\n        }\n        else if (source.insertText instanceof code.SnippetString) {\n            format = proto.InsertTextFormat.Snippet;\n            text = source.insertText.value;\n        }\n        else {\n            text = source.insertText;\n        }\n        if (source.range) {\n            range = source.range;\n        }\n        target.insertTextFormat = format;\n        if (source.fromEdit && text !== undefined && range !== undefined) {\n            target.textEdit = asCompletionTextEdit(text, range);\n        }\n        else {\n            target.insertText = text;\n        }\n    }\n    function asCompletionTextEdit(newText, range) {\n        if (InsertReplaceRange.is(range)) {\n            return proto.InsertReplaceEdit.create(newText, asRange(range.inserting), asRange(range.replacing));\n        }\n        else {\n            return { newText, range: asRange(range) };\n        }\n    }\n    function asTextEdit(edit) {\n        return { range: asRange(edit.range), newText: edit.newText };\n    }\n    function asTextEdits(edits) {\n        if (edits === undefined || edits === null) {\n            return edits;\n        }\n        return edits.map(asTextEdit);\n    }\n    function asSymbolKind(item) {\n        if (item <= code.SymbolKind.TypeParameter) {\n            // Symbol kind is one based in the protocol and zero based in code.\n            return (item + 1);\n        }\n        return proto.SymbolKind.Property;\n    }\n    function asSymbolTag(item) {\n        return item;\n    }\n    function asSymbolTags(items) {\n        return items.map(asSymbolTag);\n    }\n    function asReferenceParams(textDocument, position, options) {\n        return {\n            textDocument: asTextDocumentIdentifier(textDocument),\n            position: asWorkerPosition(position),\n            context: { includeDeclaration: options.includeDeclaration }\n        };\n    }\n    async function asCodeAction(item, token) {\n        let result = proto.CodeAction.create(item.title);\n        if (item instanceof protocolCodeAction_1.default && item.data !== undefined) {\n            result.data = item.data;\n        }\n        if (item.kind !== undefined) {\n            result.kind = asCodeActionKind(item.kind);\n        }\n        if (item.diagnostics !== undefined) {\n            result.diagnostics = await asDiagnostics(item.diagnostics, token);\n        }\n        if (item.edit !== undefined) {\n            throw new Error(`VS Code code actions can only be converted to a protocol code action without an edit.`);\n        }\n        if (item.command !== undefined) {\n            result.command = asCommand(item.command);\n        }\n        if (item.isPreferred !== undefined) {\n            result.isPreferred = item.isPreferred;\n        }\n        if (item.disabled !== undefined) {\n            result.disabled = { reason: item.disabled.reason };\n        }\n        return result;\n    }\n    function asCodeActionSync(item) {\n        let result = proto.CodeAction.create(item.title);\n        if (item instanceof protocolCodeAction_1.default && item.data !== undefined) {\n            result.data = item.data;\n        }\n        if (item.kind !== undefined) {\n            result.kind = asCodeActionKind(item.kind);\n        }\n        if (item.diagnostics !== undefined) {\n            result.diagnostics = asDiagnosticsSync(item.diagnostics);\n        }\n        if (item.edit !== undefined) {\n            throw new Error(`VS Code code actions can only be converted to a protocol code action without an edit.`);\n        }\n        if (item.command !== undefined) {\n            result.command = asCommand(item.command);\n        }\n        if (item.isPreferred !== undefined) {\n            result.isPreferred = item.isPreferred;\n        }\n        if (item.disabled !== undefined) {\n            result.disabled = { reason: item.disabled.reason };\n        }\n        return result;\n    }\n    async function asCodeActionContext(context, token) {\n        if (context === undefined || context === null) {\n            return context;\n        }\n        let only;\n        if (context.only && Is.string(context.only.value)) {\n            only = [context.only.value];\n        }\n        return proto.CodeActionContext.create(await asDiagnostics(context.diagnostics, token), only, asCodeActionTriggerKind(context.triggerKind));\n    }\n    function asCodeActionContextSync(context) {\n        if (context === undefined || context === null) {\n            return context;\n        }\n        let only;\n        if (context.only && Is.string(context.only.value)) {\n            only = [context.only.value];\n        }\n        return proto.CodeActionContext.create(asDiagnosticsSync(context.diagnostics), only, asCodeActionTriggerKind(context.triggerKind));\n    }\n    function asCodeActionTriggerKind(kind) {\n        switch (kind) {\n            case code.CodeActionTriggerKind.Invoke:\n                return proto.CodeActionTriggerKind.Invoked;\n            case code.CodeActionTriggerKind.Automatic:\n                return proto.CodeActionTriggerKind.Automatic;\n            default:\n                return undefined;\n        }\n    }\n    function asCodeActionKind(item) {\n        if (item === undefined || item === null) {\n            return undefined;\n        }\n        return item.value;\n    }\n    function asInlineValueContext(context) {\n        if (context === undefined || context === null) {\n            return context;\n        }\n        return proto.InlineValueContext.create(context.frameId, asRange(context.stoppedLocation));\n    }\n    function asInlineCompletionParams(document, position, context) {\n        return { context: proto.InlineCompletionContext.create(context.triggerKind, context.selectedCompletionInfo),\n            textDocument: asTextDocumentIdentifier(document), position: asPosition(position) };\n    }\n    function asCommand(item) {\n        let result = proto.Command.create(item.title, item.command);\n        if (item.arguments) {\n            result.arguments = item.arguments;\n        }\n        return result;\n    }\n    function asCodeLens(item) {\n        let result = proto.CodeLens.create(asRange(item.range));\n        if (item.command) {\n            result.command = asCommand(item.command);\n        }\n        if (item instanceof protocolCodeLens_1.default) {\n            if (item.data) {\n                result.data = item.data;\n            }\n        }\n        return result;\n    }\n    function asFormattingOptions(options, fileOptions) {\n        const result = { tabSize: options.tabSize, insertSpaces: options.insertSpaces };\n        if (fileOptions.trimTrailingWhitespace) {\n            result.trimTrailingWhitespace = true;\n        }\n        if (fileOptions.trimFinalNewlines) {\n            result.trimFinalNewlines = true;\n        }\n        if (fileOptions.insertFinalNewline) {\n            result.insertFinalNewline = true;\n        }\n        return result;\n    }\n    function asDocumentSymbolParams(textDocument) {\n        return {\n            textDocument: asTextDocumentIdentifier(textDocument)\n        };\n    }\n    function asCodeLensParams(textDocument) {\n        return {\n            textDocument: asTextDocumentIdentifier(textDocument)\n        };\n    }\n    function asDocumentLink(item) {\n        let result = proto.DocumentLink.create(asRange(item.range));\n        if (item.target) {\n            result.target = asUri(item.target);\n        }\n        if (item.tooltip !== undefined) {\n            result.tooltip = item.tooltip;\n        }\n        let protocolItem = item instanceof protocolDocumentLink_1.default ? item : undefined;\n        if (protocolItem && protocolItem.data) {\n            result.data = protocolItem.data;\n        }\n        return result;\n    }\n    function asDocumentLinkParams(textDocument) {\n        return {\n            textDocument: asTextDocumentIdentifier(textDocument)\n        };\n    }\n    function asCallHierarchyItem(value) {\n        const result = {\n            name: value.name,\n            kind: asSymbolKind(value.kind),\n            uri: asUri(value.uri),\n            range: asRange(value.range),\n            selectionRange: asRange(value.selectionRange)\n        };\n        if (value.detail !== undefined && value.detail.length > 0) {\n            result.detail = value.detail;\n        }\n        if (value.tags !== undefined) {\n            result.tags = asSymbolTags(value.tags);\n        }\n        if (value instanceof protocolCallHierarchyItem_1.default && value.data !== undefined) {\n            result.data = value.data;\n        }\n        return result;\n    }\n    function asTypeHierarchyItem(value) {\n        const result = {\n            name: value.name,\n            kind: asSymbolKind(value.kind),\n            uri: asUri(value.uri),\n            range: asRange(value.range),\n            selectionRange: asRange(value.selectionRange),\n        };\n        if (value.detail !== undefined && value.detail.length > 0) {\n            result.detail = value.detail;\n        }\n        if (value.tags !== undefined) {\n            result.tags = asSymbolTags(value.tags);\n        }\n        if (value instanceof protocolTypeHierarchyItem_1.default && value.data !== undefined) {\n            result.data = value.data;\n        }\n        return result;\n    }\n    function asWorkspaceSymbol(item) {\n        const result = item instanceof protocolWorkspaceSymbol_1.default\n            ? { name: item.name, kind: asSymbolKind(item.kind), location: item.hasRange ? asLocation(item.location) : { uri: _uriConverter(item.location.uri) }, data: item.data }\n            : { name: item.name, kind: asSymbolKind(item.kind), location: asLocation(item.location) };\n        if (item.tags !== undefined) {\n            result.tags = asSymbolTags(item.tags);\n        }\n        if (item.containerName !== '') {\n            result.containerName = item.containerName;\n        }\n        return result;\n    }\n    function asInlayHint(item) {\n        const label = typeof item.label === 'string'\n            ? item.label\n            : item.label.map(asInlayHintLabelPart);\n        const result = proto.InlayHint.create(asPosition(item.position), label);\n        if (item.kind !== undefined) {\n            result.kind = item.kind;\n        }\n        if (item.textEdits !== undefined) {\n            result.textEdits = asTextEdits(item.textEdits);\n        }\n        if (item.tooltip !== undefined) {\n            result.tooltip = asTooltip(item.tooltip);\n        }\n        if (item.paddingLeft !== undefined) {\n            result.paddingLeft = item.paddingLeft;\n        }\n        if (item.paddingRight !== undefined) {\n            result.paddingRight = item.paddingRight;\n        }\n        if (item instanceof protocolInlayHint_1.default && item.data !== undefined) {\n            result.data = item.data;\n        }\n        return result;\n    }\n    function asInlayHintLabelPart(item) {\n        const result = proto.InlayHintLabelPart.create(item.value);\n        if (item.location !== undefined) {\n            result.location = asLocation(item.location);\n        }\n        if (item.command !== undefined) {\n            result.command = asCommand(item.command);\n        }\n        if (item.tooltip !== undefined) {\n            result.tooltip = asTooltip(item.tooltip);\n        }\n        return result;\n    }\n    function asTooltip(value) {\n        if (typeof value === 'string') {\n            return value;\n        }\n        const result = {\n            kind: proto.MarkupKind.Markdown,\n            value: value.value\n        };\n        return result;\n    }\n    return {\n        asUri,\n        asTextDocumentIdentifier,\n        asTextDocumentItem,\n        asVersionedTextDocumentIdentifier,\n        asOpenTextDocumentParams,\n        asChangeTextDocumentParams,\n        asCloseTextDocumentParams,\n        asSaveTextDocumentParams,\n        asWillSaveTextDocumentParams,\n        asDidCreateFilesParams,\n        asDidRenameFilesParams,\n        asDidDeleteFilesParams,\n        asWillCreateFilesParams,\n        asWillRenameFilesParams,\n        asWillDeleteFilesParams,\n        asTextDocumentPositionParams,\n        asCompletionParams,\n        asSignatureHelpParams,\n        asWorkerPosition,\n        asRange,\n        asRanges,\n        asPosition,\n        asPositions,\n        asPositionsSync,\n        asLocation,\n        asDiagnosticSeverity,\n        asDiagnosticTag,\n        asDiagnostic,\n        asDiagnostics,\n        asDiagnosticsSync,\n        asCompletionItem,\n        asTextEdit,\n        asSymbolKind,\n        asSymbolTag,\n        asSymbolTags,\n        asReferenceParams,\n        asCodeAction,\n        asCodeActionSync,\n        asCodeActionContext,\n        asCodeActionContextSync,\n        asInlineValueContext,\n        asCommand,\n        asCodeLens,\n        asFormattingOptions,\n        asDocumentSymbolParams,\n        asCodeLensParams,\n        asDocumentLink,\n        asDocumentLinkParams,\n        asCallHierarchyItem,\n        asTypeHierarchyItem,\n        asInlayHint,\n        asWorkspaceSymbol,\n        asInlineCompletionParams\n    };\n}\nexports.createConverter = createConverter;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConverter = void 0;\nconst code = require(\"vscode\");\nconst ls = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nconst async = require(\"./utils/async\");\nconst protocolCompletionItem_1 = require(\"./protocolCompletionItem\");\nconst protocolCodeLens_1 = require(\"./protocolCodeLens\");\nconst protocolDocumentLink_1 = require(\"./protocolDocumentLink\");\nconst protocolCodeAction_1 = require(\"./protocolCodeAction\");\nconst protocolDiagnostic_1 = require(\"./protocolDiagnostic\");\nconst protocolCallHierarchyItem_1 = require(\"./protocolCallHierarchyItem\");\nconst protocolTypeHierarchyItem_1 = require(\"./protocolTypeHierarchyItem\");\nconst protocolWorkspaceSymbol_1 = require(\"./protocolWorkspaceSymbol\");\nconst protocolInlayHint_1 = require(\"./protocolInlayHint\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nvar CodeBlock;\n(function (CodeBlock) {\n    function is(value) {\n        let candidate = value;\n        return candidate && Is.string(candidate.language) && Is.string(candidate.value);\n    }\n    CodeBlock.is = is;\n})(CodeBlock || (CodeBlock = {}));\nfunction createConverter(uriConverter, trustMarkdown, supportHtml) {\n    const nullConverter = (value) => code.Uri.parse(value);\n    const _uriConverter = uriConverter || nullConverter;\n    function asUri(value) {\n        return _uriConverter(value);\n    }\n    function asDocumentSelector(selector) {\n        const result = [];\n        for (const filter of selector) {\n            if (typeof filter === 'string') {\n                result.push(filter);\n            }\n            else if (vscode_languageserver_protocol_1.NotebookCellTextDocumentFilter.is(filter)) {\n                // We first need to check for the notebook cell filter since a TextDocumentFilter would\n                // match both (e.g. the notebook is optional).\n                if (typeof filter.notebook === 'string') {\n                    result.push({ notebookType: filter.notebook, language: filter.language });\n                }\n                else {\n                    const notebookType = filter.notebook.notebookType ?? '*';\n                    result.push({ notebookType: notebookType, scheme: filter.notebook.scheme, pattern: filter.notebook.pattern, language: filter.language });\n                }\n            }\n            else if (vscode_languageserver_protocol_1.TextDocumentFilter.is(filter)) {\n                result.push({ language: filter.language, scheme: filter.scheme, pattern: filter.pattern });\n            }\n        }\n        return result;\n    }\n    async function asDiagnostics(diagnostics, token) {\n        return async.map(diagnostics, asDiagnostic, token);\n    }\n    function asDiagnosticsSync(diagnostics) {\n        const result = new Array(diagnostics.length);\n        for (let i = 0; i < diagnostics.length; i++) {\n            result[i] = asDiagnostic(diagnostics[i]);\n        }\n        return result;\n    }\n    function asDiagnostic(diagnostic) {\n        let result = new protocolDiagnostic_1.ProtocolDiagnostic(asRange(diagnostic.range), diagnostic.message, asDiagnosticSeverity(diagnostic.severity), diagnostic.data);\n        if (diagnostic.code !== undefined) {\n            if (typeof diagnostic.code === 'string' || typeof diagnostic.code === 'number') {\n                if (ls.CodeDescription.is(diagnostic.codeDescription)) {\n                    result.code = {\n                        value: diagnostic.code,\n                        target: asUri(diagnostic.codeDescription.href)\n                    };\n                }\n                else {\n                    result.code = diagnostic.code;\n                }\n            }\n            else if (protocolDiagnostic_1.DiagnosticCode.is(diagnostic.code)) {\n                // This is for backwards compatibility of a proposed API.\n                // We should remove this at some point.\n                result.hasDiagnosticCode = true;\n                const diagnosticCode = diagnostic.code;\n                result.code = {\n                    value: diagnosticCode.value,\n                    target: asUri(diagnosticCode.target)\n                };\n            }\n        }\n        if (diagnostic.source) {\n            result.source = diagnostic.source;\n        }\n        if (diagnostic.relatedInformation) {\n            result.relatedInformation = asRelatedInformation(diagnostic.relatedInformation);\n        }\n        if (Array.isArray(diagnostic.tags)) {\n            result.tags = asDiagnosticTags(diagnostic.tags);\n        }\n        return result;\n    }\n    function asRelatedInformation(relatedInformation) {\n        const result = new Array(relatedInformation.length);\n        for (let i = 0; i < relatedInformation.length; i++) {\n            const info = relatedInformation[i];\n            result[i] = new code.DiagnosticRelatedInformation(asLocation(info.location), info.message);\n        }\n        return result;\n    }\n    function asDiagnosticTags(tags) {\n        if (!tags) {\n            return undefined;\n        }\n        let result = [];\n        for (let tag of tags) {\n            let converted = asDiagnosticTag(tag);\n            if (converted !== undefined) {\n                result.push(converted);\n            }\n        }\n        return result.length > 0 ? result : undefined;\n    }\n    function asDiagnosticTag(tag) {\n        switch (tag) {\n            case ls.DiagnosticTag.Unnecessary:\n                return code.DiagnosticTag.Unnecessary;\n            case ls.DiagnosticTag.Deprecated:\n                return code.DiagnosticTag.Deprecated;\n            default:\n                return undefined;\n        }\n    }\n    function asPosition(value) {\n        return value ? new code.Position(value.line, value.character) : undefined;\n    }\n    function asRange(value) {\n        return value ? new code.Range(value.start.line, value.start.character, value.end.line, value.end.character) : undefined;\n    }\n    async function asRanges(items, token) {\n        return async.map(items, (range) => {\n            return new code.Range(range.start.line, range.start.character, range.end.line, range.end.character);\n        }, token);\n    }\n    function asDiagnosticSeverity(value) {\n        if (value === undefined || value === null) {\n            return code.DiagnosticSeverity.Error;\n        }\n        switch (value) {\n            case ls.DiagnosticSeverity.Error:\n                return code.DiagnosticSeverity.Error;\n            case ls.DiagnosticSeverity.Warning:\n                return code.DiagnosticSeverity.Warning;\n            case ls.DiagnosticSeverity.Information:\n                return code.DiagnosticSeverity.Information;\n            case ls.DiagnosticSeverity.Hint:\n                return code.DiagnosticSeverity.Hint;\n        }\n        return code.DiagnosticSeverity.Error;\n    }\n    function asHoverContent(value) {\n        if (Is.string(value)) {\n            return asMarkdownString(value);\n        }\n        else if (CodeBlock.is(value)) {\n            let result = asMarkdownString();\n            return result.appendCodeblock(value.value, value.language);\n        }\n        else if (Array.isArray(value)) {\n            let result = [];\n            for (let element of value) {\n                let item = asMarkdownString();\n                if (CodeBlock.is(element)) {\n                    item.appendCodeblock(element.value, element.language);\n                }\n                else {\n                    item.appendMarkdown(element);\n                }\n                result.push(item);\n            }\n            return result;\n        }\n        else {\n            return asMarkdownString(value);\n        }\n    }\n    function asDocumentation(value) {\n        if (Is.string(value)) {\n            return value;\n        }\n        else {\n            switch (value.kind) {\n                case ls.MarkupKind.Markdown:\n                    return asMarkdownString(value.value);\n                case ls.MarkupKind.PlainText:\n                    return value.value;\n                default:\n                    return `Unsupported Markup content received. Kind is: ${value.kind}`;\n            }\n        }\n    }\n    function asMarkdownString(value) {\n        let result;\n        if (value === undefined || typeof value === 'string') {\n            result = new code.MarkdownString(value);\n        }\n        else {\n            switch (value.kind) {\n                case ls.MarkupKind.Markdown:\n                    result = new code.MarkdownString(value.value);\n                    break;\n                case ls.MarkupKind.PlainText:\n                    result = new code.MarkdownString();\n                    result.appendText(value.value);\n                    break;\n                default:\n                    result = new code.MarkdownString();\n                    result.appendText(`Unsupported Markup content received. Kind is: ${value.kind}`);\n                    break;\n            }\n        }\n        result.isTrusted = trustMarkdown;\n        result.supportHtml = supportHtml;\n        return result;\n    }\n    function asHover(hover) {\n        if (!hover) {\n            return undefined;\n        }\n        return new code.Hover(asHoverContent(hover.contents), asRange(hover.range));\n    }\n    async function asCompletionResult(value, allCommitCharacters, token) {\n        if (!value) {\n            return undefined;\n        }\n        if (Array.isArray(value)) {\n            return async.map(value, (item) => asCompletionItem(item, allCommitCharacters), token);\n        }\n        const list = value;\n        const { defaultRange, commitCharacters } = getCompletionItemDefaults(list, allCommitCharacters);\n        const converted = await async.map(list.items, (item) => {\n            return asCompletionItem(item, commitCharacters, defaultRange, list.itemDefaults?.insertTextMode, list.itemDefaults?.insertTextFormat, list.itemDefaults?.data);\n        }, token);\n        return new code.CompletionList(converted, list.isIncomplete);\n    }\n    function getCompletionItemDefaults(list, allCommitCharacters) {\n        const rangeDefaults = list.itemDefaults?.editRange;\n        const commitCharacters = list.itemDefaults?.commitCharacters ?? allCommitCharacters;\n        return ls.Range.is(rangeDefaults)\n            ? { defaultRange: asRange(rangeDefaults), commitCharacters }\n            : rangeDefaults !== undefined\n                ? { defaultRange: { inserting: asRange(rangeDefaults.insert), replacing: asRange(rangeDefaults.replace) }, commitCharacters }\n                : { defaultRange: undefined, commitCharacters };\n    }\n    function asCompletionItemKind(value) {\n        // Protocol item kind is 1 based, codes item kind is zero based.\n        if (ls.CompletionItemKind.Text <= value && value <= ls.CompletionItemKind.TypeParameter) {\n            return [value - 1, undefined];\n        }\n        return [code.CompletionItemKind.Text, value];\n    }\n    function asCompletionItemTag(tag) {\n        switch (tag) {\n            case ls.CompletionItemTag.Deprecated:\n                return code.CompletionItemTag.Deprecated;\n        }\n        return undefined;\n    }\n    function asCompletionItemTags(tags) {\n        if (tags === undefined || tags === null) {\n            return [];\n        }\n        const result = [];\n        for (const tag of tags) {\n            const converted = asCompletionItemTag(tag);\n            if (converted !== undefined) {\n                result.push(converted);\n            }\n        }\n        return result;\n    }\n    function asCompletionItem(item, defaultCommitCharacters, defaultRange, defaultInsertTextMode, defaultInsertTextFormat, defaultData) {\n        const tags = asCompletionItemTags(item.tags);\n        const label = asCompletionItemLabel(item);\n        const result = new protocolCompletionItem_1.default(label);\n        if (item.detail) {\n            result.detail = item.detail;\n        }\n        if (item.documentation) {\n            result.documentation = asDocumentation(item.documentation);\n            result.documentationFormat = Is.string(item.documentation) ? '$string' : item.documentation.kind;\n        }\n        if (item.filterText) {\n            result.filterText = item.filterText;\n        }\n        const insertText = asCompletionInsertText(item, defaultRange, defaultInsertTextFormat);\n        if (insertText) {\n            result.insertText = insertText.text;\n            result.range = insertText.range;\n            result.fromEdit = insertText.fromEdit;\n        }\n        if (Is.number(item.kind)) {\n            let [itemKind, original] = asCompletionItemKind(item.kind);\n            result.kind = itemKind;\n            if (original) {\n                result.originalItemKind = original;\n            }\n        }\n        if (item.sortText) {\n            result.sortText = item.sortText;\n        }\n        if (item.additionalTextEdits) {\n            result.additionalTextEdits = asTextEditsSync(item.additionalTextEdits);\n        }\n        const commitCharacters = item.commitCharacters !== undefined\n            ? Is.stringArray(item.commitCharacters) ? item.commitCharacters : undefined\n            : defaultCommitCharacters;\n        if (commitCharacters) {\n            result.commitCharacters = commitCharacters.slice();\n        }\n        if (item.command) {\n            result.command = asCommand(item.command);\n        }\n        if (item.deprecated === true || item.deprecated === false) {\n            result.deprecated = item.deprecated;\n            if (item.deprecated === true) {\n                tags.push(code.CompletionItemTag.Deprecated);\n            }\n        }\n        if (item.preselect === true || item.preselect === false) {\n            result.preselect = item.preselect;\n        }\n        const data = item.data ?? defaultData;\n        if (data !== undefined) {\n            result.data = data;\n        }\n        if (tags.length > 0) {\n            result.tags = tags;\n        }\n        const insertTextMode = item.insertTextMode ?? defaultInsertTextMode;\n        if (insertTextMode !== undefined) {\n            result.insertTextMode = insertTextMode;\n            if (insertTextMode === ls.InsertTextMode.asIs) {\n                result.keepWhitespace = true;\n            }\n        }\n        return result;\n    }\n    function asCompletionItemLabel(item) {\n        if (ls.CompletionItemLabelDetails.is(item.labelDetails)) {\n            return {\n                label: item.label,\n                detail: item.labelDetails.detail,\n                description: item.labelDetails.description\n            };\n        }\n        else {\n            return item.label;\n        }\n    }\n    function asCompletionInsertText(item, defaultRange, defaultInsertTextFormat) {\n        const insertTextFormat = item.insertTextFormat ?? defaultInsertTextFormat;\n        if (item.textEdit !== undefined || defaultRange !== undefined) {\n            const [range, newText] = item.textEdit !== undefined\n                ? getCompletionRangeAndText(item.textEdit)\n                : [defaultRange, item.textEditText ?? item.label];\n            if (insertTextFormat === ls.InsertTextFormat.Snippet) {\n                return { text: new code.SnippetString(newText), range: range, fromEdit: true };\n            }\n            else {\n                return { text: newText, range: range, fromEdit: true };\n            }\n        }\n        else if (item.insertText) {\n            if (insertTextFormat === ls.InsertTextFormat.Snippet) {\n                return { text: new code.SnippetString(item.insertText), fromEdit: false };\n            }\n            else {\n                return { text: item.insertText, fromEdit: false };\n            }\n        }\n        else {\n            return undefined;\n        }\n    }\n    function getCompletionRangeAndText(value) {\n        if (ls.InsertReplaceEdit.is(value)) {\n            return [{ inserting: asRange(value.insert), replacing: asRange(value.replace) }, value.newText];\n        }\n        else {\n            return [asRange(value.range), value.newText];\n        }\n    }\n    function asTextEdit(edit) {\n        if (!edit) {\n            return undefined;\n        }\n        return new code.TextEdit(asRange(edit.range), edit.newText);\n    }\n    async function asTextEdits(items, token) {\n        if (!items) {\n            return undefined;\n        }\n        return async.map(items, asTextEdit, token);\n    }\n    function asTextEditsSync(items) {\n        if (!items) {\n            return undefined;\n        }\n        const result = new Array(items.length);\n        for (let i = 0; i < items.length; i++) {\n            result[i] = asTextEdit(items[i]);\n        }\n        return result;\n    }\n    async function asSignatureHelp(item, token) {\n        if (!item) {\n            return undefined;\n        }\n        let result = new code.SignatureHelp();\n        if (Is.number(item.activeSignature)) {\n            result.activeSignature = item.activeSignature;\n        }\n        else {\n            // activeSignature was optional in the past\n            result.activeSignature = 0;\n        }\n        if (Is.number(item.activeParameter)) {\n            result.activeParameter = item.activeParameter;\n        }\n        else {\n            // activeParameter was optional in the past\n            result.activeParameter = 0;\n        }\n        if (item.signatures) {\n            result.signatures = await asSignatureInformations(item.signatures, token);\n        }\n        return result;\n    }\n    async function asSignatureInformations(items, token) {\n        return async.mapAsync(items, asSignatureInformation, token);\n    }\n    async function asSignatureInformation(item, token) {\n        let result = new code.SignatureInformation(item.label);\n        if (item.documentation !== undefined) {\n            result.documentation = asDocumentation(item.documentation);\n        }\n        if (item.parameters !== undefined) {\n            result.parameters = await asParameterInformations(item.parameters, token);\n        }\n        if (item.activeParameter !== undefined) {\n            result.activeParameter = item.activeParameter;\n        }\n        {\n            return result;\n        }\n    }\n    function asParameterInformations(items, token) {\n        return async.map(items, asParameterInformation, token);\n    }\n    function asParameterInformation(item) {\n        let result = new code.ParameterInformation(item.label);\n        if (item.documentation) {\n            result.documentation = asDocumentation(item.documentation);\n        }\n        return result;\n    }\n    function asLocation(item) {\n        return item ? new code.Location(_uriConverter(item.uri), asRange(item.range)) : undefined;\n    }\n    async function asDeclarationResult(item, token) {\n        if (!item) {\n            return undefined;\n        }\n        return asLocationResult(item, token);\n    }\n    async function asDefinitionResult(item, token) {\n        if (!item) {\n            return undefined;\n        }\n        return asLocationResult(item, token);\n    }\n    function asLocationLink(item) {\n        if (!item) {\n            return undefined;\n        }\n        let result = {\n            targetUri: _uriConverter(item.targetUri),\n            targetRange: asRange(item.targetRange),\n            originSelectionRange: asRange(item.originSelectionRange),\n            targetSelectionRange: asRange(item.targetSelectionRange)\n        };\n        if (!result.targetSelectionRange) {\n            throw new Error(`targetSelectionRange must not be undefined or null`);\n        }\n        return result;\n    }\n    async function asLocationResult(item, token) {\n        if (!item) {\n            return undefined;\n        }\n        if (Is.array(item)) {\n            if (item.length === 0) {\n                return [];\n            }\n            else if (ls.LocationLink.is(item[0])) {\n                const links = item;\n                return async.map(links, asLocationLink, token);\n            }\n            else {\n                const locations = item;\n                return async.map(locations, asLocation, token);\n            }\n        }\n        else if (ls.LocationLink.is(item)) {\n            return [asLocationLink(item)];\n        }\n        else {\n            return asLocation(item);\n        }\n    }\n    async function asReferences(values, token) {\n        if (!values) {\n            return undefined;\n        }\n        return async.map(values, asLocation, token);\n    }\n    async function asDocumentHighlights(values, token) {\n        if (!values) {\n            return undefined;\n        }\n        return async.map(values, asDocumentHighlight, token);\n    }\n    function asDocumentHighlight(item) {\n        let result = new code.DocumentHighlight(asRange(item.range));\n        if (Is.number(item.kind)) {\n            result.kind = asDocumentHighlightKind(item.kind);\n        }\n        return result;\n    }\n    function asDocumentHighlightKind(item) {\n        switch (item) {\n            case ls.DocumentHighlightKind.Text:\n                return code.DocumentHighlightKind.Text;\n            case ls.DocumentHighlightKind.Read:\n                return code.DocumentHighlightKind.Read;\n            case ls.DocumentHighlightKind.Write:\n                return code.DocumentHighlightKind.Write;\n        }\n        return code.DocumentHighlightKind.Text;\n    }\n    async function asSymbolInformations(values, token) {\n        if (!values) {\n            return undefined;\n        }\n        return async.map(values, asSymbolInformation, token);\n    }\n    function asSymbolKind(item) {\n        if (item <= ls.SymbolKind.TypeParameter) {\n            // Symbol kind is one based in the protocol and zero based in code.\n            return item - 1;\n        }\n        return code.SymbolKind.Property;\n    }\n    function asSymbolTag(value) {\n        switch (value) {\n            case ls.SymbolTag.Deprecated:\n                return code.SymbolTag.Deprecated;\n            default:\n                return undefined;\n        }\n    }\n    function asSymbolTags(items) {\n        if (items === undefined || items === null) {\n            return undefined;\n        }\n        const result = [];\n        for (const item of items) {\n            const converted = asSymbolTag(item);\n            if (converted !== undefined) {\n                result.push(converted);\n            }\n        }\n        return result.length === 0 ? undefined : result;\n    }\n    function asSymbolInformation(item) {\n        const data = item.data;\n        const location = item.location;\n        const result = location.range === undefined || data !== undefined\n            ? new protocolWorkspaceSymbol_1.default(item.name, asSymbolKind(item.kind), item.containerName ?? '', location.range === undefined ? _uriConverter(location.uri) : new code.Location(_uriConverter(item.location.uri), asRange(location.range)), data)\n            : new code.SymbolInformation(item.name, asSymbolKind(item.kind), item.containerName ?? '', new code.Location(_uriConverter(item.location.uri), asRange(location.range)));\n        fillTags(result, item);\n        return result;\n    }\n    async function asDocumentSymbols(values, token) {\n        if (values === undefined || values === null) {\n            return undefined;\n        }\n        return async.map(values, asDocumentSymbol, token);\n    }\n    function asDocumentSymbol(value) {\n        let result = new code.DocumentSymbol(value.name, value.detail || '', asSymbolKind(value.kind), asRange(value.range), asRange(value.selectionRange));\n        fillTags(result, value);\n        if (value.children !== undefined && value.children.length > 0) {\n            let children = [];\n            for (let child of value.children) {\n                children.push(asDocumentSymbol(child));\n            }\n            result.children = children;\n        }\n        return result;\n    }\n    function fillTags(result, value) {\n        result.tags = asSymbolTags(value.tags);\n        if (value.deprecated) {\n            if (!result.tags) {\n                result.tags = [code.SymbolTag.Deprecated];\n            }\n            else {\n                if (!result.tags.includes(code.SymbolTag.Deprecated)) {\n                    result.tags = result.tags.concat(code.SymbolTag.Deprecated);\n                }\n            }\n        }\n    }\n    function asCommand(item) {\n        let result = { title: item.title, command: item.command };\n        if (item.arguments) {\n            result.arguments = item.arguments;\n        }\n        return result;\n    }\n    async function asCommands(items, token) {\n        if (!items) {\n            return undefined;\n        }\n        return async.map(items, asCommand, token);\n    }\n    const kindMapping = new Map();\n    kindMapping.set(ls.CodeActionKind.Empty, code.CodeActionKind.Empty);\n    kindMapping.set(ls.CodeActionKind.QuickFix, code.CodeActionKind.QuickFix);\n    kindMapping.set(ls.CodeActionKind.Refactor, code.CodeActionKind.Refactor);\n    kindMapping.set(ls.CodeActionKind.RefactorExtract, code.CodeActionKind.RefactorExtract);\n    kindMapping.set(ls.CodeActionKind.RefactorInline, code.CodeActionKind.RefactorInline);\n    kindMapping.set(ls.CodeActionKind.RefactorRewrite, code.CodeActionKind.RefactorRewrite);\n    kindMapping.set(ls.CodeActionKind.Source, code.CodeActionKind.Source);\n    kindMapping.set(ls.CodeActionKind.SourceOrganizeImports, code.CodeActionKind.SourceOrganizeImports);\n    function asCodeActionKind(item) {\n        if (item === undefined || item === null) {\n            return undefined;\n        }\n        let result = kindMapping.get(item);\n        if (result) {\n            return result;\n        }\n        let parts = item.split('.');\n        result = code.CodeActionKind.Empty;\n        for (let part of parts) {\n            result = result.append(part);\n        }\n        return result;\n    }\n    function asCodeActionKinds(items) {\n        if (items === undefined || items === null) {\n            return undefined;\n        }\n        return items.map(kind => asCodeActionKind(kind));\n    }\n    async function asCodeAction(item, token) {\n        if (item === undefined || item === null) {\n            return undefined;\n        }\n        let result = new protocolCodeAction_1.default(item.title, item.data);\n        if (item.kind !== undefined) {\n            result.kind = asCodeActionKind(item.kind);\n        }\n        if (item.diagnostics !== undefined) {\n            result.diagnostics = asDiagnosticsSync(item.diagnostics);\n        }\n        if (item.edit !== undefined) {\n            result.edit = await asWorkspaceEdit(item.edit, token);\n        }\n        if (item.command !== undefined) {\n            result.command = asCommand(item.command);\n        }\n        if (item.isPreferred !== undefined) {\n            result.isPreferred = item.isPreferred;\n        }\n        if (item.disabled !== undefined) {\n            result.disabled = { reason: item.disabled.reason };\n        }\n        return result;\n    }\n    function asCodeActionResult(items, token) {\n        return async.mapAsync(items, async (item) => {\n            if (ls.Command.is(item)) {\n                return asCommand(item);\n            }\n            else {\n                return asCodeAction(item, token);\n            }\n        }, token);\n    }\n    function asCodeLens(item) {\n        if (!item) {\n            return undefined;\n        }\n        let result = new protocolCodeLens_1.default(asRange(item.range));\n        if (item.command) {\n            result.command = asCommand(item.command);\n        }\n        if (item.data !== undefined && item.data !== null) {\n            result.data = item.data;\n        }\n        return result;\n    }\n    async function asCodeLenses(items, token) {\n        if (!items) {\n            return undefined;\n        }\n        return async.map(items, asCodeLens, token);\n    }\n    async function asWorkspaceEdit(item, token) {\n        if (!item) {\n            return undefined;\n        }\n        const sharedMetadata = new Map();\n        if (item.changeAnnotations !== undefined) {\n            const changeAnnotations = item.changeAnnotations;\n            await async.forEach(Object.keys(changeAnnotations), (key) => {\n                const metaData = asWorkspaceEditEntryMetadata(changeAnnotations[key]);\n                sharedMetadata.set(key, metaData);\n            }, token);\n        }\n        const asMetadata = (annotation) => {\n            if (annotation === undefined) {\n                return undefined;\n            }\n            else {\n                return sharedMetadata.get(annotation);\n            }\n        };\n        const result = new code.WorkspaceEdit();\n        if (item.documentChanges) {\n            const documentChanges = item.documentChanges;\n            await async.forEach(documentChanges, (change) => {\n                if (ls.CreateFile.is(change)) {\n                    result.createFile(_uriConverter(change.uri), change.options, asMetadata(change.annotationId));\n                }\n                else if (ls.RenameFile.is(change)) {\n                    result.renameFile(_uriConverter(change.oldUri), _uriConverter(change.newUri), change.options, asMetadata(change.annotationId));\n                }\n                else if (ls.DeleteFile.is(change)) {\n                    result.deleteFile(_uriConverter(change.uri), change.options, asMetadata(change.annotationId));\n                }\n                else if (ls.TextDocumentEdit.is(change)) {\n                    const uri = _uriConverter(change.textDocument.uri);\n                    for (const edit of change.edits) {\n                        if (ls.AnnotatedTextEdit.is(edit)) {\n                            result.replace(uri, asRange(edit.range), edit.newText, asMetadata(edit.annotationId));\n                        }\n                        else {\n                            result.replace(uri, asRange(edit.range), edit.newText);\n                        }\n                    }\n                }\n                else {\n                    throw new Error(`Unknown workspace edit change received:\\n${JSON.stringify(change, undefined, 4)}`);\n                }\n            }, token);\n        }\n        else if (item.changes) {\n            const changes = item.changes;\n            await async.forEach(Object.keys(changes), (key) => {\n                result.set(_uriConverter(key), asTextEditsSync(changes[key]));\n            }, token);\n        }\n        return result;\n    }\n    function asWorkspaceEditEntryMetadata(annotation) {\n        if (annotation === undefined) {\n            return undefined;\n        }\n        return { label: annotation.label, needsConfirmation: !!annotation.needsConfirmation, description: annotation.description };\n    }\n    function asDocumentLink(item) {\n        let range = asRange(item.range);\n        let target = item.target ? asUri(item.target) : undefined;\n        // target must be optional in DocumentLink\n        let link = new protocolDocumentLink_1.default(range, target);\n        if (item.tooltip !== undefined) {\n            link.tooltip = item.tooltip;\n        }\n        if (item.data !== undefined && item.data !== null) {\n            link.data = item.data;\n        }\n        return link;\n    }\n    async function asDocumentLinks(items, token) {\n        if (!items) {\n            return undefined;\n        }\n        return async.map(items, asDocumentLink, token);\n    }\n    function asColor(color) {\n        return new code.Color(color.red, color.green, color.blue, color.alpha);\n    }\n    function asColorInformation(ci) {\n        return new code.ColorInformation(asRange(ci.range), asColor(ci.color));\n    }\n    async function asColorInformations(colorInformation, token) {\n        if (!colorInformation) {\n            return undefined;\n        }\n        return async.map(colorInformation, asColorInformation, token);\n    }\n    function asColorPresentation(cp) {\n        let presentation = new code.ColorPresentation(cp.label);\n        presentation.additionalTextEdits = asTextEditsSync(cp.additionalTextEdits);\n        if (cp.textEdit) {\n            presentation.textEdit = asTextEdit(cp.textEdit);\n        }\n        return presentation;\n    }\n    async function asColorPresentations(colorPresentations, token) {\n        if (!colorPresentations) {\n            return undefined;\n        }\n        return async.map(colorPresentations, asColorPresentation, token);\n    }\n    function asFoldingRangeKind(kind) {\n        if (kind) {\n            switch (kind) {\n                case ls.FoldingRangeKind.Comment:\n                    return code.FoldingRangeKind.Comment;\n                case ls.FoldingRangeKind.Imports:\n                    return code.FoldingRangeKind.Imports;\n                case ls.FoldingRangeKind.Region:\n                    return code.FoldingRangeKind.Region;\n            }\n        }\n        return undefined;\n    }\n    function asFoldingRange(r) {\n        return new code.FoldingRange(r.startLine, r.endLine, asFoldingRangeKind(r.kind));\n    }\n    async function asFoldingRanges(foldingRanges, token) {\n        if (!foldingRanges) {\n            return undefined;\n        }\n        return async.map(foldingRanges, asFoldingRange, token);\n    }\n    function asSelectionRange(selectionRange) {\n        return new code.SelectionRange(asRange(selectionRange.range), selectionRange.parent ? asSelectionRange(selectionRange.parent) : undefined);\n    }\n    async function asSelectionRanges(selectionRanges, token) {\n        if (!Array.isArray(selectionRanges)) {\n            return [];\n        }\n        return async.map(selectionRanges, asSelectionRange, token);\n    }\n    function asInlineValue(inlineValue) {\n        if (ls.InlineValueText.is(inlineValue)) {\n            return new code.InlineValueText(asRange(inlineValue.range), inlineValue.text);\n        }\n        else if (ls.InlineValueVariableLookup.is(inlineValue)) {\n            return new code.InlineValueVariableLookup(asRange(inlineValue.range), inlineValue.variableName, inlineValue.caseSensitiveLookup);\n        }\n        else {\n            return new code.InlineValueEvaluatableExpression(asRange(inlineValue.range), inlineValue.expression);\n        }\n    }\n    async function asInlineValues(inlineValues, token) {\n        if (!Array.isArray(inlineValues)) {\n            return [];\n        }\n        return async.map(inlineValues, asInlineValue, token);\n    }\n    async function asInlayHint(value, token) {\n        const label = typeof value.label === 'string'\n            ? value.label\n            : await async.map(value.label, asInlayHintLabelPart, token);\n        const result = new protocolInlayHint_1.default(asPosition(value.position), label);\n        if (value.kind !== undefined) {\n            result.kind = value.kind;\n        }\n        if (value.textEdits !== undefined) {\n            result.textEdits = await asTextEdits(value.textEdits, token);\n        }\n        if (value.tooltip !== undefined) {\n            result.tooltip = asTooltip(value.tooltip);\n        }\n        if (value.paddingLeft !== undefined) {\n            result.paddingLeft = value.paddingLeft;\n        }\n        if (value.paddingRight !== undefined) {\n            result.paddingRight = value.paddingRight;\n        }\n        if (value.data !== undefined) {\n            result.data = value.data;\n        }\n        return result;\n    }\n    function asInlayHintLabelPart(part) {\n        const result = new code.InlayHintLabelPart(part.value);\n        if (part.location !== undefined) {\n            result.location = asLocation(part.location);\n        }\n        if (part.tooltip !== undefined) {\n            result.tooltip = asTooltip(part.tooltip);\n        }\n        if (part.command !== undefined) {\n            result.command = asCommand(part.command);\n        }\n        return result;\n    }\n    function asTooltip(value) {\n        if (typeof value === 'string') {\n            return value;\n        }\n        return asMarkdownString(value);\n    }\n    async function asInlayHints(values, token) {\n        if (!Array.isArray(values)) {\n            return undefined;\n        }\n        return async.mapAsync(values, asInlayHint, token);\n    }\n    function asCallHierarchyItem(item) {\n        if (item === null) {\n            return undefined;\n        }\n        const result = new protocolCallHierarchyItem_1.default(asSymbolKind(item.kind), item.name, item.detail || '', asUri(item.uri), asRange(item.range), asRange(item.selectionRange), item.data);\n        if (item.tags !== undefined) {\n            result.tags = asSymbolTags(item.tags);\n        }\n        return result;\n    }\n    async function asCallHierarchyItems(items, token) {\n        if (items === null) {\n            return undefined;\n        }\n        return async.map(items, asCallHierarchyItem, token);\n    }\n    async function asCallHierarchyIncomingCall(item, token) {\n        return new code.CallHierarchyIncomingCall(asCallHierarchyItem(item.from), await asRanges(item.fromRanges, token));\n    }\n    async function asCallHierarchyIncomingCalls(items, token) {\n        if (items === null) {\n            return undefined;\n        }\n        return async.mapAsync(items, asCallHierarchyIncomingCall, token);\n    }\n    async function asCallHierarchyOutgoingCall(item, token) {\n        return new code.CallHierarchyOutgoingCall(asCallHierarchyItem(item.to), await asRanges(item.fromRanges, token));\n    }\n    async function asCallHierarchyOutgoingCalls(items, token) {\n        if (items === null) {\n            return undefined;\n        }\n        return async.mapAsync(items, asCallHierarchyOutgoingCall, token);\n    }\n    async function asSemanticTokens(value, _token) {\n        if (value === undefined || value === null) {\n            return undefined;\n        }\n        return new code.SemanticTokens(new Uint32Array(value.data), value.resultId);\n    }\n    function asSemanticTokensEdit(value) {\n        return new code.SemanticTokensEdit(value.start, value.deleteCount, value.data !== undefined ? new Uint32Array(value.data) : undefined);\n    }\n    async function asSemanticTokensEdits(value, _token) {\n        if (value === undefined || value === null) {\n            return undefined;\n        }\n        return new code.SemanticTokensEdits(value.edits.map(asSemanticTokensEdit), value.resultId);\n    }\n    function asSemanticTokensLegend(value) {\n        return value;\n    }\n    async function asLinkedEditingRanges(value, token) {\n        if (value === null || value === undefined) {\n            return undefined;\n        }\n        return new code.LinkedEditingRanges(await asRanges(value.ranges, token), asRegularExpression(value.wordPattern));\n    }\n    function asRegularExpression(value) {\n        if (value === null || value === undefined) {\n            return undefined;\n        }\n        return new RegExp(value);\n    }\n    function asTypeHierarchyItem(item) {\n        if (item === null) {\n            return undefined;\n        }\n        let result = new protocolTypeHierarchyItem_1.default(asSymbolKind(item.kind), item.name, item.detail || '', asUri(item.uri), asRange(item.range), asRange(item.selectionRange), item.data);\n        if (item.tags !== undefined) {\n            result.tags = asSymbolTags(item.tags);\n        }\n        return result;\n    }\n    async function asTypeHierarchyItems(items, token) {\n        if (items === null) {\n            return undefined;\n        }\n        return async.map(items, asTypeHierarchyItem, token);\n    }\n    function asGlobPattern(pattern) {\n        if (Is.string(pattern)) {\n            return pattern;\n        }\n        if (ls.RelativePattern.is(pattern)) {\n            if (ls.URI.is(pattern.baseUri)) {\n                return new code.RelativePattern(asUri(pattern.baseUri), pattern.pattern);\n            }\n            else if (ls.WorkspaceFolder.is(pattern.baseUri)) {\n                const workspaceFolder = code.workspace.getWorkspaceFolder(asUri(pattern.baseUri.uri));\n                return workspaceFolder !== undefined ? new code.RelativePattern(workspaceFolder, pattern.pattern) : undefined;\n            }\n        }\n        return undefined;\n    }\n    async function asInlineCompletionResult(value, token) {\n        if (!value) {\n            return undefined;\n        }\n        if (Array.isArray(value)) {\n            return async.map(value, (item) => asInlineCompletionItem(item), token);\n        }\n        const list = value;\n        const converted = await async.map(list.items, (item) => {\n            return asInlineCompletionItem(item);\n        }, token);\n        return new code.InlineCompletionList(converted);\n    }\n    function asInlineCompletionItem(item) {\n        let insertText;\n        if (typeof item.insertText === 'string') {\n            insertText = item.insertText;\n        }\n        else {\n            insertText = new code.SnippetString(item.insertText.value);\n        }\n        let command = undefined;\n        if (item.command) {\n            command = asCommand(item.command);\n        }\n        const inlineCompletionItem = new code.InlineCompletionItem(insertText, asRange(item.range), command);\n        if (item.filterText) {\n            inlineCompletionItem.filterText = item.filterText;\n        }\n        return inlineCompletionItem;\n    }\n    return {\n        asUri,\n        asDocumentSelector,\n        asDiagnostics,\n        asDiagnostic,\n        asRange,\n        asRanges,\n        asPosition,\n        asDiagnosticSeverity,\n        asDiagnosticTag,\n        asHover,\n        asCompletionResult,\n        asCompletionItem,\n        asTextEdit,\n        asTextEdits,\n        asSignatureHelp,\n        asSignatureInformations,\n        asSignatureInformation,\n        asParameterInformations,\n        asParameterInformation,\n        asDeclarationResult,\n        asDefinitionResult,\n        asLocation,\n        asReferences,\n        asDocumentHighlights,\n        asDocumentHighlight,\n        asDocumentHighlightKind,\n        asSymbolKind,\n        asSymbolTag,\n        asSymbolTags,\n        asSymbolInformations,\n        asSymbolInformation,\n        asDocumentSymbols,\n        asDocumentSymbol,\n        asCommand,\n        asCommands,\n        asCodeAction,\n        asCodeActionKind,\n        asCodeActionKinds,\n        asCodeActionResult,\n        asCodeLens,\n        asCodeLenses,\n        asWorkspaceEdit,\n        asDocumentLink,\n        asDocumentLinks,\n        asFoldingRangeKind,\n        asFoldingRange,\n        asFoldingRanges,\n        asColor,\n        asColorInformation,\n        asColorInformations,\n        asColorPresentation,\n        asColorPresentations,\n        asSelectionRange,\n        asSelectionRanges,\n        asInlineValue,\n        asInlineValues,\n        asInlayHint,\n        asInlayHints,\n        asSemanticTokensLegend,\n        asSemanticTokens,\n        asSemanticTokensEdit,\n        asSemanticTokensEdits,\n        asCallHierarchyItem,\n        asCallHierarchyItems,\n        asCallHierarchyIncomingCall,\n        asCallHierarchyIncomingCalls,\n        asCallHierarchyOutgoingCall,\n        asCallHierarchyOutgoingCalls,\n        asLinkedEditingRanges: asLinkedEditingRanges,\n        asTypeHierarchyItem,\n        asTypeHierarchyItems,\n        asGlobPattern,\n        asInlineCompletionResult,\n        asInlineCompletionItem\n    };\n}\nexports.createConverter = createConverter;\n", "\"use strict\";\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateUuid = exports.parse = exports.isUUID = exports.v4 = exports.empty = void 0;\nclass ValueUUID {\n    constructor(_value) {\n        this._value = _value;\n        // empty\n    }\n    asHex() {\n        return this._value;\n    }\n    equals(other) {\n        return this.asHex() === other.asHex();\n    }\n}\nclass V4UUID extends ValueUUID {\n    static _oneOf(array) {\n        return array[Math.floor(array.length * Math.random())];\n    }\n    static _randomHex() {\n        return V4UUID._oneOf(V4UUID._chars);\n    }\n    constructor() {\n        super([\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            '-',\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            '-',\n            '4',\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            '-',\n            V4UUID._oneOf(V4UUID._timeHighBits),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            '-',\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n            V4UUID._randomHex(),\n        ].join(''));\n    }\n}\nV4UUID._chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\nV4UUID._timeHighBits = ['8', '9', 'a', 'b'];\n/**\n * An empty UUID that contains only zeros.\n */\nexports.empty = new ValueUUID('00000000-0000-0000-0000-000000000000');\nfunction v4() {\n    return new V4UUID();\n}\nexports.v4 = v4;\nconst _UUIDPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\nfunction isUUID(value) {\n    return _UUIDPattern.test(value);\n}\nexports.isUUID = isUUID;\n/**\n * Parses a UUID that is of the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.\n * @param value A uuid string.\n */\nfunction parse(value) {\n    if (!isUUID(value)) {\n        throw new Error('invalid uuid');\n    }\n    return new ValueUUID(value);\n}\nexports.parse = parse;\nfunction generateUuid() {\n    return v4().asHex();\n}\nexports.generateUuid = generateUuid;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressPart = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nclass ProgressPart {\n    constructor(_client, _token, done) {\n        this._client = _client;\n        this._token = _token;\n        this._reported = 0;\n        this._infinite = false;\n        this._lspProgressDisposable = this._client.onProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, (value) => {\n            switch (value.kind) {\n                case 'begin':\n                    this.begin(value);\n                    break;\n                case 'report':\n                    this.report(value);\n                    break;\n                case 'end':\n                    this.done();\n                    done && done(this);\n                    break;\n            }\n        });\n    }\n    begin(params) {\n        this._infinite = params.percentage === undefined;\n        // the progress as already been marked as done / canceled. Ignore begin call\n        if (this._lspProgressDisposable === undefined) {\n            return;\n        }\n        // Since we don't use commands this will be a silent window progress with a hidden notification.\n        void vscode_1.window.withProgress({ location: vscode_1.ProgressLocation.Window, cancellable: params.cancellable, title: params.title }, async (progress, cancellationToken) => {\n            // the progress as already been marked as done / canceled. Ignore begin call\n            if (this._lspProgressDisposable === undefined) {\n                return;\n            }\n            this._progress = progress;\n            this._cancellationToken = cancellationToken;\n            this._tokenDisposable = this._cancellationToken.onCancellationRequested(() => {\n                this._client.sendNotification(vscode_languageserver_protocol_1.WorkDoneProgressCancelNotification.type, { token: this._token });\n            });\n            this.report(params);\n            return new Promise((resolve, reject) => {\n                this._resolve = resolve;\n                this._reject = reject;\n            });\n        });\n    }\n    report(params) {\n        if (this._infinite && Is.string(params.message)) {\n            this._progress !== undefined && this._progress.report({ message: params.message });\n        }\n        else if (Is.number(params.percentage)) {\n            const percentage = Math.max(0, Math.min(params.percentage, 100));\n            const delta = Math.max(0, percentage - this._reported);\n            this._reported += delta;\n            this._progress !== undefined && this._progress.report({ message: params.message, increment: delta });\n        }\n    }\n    cancel() {\n        this.cleanup();\n        if (this._reject !== undefined) {\n            this._reject();\n            this._resolve = undefined;\n            this._reject = undefined;\n        }\n    }\n    done() {\n        this.cleanup();\n        if (this._resolve !== undefined) {\n            this._resolve();\n            this._resolve = undefined;\n            this._reject = undefined;\n        }\n    }\n    cleanup() {\n        if (this._lspProgressDisposable !== undefined) {\n            this._lspProgressDisposable.dispose();\n            this._lspProgressDisposable = undefined;\n        }\n        if (this._tokenDisposable !== undefined) {\n            this._tokenDisposable.dispose();\n            this._tokenDisposable = undefined;\n        }\n        this._progress = undefined;\n        this._cancellationToken = undefined;\n    }\n}\nexports.ProgressPart = ProgressPart;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceFeature = exports.TextDocumentLanguageFeature = exports.TextDocumentEventFeature = exports.DynamicDocumentFeature = exports.DynamicFeature = exports.StaticFeature = exports.ensure = exports.LSPCancellationError = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nconst UUID = require(\"./utils/uuid\");\nclass LSPCancellationError extends vscode_1.CancellationError {\n    constructor(data) {\n        super();\n        this.data = data;\n    }\n}\nexports.LSPCancellationError = LSPCancellationError;\nfunction ensure(target, key) {\n    if (target[key] === undefined) {\n        target[key] = {};\n    }\n    return target[key];\n}\nexports.ensure = ensure;\nvar StaticFeature;\n(function (StaticFeature) {\n    function is(value) {\n        const candidate = value;\n        return candidate !== undefined && candidate !== null &&\n            Is.func(candidate.fillClientCapabilities) && Is.func(candidate.initialize) && Is.func(candidate.getState) && Is.func(candidate.clear) &&\n            (candidate.fillInitializeParams === undefined || Is.func(candidate.fillInitializeParams));\n    }\n    StaticFeature.is = is;\n})(StaticFeature || (exports.StaticFeature = StaticFeature = {}));\nvar DynamicFeature;\n(function (DynamicFeature) {\n    function is(value) {\n        const candidate = value;\n        return candidate !== undefined && candidate !== null &&\n            Is.func(candidate.fillClientCapabilities) && Is.func(candidate.initialize) && Is.func(candidate.getState) && Is.func(candidate.clear) &&\n            (candidate.fillInitializeParams === undefined || Is.func(candidate.fillInitializeParams)) && Is.func(candidate.register) &&\n            Is.func(candidate.unregister) && candidate.registrationType !== undefined;\n    }\n    DynamicFeature.is = is;\n})(DynamicFeature || (exports.DynamicFeature = DynamicFeature = {}));\n/**\n * An abstract dynamic feature implementation that operates on documents (e.g. text\n * documents or notebooks).\n */\nclass DynamicDocumentFeature {\n    constructor(client) {\n        this._client = client;\n    }\n    /**\n     * Returns the state the feature is in.\n     */\n    getState() {\n        const selectors = this.getDocumentSelectors();\n        let count = 0;\n        for (const selector of selectors) {\n            count++;\n            for (const document of vscode_1.workspace.textDocuments) {\n                if (vscode_1.languages.match(selector, document) > 0) {\n                    return { kind: 'document', id: this.registrationType.method, registrations: true, matches: true };\n                }\n            }\n        }\n        const registrations = count > 0;\n        return { kind: 'document', id: this.registrationType.method, registrations, matches: false };\n    }\n}\nexports.DynamicDocumentFeature = DynamicDocumentFeature;\n/**\n * An abstract base class to implement features that react to events\n * emitted from text documents.\n */\nclass TextDocumentEventFeature extends DynamicDocumentFeature {\n    static textDocumentFilter(selectors, textDocument) {\n        for (const selector of selectors) {\n            if (vscode_1.languages.match(selector, textDocument) > 0) {\n                return true;\n            }\n        }\n        return false;\n    }\n    constructor(client, event, type, middleware, createParams, textDocument, selectorFilter) {\n        super(client);\n        this._event = event;\n        this._type = type;\n        this._middleware = middleware;\n        this._createParams = createParams;\n        this._textDocument = textDocument;\n        this._selectorFilter = selectorFilter;\n        this._selectors = new Map();\n        this._onNotificationSent = new vscode_1.EventEmitter();\n    }\n    getStateInfo() {\n        return [this._selectors.values(), false];\n    }\n    getDocumentSelectors() {\n        return this._selectors.values();\n    }\n    register(data) {\n        if (!data.registerOptions.documentSelector) {\n            return;\n        }\n        if (!this._listener) {\n            this._listener = this._event((data) => {\n                this.callback(data).catch((error) => {\n                    this._client.error(`Sending document notification ${this._type.method} failed.`, error);\n                });\n            });\n        }\n        this._selectors.set(data.id, this._client.protocol2CodeConverter.asDocumentSelector(data.registerOptions.documentSelector));\n    }\n    async callback(data) {\n        const doSend = async (data) => {\n            const params = this._createParams(data);\n            await this._client.sendNotification(this._type, params);\n            this.notificationSent(this.getTextDocument(data), this._type, params);\n        };\n        if (this.matches(data)) {\n            const middleware = this._middleware();\n            return middleware ? middleware(data, (data) => doSend(data)) : doSend(data);\n        }\n    }\n    matches(data) {\n        if (this._client.hasDedicatedTextSynchronizationFeature(this._textDocument(data))) {\n            return false;\n        }\n        return !this._selectorFilter || this._selectorFilter(this._selectors.values(), data);\n    }\n    get onNotificationSent() {\n        return this._onNotificationSent.event;\n    }\n    notificationSent(textDocument, type, params) {\n        this._onNotificationSent.fire({ textDocument, type, params });\n    }\n    unregister(id) {\n        this._selectors.delete(id);\n        if (this._selectors.size === 0 && this._listener) {\n            this._listener.dispose();\n            this._listener = undefined;\n        }\n    }\n    clear() {\n        this._selectors.clear();\n        this._onNotificationSent.dispose();\n        if (this._listener) {\n            this._listener.dispose();\n            this._listener = undefined;\n        }\n    }\n    getProvider(document) {\n        for (const selector of this._selectors.values()) {\n            if (vscode_1.languages.match(selector, document) > 0) {\n                return {\n                    send: (data) => {\n                        return this.callback(data);\n                    }\n                };\n            }\n        }\n        return undefined;\n    }\n}\nexports.TextDocumentEventFeature = TextDocumentEventFeature;\n/**\n * A abstract feature implementation that registers language providers\n * for text documents using a given document selector.\n */\nclass TextDocumentLanguageFeature extends DynamicDocumentFeature {\n    constructor(client, registrationType) {\n        super(client);\n        this._registrationType = registrationType;\n        this._registrations = new Map();\n    }\n    *getDocumentSelectors() {\n        for (const registration of this._registrations.values()) {\n            const selector = registration.data.registerOptions.documentSelector;\n            if (selector === null) {\n                continue;\n            }\n            yield this._client.protocol2CodeConverter.asDocumentSelector(selector);\n        }\n    }\n    get registrationType() {\n        return this._registrationType;\n    }\n    register(data) {\n        if (!data.registerOptions.documentSelector) {\n            return;\n        }\n        let registration = this.registerLanguageProvider(data.registerOptions, data.id);\n        this._registrations.set(data.id, { disposable: registration[0], data, provider: registration[1] });\n    }\n    unregister(id) {\n        let registration = this._registrations.get(id);\n        if (registration !== undefined) {\n            registration.disposable.dispose();\n        }\n    }\n    clear() {\n        this._registrations.forEach((value) => {\n            value.disposable.dispose();\n        });\n        this._registrations.clear();\n    }\n    getRegistration(documentSelector, capability) {\n        if (!capability) {\n            return [undefined, undefined];\n        }\n        else if (vscode_languageserver_protocol_1.TextDocumentRegistrationOptions.is(capability)) {\n            const id = vscode_languageserver_protocol_1.StaticRegistrationOptions.hasId(capability) ? capability.id : UUID.generateUuid();\n            const selector = capability.documentSelector ?? documentSelector;\n            if (selector) {\n                return [id, Object.assign({}, capability, { documentSelector: selector })];\n            }\n        }\n        else if (Is.boolean(capability) && capability === true || vscode_languageserver_protocol_1.WorkDoneProgressOptions.is(capability)) {\n            if (!documentSelector) {\n                return [undefined, undefined];\n            }\n            const options = (Is.boolean(capability) && capability === true ? { documentSelector } : Object.assign({}, capability, { documentSelector }));\n            return [UUID.generateUuid(), options];\n        }\n        return [undefined, undefined];\n    }\n    getRegistrationOptions(documentSelector, capability) {\n        if (!documentSelector || !capability) {\n            return undefined;\n        }\n        return (Is.boolean(capability) && capability === true ? { documentSelector } : Object.assign({}, capability, { documentSelector }));\n    }\n    getProvider(textDocument) {\n        for (const registration of this._registrations.values()) {\n            let selector = registration.data.registerOptions.documentSelector;\n            if (selector !== null && vscode_1.languages.match(this._client.protocol2CodeConverter.asDocumentSelector(selector), textDocument) > 0) {\n                return registration.provider;\n            }\n        }\n        return undefined;\n    }\n    getAllProviders() {\n        const result = [];\n        for (const item of this._registrations.values()) {\n            result.push(item.provider);\n        }\n        return result;\n    }\n}\nexports.TextDocumentLanguageFeature = TextDocumentLanguageFeature;\nclass WorkspaceFeature {\n    constructor(client, registrationType) {\n        this._client = client;\n        this._registrationType = registrationType;\n        this._registrations = new Map();\n    }\n    getState() {\n        const registrations = this._registrations.size > 0;\n        return { kind: 'workspace', id: this._registrationType.method, registrations };\n    }\n    get registrationType() {\n        return this._registrationType;\n    }\n    register(data) {\n        const registration = this.registerLanguageProvider(data.registerOptions);\n        this._registrations.set(data.id, { disposable: registration[0], provider: registration[1] });\n    }\n    unregister(id) {\n        let registration = this._registrations.get(id);\n        if (registration !== undefined) {\n            registration.disposable.dispose();\n        }\n    }\n    clear() {\n        this._registrations.forEach((registration) => {\n            registration.disposable.dispose();\n        });\n        this._registrations.clear();\n    }\n    getProviders() {\n        const result = [];\n        for (const registration of this._registrations.values()) {\n            result.push(registration.provider);\n        }\n        return result;\n    }\n}\nexports.WorkspaceFeature = WorkspaceFeature;\n", "const isWindows = typeof process === 'object' &&\n  process &&\n  process.platform === 'win32'\nmodule.exports = isWindows ? { sep: '\\\\' } : { sep: '/' }\n", "'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n", "var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n", "const minimatch = module.exports = (p, pattern, options = {}) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\nmodule.exports = minimatch\n\nconst path = require('./lib/path.js')\nminimatch.sep = path.sep\n\nconst GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\nconst expand = require('brace-expansion')\n\nconst plTypes = {\n  '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},\n  '?': { open: '(?:', close: ')?' },\n  '+': { open: '(?:', close: ')+' },\n  '*': { open: '(?:', close: ')*' },\n  '@': { open: '(?:', close: ')' }\n}\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\\\/|^)(?:\\\\.{1,2})($|\\\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\\\/|^)\\\\.).)*?'\n\n// \"abc\" -> { a:true, b:true, c:true }\nconst charSet = s => s.split('').reduce((set, c) => {\n  set[c] = true\n  return set\n}, {})\n\n// characters that need to be escaped in RegExp.\nconst reSpecials = charSet('().*{}+?[]^$\\\\!')\n\n// characters that indicate we have to add the pattern start\nconst addPatternStartSet = charSet('[.(')\n\n// normalizes slashes.\nconst slashSplit = /\\/+/\n\nminimatch.filter = (pattern, options = {}) =>\n  (p, i, list) => minimatch(p, pattern, options)\n\nconst ext = (a, b = {}) => {\n  const t = {}\n  Object.keys(a).forEach(k => t[k] = a[k])\n  Object.keys(b).forEach(k => t[k] = b[k])\n  return t\n}\n\nminimatch.defaults = def => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p, pattern, options) => orig(p, pattern, ext(def, options))\n  m.Minimatch = class Minimatch extends orig.Minimatch {\n    constructor (pattern, options) {\n      super(pattern, ext(def, options))\n    }\n  }\n  m.Minimatch.defaults = options => orig.defaults(ext(def, options)).Minimatch\n  m.filter = (pattern, options) => orig.filter(pattern, ext(def, options))\n  m.defaults = options => orig.defaults(ext(def, options))\n  m.makeRe = (pattern, options) => orig.makeRe(pattern, ext(def, options))\n  m.braceExpand = (pattern, options) => orig.braceExpand(pattern, ext(def, options))\n  m.match = (list, pattern, options) => orig.match(list, pattern, ext(def, options))\n\n  return m\n}\n\n\n\n\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nminimatch.braceExpand = (pattern, options) => braceExpand(pattern, options)\n\nconst braceExpand = (pattern, options = {}) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li <https://github.com/yetingli> for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern)\n}\n\nconst MAX_PATTERN_LENGTH = 1024 * 64\nconst assertValidPattern = pattern => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nconst SUBPARSE = Symbol('subparse')\n\nminimatch.makeRe = (pattern, options) =>\n  new Minimatch(pattern, options || {}).makeRe()\n\nminimatch.match = (list, pattern, options = {}) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\n\n// replace stuff like \\* with *\nconst globUnescape = s => s.replace(/\\\\(.)/g, '$1')\nconst charUnescape = s => s.replace(/\\\\([^-\\]])/g, '$1')\nconst regExpEscape = s => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\nconst braExpEscape = s => s.replace(/[[\\]\\\\]/g, '\\\\$&')\n\nclass Minimatch {\n  constructor (pattern, options) {\n    assertValidPattern(pattern)\n\n    if (!options) options = {}\n\n    this.options = options\n    this.set = []\n    this.pattern = pattern\n    this.windowsPathsNoEscape = !!options.windowsPathsNoEscape ||\n      options.allowWindowsEscape === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.regexp = null\n    this.negate = false\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  debug () {}\n\n  make () {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    let set = this.globSet = this.braceExpand()\n\n    if (options.debug) this.debug = (...args) => console.error(...args)\n\n    this.debug(this.pattern, set)\n\n    // step 3: now we have a set, so turn each one into a series of path-portion\n    // matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    set = this.globParts = set.map(s => s.split(slashSplit))\n\n    this.debug(this.pattern, set)\n\n    // glob --> regexps\n    set = set.map((s, si, set) => s.map(this.parse, this))\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    set = set.filter(s => s.indexOf(false) === -1)\n\n    this.debug(this.pattern, set)\n\n    this.set = set\n  }\n\n  parseNegate () {\n    if (this.options.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne (file, pattern, partial) {\n    var options = this.options\n\n    this.debug('matchOne',\n      { 'this': this, file: file, pattern: pattern })\n\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (var fi = 0,\n        pi = 0,\n        fl = file.length,\n        pl = pattern.length\n        ; (fi < fl) && (pi < pl)\n        ; fi++, pi++) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* istanbul ignore if */\n      if (p === false) return false\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (file[fi] === '.' || file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')) return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (swallowee === '.' || swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        // If there's more *pattern* left, then\n        /* istanbul ignore if */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) return true\n        }\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      var hit\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = f.match(p)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else /* istanbul ignore else */ if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return (fi === fl - 1) && (file[fi] === '')\n    }\n\n    // should be unreachable.\n    /* istanbul ignore next */\n    throw new Error('wtf?')\n  }\n\n  braceExpand () {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse (pattern, isSub) {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') {\n      if (!options.noglobstar)\n        return GLOBSTAR\n      else\n        pattern = '*'\n    }\n    if (pattern === '') return ''\n\n    let re = ''\n    let hasMagic = false\n    let escaping = false\n    // ? => one single character\n    const patternListStack = []\n    const negativeLists = []\n    let stateChar\n    let inClass = false\n    let reClassStart = -1\n    let classStart = -1\n    let cs\n    let pl\n    let sp\n    // . and .. never match anything that doesn't start with .,\n    // even when options.dot is set.  However, if the pattern\n    // starts with ., then traversal patterns can match.\n    let dotTravAllowed = pattern.charAt(0) === '.'\n    let dotFileAllowed = options.dot || dotTravAllowed\n    const patternStart = () =>\n      dotTravAllowed\n        ? ''\n        : dotFileAllowed\n        ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n        : '(?!\\\\.)'\n    const subPatternStart = (p) =>\n      p.charAt(0) === '.'\n        ? ''\n        : options.dot\n        ? '(?!(?:^|\\\\/)\\\\.{1,2}(?:$|\\\\/))'\n        : '(?!\\\\.)'\n\n\n    const clearStateChar = () => {\n      if (stateChar) {\n        // we had some state-tracking character\n        // that wasn't consumed by this pass.\n        switch (stateChar) {\n          case '*':\n            re += star\n            hasMagic = true\n          break\n          case '?':\n            re += qmark\n            hasMagic = true\n          break\n          default:\n            re += '\\\\' + stateChar\n          break\n        }\n        this.debug('clearStateChar %j %j', stateChar, re)\n        stateChar = false\n      }\n    }\n\n    for (let i = 0, c; (i < pattern.length) && (c = pattern.charAt(i)); i++) {\n      this.debug('%s\\t%s %s %j', pattern, i, re, c)\n\n      // skip over any that are escaped.\n      if (escaping) {\n        /* istanbul ignore next - completely not allowed, even escaped. */\n        if (c === '/') {\n          return false\n        }\n\n        if (reSpecials[c]) {\n          re += '\\\\'\n        }\n        re += c\n        escaping = false\n        continue\n      }\n\n      switch (c) {\n        /* istanbul ignore next */\n        case '/': {\n          // Should already be path-split by now.\n          return false\n        }\n\n        case '\\\\':\n          if (inClass && pattern.charAt(i + 1) === '-') {\n            re += c\n            continue\n          }\n\n          clearStateChar()\n          escaping = true\n        continue\n\n        // the various stateChar values\n        // for the \"extglob\" stuff.\n        case '?':\n        case '*':\n        case '+':\n        case '@':\n        case '!':\n          this.debug('%s\\t%s %s %j <-- stateChar', pattern, i, re, c)\n\n          // all of those are literals inside a class, except that\n          // the glob [!a] means [^a] in regexp\n          if (inClass) {\n            this.debug('  in class')\n            if (c === '!' && i === classStart + 1) c = '^'\n            re += c\n            continue\n          }\n\n          // if we already have a stateChar, then it means\n          // that there was something like ** or +? in there.\n          // Handle the stateChar, then proceed with this one.\n          this.debug('call clearStateChar %j', stateChar)\n          clearStateChar()\n          stateChar = c\n          // if extglob is disabled, then +(asdf|foo) isn't a thing.\n          // just clear the statechar *now*, rather than even diving into\n          // the patternList stuff.\n          if (options.noext) clearStateChar()\n        continue\n\n        case '(': {\n          if (inClass) {\n            re += '('\n            continue\n          }\n\n          if (!stateChar) {\n            re += '\\\\('\n            continue\n          }\n\n          const plEntry = {\n            type: stateChar,\n            start: i - 1,\n            reStart: re.length,\n            open: plTypes[stateChar].open,\n            close: plTypes[stateChar].close,\n          }\n          this.debug(this.pattern, '\\t', plEntry)\n          patternListStack.push(plEntry)\n          // negation is (?:(?!(?:js)(?:<rest>))[^/]*)\n          re += plEntry.open\n          // next entry starts with a dot maybe?\n          if (plEntry.start === 0 && plEntry.type !== '!') {\n            dotTravAllowed = true\n            re += subPatternStart(pattern.slice(i + 1))\n          }\n          this.debug('plType %j %j', stateChar, re)\n          stateChar = false\n          continue\n        }\n\n        case ')': {\n          const plEntry = patternListStack[patternListStack.length - 1]\n          if (inClass || !plEntry) {\n            re += '\\\\)'\n            continue\n          }\n          patternListStack.pop()\n\n          // closing an extglob\n          clearStateChar()\n          hasMagic = true\n          pl = plEntry\n          // negation is (?:(?!js)[^/]*)\n          // The others are (?:<pattern>)<type>\n          re += pl.close\n          if (pl.type === '!') {\n            negativeLists.push(Object.assign(pl, { reEnd: re.length }))\n          }\n          continue\n        }\n\n        case '|': {\n          const plEntry = patternListStack[patternListStack.length - 1]\n          if (inClass || !plEntry) {\n            re += '\\\\|'\n            continue\n          }\n\n          clearStateChar()\n          re += '|'\n          // next subpattern can start with a dot?\n          if (plEntry.start === 0 && plEntry.type !== '!') {\n            dotTravAllowed = true\n            re += subPatternStart(pattern.slice(i + 1))\n          }\n          continue\n        }\n\n        // these are mostly the same in regexp and glob\n        case '[':\n          // swallow any state-tracking char before the [\n          clearStateChar()\n\n          if (inClass) {\n            re += '\\\\' + c\n            continue\n          }\n\n          inClass = true\n          classStart = i\n          reClassStart = re.length\n          re += c\n        continue\n\n        case ']':\n          //  a right bracket shall lose its special\n          //  meaning and represent itself in\n          //  a bracket expression if it occurs\n          //  first in the list.  -- POSIX.2 2.8.3.2\n          if (i === classStart + 1 || !inClass) {\n            re += '\\\\' + c\n            continue\n          }\n\n          // split where the last [ was, make sure we don't have\n          // an invalid re. if so, re-walk the contents of the\n          // would-be class to re-translate any characters that\n          // were passed through as-is\n          // TODO: It would probably be faster to determine this\n          // without a try/catch and a new RegExp, but it's tricky\n          // to do safely.  For now, this is safe and works.\n          cs = pattern.substring(classStart + 1, i)\n          try {\n            RegExp('[' + braExpEscape(charUnescape(cs)) + ']')\n            // looks good, finish up the class.\n            re += c\n          } catch (er) {\n            // out of order ranges in JS are errors, but in glob syntax,\n            // they're just a range that matches nothing.\n            re = re.substring(0, reClassStart) + '(?:$.)' // match nothing ever\n          }\n          hasMagic = true\n          inClass = false\n        continue\n\n        default:\n          // swallow any state char that wasn't consumed\n          clearStateChar()\n\n          if (reSpecials[c] && !(c === '^' && inClass)) {\n            re += '\\\\'\n          }\n\n          re += c\n          break\n\n      } // switch\n    } // for\n\n    // handle the case where we left a class open.\n    // \"[abc\" is valid, equivalent to \"\\[abc\"\n    if (inClass) {\n      // split where the last [ was, and escape it\n      // this is a huge pita.  We now have to re-walk\n      // the contents of the would-be class to re-translate\n      // any characters that were passed through as-is\n      cs = pattern.slice(classStart + 1)\n      sp = this.parse(cs, SUBPARSE)\n      re = re.substring(0, reClassStart) + '\\\\[' + sp[0]\n      hasMagic = hasMagic || sp[1]\n    }\n\n    // handle the case where we had a +( thing at the *end*\n    // of the pattern.\n    // each pattern list stack adds 3 chars, and we need to go through\n    // and escape any | chars that were passed through as-is for the regexp.\n    // Go through and escape them, taking care not to double-escape any\n    // | chars that were already escaped.\n    for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {\n      let tail\n      tail = re.slice(pl.reStart + pl.open.length)\n      this.debug('setting tail', re, pl)\n      // maybe some even number of \\, then maybe 1 \\, followed by a |\n      tail = tail.replace(/((?:\\\\{2}){0,64})(\\\\?)\\|/g, (_, $1, $2) => {\n        /* istanbul ignore else - should already be done */\n        if (!$2) {\n          // the | isn't already escaped, so escape it.\n          $2 = '\\\\'\n        }\n\n        // need to escape all those slashes *again*, without escaping the\n        // one that we need for escaping the | character.  As it works out,\n        // escaping an even number of slashes can be done by simply repeating\n        // it exactly after itself.  That's why this trick works.\n        //\n        // I am sorry that you have to see this.\n        return $1 + $1 + $2 + '|'\n      })\n\n      this.debug('tail=%j\\n   %s', tail, tail, pl, re)\n      const t = pl.type === '*' ? star\n        : pl.type === '?' ? qmark\n        : '\\\\' + pl.type\n\n      hasMagic = true\n      re = re.slice(0, pl.reStart) + t + '\\\\(' + tail\n    }\n\n    // handle trailing things that only matter at the very end.\n    clearStateChar()\n    if (escaping) {\n      // trailing \\\\\n      re += '\\\\\\\\'\n    }\n\n    // only need to apply the nodot start if the re starts with\n    // something that could conceivably capture a dot\n    const addPatternStart = addPatternStartSet[re.charAt(0)]\n\n    // Hack to work around lack of negative lookbehind in JS\n    // A pattern like: *.!(x).!(y|z) needs to ensure that a name\n    // like 'a.xyz.yz' doesn't match.  So, the first negative\n    // lookahead, has to look ALL the way ahead, to the end of\n    // the pattern.\n    for (let n = negativeLists.length - 1; n > -1; n--) {\n      const nl = negativeLists[n]\n\n      const nlBefore = re.slice(0, nl.reStart)\n      const nlFirst = re.slice(nl.reStart, nl.reEnd - 8)\n      let nlAfter = re.slice(nl.reEnd)\n      const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter\n\n      // Handle nested stuff like *(*.js|!(*.json)), where open parens\n      // mean that we should *not* include the ) in the bit that is considered\n      // \"after\" the negated section.\n      const closeParensBefore = nlBefore.split(')').length\n      const openParensBefore = nlBefore.split('(').length - closeParensBefore\n      let cleanAfter = nlAfter\n      for (let i = 0; i < openParensBefore; i++) {\n        cleanAfter = cleanAfter.replace(/\\)[+*?]?/, '')\n      }\n      nlAfter = cleanAfter\n\n      const dollar = nlAfter === '' && isSub !== SUBPARSE ? '(?:$|\\\\/)' : ''\n\n      re = nlBefore + nlFirst + nlAfter + dollar + nlLast\n    }\n\n    // if the re is not \"\" at this point, then we need to make sure\n    // it doesn't match against an empty path part.\n    // Otherwise a/* will match a/, which it should not.\n    if (re !== '' && hasMagic) {\n      re = '(?=.)' + re\n    }\n\n    if (addPatternStart) {\n      re = patternStart() + re\n    }\n\n    // parsing just a piece of a larger pattern.\n    if (isSub === SUBPARSE) {\n      return [re, hasMagic]\n    }\n\n    // if it's nocase, and the lcase/uppercase don't match, it's magic\n    if (options.nocase && !hasMagic) {\n      hasMagic = pattern.toUpperCase() !== pattern.toLowerCase()\n    }\n\n    // skip the regexp for non-magical patterns\n    // unescape anything in it, though, so that it'll be\n    // an exact match against a file etc.\n    if (!hasMagic) {\n      return globUnescape(pattern)\n    }\n\n    const flags = options.nocase ? 'i' : ''\n    try {\n      return Object.assign(new RegExp('^' + re + '$', flags), {\n        _glob: pattern,\n        _src: re,\n      })\n    } catch (er) /* istanbul ignore next - should be impossible */ {\n      // If it was an invalid regular expression, then it can't match\n      // anything.  This trick looks for a character after the end of\n      // the string, which is of course impossible, except in multi-line\n      // mode, but it's not a /m regex.\n      return new RegExp('$.')\n    }\n  }\n\n  makeRe () {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar ? star\n      : options.dot ? twoStarDot\n      : twoStarNoDot\n    const flags = options.nocase ? 'i' : ''\n\n    // coalesce globstars and regexpify non-globstar patterns\n    // if it's the only item, then we just do one twoStar\n    // if it's the first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if it's the last, append (\\/twoStar|) to previous\n    // if it's in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set.map(pattern => {\n      pattern = pattern.map(p =>\n        typeof p === 'string' ? regExpEscape(p)\n        : p === GLOBSTAR ? GLOBSTAR\n        : p._src\n      ).reduce((set, p) => {\n        if (!(set[set.length - 1] === GLOBSTAR && p === GLOBSTAR)) {\n          set.push(p)\n        }\n        return set\n      }, [])\n      pattern.forEach((p, i) => {\n        if (p !== GLOBSTAR || pattern[i-1] === GLOBSTAR) {\n          return\n        }\n        if (i === 0) {\n          if (pattern.length > 1) {\n            pattern[i+1] = '(?:\\\\\\/|' + twoStar + '\\\\\\/)?' + pattern[i+1]\n          } else {\n            pattern[i] = twoStar\n          }\n        } else if (i === pattern.length - 1) {\n          pattern[i-1] += '(?:\\\\\\/|' + twoStar + ')?'\n        } else {\n          pattern[i-1] += '(?:\\\\\\/|\\\\\\/' + twoStar + '\\\\\\/)' + pattern[i+1]\n          pattern[i+1] = GLOBSTAR\n        }\n      })\n      return pattern.filter(p => p !== GLOBSTAR).join('/')\n    }).join('|')\n\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^(?:' + re + ')$'\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').*$'\n\n    try {\n      this.regexp = new RegExp(re, flags)\n    } catch (ex) /* istanbul ignore next - should be impossible */ {\n      this.regexp = false\n    }\n    return this.regexp\n  }\n\n  match (f, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) return false\n    if (this.empty) return f === ''\n\n    if (f === '/' && partial) return true\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (path.sep !== '/') {\n      f = f.split(path.sep).join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    f = f.split(slashSplit)\n    this.debug(this.pattern, 'split', f)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename\n    for (let i = f.length - 1; i >= 0; i--) {\n      filename = f[i]\n      if (filename) break\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = f\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) return true\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) return false\n    return this.negate\n  }\n\n  static defaults (def) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n\nminimatch.Minimatch = Minimatch\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagnosticFeature = exports.DiagnosticPullMode = exports.vsdiag = void 0;\nconst minimatch = require(\"minimatch\");\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst uuid_1 = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nfunction ensure(target, key) {\n    if (target[key] === void 0) {\n        target[key] = {};\n    }\n    return target[key];\n}\nvar vsdiag;\n(function (vsdiag) {\n    let DocumentDiagnosticReportKind;\n    (function (DocumentDiagnosticReportKind) {\n        DocumentDiagnosticReportKind[\"full\"] = \"full\";\n        DocumentDiagnosticReportKind[\"unChanged\"] = \"unChanged\";\n    })(DocumentDiagnosticReportKind = vsdiag.DocumentDiagnosticReportKind || (vsdiag.DocumentDiagnosticReportKind = {}));\n})(vsdiag || (exports.vsdiag = vsdiag = {}));\nvar DiagnosticPullMode;\n(function (DiagnosticPullMode) {\n    DiagnosticPullMode[\"onType\"] = \"onType\";\n    DiagnosticPullMode[\"onSave\"] = \"onSave\";\n})(DiagnosticPullMode || (exports.DiagnosticPullMode = DiagnosticPullMode = {}));\nvar RequestStateKind;\n(function (RequestStateKind) {\n    RequestStateKind[\"active\"] = \"open\";\n    RequestStateKind[\"reschedule\"] = \"reschedule\";\n    RequestStateKind[\"outDated\"] = \"drop\";\n})(RequestStateKind || (RequestStateKind = {}));\n/**\n * Manages the open tabs. We don't directly use the tab API since for\n * diagnostics we need to de-dupe tabs that show the same resources since\n * we pull on the model not the UI.\n */\nclass Tabs {\n    constructor() {\n        this.open = new Set();\n        this._onOpen = new vscode_1.EventEmitter();\n        this._onClose = new vscode_1.EventEmitter();\n        Tabs.fillTabResources(this.open);\n        const openTabsHandler = (event) => {\n            if (event.closed.length === 0 && event.opened.length === 0) {\n                return;\n            }\n            const oldTabs = this.open;\n            const currentTabs = new Set();\n            Tabs.fillTabResources(currentTabs);\n            const closed = new Set();\n            const opened = new Set(currentTabs);\n            for (const tab of oldTabs.values()) {\n                if (currentTabs.has(tab)) {\n                    opened.delete(tab);\n                }\n                else {\n                    closed.add(tab);\n                }\n            }\n            this.open = currentTabs;\n            if (closed.size > 0) {\n                const toFire = new Set();\n                for (const item of closed) {\n                    toFire.add(vscode_1.Uri.parse(item));\n                }\n                this._onClose.fire(toFire);\n            }\n            if (opened.size > 0) {\n                const toFire = new Set();\n                for (const item of opened) {\n                    toFire.add(vscode_1.Uri.parse(item));\n                }\n                this._onOpen.fire(toFire);\n            }\n        };\n        if (vscode_1.window.tabGroups.onDidChangeTabs !== undefined) {\n            this.disposable = vscode_1.window.tabGroups.onDidChangeTabs(openTabsHandler);\n        }\n        else {\n            this.disposable = { dispose: () => { } };\n        }\n    }\n    get onClose() {\n        return this._onClose.event;\n    }\n    get onOpen() {\n        return this._onOpen.event;\n    }\n    dispose() {\n        this.disposable.dispose();\n    }\n    isActive(document) {\n        return document instanceof vscode_1.Uri\n            ? vscode_1.window.activeTextEditor?.document.uri === document\n            : vscode_1.window.activeTextEditor?.document === document;\n    }\n    isVisible(document) {\n        const uri = document instanceof vscode_1.Uri ? document : document.uri;\n        return this.open.has(uri.toString());\n    }\n    getTabResources() {\n        const result = new Set();\n        Tabs.fillTabResources(new Set(), result);\n        return result;\n    }\n    static fillTabResources(strings, uris) {\n        const seen = strings ?? new Set();\n        for (const group of vscode_1.window.tabGroups.all) {\n            for (const tab of group.tabs) {\n                const input = tab.input;\n                let uri;\n                if (input instanceof vscode_1.TabInputText) {\n                    uri = input.uri;\n                }\n                else if (input instanceof vscode_1.TabInputTextDiff) {\n                    uri = input.modified;\n                }\n                else if (input instanceof vscode_1.TabInputCustom) {\n                    uri = input.uri;\n                }\n                if (uri !== undefined && !seen.has(uri.toString())) {\n                    seen.add(uri.toString());\n                    uris !== undefined && uris.add(uri);\n                }\n            }\n        }\n    }\n}\nvar PullState;\n(function (PullState) {\n    PullState[PullState[\"document\"] = 1] = \"document\";\n    PullState[PullState[\"workspace\"] = 2] = \"workspace\";\n})(PullState || (PullState = {}));\nvar DocumentOrUri;\n(function (DocumentOrUri) {\n    function asKey(document) {\n        return document instanceof vscode_1.Uri ? document.toString() : document.uri.toString();\n    }\n    DocumentOrUri.asKey = asKey;\n})(DocumentOrUri || (DocumentOrUri = {}));\nclass DocumentPullStateTracker {\n    constructor() {\n        this.documentPullStates = new Map();\n        this.workspacePullStates = new Map();\n    }\n    track(kind, document, arg1) {\n        const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n        const [key, uri, version] = document instanceof vscode_1.Uri\n            ? [document.toString(), document, arg1]\n            : [document.uri.toString(), document.uri, document.version];\n        let state = states.get(key);\n        if (state === undefined) {\n            state = { document: uri, pulledVersion: version, resultId: undefined };\n            states.set(key, state);\n        }\n        return state;\n    }\n    update(kind, document, arg1, arg2) {\n        const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n        const [key, uri, version, resultId] = document instanceof vscode_1.Uri\n            ? [document.toString(), document, arg1, arg2]\n            : [document.uri.toString(), document.uri, document.version, arg1];\n        let state = states.get(key);\n        if (state === undefined) {\n            state = { document: uri, pulledVersion: version, resultId };\n            states.set(key, state);\n        }\n        else {\n            state.pulledVersion = version;\n            state.resultId = resultId;\n        }\n    }\n    unTrack(kind, document) {\n        const key = DocumentOrUri.asKey(document);\n        const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n        states.delete(key);\n    }\n    tracks(kind, document) {\n        const key = DocumentOrUri.asKey(document);\n        const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n        return states.has(key);\n    }\n    getResultId(kind, document) {\n        const key = DocumentOrUri.asKey(document);\n        const states = kind === PullState.document ? this.documentPullStates : this.workspacePullStates;\n        return states.get(key)?.resultId;\n    }\n    getAllResultIds() {\n        const result = [];\n        for (let [uri, value] of this.workspacePullStates) {\n            if (this.documentPullStates.has(uri)) {\n                value = this.documentPullStates.get(uri);\n            }\n            if (value.resultId !== undefined) {\n                result.push({ uri, value: value.resultId });\n            }\n        }\n        return result;\n    }\n}\nclass DiagnosticRequestor {\n    constructor(client, tabs, options) {\n        this.client = client;\n        this.tabs = tabs;\n        this.options = options;\n        this.isDisposed = false;\n        this.onDidChangeDiagnosticsEmitter = new vscode_1.EventEmitter();\n        this.provider = this.createProvider();\n        this.diagnostics = vscode_1.languages.createDiagnosticCollection(options.identifier);\n        this.openRequests = new Map();\n        this.documentStates = new DocumentPullStateTracker();\n        this.workspaceErrorCounter = 0;\n    }\n    knows(kind, document) {\n        const uri = document instanceof vscode_1.Uri ? document : document.uri;\n        return this.documentStates.tracks(kind, document) || this.openRequests.has(uri.toString());\n    }\n    forget(kind, document) {\n        this.documentStates.unTrack(kind, document);\n    }\n    pull(document, cb) {\n        if (this.isDisposed) {\n            return;\n        }\n        const uri = document instanceof vscode_1.Uri ? document : document.uri;\n        this.pullAsync(document).then(() => {\n            if (cb) {\n                cb();\n            }\n        }, (error) => {\n            this.client.error(`Document pull failed for text document ${uri.toString()}`, error, false);\n        });\n    }\n    async pullAsync(document, version) {\n        if (this.isDisposed) {\n            return;\n        }\n        const isUri = document instanceof vscode_1.Uri;\n        const uri = isUri ? document : document.uri;\n        const key = uri.toString();\n        version = isUri ? version : document.version;\n        const currentRequestState = this.openRequests.get(key);\n        const documentState = isUri\n            ? this.documentStates.track(PullState.document, document, version)\n            : this.documentStates.track(PullState.document, document);\n        if (currentRequestState === undefined) {\n            const tokenSource = new vscode_1.CancellationTokenSource();\n            this.openRequests.set(key, { state: RequestStateKind.active, document: document, version: version, tokenSource });\n            let report;\n            let afterState;\n            try {\n                report = await this.provider.provideDiagnostics(document, documentState.resultId, tokenSource.token) ?? { kind: vsdiag.DocumentDiagnosticReportKind.full, items: [] };\n            }\n            catch (error) {\n                if (error instanceof features_1.LSPCancellationError && vscode_languageserver_protocol_1.DiagnosticServerCancellationData.is(error.data) && error.data.retriggerRequest === false) {\n                    afterState = { state: RequestStateKind.outDated, document };\n                }\n                if (afterState === undefined && error instanceof vscode_1.CancellationError) {\n                    afterState = { state: RequestStateKind.reschedule, document };\n                }\n                else {\n                    throw error;\n                }\n            }\n            afterState = afterState ?? this.openRequests.get(key);\n            if (afterState === undefined) {\n                // This shouldn't happen. Log it\n                this.client.error(`Lost request state in diagnostic pull model. Clearing diagnostics for ${key}`);\n                this.diagnostics.delete(uri);\n                return;\n            }\n            this.openRequests.delete(key);\n            if (!this.tabs.isVisible(document)) {\n                this.documentStates.unTrack(PullState.document, document);\n                return;\n            }\n            if (afterState.state === RequestStateKind.outDated) {\n                return;\n            }\n            // report is only undefined if the request has thrown.\n            if (report !== undefined) {\n                if (report.kind === vsdiag.DocumentDiagnosticReportKind.full) {\n                    this.diagnostics.set(uri, report.items);\n                }\n                documentState.pulledVersion = version;\n                documentState.resultId = report.resultId;\n            }\n            if (afterState.state === RequestStateKind.reschedule) {\n                this.pull(document);\n            }\n        }\n        else {\n            if (currentRequestState.state === RequestStateKind.active) {\n                // Cancel the current request and reschedule a new one when the old one returned.\n                currentRequestState.tokenSource.cancel();\n                this.openRequests.set(key, { state: RequestStateKind.reschedule, document: currentRequestState.document });\n            }\n            else if (currentRequestState.state === RequestStateKind.outDated) {\n                this.openRequests.set(key, { state: RequestStateKind.reschedule, document: currentRequestState.document });\n            }\n        }\n    }\n    forgetDocument(document) {\n        const uri = document instanceof vscode_1.Uri ? document : document.uri;\n        const key = uri.toString();\n        const request = this.openRequests.get(key);\n        if (this.options.workspaceDiagnostics) {\n            // If we run workspace diagnostic pull a last time for the diagnostics\n            // and the rely on getting them from the workspace result.\n            if (request !== undefined) {\n                this.openRequests.set(key, { state: RequestStateKind.reschedule, document: document });\n            }\n            else {\n                this.pull(document, () => {\n                    this.forget(PullState.document, document);\n                });\n            }\n        }\n        else {\n            // We have normal pull or inter file dependencies. In this case we\n            // clear the diagnostics (to have the same start as after startup).\n            // We also cancel outstanding requests.\n            if (request !== undefined) {\n                if (request.state === RequestStateKind.active) {\n                    request.tokenSource.cancel();\n                }\n                this.openRequests.set(key, { state: RequestStateKind.outDated, document: document });\n            }\n            this.diagnostics.delete(uri);\n            this.forget(PullState.document, document);\n        }\n    }\n    pullWorkspace() {\n        if (this.isDisposed) {\n            return;\n        }\n        this.pullWorkspaceAsync().then(() => {\n            this.workspaceTimeout = (0, vscode_languageserver_protocol_1.RAL)().timer.setTimeout(() => {\n                this.pullWorkspace();\n            }, 2000);\n        }, (error) => {\n            if (!(error instanceof features_1.LSPCancellationError) && !vscode_languageserver_protocol_1.DiagnosticServerCancellationData.is(error.data)) {\n                this.client.error(`Workspace diagnostic pull failed.`, error, false);\n                this.workspaceErrorCounter++;\n            }\n            if (this.workspaceErrorCounter <= 5) {\n                this.workspaceTimeout = (0, vscode_languageserver_protocol_1.RAL)().timer.setTimeout(() => {\n                    this.pullWorkspace();\n                }, 2000);\n            }\n        });\n    }\n    async pullWorkspaceAsync() {\n        if (!this.provider.provideWorkspaceDiagnostics || this.isDisposed) {\n            return;\n        }\n        if (this.workspaceCancellation !== undefined) {\n            this.workspaceCancellation.cancel();\n            this.workspaceCancellation = undefined;\n        }\n        this.workspaceCancellation = new vscode_1.CancellationTokenSource();\n        const previousResultIds = this.documentStates.getAllResultIds().map((item) => {\n            return {\n                uri: this.client.protocol2CodeConverter.asUri(item.uri),\n                value: item.value\n            };\n        });\n        await this.provider.provideWorkspaceDiagnostics(previousResultIds, this.workspaceCancellation.token, (chunk) => {\n            if (!chunk || this.isDisposed) {\n                return;\n            }\n            for (const item of chunk.items) {\n                if (item.kind === vsdiag.DocumentDiagnosticReportKind.full) {\n                    // Favour document pull result over workspace results. So skip if it is tracked\n                    // as a document result.\n                    if (!this.documentStates.tracks(PullState.document, item.uri)) {\n                        this.diagnostics.set(item.uri, item.items);\n                    }\n                }\n                this.documentStates.update(PullState.workspace, item.uri, item.version ?? undefined, item.resultId);\n            }\n        });\n    }\n    createProvider() {\n        const result = {\n            onDidChangeDiagnostics: this.onDidChangeDiagnosticsEmitter.event,\n            provideDiagnostics: (document, previousResultId, token) => {\n                const provideDiagnostics = (document, previousResultId, token) => {\n                    const params = {\n                        identifier: this.options.identifier,\n                        textDocument: { uri: this.client.code2ProtocolConverter.asUri(document instanceof vscode_1.Uri ? document : document.uri) },\n                        previousResultId: previousResultId\n                    };\n                    if (this.isDisposed === true || !this.client.isRunning()) {\n                        return { kind: vsdiag.DocumentDiagnosticReportKind.full, items: [] };\n                    }\n                    return this.client.sendRequest(vscode_languageserver_protocol_1.DocumentDiagnosticRequest.type, params, token).then(async (result) => {\n                        if (result === undefined || result === null || this.isDisposed || token.isCancellationRequested) {\n                            return { kind: vsdiag.DocumentDiagnosticReportKind.full, items: [] };\n                        }\n                        if (result.kind === vscode_languageserver_protocol_1.DocumentDiagnosticReportKind.Full) {\n                            return { kind: vsdiag.DocumentDiagnosticReportKind.full, resultId: result.resultId, items: await this.client.protocol2CodeConverter.asDiagnostics(result.items, token) };\n                        }\n                        else {\n                            return { kind: vsdiag.DocumentDiagnosticReportKind.unChanged, resultId: result.resultId };\n                        }\n                    }, (error) => {\n                        return this.client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentDiagnosticRequest.type, token, error, { kind: vsdiag.DocumentDiagnosticReportKind.full, items: [] });\n                    });\n                };\n                const middleware = this.client.middleware;\n                return middleware.provideDiagnostics\n                    ? middleware.provideDiagnostics(document, previousResultId, token, provideDiagnostics)\n                    : provideDiagnostics(document, previousResultId, token);\n            }\n        };\n        if (this.options.workspaceDiagnostics) {\n            result.provideWorkspaceDiagnostics = (resultIds, token, resultReporter) => {\n                const convertReport = async (report) => {\n                    if (report.kind === vscode_languageserver_protocol_1.DocumentDiagnosticReportKind.Full) {\n                        return {\n                            kind: vsdiag.DocumentDiagnosticReportKind.full,\n                            uri: this.client.protocol2CodeConverter.asUri(report.uri),\n                            resultId: report.resultId,\n                            version: report.version,\n                            items: await this.client.protocol2CodeConverter.asDiagnostics(report.items, token)\n                        };\n                    }\n                    else {\n                        return {\n                            kind: vsdiag.DocumentDiagnosticReportKind.unChanged,\n                            uri: this.client.protocol2CodeConverter.asUri(report.uri),\n                            resultId: report.resultId,\n                            version: report.version\n                        };\n                    }\n                };\n                const convertPreviousResultIds = (resultIds) => {\n                    const converted = [];\n                    for (const item of resultIds) {\n                        converted.push({ uri: this.client.code2ProtocolConverter.asUri(item.uri), value: item.value });\n                    }\n                    return converted;\n                };\n                const provideDiagnostics = (resultIds, token) => {\n                    const partialResultToken = (0, uuid_1.generateUuid)();\n                    const disposable = this.client.onProgress(vscode_languageserver_protocol_1.WorkspaceDiagnosticRequest.partialResult, partialResultToken, async (partialResult) => {\n                        if (partialResult === undefined || partialResult === null) {\n                            resultReporter(null);\n                            return;\n                        }\n                        const converted = {\n                            items: []\n                        };\n                        for (const item of partialResult.items) {\n                            try {\n                                converted.items.push(await convertReport(item));\n                            }\n                            catch (error) {\n                                this.client.error(`Converting workspace diagnostics failed.`, error);\n                            }\n                        }\n                        resultReporter(converted);\n                    });\n                    const params = {\n                        identifier: this.options.identifier,\n                        previousResultIds: convertPreviousResultIds(resultIds),\n                        partialResultToken: partialResultToken\n                    };\n                    if (this.isDisposed === true || !this.client.isRunning()) {\n                        return { items: [] };\n                    }\n                    return this.client.sendRequest(vscode_languageserver_protocol_1.WorkspaceDiagnosticRequest.type, params, token).then(async (result) => {\n                        if (token.isCancellationRequested) {\n                            return { items: [] };\n                        }\n                        const converted = {\n                            items: []\n                        };\n                        for (const item of result.items) {\n                            converted.items.push(await convertReport(item));\n                        }\n                        disposable.dispose();\n                        resultReporter(converted);\n                        return { items: [] };\n                    }, (error) => {\n                        disposable.dispose();\n                        return this.client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentDiagnosticRequest.type, token, error, { items: [] });\n                    });\n                };\n                const middleware = this.client.middleware;\n                return middleware.provideWorkspaceDiagnostics\n                    ? middleware.provideWorkspaceDiagnostics(resultIds, token, resultReporter, provideDiagnostics)\n                    : provideDiagnostics(resultIds, token, resultReporter);\n            };\n        }\n        return result;\n    }\n    dispose() {\n        this.isDisposed = true;\n        // Cancel and clear workspace pull if present.\n        this.workspaceCancellation?.cancel();\n        this.workspaceTimeout?.dispose();\n        // Cancel all request and mark open requests as outdated.\n        for (const [key, request] of this.openRequests) {\n            if (request.state === RequestStateKind.active) {\n                request.tokenSource.cancel();\n            }\n            this.openRequests.set(key, { state: RequestStateKind.outDated, document: request.document });\n        }\n        // cleanup old diagnostics\n        this.diagnostics.dispose();\n    }\n}\nclass BackgroundScheduler {\n    constructor(diagnosticRequestor) {\n        this.diagnosticRequestor = diagnosticRequestor;\n        this.documents = new vscode_languageserver_protocol_1.LinkedMap();\n        this.isDisposed = false;\n    }\n    add(document) {\n        if (this.isDisposed === true) {\n            return;\n        }\n        const key = DocumentOrUri.asKey(document);\n        if (this.documents.has(key)) {\n            return;\n        }\n        this.documents.set(key, document, vscode_languageserver_protocol_1.Touch.Last);\n        this.trigger();\n    }\n    remove(document) {\n        const key = DocumentOrUri.asKey(document);\n        this.documents.delete(key);\n        // No more documents. Stop background activity.\n        if (this.documents.size === 0) {\n            this.stop();\n        }\n        else if (key === this.endDocumentKey()) {\n            // Make sure we have a correct last document. It could have\n            this.endDocument = this.documents.last;\n        }\n    }\n    trigger() {\n        if (this.isDisposed === true) {\n            return;\n        }\n        // We have a round running. So simply make sure we run up to the\n        // last document\n        if (this.intervalHandle !== undefined) {\n            this.endDocument = this.documents.last;\n            return;\n        }\n        this.endDocument = this.documents.last;\n        this.intervalHandle = (0, vscode_languageserver_protocol_1.RAL)().timer.setInterval(() => {\n            const document = this.documents.first;\n            if (document !== undefined) {\n                const key = DocumentOrUri.asKey(document);\n                this.diagnosticRequestor.pull(document);\n                this.documents.set(key, document, vscode_languageserver_protocol_1.Touch.Last);\n                if (key === this.endDocumentKey()) {\n                    this.stop();\n                }\n            }\n        }, 200);\n    }\n    dispose() {\n        this.isDisposed = true;\n        this.stop();\n        this.documents.clear();\n    }\n    stop() {\n        this.intervalHandle?.dispose();\n        this.intervalHandle = undefined;\n        this.endDocument = undefined;\n    }\n    endDocumentKey() {\n        return this.endDocument !== undefined ? DocumentOrUri.asKey(this.endDocument) : undefined;\n    }\n}\nclass DiagnosticFeatureProviderImpl {\n    constructor(client, tabs, options) {\n        const diagnosticPullOptions = client.clientOptions.diagnosticPullOptions ?? { onChange: true, onSave: false };\n        const documentSelector = client.protocol2CodeConverter.asDocumentSelector(options.documentSelector);\n        const disposables = [];\n        const matchResource = (resource) => {\n            const selector = options.documentSelector;\n            if (diagnosticPullOptions.match !== undefined) {\n                return diagnosticPullOptions.match(selector, resource);\n            }\n            for (const filter of selector) {\n                if (!vscode_languageserver_protocol_1.TextDocumentFilter.is(filter)) {\n                    continue;\n                }\n                // The filter is a language id. We can't determine if it matches\n                // so we return false.\n                if (typeof filter === 'string') {\n                    return false;\n                }\n                if (filter.language !== undefined && filter.language !== '*') {\n                    return false;\n                }\n                if (filter.scheme !== undefined && filter.scheme !== '*' && filter.scheme !== resource.scheme) {\n                    return false;\n                }\n                if (filter.pattern !== undefined) {\n                    const matcher = new minimatch.Minimatch(filter.pattern, { noext: true });\n                    if (!matcher.makeRe()) {\n                        return false;\n                    }\n                    if (!matcher.match(resource.fsPath)) {\n                        return false;\n                    }\n                }\n            }\n            return true;\n        };\n        const matches = (document) => {\n            return document instanceof vscode_1.Uri\n                ? matchResource(document)\n                : vscode_1.languages.match(documentSelector, document) > 0 && tabs.isVisible(document);\n        };\n        const isActiveDocument = (document) => {\n            return document instanceof vscode_1.Uri\n                ? this.activeTextDocument?.uri.toString() === document.toString()\n                : this.activeTextDocument === document;\n        };\n        this.diagnosticRequestor = new DiagnosticRequestor(client, tabs, options);\n        this.backgroundScheduler = new BackgroundScheduler(this.diagnosticRequestor);\n        const addToBackgroundIfNeeded = (document) => {\n            if (!matches(document) || !options.interFileDependencies || isActiveDocument(document)) {\n                return;\n            }\n            this.backgroundScheduler.add(document);\n        };\n        this.activeTextDocument = vscode_1.window.activeTextEditor?.document;\n        vscode_1.window.onDidChangeActiveTextEditor((editor) => {\n            const oldActive = this.activeTextDocument;\n            this.activeTextDocument = editor?.document;\n            if (oldActive !== undefined) {\n                addToBackgroundIfNeeded(oldActive);\n            }\n            if (this.activeTextDocument !== undefined) {\n                this.backgroundScheduler.remove(this.activeTextDocument);\n            }\n        });\n        // For pull model diagnostics we pull for documents visible in the UI.\n        // From an eventing point of view we still rely on open document events\n        // and filter the documents that are not visible in the UI instead of\n        // listening to Tab events. Major reason is event timing since we need\n        // to ensure that the pull is send after the document open has reached\n        // the server.\n        // We always pull on open.\n        const openFeature = client.getFeature(vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.method);\n        disposables.push(openFeature.onNotificationSent((event) => {\n            const textDocument = event.textDocument;\n            // We already know about this document. This can happen via a tab open.\n            if (this.diagnosticRequestor.knows(PullState.document, textDocument)) {\n                return;\n            }\n            if (matches(textDocument)) {\n                this.diagnosticRequestor.pull(textDocument, () => { addToBackgroundIfNeeded(textDocument); });\n            }\n        }));\n        disposables.push(tabs.onOpen((opened) => {\n            for (const resource of opened) {\n                // We already know about this document. This can happen via a document open.\n                if (this.diagnosticRequestor.knows(PullState.document, resource)) {\n                    continue;\n                }\n                const uriStr = resource.toString();\n                let textDocument;\n                for (const item of vscode_1.workspace.textDocuments) {\n                    if (uriStr === item.uri.toString()) {\n                        textDocument = item;\n                        break;\n                    }\n                }\n                // In VS Code the event timing is as follows:\n                // 1. tab events are fired.\n                // 2. open document events are fired and internal data structures like\n                //    workspace.textDocuments and Window.activeTextEditor are updated.\n                //\n                // This means: for newly created tab/editors we don't find the underlying\n                // document yet. So we do nothing an rely on the underlying open document event\n                // to be fired.\n                if (textDocument !== undefined && matches(textDocument)) {\n                    this.diagnosticRequestor.pull(textDocument, () => { addToBackgroundIfNeeded(textDocument); });\n                }\n            }\n        }));\n        // Pull all diagnostics for documents that are already open\n        const pulledTextDocuments = new Set();\n        for (const textDocument of vscode_1.workspace.textDocuments) {\n            if (matches(textDocument)) {\n                this.diagnosticRequestor.pull(textDocument, () => { addToBackgroundIfNeeded(textDocument); });\n                pulledTextDocuments.add(textDocument.uri.toString());\n            }\n        }\n        // Pull all tabs if not already pulled as text document\n        if (diagnosticPullOptions.onTabs === true) {\n            for (const resource of tabs.getTabResources()) {\n                if (!pulledTextDocuments.has(resource.toString()) && matches(resource)) {\n                    this.diagnosticRequestor.pull(resource, () => { addToBackgroundIfNeeded(resource); });\n                }\n            }\n        }\n        // We don't need to pull on tab open since we will receive a document open as well later on\n        // and that event allows us to use a document for a match check which will have a set\n        // language id.\n        if (diagnosticPullOptions.onChange === true) {\n            const changeFeature = client.getFeature(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.method);\n            disposables.push(changeFeature.onNotificationSent(async (event) => {\n                const textDocument = event.textDocument;\n                if ((diagnosticPullOptions.filter === undefined || !diagnosticPullOptions.filter(textDocument, DiagnosticPullMode.onType)) && this.diagnosticRequestor.knows(PullState.document, textDocument)) {\n                    this.diagnosticRequestor.pull(textDocument, () => { this.backgroundScheduler.trigger(); });\n                }\n            }));\n        }\n        if (diagnosticPullOptions.onSave === true) {\n            const saveFeature = client.getFeature(vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.method);\n            disposables.push(saveFeature.onNotificationSent((event) => {\n                const textDocument = event.textDocument;\n                if ((diagnosticPullOptions.filter === undefined || !diagnosticPullOptions.filter(textDocument, DiagnosticPullMode.onSave)) && this.diagnosticRequestor.knows(PullState.document, textDocument)) {\n                    this.diagnosticRequestor.pull(event.textDocument, () => { this.backgroundScheduler.trigger(); });\n                }\n            }));\n        }\n        // When the document closes clear things up\n        const closeFeature = client.getFeature(vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.method);\n        disposables.push(closeFeature.onNotificationSent((event) => {\n            this.cleanUpDocument(event.textDocument);\n        }));\n        // Same when a tabs closes.\n        tabs.onClose((closed) => {\n            for (const document of closed) {\n                this.cleanUpDocument(document);\n            }\n        });\n        // We received a did change from the server.\n        this.diagnosticRequestor.onDidChangeDiagnosticsEmitter.event(() => {\n            for (const textDocument of vscode_1.workspace.textDocuments) {\n                if (matches(textDocument)) {\n                    this.diagnosticRequestor.pull(textDocument);\n                }\n            }\n        });\n        // da348dc5-c30a-4515-9d98-31ff3be38d14 is the test UUID to test the middle ware. So don't auto trigger pulls.\n        if (options.workspaceDiagnostics === true && options.identifier !== 'da348dc5-c30a-4515-9d98-31ff3be38d14') {\n            this.diagnosticRequestor.pullWorkspace();\n        }\n        this.disposable = vscode_1.Disposable.from(...disposables, this.backgroundScheduler, this.diagnosticRequestor);\n    }\n    get onDidChangeDiagnosticsEmitter() {\n        return this.diagnosticRequestor.onDidChangeDiagnosticsEmitter;\n    }\n    get diagnostics() {\n        return this.diagnosticRequestor.provider;\n    }\n    cleanUpDocument(document) {\n        if (this.diagnosticRequestor.knows(PullState.document, document)) {\n            this.diagnosticRequestor.forgetDocument(document);\n            this.backgroundScheduler.remove(document);\n        }\n    }\n}\nclass DiagnosticFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DocumentDiagnosticRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        let capability = ensure(ensure(capabilities, 'textDocument'), 'diagnostic');\n        capability.dynamicRegistration = true;\n        // We first need to decide how a UI will look with related documents.\n        // An easy implementation would be to only show related diagnostics for\n        // the active editor.\n        capability.relatedDocumentSupport = false;\n        ensure(ensure(capabilities, 'workspace'), 'diagnostics').refreshSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const client = this._client;\n        client.onRequest(vscode_languageserver_protocol_1.DiagnosticRefreshRequest.type, async () => {\n            for (const provider of this.getAllProviders()) {\n                provider.onDidChangeDiagnosticsEmitter.fire();\n            }\n        });\n        let [id, options] = this.getRegistration(documentSelector, capabilities.diagnosticProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    clear() {\n        if (this.tabs !== undefined) {\n            this.tabs.dispose();\n            this.tabs = undefined;\n        }\n        super.clear();\n    }\n    registerLanguageProvider(options) {\n        if (this.tabs === undefined) {\n            this.tabs = new Tabs();\n        }\n        const provider = new DiagnosticFeatureProviderImpl(this._client, this.tabs, options);\n        return [provider.disposable, provider];\n    }\n}\nexports.DiagnosticFeature = DiagnosticFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotebookDocumentSyncFeature = void 0;\nconst vscode = require(\"vscode\");\nconst minimatch = require(\"minimatch\");\nconst proto = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst Is = require(\"./utils/is\");\nfunction ensure(target, key) {\n    if (target[key] === void 0) {\n        target[key] = {};\n    }\n    return target[key];\n}\nvar Converter;\n(function (Converter) {\n    let c2p;\n    (function (c2p) {\n        function asVersionedNotebookDocumentIdentifier(notebookDocument, base) {\n            return {\n                version: notebookDocument.version,\n                uri: base.asUri(notebookDocument.uri)\n            };\n        }\n        c2p.asVersionedNotebookDocumentIdentifier = asVersionedNotebookDocumentIdentifier;\n        function asNotebookDocument(notebookDocument, cells, base) {\n            const result = proto.NotebookDocument.create(base.asUri(notebookDocument.uri), notebookDocument.notebookType, notebookDocument.version, asNotebookCells(cells, base));\n            if (Object.keys(notebookDocument.metadata).length > 0) {\n                result.metadata = asMetadata(notebookDocument.metadata);\n            }\n            return result;\n        }\n        c2p.asNotebookDocument = asNotebookDocument;\n        function asNotebookCells(cells, base) {\n            return cells.map(cell => asNotebookCell(cell, base));\n        }\n        c2p.asNotebookCells = asNotebookCells;\n        function asMetadata(metadata) {\n            const seen = new Set();\n            return deepCopy(seen, metadata);\n        }\n        c2p.asMetadata = asMetadata;\n        function asNotebookCell(cell, base) {\n            const result = proto.NotebookCell.create(asNotebookCellKind(cell.kind), base.asUri(cell.document.uri));\n            if (Object.keys(cell.metadata).length > 0) {\n                result.metadata = asMetadata(cell.metadata);\n            }\n            if (cell.executionSummary !== undefined && (Is.number(cell.executionSummary.executionOrder) && Is.boolean(cell.executionSummary.success))) {\n                result.executionSummary = {\n                    executionOrder: cell.executionSummary.executionOrder,\n                    success: cell.executionSummary.success\n                };\n            }\n            return result;\n        }\n        c2p.asNotebookCell = asNotebookCell;\n        function asNotebookCellKind(kind) {\n            switch (kind) {\n                case vscode.NotebookCellKind.Markup:\n                    return proto.NotebookCellKind.Markup;\n                case vscode.NotebookCellKind.Code:\n                    return proto.NotebookCellKind.Code;\n            }\n        }\n        function deepCopy(seen, value) {\n            if (seen.has(value)) {\n                throw new Error(`Can't deep copy cyclic structures.`);\n            }\n            if (Array.isArray(value)) {\n                const result = [];\n                for (const elem of value) {\n                    if (elem !== null && typeof elem === 'object' || Array.isArray(elem)) {\n                        result.push(deepCopy(seen, elem));\n                    }\n                    else {\n                        if (elem instanceof RegExp) {\n                            throw new Error(`Can't transfer regular expressions to the server`);\n                        }\n                        result.push(elem);\n                    }\n                }\n                return result;\n            }\n            else {\n                const props = Object.keys(value);\n                const result = Object.create(null);\n                for (const prop of props) {\n                    const elem = value[prop];\n                    if (elem !== null && typeof elem === 'object' || Array.isArray(elem)) {\n                        result[prop] = deepCopy(seen, elem);\n                    }\n                    else {\n                        if (elem instanceof RegExp) {\n                            throw new Error(`Can't transfer regular expressions to the server`);\n                        }\n                        result[prop] = elem;\n                    }\n                }\n                return result;\n            }\n        }\n        function asTextContentChange(event, base) {\n            const params = base.asChangeTextDocumentParams(event, event.document.uri, event.document.version);\n            return { document: params.textDocument, changes: params.contentChanges };\n        }\n        c2p.asTextContentChange = asTextContentChange;\n        function asNotebookDocumentChangeEvent(event, base) {\n            const result = Object.create(null);\n            if (event.metadata) {\n                result.metadata = Converter.c2p.asMetadata(event.metadata);\n            }\n            if (event.cells !== undefined) {\n                const cells = Object.create(null);\n                const changedCells = event.cells;\n                if (changedCells.structure) {\n                    cells.structure = {\n                        array: {\n                            start: changedCells.structure.array.start,\n                            deleteCount: changedCells.structure.array.deleteCount,\n                            cells: changedCells.structure.array.cells !== undefined ? changedCells.structure.array.cells.map(cell => Converter.c2p.asNotebookCell(cell, base)) : undefined\n                        },\n                        didOpen: changedCells.structure.didOpen !== undefined\n                            ? changedCells.structure.didOpen.map(cell => base.asOpenTextDocumentParams(cell.document).textDocument)\n                            : undefined,\n                        didClose: changedCells.structure.didClose !== undefined\n                            ? changedCells.structure.didClose.map(cell => base.asCloseTextDocumentParams(cell.document).textDocument)\n                            : undefined\n                    };\n                }\n                if (changedCells.data !== undefined) {\n                    cells.data = changedCells.data.map(cell => Converter.c2p.asNotebookCell(cell, base));\n                }\n                if (changedCells.textContent !== undefined) {\n                    cells.textContent = changedCells.textContent.map(event => Converter.c2p.asTextContentChange(event, base));\n                }\n                if (Object.keys(cells).length > 0) {\n                    result.cells = cells;\n                }\n            }\n            return result;\n        }\n        c2p.asNotebookDocumentChangeEvent = asNotebookDocumentChangeEvent;\n    })(c2p = Converter.c2p || (Converter.c2p = {}));\n})(Converter || (Converter = {}));\nvar $NotebookCell;\n(function ($NotebookCell) {\n    function computeDiff(originalCells, modifiedCells, compareMetadata) {\n        const originalLength = originalCells.length;\n        const modifiedLength = modifiedCells.length;\n        let startIndex = 0;\n        while (startIndex < modifiedLength && startIndex < originalLength && equals(originalCells[startIndex], modifiedCells[startIndex], compareMetadata)) {\n            startIndex++;\n        }\n        if (startIndex < modifiedLength && startIndex < originalLength) {\n            let originalEndIndex = originalLength - 1;\n            let modifiedEndIndex = modifiedLength - 1;\n            while (originalEndIndex >= 0 && modifiedEndIndex >= 0 && equals(originalCells[originalEndIndex], modifiedCells[modifiedEndIndex], compareMetadata)) {\n                originalEndIndex--;\n                modifiedEndIndex--;\n            }\n            const deleteCount = (originalEndIndex + 1) - startIndex;\n            const newCells = startIndex === modifiedEndIndex + 1 ? undefined : modifiedCells.slice(startIndex, modifiedEndIndex + 1);\n            return newCells !== undefined ? { start: startIndex, deleteCount, cells: newCells } : { start: startIndex, deleteCount };\n        }\n        else if (startIndex < modifiedLength) {\n            return { start: startIndex, deleteCount: 0, cells: modifiedCells.slice(startIndex) };\n        }\n        else if (startIndex < originalLength) {\n            return { start: startIndex, deleteCount: originalLength - startIndex };\n        }\n        else {\n            // The two arrays are the same.\n            return undefined;\n        }\n    }\n    $NotebookCell.computeDiff = computeDiff;\n    /**\n     * We only sync kind, document, execution and metadata to the server. So we only need to compare those.\n     */\n    function equals(one, other, compareMetaData = true) {\n        if (one.kind !== other.kind || one.document.uri.toString() !== other.document.uri.toString() || one.document.languageId !== other.document.languageId ||\n            !equalsExecution(one.executionSummary, other.executionSummary)) {\n            return false;\n        }\n        return !compareMetaData || (compareMetaData && equalsMetadata(one.metadata, other.metadata));\n    }\n    function equalsExecution(one, other) {\n        if (one === other) {\n            return true;\n        }\n        if (one === undefined || other === undefined) {\n            return false;\n        }\n        return one.executionOrder === other.executionOrder && one.success === other.success && equalsTiming(one.timing, other.timing);\n    }\n    function equalsTiming(one, other) {\n        if (one === other) {\n            return true;\n        }\n        if (one === undefined || other === undefined) {\n            return false;\n        }\n        return one.startTime === other.startTime && one.endTime === other.endTime;\n    }\n    function equalsMetadata(one, other) {\n        if (one === other) {\n            return true;\n        }\n        if (one === null || one === undefined || other === null || other === undefined) {\n            return false;\n        }\n        if (typeof one !== typeof other) {\n            return false;\n        }\n        if (typeof one !== 'object') {\n            return false;\n        }\n        const oneArray = Array.isArray(one);\n        const otherArray = Array.isArray(other);\n        if (oneArray !== otherArray) {\n            return false;\n        }\n        if (oneArray && otherArray) {\n            if (one.length !== other.length) {\n                return false;\n            }\n            for (let i = 0; i < one.length; i++) {\n                if (!equalsMetadata(one[i], other[i])) {\n                    return false;\n                }\n            }\n        }\n        if (isObjectLiteral(one) && isObjectLiteral(other)) {\n            const oneKeys = Object.keys(one);\n            const otherKeys = Object.keys(other);\n            if (oneKeys.length !== otherKeys.length) {\n                return false;\n            }\n            oneKeys.sort();\n            otherKeys.sort();\n            if (!equalsMetadata(oneKeys, otherKeys)) {\n                return false;\n            }\n            for (let i = 0; i < oneKeys.length; i++) {\n                const prop = oneKeys[i];\n                if (!equalsMetadata(one[prop], other[prop])) {\n                    return false;\n                }\n            }\n            return true;\n        }\n        return false;\n    }\n    function isObjectLiteral(value) {\n        return value !== null && typeof value === 'object';\n    }\n    $NotebookCell.isObjectLiteral = isObjectLiteral;\n})($NotebookCell || ($NotebookCell = {}));\nvar $NotebookDocumentFilter;\n(function ($NotebookDocumentFilter) {\n    function matchNotebook(filter, notebookDocument) {\n        if (typeof filter === 'string') {\n            return filter === '*' || notebookDocument.notebookType === filter;\n        }\n        if (filter.notebookType !== undefined && filter.notebookType !== '*' && notebookDocument.notebookType !== filter.notebookType) {\n            return false;\n        }\n        const uri = notebookDocument.uri;\n        if (filter.scheme !== undefined && filter.scheme !== '*' && uri.scheme !== filter.scheme) {\n            return false;\n        }\n        if (filter.pattern !== undefined) {\n            const matcher = new minimatch.Minimatch(filter.pattern, { noext: true });\n            if (!matcher.makeRe()) {\n                return false;\n            }\n            if (!matcher.match(uri.fsPath)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    $NotebookDocumentFilter.matchNotebook = matchNotebook;\n})($NotebookDocumentFilter || ($NotebookDocumentFilter = {}));\nvar $NotebookDocumentSyncOptions;\n(function ($NotebookDocumentSyncOptions) {\n    function asDocumentSelector(options) {\n        const selector = options.notebookSelector;\n        const result = [];\n        for (const element of selector) {\n            const notebookType = (typeof element.notebook === 'string' ? element.notebook : element.notebook?.notebookType) ?? '*';\n            const scheme = (typeof element.notebook === 'string') ? undefined : element.notebook?.scheme;\n            const pattern = (typeof element.notebook === 'string') ? undefined : element.notebook?.pattern;\n            if (element.cells !== undefined) {\n                for (const cell of element.cells) {\n                    result.push(asDocumentFilter(notebookType, scheme, pattern, cell.language));\n                }\n            }\n            else {\n                result.push(asDocumentFilter(notebookType, scheme, pattern, undefined));\n            }\n        }\n        return result;\n    }\n    $NotebookDocumentSyncOptions.asDocumentSelector = asDocumentSelector;\n    function asDocumentFilter(notebookType, scheme, pattern, language) {\n        return scheme === undefined && pattern === undefined\n            ? { notebook: notebookType, language }\n            : { notebook: { notebookType, scheme, pattern }, language };\n    }\n})($NotebookDocumentSyncOptions || ($NotebookDocumentSyncOptions = {}));\nvar SyncInfo;\n(function (SyncInfo) {\n    function create(cells) {\n        return {\n            cells,\n            uris: new Set(cells.map(cell => cell.document.uri.toString()))\n        };\n    }\n    SyncInfo.create = create;\n})(SyncInfo || (SyncInfo = {}));\nclass NotebookDocumentSyncFeatureProvider {\n    constructor(client, options) {\n        this.client = client;\n        this.options = options;\n        this.notebookSyncInfo = new Map();\n        this.notebookDidOpen = new Set();\n        this.disposables = [];\n        this.selector = client.protocol2CodeConverter.asDocumentSelector($NotebookDocumentSyncOptions.asDocumentSelector(options));\n        // open\n        vscode.workspace.onDidOpenNotebookDocument((notebookDocument) => {\n            this.notebookDidOpen.add(notebookDocument.uri.toString());\n            this.didOpen(notebookDocument);\n        }, undefined, this.disposables);\n        for (const notebookDocument of vscode.workspace.notebookDocuments) {\n            this.notebookDidOpen.add(notebookDocument.uri.toString());\n            this.didOpen(notebookDocument);\n        }\n        // Notebook document changed.\n        vscode.workspace.onDidChangeNotebookDocument(event => this.didChangeNotebookDocument(event), undefined, this.disposables);\n        //save\n        if (this.options.save === true) {\n            vscode.workspace.onDidSaveNotebookDocument(notebookDocument => this.didSave(notebookDocument), undefined, this.disposables);\n        }\n        // close\n        vscode.workspace.onDidCloseNotebookDocument((notebookDocument) => {\n            this.didClose(notebookDocument);\n            this.notebookDidOpen.delete(notebookDocument.uri.toString());\n        }, undefined, this.disposables);\n    }\n    getState() {\n        for (const notebook of vscode.workspace.notebookDocuments) {\n            const matchingCells = this.getMatchingCells(notebook);\n            if (matchingCells !== undefined) {\n                return { kind: 'document', id: '$internal', registrations: true, matches: true };\n            }\n        }\n        return { kind: 'document', id: '$internal', registrations: true, matches: false };\n    }\n    get mode() {\n        return 'notebook';\n    }\n    handles(textDocument) {\n        return vscode.languages.match(this.selector, textDocument) > 0;\n    }\n    didOpenNotebookCellTextDocument(notebookDocument, cell) {\n        if (vscode.languages.match(this.selector, cell.document) === 0) {\n            return;\n        }\n        if (!this.notebookDidOpen.has(notebookDocument.uri.toString())) {\n            // We have never received an open notification for the notebook document.\n            // VS Code guarantees that we first get cell document open and then\n            // notebook open. So simply wait for the notebook open.\n            return;\n        }\n        const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());\n        // In VS Code we receive a notebook open before a cell document open.\n        // The document and the cell is synced.\n        const cellMatches = this.cellMatches(notebookDocument, cell);\n        if (syncInfo !== undefined) {\n            const cellIsSynced = syncInfo.uris.has(cell.document.uri.toString());\n            if ((cellMatches && cellIsSynced) || (!cellMatches && !cellIsSynced)) {\n                // The cell doesn't match and was not synced or it matches and is synced.\n                // In both cases nothing to do.\n                //\n                // Note that if the language mode of a document changes we remove the\n                // cell and add it back to update the language mode on the server side.\n                return;\n            }\n            if (cellMatches) {\n                // don't use cells from above since there might be more matching cells in the notebook\n                // Since we had a matching cell above we will have matching cells now.\n                const matchingCells = this.getMatchingCells(notebookDocument);\n                if (matchingCells !== undefined) {\n                    const event = this.asNotebookDocumentChangeEvent(notebookDocument, undefined, syncInfo, matchingCells);\n                    if (event !== undefined) {\n                        this.doSendChange(event, matchingCells).catch(() => { });\n                    }\n                }\n            }\n        }\n        else {\n            // No sync info. But we have a open event for the notebook document\n            // itself. If the cell matches then we need to send an open with\n            // exactly that cell.\n            if (cellMatches) {\n                this.doSendOpen(notebookDocument, [cell]).catch(() => { });\n            }\n        }\n    }\n    didChangeNotebookCellTextDocument(notebookDocument, event) {\n        // No match with the selector\n        if (vscode.languages.match(this.selector, event.document) === 0) {\n            return;\n        }\n        this.doSendChange({\n            notebook: notebookDocument,\n            cells: { textContent: [event] }\n        }, undefined).catch(() => { });\n    }\n    didCloseNotebookCellTextDocument(notebookDocument, cell) {\n        const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());\n        if (syncInfo === undefined) {\n            // The notebook document got never synced. So it doesn't matter if a cell\n            // document closes.\n            return;\n        }\n        const cellUri = cell.document.uri;\n        const index = syncInfo.cells.findIndex((item) => item.document.uri.toString() === cellUri.toString());\n        if (index === -1) {\n            // The cell never got synced or it got deleted and we now received the document\n            // close event.\n            return;\n        }\n        if (index === 0 && syncInfo.cells.length === 1) {\n            // The last cell. Close the notebook document in the server.\n            this.doSendClose(notebookDocument, syncInfo.cells).catch(() => { });\n        }\n        else {\n            const newCells = syncInfo.cells.slice();\n            const deleted = newCells.splice(index, 1);\n            this.doSendChange({\n                notebook: notebookDocument,\n                cells: {\n                    structure: {\n                        array: { start: index, deleteCount: 1 },\n                        didClose: deleted\n                    }\n                }\n            }, newCells).catch(() => { });\n        }\n    }\n    dispose() {\n        for (const disposable of this.disposables) {\n            disposable.dispose();\n        }\n    }\n    didOpen(notebookDocument, matchingCells = this.getMatchingCells(notebookDocument), syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString())) {\n        if (syncInfo !== undefined) {\n            if (matchingCells !== undefined) {\n                const event = this.asNotebookDocumentChangeEvent(notebookDocument, undefined, syncInfo, matchingCells);\n                if (event !== undefined) {\n                    this.doSendChange(event, matchingCells).catch(() => { });\n                }\n            }\n            else {\n                this.doSendClose(notebookDocument, []).catch(() => { });\n            }\n        }\n        else {\n            // Check if we need to sync the notebook document.\n            if (matchingCells === undefined) {\n                return;\n            }\n            this.doSendOpen(notebookDocument, matchingCells).catch(() => { });\n        }\n    }\n    didChangeNotebookDocument(event) {\n        const notebookDocument = event.notebook;\n        const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());\n        if (syncInfo === undefined) {\n            // We have no changes to the cells. Since the notebook wasn't synced\n            // it will not be synced now.\n            if (event.contentChanges.length === 0) {\n                return;\n            }\n            // Check if we have new matching cells.\n            const cells = this.getMatchingCells(notebookDocument);\n            // No matching cells and the notebook never synced. So still no need\n            // to sync it.\n            if (cells === undefined) {\n                return;\n            }\n            // Open the notebook document and ignore the rest of the changes\n            // this the notebooks will be synced with the correct settings.\n            this.didOpen(notebookDocument, cells, syncInfo);\n        }\n        else {\n            // The notebook is synced. First check if we have no matching\n            // cells anymore and if so close the notebook\n            const cells = this.getMatchingCells(notebookDocument);\n            if (cells === undefined) {\n                this.didClose(notebookDocument, syncInfo);\n                return;\n            }\n            const newEvent = this.asNotebookDocumentChangeEvent(event.notebook, event, syncInfo, cells);\n            if (newEvent !== undefined) {\n                this.doSendChange(newEvent, cells).catch(() => { });\n            }\n        }\n    }\n    didSave(notebookDocument) {\n        const syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString());\n        if (syncInfo === undefined) {\n            return;\n        }\n        this.doSendSave(notebookDocument).catch(() => { });\n    }\n    didClose(notebookDocument, syncInfo = this.notebookSyncInfo.get(notebookDocument.uri.toString())) {\n        if (syncInfo === undefined) {\n            return;\n        }\n        const syncedCells = notebookDocument.getCells().filter(cell => syncInfo.uris.has(cell.document.uri.toString()));\n        this.doSendClose(notebookDocument, syncedCells).catch(() => { });\n    }\n    async sendDidOpenNotebookDocument(notebookDocument) {\n        const cells = this.getMatchingCells(notebookDocument);\n        if (cells === undefined) {\n            return;\n        }\n        return this.doSendOpen(notebookDocument, cells);\n    }\n    async doSendOpen(notebookDocument, cells) {\n        const send = async (notebookDocument, cells) => {\n            const nb = Converter.c2p.asNotebookDocument(notebookDocument, cells, this.client.code2ProtocolConverter);\n            const cellDocuments = cells.map(cell => this.client.code2ProtocolConverter.asTextDocumentItem(cell.document));\n            try {\n                await this.client.sendNotification(proto.DidOpenNotebookDocumentNotification.type, {\n                    notebookDocument: nb,\n                    cellTextDocuments: cellDocuments\n                });\n            }\n            catch (error) {\n                this.client.error('Sending DidOpenNotebookDocumentNotification failed', error);\n                throw error;\n            }\n        };\n        const middleware = this.client.middleware?.notebooks;\n        this.notebookSyncInfo.set(notebookDocument.uri.toString(), SyncInfo.create(cells));\n        return middleware?.didOpen !== undefined ? middleware.didOpen(notebookDocument, cells, send) : send(notebookDocument, cells);\n    }\n    async sendDidChangeNotebookDocument(event) {\n        return this.doSendChange(event, undefined);\n    }\n    async doSendChange(event, cells = this.getMatchingCells(event.notebook)) {\n        const send = async (event) => {\n            try {\n                await this.client.sendNotification(proto.DidChangeNotebookDocumentNotification.type, {\n                    notebookDocument: Converter.c2p.asVersionedNotebookDocumentIdentifier(event.notebook, this.client.code2ProtocolConverter),\n                    change: Converter.c2p.asNotebookDocumentChangeEvent(event, this.client.code2ProtocolConverter)\n                });\n            }\n            catch (error) {\n                this.client.error('Sending DidChangeNotebookDocumentNotification failed', error);\n                throw error;\n            }\n        };\n        const middleware = this.client.middleware?.notebooks;\n        if (event.cells?.structure !== undefined) {\n            this.notebookSyncInfo.set(event.notebook.uri.toString(), SyncInfo.create(cells ?? []));\n        }\n        return middleware?.didChange !== undefined ? middleware?.didChange(event, send) : send(event);\n    }\n    async sendDidSaveNotebookDocument(notebookDocument) {\n        return this.doSendSave(notebookDocument);\n    }\n    async doSendSave(notebookDocument) {\n        const send = async (notebookDocument) => {\n            try {\n                await this.client.sendNotification(proto.DidSaveNotebookDocumentNotification.type, {\n                    notebookDocument: { uri: this.client.code2ProtocolConverter.asUri(notebookDocument.uri) }\n                });\n            }\n            catch (error) {\n                this.client.error('Sending DidSaveNotebookDocumentNotification failed', error);\n                throw error;\n            }\n        };\n        const middleware = this.client.middleware?.notebooks;\n        return middleware?.didSave !== undefined ? middleware.didSave(notebookDocument, send) : send(notebookDocument);\n    }\n    async sendDidCloseNotebookDocument(notebookDocument) {\n        return this.doSendClose(notebookDocument, this.getMatchingCells(notebookDocument) ?? []);\n    }\n    async doSendClose(notebookDocument, cells) {\n        const send = async (notebookDocument, cells) => {\n            try {\n                await this.client.sendNotification(proto.DidCloseNotebookDocumentNotification.type, {\n                    notebookDocument: { uri: this.client.code2ProtocolConverter.asUri(notebookDocument.uri) },\n                    cellTextDocuments: cells.map(cell => this.client.code2ProtocolConverter.asTextDocumentIdentifier(cell.document))\n                });\n            }\n            catch (error) {\n                this.client.error('Sending DidCloseNotebookDocumentNotification failed', error);\n                throw error;\n            }\n        };\n        const middleware = this.client.middleware?.notebooks;\n        this.notebookSyncInfo.delete(notebookDocument.uri.toString());\n        return middleware?.didClose !== undefined ? middleware.didClose(notebookDocument, cells, send) : send(notebookDocument, cells);\n    }\n    asNotebookDocumentChangeEvent(notebook, event, syncInfo, matchingCells) {\n        if (event !== undefined && event.notebook !== notebook) {\n            throw new Error('Notebook must be identical');\n        }\n        const result = {\n            notebook: notebook\n        };\n        if (event?.metadata !== undefined) {\n            result.metadata = Converter.c2p.asMetadata(event.metadata);\n        }\n        let matchingCellsSet;\n        if (event?.cellChanges !== undefined && event.cellChanges.length > 0) {\n            const data = [];\n            // Only consider the new matching cells.\n            matchingCellsSet = new Set(matchingCells.map(cell => cell.document.uri.toString()));\n            for (const cellChange of event.cellChanges) {\n                if (matchingCellsSet.has(cellChange.cell.document.uri.toString()) && (cellChange.executionSummary !== undefined || cellChange.metadata !== undefined)) {\n                    data.push(cellChange.cell);\n                }\n            }\n            if (data.length > 0) {\n                result.cells = result.cells ?? {};\n                result.cells.data = data;\n            }\n        }\n        if (((event?.contentChanges !== undefined && event.contentChanges.length > 0) || event === undefined) && syncInfo !== undefined && matchingCells !== undefined) {\n            // We still have matching cells. Check if the cell changes\n            // affect the notebook on the server side.\n            const oldCells = syncInfo.cells;\n            const newCells = matchingCells;\n            // meta data changes are reported using on the cell itself. So we can ignore comparing\n            // it which has a positive effect on performance.\n            const diff = $NotebookCell.computeDiff(oldCells, newCells, false);\n            let addedCells;\n            let removedCells;\n            if (diff !== undefined) {\n                addedCells = diff.cells === undefined\n                    ? new Map()\n                    : new Map(diff.cells.map(cell => [cell.document.uri.toString(), cell]));\n                removedCells = diff.deleteCount === 0\n                    ? new Map()\n                    : new Map(oldCells.slice(diff.start, diff.start + diff.deleteCount).map(cell => [cell.document.uri.toString(), cell]));\n                // Remove the onces that got deleted and inserted again.\n                for (const key of Array.from(removedCells.keys())) {\n                    if (addedCells.has(key)) {\n                        removedCells.delete(key);\n                        addedCells.delete(key);\n                    }\n                }\n                result.cells = result.cells ?? {};\n                const didOpen = [];\n                const didClose = [];\n                if (addedCells.size > 0 || removedCells.size > 0) {\n                    for (const cell of addedCells.values()) {\n                        didOpen.push(cell);\n                    }\n                    for (const cell of removedCells.values()) {\n                        didClose.push(cell);\n                    }\n                }\n                result.cells.structure = {\n                    array: diff,\n                    didOpen,\n                    didClose\n                };\n            }\n        }\n        // The notebook is a property as well.\n        return Object.keys(result).length > 1 ? result : undefined;\n    }\n    getMatchingCells(notebookDocument, cells = notebookDocument.getCells()) {\n        if (this.options.notebookSelector === undefined) {\n            return undefined;\n        }\n        for (const item of this.options.notebookSelector) {\n            if (item.notebook === undefined || $NotebookDocumentFilter.matchNotebook(item.notebook, notebookDocument)) {\n                const filtered = this.filterCells(notebookDocument, cells, item.cells);\n                return filtered.length === 0 ? undefined : filtered;\n            }\n        }\n        return undefined;\n    }\n    cellMatches(notebookDocument, cell) {\n        const cells = this.getMatchingCells(notebookDocument, [cell]);\n        return cells !== undefined && cells[0] === cell;\n    }\n    filterCells(notebookDocument, cells, cellSelector) {\n        const filtered = cellSelector !== undefined ? cells.filter((cell) => {\n            const cellLanguage = cell.document.languageId;\n            return cellSelector.some((filter => (filter.language === '*' || cellLanguage === filter.language)));\n        }) : cells;\n        return typeof this.client.clientOptions.notebookDocumentOptions?.filterCells === 'function'\n            ? this.client.clientOptions.notebookDocumentOptions.filterCells(notebookDocument, filtered)\n            : filtered;\n    }\n}\nclass NotebookDocumentSyncFeature {\n    constructor(client) {\n        this.client = client;\n        this.registrations = new Map();\n        this.registrationType = proto.NotebookDocumentSyncRegistrationType.type;\n        // We don't receive an event for cells where the document changes its language mode\n        // Since we allow servers to filter on the language mode we fire such an event ourselves.\n        vscode.workspace.onDidOpenTextDocument((textDocument) => {\n            if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {\n                return;\n            }\n            const [notebookDocument, notebookCell] = this.findNotebookDocumentAndCell(textDocument);\n            if (notebookDocument === undefined || notebookCell === undefined) {\n                return;\n            }\n            for (const provider of this.registrations.values()) {\n                if (provider instanceof NotebookDocumentSyncFeatureProvider) {\n                    provider.didOpenNotebookCellTextDocument(notebookDocument, notebookCell);\n                }\n            }\n        });\n        vscode.workspace.onDidChangeTextDocument((event) => {\n            if (event.contentChanges.length === 0) {\n                return;\n            }\n            const textDocument = event.document;\n            if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {\n                return;\n            }\n            const [notebookDocument,] = this.findNotebookDocumentAndCell(textDocument);\n            if (notebookDocument === undefined) {\n                return;\n            }\n            for (const provider of this.registrations.values()) {\n                if (provider instanceof NotebookDocumentSyncFeatureProvider) {\n                    provider.didChangeNotebookCellTextDocument(notebookDocument, event);\n                }\n            }\n        });\n        vscode.workspace.onDidCloseTextDocument((textDocument) => {\n            if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {\n                return;\n            }\n            // There are two cases when we receive a close for a text document\n            // 1: the cell got removed. This is handled in `onDidChangeNotebookCells`\n            // 2: the language mode of a cell changed. This keeps the URI stable so\n            //    we will still find the cell and the notebook document.\n            const [notebookDocument, notebookCell] = this.findNotebookDocumentAndCell(textDocument);\n            if (notebookDocument === undefined || notebookCell === undefined) {\n                return;\n            }\n            for (const provider of this.registrations.values()) {\n                if (provider instanceof NotebookDocumentSyncFeatureProvider) {\n                    provider.didCloseNotebookCellTextDocument(notebookDocument, notebookCell);\n                }\n            }\n        });\n    }\n    getState() {\n        if (this.registrations.size === 0) {\n            return { kind: 'document', id: this.registrationType.method, registrations: false, matches: false };\n        }\n        for (const provider of this.registrations.values()) {\n            const state = provider.getState();\n            if (state.kind === 'document' && state.registrations === true && state.matches === true) {\n                return { kind: 'document', id: this.registrationType.method, registrations: true, matches: true };\n            }\n        }\n        return { kind: 'document', id: this.registrationType.method, registrations: true, matches: false };\n    }\n    fillClientCapabilities(capabilities) {\n        const synchronization = ensure(ensure(capabilities, 'notebookDocument'), 'synchronization');\n        synchronization.dynamicRegistration = true;\n        synchronization.executionSummarySupport = true;\n    }\n    preInitialize(capabilities) {\n        const options = capabilities.notebookDocumentSync;\n        if (options === undefined) {\n            return;\n        }\n        this.dedicatedChannel = this.client.protocol2CodeConverter.asDocumentSelector($NotebookDocumentSyncOptions.asDocumentSelector(options));\n    }\n    initialize(capabilities) {\n        const options = capabilities.notebookDocumentSync;\n        if (options === undefined) {\n            return;\n        }\n        const id = options.id ?? UUID.generateUuid();\n        this.register({ id, registerOptions: options });\n    }\n    register(data) {\n        const provider = new NotebookDocumentSyncFeatureProvider(this.client, data.registerOptions);\n        this.registrations.set(data.id, provider);\n    }\n    unregister(id) {\n        const provider = this.registrations.get(id);\n        provider && provider.dispose();\n    }\n    clear() {\n        for (const provider of this.registrations.values()) {\n            provider.dispose();\n        }\n        this.registrations.clear();\n    }\n    handles(textDocument) {\n        if (textDocument.uri.scheme !== NotebookDocumentSyncFeature.CellScheme) {\n            return false;\n        }\n        if (this.dedicatedChannel !== undefined && vscode.languages.match(this.dedicatedChannel, textDocument) > 0) {\n            return true;\n        }\n        for (const provider of this.registrations.values()) {\n            if (provider.handles(textDocument)) {\n                return true;\n            }\n        }\n        return false;\n    }\n    getProvider(notebookCell) {\n        for (const provider of this.registrations.values()) {\n            if (provider.handles(notebookCell.document)) {\n                return provider;\n            }\n        }\n        return undefined;\n    }\n    findNotebookDocumentAndCell(textDocument) {\n        const uri = textDocument.uri.toString();\n        for (const notebookDocument of vscode.workspace.notebookDocuments) {\n            for (const cell of notebookDocument.getCells()) {\n                if (cell.document.uri.toString() === uri) {\n                    return [notebookDocument, cell];\n                }\n            }\n        }\n        return [undefined, undefined];\n    }\n}\nexports.NotebookDocumentSyncFeature = NotebookDocumentSyncFeature;\nNotebookDocumentSyncFeature.CellScheme = 'vscode-notebook-cell';\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncConfigurationFeature = exports.toJSONObject = exports.ConfigurationFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst Is = require(\"./utils/is\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\n/**\n * Configuration pull model. From server to client.\n */\nclass ConfigurationFeature {\n    constructor(client) {\n        this._client = client;\n    }\n    getState() {\n        return { kind: 'static' };\n    }\n    fillClientCapabilities(capabilities) {\n        capabilities.workspace = capabilities.workspace || {};\n        capabilities.workspace.configuration = true;\n    }\n    initialize() {\n        let client = this._client;\n        client.onRequest(vscode_languageserver_protocol_1.ConfigurationRequest.type, (params, token) => {\n            let configuration = (params) => {\n                let result = [];\n                for (let item of params.items) {\n                    let resource = item.scopeUri !== void 0 && item.scopeUri !== null ? this._client.protocol2CodeConverter.asUri(item.scopeUri) : undefined;\n                    result.push(this.getConfiguration(resource, item.section !== null ? item.section : undefined));\n                }\n                return result;\n            };\n            let middleware = client.middleware.workspace;\n            return middleware && middleware.configuration\n                ? middleware.configuration(params, token, configuration)\n                : configuration(params, token);\n        });\n    }\n    getConfiguration(resource, section) {\n        let result = null;\n        if (section) {\n            let index = section.lastIndexOf('.');\n            if (index === -1) {\n                result = toJSONObject(vscode_1.workspace.getConfiguration(undefined, resource).get(section));\n            }\n            else {\n                let config = vscode_1.workspace.getConfiguration(section.substr(0, index), resource);\n                if (config) {\n                    result = toJSONObject(config.get(section.substr(index + 1)));\n                }\n            }\n        }\n        else {\n            let config = vscode_1.workspace.getConfiguration(undefined, resource);\n            result = {};\n            for (let key of Object.keys(config)) {\n                if (config.has(key)) {\n                    result[key] = toJSONObject(config.get(key));\n                }\n            }\n        }\n        if (result === undefined) {\n            result = null;\n        }\n        return result;\n    }\n    clear() {\n    }\n}\nexports.ConfigurationFeature = ConfigurationFeature;\nfunction toJSONObject(obj) {\n    if (obj) {\n        if (Array.isArray(obj)) {\n            return obj.map(toJSONObject);\n        }\n        else if (typeof obj === 'object') {\n            const res = Object.create(null);\n            for (const key in obj) {\n                if (Object.prototype.hasOwnProperty.call(obj, key)) {\n                    res[key] = toJSONObject(obj[key]);\n                }\n            }\n            return res;\n        }\n    }\n    return obj;\n}\nexports.toJSONObject = toJSONObject;\nclass SyncConfigurationFeature {\n    constructor(_client) {\n        this._client = _client;\n        this.isCleared = false;\n        this._listeners = new Map();\n    }\n    getState() {\n        return { kind: 'workspace', id: this.registrationType.method, registrations: this._listeners.size > 0 };\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type;\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'didChangeConfiguration').dynamicRegistration = true;\n    }\n    initialize() {\n        this.isCleared = false;\n        let section = this._client.clientOptions.synchronize?.configurationSection;\n        if (section !== undefined) {\n            this.register({\n                id: UUID.generateUuid(),\n                registerOptions: {\n                    section: section\n                }\n            });\n        }\n    }\n    register(data) {\n        let disposable = vscode_1.workspace.onDidChangeConfiguration((event) => {\n            this.onDidChangeConfiguration(data.registerOptions.section, event);\n        });\n        this._listeners.set(data.id, disposable);\n        if (data.registerOptions.section !== undefined) {\n            this.onDidChangeConfiguration(data.registerOptions.section, undefined);\n        }\n    }\n    unregister(id) {\n        let disposable = this._listeners.get(id);\n        if (disposable) {\n            this._listeners.delete(id);\n            disposable.dispose();\n        }\n    }\n    clear() {\n        for (const disposable of this._listeners.values()) {\n            disposable.dispose();\n        }\n        this._listeners.clear();\n        this.isCleared = true;\n    }\n    onDidChangeConfiguration(configurationSection, event) {\n        if (this.isCleared) {\n            return;\n        }\n        let sections;\n        if (Is.string(configurationSection)) {\n            sections = [configurationSection];\n        }\n        else {\n            sections = configurationSection;\n        }\n        if (sections !== undefined && event !== undefined) {\n            let affected = sections.some((section) => event.affectsConfiguration(section));\n            if (!affected) {\n                return;\n            }\n        }\n        const didChangeConfiguration = async (sections) => {\n            if (sections === undefined) {\n                return this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, { settings: null });\n            }\n            else {\n                return this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type, { settings: this.extractSettingsInformation(sections) });\n            }\n        };\n        let middleware = this._client.middleware.workspace?.didChangeConfiguration;\n        (middleware ? middleware(sections, didChangeConfiguration) : didChangeConfiguration(sections)).catch((error) => {\n            this._client.error(`Sending notification ${vscode_languageserver_protocol_1.DidChangeConfigurationNotification.type.method} failed`, error);\n        });\n    }\n    extractSettingsInformation(keys) {\n        function ensurePath(config, path) {\n            let current = config;\n            for (let i = 0; i < path.length - 1; i++) {\n                let obj = current[path[i]];\n                if (!obj) {\n                    obj = Object.create(null);\n                    current[path[i]] = obj;\n                }\n                current = obj;\n            }\n            return current;\n        }\n        let resource = this._client.clientOptions.workspaceFolder\n            ? this._client.clientOptions.workspaceFolder.uri\n            : undefined;\n        let result = Object.create(null);\n        for (let i = 0; i < keys.length; i++) {\n            let key = keys[i];\n            let index = key.indexOf('.');\n            let config = null;\n            if (index >= 0) {\n                config = vscode_1.workspace.getConfiguration(key.substr(0, index), resource).get(key.substr(index + 1));\n            }\n            else {\n                config = vscode_1.workspace.getConfiguration(undefined, resource).get(key);\n            }\n            if (config) {\n                let path = keys[i].split('.');\n                ensurePath(result, path)[path[path.length - 1]] = toJSONObject(config);\n            }\n        }\n        return result;\n    }\n}\nexports.SyncConfigurationFeature = SyncConfigurationFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DidSaveTextDocumentFeature = exports.WillSaveWaitUntilFeature = exports.WillSaveFeature = exports.DidChangeTextDocumentFeature = exports.DidCloseTextDocumentFeature = exports.DidOpenTextDocumentFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass DidOpenTextDocumentFeature extends features_1.TextDocumentEventFeature {\n    constructor(client, syncedDocuments) {\n        super(client, vscode_1.workspace.onDidOpenTextDocument, vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type, () => client.middleware.didOpen, (textDocument) => client.code2ProtocolConverter.asOpenTextDocumentParams(textDocument), (data) => data, features_1.TextDocumentEventFeature.textDocumentFilter);\n        this._syncedDocuments = syncedDocuments;\n    }\n    get openDocuments() {\n        return this._syncedDocuments.values();\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n        if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.openClose) {\n            this.register({ id: UUID.generateUuid(), registerOptions: { documentSelector: documentSelector } });\n        }\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.type;\n    }\n    register(data) {\n        super.register(data);\n        if (!data.registerOptions.documentSelector) {\n            return;\n        }\n        const documentSelector = this._client.protocol2CodeConverter.asDocumentSelector(data.registerOptions.documentSelector);\n        vscode_1.workspace.textDocuments.forEach((textDocument) => {\n            const uri = textDocument.uri.toString();\n            if (this._syncedDocuments.has(uri)) {\n                return;\n            }\n            if (vscode_1.languages.match(documentSelector, textDocument) > 0 && !this._client.hasDedicatedTextSynchronizationFeature(textDocument)) {\n                const middleware = this._client.middleware;\n                const didOpen = (textDocument) => {\n                    return this._client.sendNotification(this._type, this._createParams(textDocument));\n                };\n                (middleware.didOpen ? middleware.didOpen(textDocument, didOpen) : didOpen(textDocument)).catch((error) => {\n                    this._client.error(`Sending document notification ${this._type.method} failed`, error);\n                });\n                this._syncedDocuments.set(uri, textDocument);\n            }\n        });\n    }\n    getTextDocument(data) {\n        return data;\n    }\n    notificationSent(textDocument, type, params) {\n        this._syncedDocuments.set(textDocument.uri.toString(), textDocument);\n        super.notificationSent(textDocument, type, params);\n    }\n}\nexports.DidOpenTextDocumentFeature = DidOpenTextDocumentFeature;\nclass DidCloseTextDocumentFeature extends features_1.TextDocumentEventFeature {\n    constructor(client, syncedDocuments, pendingTextDocumentChanges) {\n        super(client, vscode_1.workspace.onDidCloseTextDocument, vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type, () => client.middleware.didClose, (textDocument) => client.code2ProtocolConverter.asCloseTextDocumentParams(textDocument), (data) => data, features_1.TextDocumentEventFeature.textDocumentFilter);\n        this._syncedDocuments = syncedDocuments;\n        this._pendingTextDocumentChanges = pendingTextDocumentChanges;\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.type;\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n        if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.openClose) {\n            this.register({ id: UUID.generateUuid(), registerOptions: { documentSelector: documentSelector } });\n        }\n    }\n    async callback(data) {\n        await super.callback(data);\n        this._pendingTextDocumentChanges.delete(data.uri.toString());\n    }\n    getTextDocument(data) {\n        return data;\n    }\n    notificationSent(textDocument, type, params) {\n        this._syncedDocuments.delete(textDocument.uri.toString());\n        super.notificationSent(textDocument, type, params);\n    }\n    unregister(id) {\n        const selector = this._selectors.get(id);\n        // The super call removed the selector from the map\n        // of selectors.\n        super.unregister(id);\n        const selectors = this._selectors.values();\n        this._syncedDocuments.forEach((textDocument) => {\n            if (vscode_1.languages.match(selector, textDocument) > 0 && !this._selectorFilter(selectors, textDocument) && !this._client.hasDedicatedTextSynchronizationFeature(textDocument)) {\n                let middleware = this._client.middleware;\n                let didClose = (textDocument) => {\n                    return this._client.sendNotification(this._type, this._createParams(textDocument));\n                };\n                this._syncedDocuments.delete(textDocument.uri.toString());\n                (middleware.didClose ? middleware.didClose(textDocument, didClose) : didClose(textDocument)).catch((error) => {\n                    this._client.error(`Sending document notification ${this._type.method} failed`, error);\n                });\n            }\n        });\n    }\n}\nexports.DidCloseTextDocumentFeature = DidCloseTextDocumentFeature;\nclass DidChangeTextDocumentFeature extends features_1.DynamicDocumentFeature {\n    constructor(client, pendingTextDocumentChanges) {\n        super(client);\n        this._changeData = new Map();\n        this._onNotificationSent = new vscode_1.EventEmitter();\n        this._onPendingChangeAdded = new vscode_1.EventEmitter();\n        this._pendingTextDocumentChanges = pendingTextDocumentChanges;\n        this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None;\n    }\n    get onNotificationSent() {\n        return this._onNotificationSent.event;\n    }\n    get onPendingChangeAdded() {\n        return this._onPendingChangeAdded.event;\n    }\n    get syncKind() {\n        return this._syncKind;\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type;\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization').dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n        if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.change !== undefined && textDocumentSyncOptions.change !== vscode_languageserver_protocol_1.TextDocumentSyncKind.None) {\n            this.register({\n                id: UUID.generateUuid(),\n                registerOptions: Object.assign({}, { documentSelector: documentSelector }, { syncKind: textDocumentSyncOptions.change })\n            });\n        }\n    }\n    register(data) {\n        if (!data.registerOptions.documentSelector) {\n            return;\n        }\n        if (!this._listener) {\n            this._listener = vscode_1.workspace.onDidChangeTextDocument(this.callback, this);\n        }\n        this._changeData.set(data.id, {\n            syncKind: data.registerOptions.syncKind,\n            documentSelector: this._client.protocol2CodeConverter.asDocumentSelector(data.registerOptions.documentSelector),\n        });\n        this.updateSyncKind(data.registerOptions.syncKind);\n    }\n    *getDocumentSelectors() {\n        for (const data of this._changeData.values()) {\n            yield data.documentSelector;\n        }\n    }\n    async callback(event) {\n        // Text document changes are send for dirty changes as well. We don't\n        // have dirty / un-dirty events in the LSP so we ignore content changes\n        // with length zero.\n        if (event.contentChanges.length === 0) {\n            return;\n        }\n        // We need to capture the URI and version here since they might change on the text document\n        // until we reach did `didChange` call since the middleware support async execution.\n        const uri = event.document.uri;\n        const version = event.document.version;\n        const promises = [];\n        for (const changeData of this._changeData.values()) {\n            if (vscode_1.languages.match(changeData.documentSelector, event.document) > 0 && !this._client.hasDedicatedTextSynchronizationFeature(event.document)) {\n                const middleware = this._client.middleware;\n                if (changeData.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental) {\n                    const didChange = async (event) => {\n                        const params = this._client.code2ProtocolConverter.asChangeTextDocumentParams(event, uri, version);\n                        await this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params);\n                        this.notificationSent(event.document, vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params);\n                    };\n                    promises.push(middleware.didChange ? middleware.didChange(event, event => didChange(event)) : didChange(event));\n                }\n                else if (changeData.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) {\n                    const didChange = async (event) => {\n                        const eventUri = event.document.uri.toString();\n                        this._pendingTextDocumentChanges.set(eventUri, event.document);\n                        this._onPendingChangeAdded.fire();\n                    };\n                    promises.push(middleware.didChange ? middleware.didChange(event, event => didChange(event)) : didChange(event));\n                }\n            }\n        }\n        return Promise.all(promises).then(undefined, (error) => {\n            this._client.error(`Sending document notification ${vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type.method} failed`, error);\n            throw error;\n        });\n    }\n    notificationSent(textDocument, type, params) {\n        this._onNotificationSent.fire({ textDocument, type, params });\n    }\n    unregister(id) {\n        this._changeData.delete(id);\n        if (this._changeData.size === 0) {\n            if (this._listener) {\n                this._listener.dispose();\n                this._listener = undefined;\n            }\n            this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None;\n        }\n        else {\n            this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None;\n            for (const changeData of this._changeData.values()) {\n                this.updateSyncKind(changeData.syncKind);\n                if (this._syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) {\n                    break;\n                }\n            }\n        }\n    }\n    clear() {\n        this._pendingTextDocumentChanges.clear();\n        this._changeData.clear();\n        this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.None;\n        if (this._listener) {\n            this._listener.dispose();\n            this._listener = undefined;\n        }\n    }\n    getPendingDocumentChanges(excludes) {\n        if (this._pendingTextDocumentChanges.size === 0) {\n            return [];\n        }\n        let result;\n        if (excludes.size === 0) {\n            result = Array.from(this._pendingTextDocumentChanges.values());\n            this._pendingTextDocumentChanges.clear();\n        }\n        else {\n            result = [];\n            for (const entry of this._pendingTextDocumentChanges) {\n                if (!excludes.has(entry[0])) {\n                    result.push(entry[1]);\n                    this._pendingTextDocumentChanges.delete(entry[0]);\n                }\n            }\n        }\n        return result;\n    }\n    getProvider(document) {\n        for (const changeData of this._changeData.values()) {\n            if (vscode_1.languages.match(changeData.documentSelector, document) > 0) {\n                return {\n                    send: (event) => {\n                        return this.callback(event);\n                    }\n                };\n            }\n        }\n        return undefined;\n    }\n    updateSyncKind(syncKind) {\n        if (this._syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) {\n            return;\n        }\n        switch (syncKind) {\n            case vscode_languageserver_protocol_1.TextDocumentSyncKind.Full:\n                this._syncKind = syncKind;\n                break;\n            case vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental:\n                if (this._syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.None) {\n                    this._syncKind = vscode_languageserver_protocol_1.TextDocumentSyncKind.Incremental;\n                }\n                break;\n        }\n    }\n}\nexports.DidChangeTextDocumentFeature = DidChangeTextDocumentFeature;\nclass WillSaveFeature extends features_1.TextDocumentEventFeature {\n    constructor(client) {\n        super(client, vscode_1.workspace.onWillSaveTextDocument, vscode_languageserver_protocol_1.WillSaveTextDocumentNotification.type, () => client.middleware.willSave, (willSaveEvent) => client.code2ProtocolConverter.asWillSaveTextDocumentParams(willSaveEvent), (event) => event.document, (selectors, willSaveEvent) => features_1.TextDocumentEventFeature.textDocumentFilter(selectors, willSaveEvent.document));\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.WillSaveTextDocumentNotification.type;\n    }\n    fillClientCapabilities(capabilities) {\n        let value = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization');\n        value.willSave = true;\n    }\n    initialize(capabilities, documentSelector) {\n        let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n        if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.willSave) {\n            this.register({\n                id: UUID.generateUuid(),\n                registerOptions: { documentSelector: documentSelector }\n            });\n        }\n    }\n    getTextDocument(data) {\n        return data.document;\n    }\n}\nexports.WillSaveFeature = WillSaveFeature;\nclass WillSaveWaitUntilFeature extends features_1.DynamicDocumentFeature {\n    constructor(client) {\n        super(client);\n        this._selectors = new Map();\n    }\n    getDocumentSelectors() {\n        return this._selectors.values();\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.WillSaveTextDocumentWaitUntilRequest.type;\n    }\n    fillClientCapabilities(capabilities) {\n        let value = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization');\n        value.willSaveWaitUntil = true;\n    }\n    initialize(capabilities, documentSelector) {\n        let textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n        if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.willSaveWaitUntil) {\n            this.register({\n                id: UUID.generateUuid(),\n                registerOptions: { documentSelector: documentSelector }\n            });\n        }\n    }\n    register(data) {\n        if (!data.registerOptions.documentSelector) {\n            return;\n        }\n        if (!this._listener) {\n            this._listener = vscode_1.workspace.onWillSaveTextDocument(this.callback, this);\n        }\n        this._selectors.set(data.id, this._client.protocol2CodeConverter.asDocumentSelector(data.registerOptions.documentSelector));\n    }\n    callback(event) {\n        if (features_1.TextDocumentEventFeature.textDocumentFilter(this._selectors.values(), event.document) && !this._client.hasDedicatedTextSynchronizationFeature(event.document)) {\n            let middleware = this._client.middleware;\n            let willSaveWaitUntil = (event) => {\n                return this._client.sendRequest(vscode_languageserver_protocol_1.WillSaveTextDocumentWaitUntilRequest.type, this._client.code2ProtocolConverter.asWillSaveTextDocumentParams(event)).then(async (edits) => {\n                    let vEdits = await this._client.protocol2CodeConverter.asTextEdits(edits);\n                    return vEdits === undefined ? [] : vEdits;\n                });\n            };\n            event.waitUntil(middleware.willSaveWaitUntil\n                ? middleware.willSaveWaitUntil(event, willSaveWaitUntil)\n                : willSaveWaitUntil(event));\n        }\n    }\n    unregister(id) {\n        this._selectors.delete(id);\n        if (this._selectors.size === 0 && this._listener) {\n            this._listener.dispose();\n            this._listener = undefined;\n        }\n    }\n    clear() {\n        this._selectors.clear();\n        if (this._listener) {\n            this._listener.dispose();\n            this._listener = undefined;\n        }\n    }\n}\nexports.WillSaveWaitUntilFeature = WillSaveWaitUntilFeature;\nclass DidSaveTextDocumentFeature extends features_1.TextDocumentEventFeature {\n    constructor(client) {\n        super(client, vscode_1.workspace.onDidSaveTextDocument, vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type, () => client.middleware.didSave, (textDocument) => client.code2ProtocolConverter.asSaveTextDocumentParams(textDocument, this._includeText), (data) => data, features_1.TextDocumentEventFeature.textDocumentFilter);\n        this._includeText = false;\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.DidSaveTextDocumentNotification.type;\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization').didSave = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const textDocumentSyncOptions = capabilities.resolvedTextDocumentSync;\n        if (documentSelector && textDocumentSyncOptions && textDocumentSyncOptions.save) {\n            const saveOptions = typeof textDocumentSyncOptions.save === 'boolean'\n                ? { includeText: false }\n                : { includeText: !!textDocumentSyncOptions.save.includeText };\n            this.register({\n                id: UUID.generateUuid(),\n                registerOptions: Object.assign({}, { documentSelector: documentSelector }, saveOptions)\n            });\n        }\n    }\n    register(data) {\n        this._includeText = !!data.registerOptions.includeText;\n        super.register(data);\n    }\n    getTextDocument(data) {\n        return data;\n    }\n}\nexports.DidSaveTextDocumentFeature = DidSaveTextDocumentFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompletionItemFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nconst SupportedCompletionItemKinds = [\n    vscode_languageserver_protocol_1.CompletionItemKind.Text,\n    vscode_languageserver_protocol_1.CompletionItemKind.Method,\n    vscode_languageserver_protocol_1.CompletionItemKind.Function,\n    vscode_languageserver_protocol_1.CompletionItemKind.Constructor,\n    vscode_languageserver_protocol_1.CompletionItemKind.Field,\n    vscode_languageserver_protocol_1.CompletionItemKind.Variable,\n    vscode_languageserver_protocol_1.CompletionItemKind.Class,\n    vscode_languageserver_protocol_1.CompletionItemKind.Interface,\n    vscode_languageserver_protocol_1.CompletionItemKind.Module,\n    vscode_languageserver_protocol_1.CompletionItemKind.Property,\n    vscode_languageserver_protocol_1.CompletionItemKind.Unit,\n    vscode_languageserver_protocol_1.CompletionItemKind.Value,\n    vscode_languageserver_protocol_1.CompletionItemKind.Enum,\n    vscode_languageserver_protocol_1.CompletionItemKind.Keyword,\n    vscode_languageserver_protocol_1.CompletionItemKind.Snippet,\n    vscode_languageserver_protocol_1.CompletionItemKind.Color,\n    vscode_languageserver_protocol_1.CompletionItemKind.File,\n    vscode_languageserver_protocol_1.CompletionItemKind.Reference,\n    vscode_languageserver_protocol_1.CompletionItemKind.Folder,\n    vscode_languageserver_protocol_1.CompletionItemKind.EnumMember,\n    vscode_languageserver_protocol_1.CompletionItemKind.Constant,\n    vscode_languageserver_protocol_1.CompletionItemKind.Struct,\n    vscode_languageserver_protocol_1.CompletionItemKind.Event,\n    vscode_languageserver_protocol_1.CompletionItemKind.Operator,\n    vscode_languageserver_protocol_1.CompletionItemKind.TypeParameter\n];\nclass CompletionItemFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.CompletionRequest.type);\n        this.labelDetailsSupport = new Map();\n    }\n    fillClientCapabilities(capabilities) {\n        let completion = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'completion');\n        completion.dynamicRegistration = true;\n        completion.contextSupport = true;\n        completion.completionItem = {\n            snippetSupport: true,\n            commitCharactersSupport: true,\n            documentationFormat: [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText],\n            deprecatedSupport: true,\n            preselectSupport: true,\n            tagSupport: { valueSet: [vscode_languageserver_protocol_1.CompletionItemTag.Deprecated] },\n            insertReplaceSupport: true,\n            resolveSupport: {\n                properties: ['documentation', 'detail', 'additionalTextEdits']\n            },\n            insertTextModeSupport: { valueSet: [vscode_languageserver_protocol_1.InsertTextMode.asIs, vscode_languageserver_protocol_1.InsertTextMode.adjustIndentation] },\n            labelDetailsSupport: true\n        };\n        completion.insertTextMode = vscode_languageserver_protocol_1.InsertTextMode.adjustIndentation;\n        completion.completionItemKind = { valueSet: SupportedCompletionItemKinds };\n        completion.completionList = {\n            itemDefaults: [\n                'commitCharacters', 'editRange', 'insertTextFormat', 'insertTextMode', 'data'\n            ]\n        };\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.completionProvider);\n        if (!options) {\n            return;\n        }\n        this.register({\n            id: UUID.generateUuid(),\n            registerOptions: options\n        });\n    }\n    registerLanguageProvider(options, id) {\n        this.labelDetailsSupport.set(id, !!options.completionItem?.labelDetailsSupport);\n        const triggerCharacters = options.triggerCharacters ?? [];\n        const defaultCommitCharacters = options.allCommitCharacters;\n        const selector = options.documentSelector;\n        const provider = {\n            provideCompletionItems: (document, position, token, context) => {\n                const client = this._client;\n                const middleware = this._client.middleware;\n                const provideCompletionItems = (document, position, context, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.CompletionRequest.type, client.code2ProtocolConverter.asCompletionParams(document, position, context), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asCompletionResult(result, defaultCommitCharacters, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.CompletionRequest.type, token, error, null);\n                    });\n                };\n                return middleware.provideCompletionItem\n                    ? middleware.provideCompletionItem(document, position, context, token, provideCompletionItems)\n                    : provideCompletionItems(document, position, context, token);\n            },\n            resolveCompletionItem: options.resolveProvider\n                ? (item, token) => {\n                    const client = this._client;\n                    const middleware = this._client.middleware;\n                    const resolveCompletionItem = (item, token) => {\n                        return client.sendRequest(vscode_languageserver_protocol_1.CompletionResolveRequest.type, client.code2ProtocolConverter.asCompletionItem(item, !!this.labelDetailsSupport.get(id)), token).then((result) => {\n                            if (token.isCancellationRequested) {\n                                return null;\n                            }\n                            return client.protocol2CodeConverter.asCompletionItem(result);\n                        }, (error) => {\n                            return client.handleFailedRequest(vscode_languageserver_protocol_1.CompletionResolveRequest.type, token, error, item);\n                        });\n                    };\n                    return middleware.resolveCompletionItem\n                        ? middleware.resolveCompletionItem(item, token, resolveCompletionItem)\n                        : resolveCompletionItem(item, token);\n                }\n                : undefined\n        };\n        return [vscode_1.languages.registerCompletionItemProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider, ...triggerCharacters), provider];\n    }\n}\nexports.CompletionItemFeature = CompletionItemFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HoverFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass HoverFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.HoverRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const hoverCapability = ((0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'hover'));\n        hoverCapability.dynamicRegistration = true;\n        hoverCapability.contentFormat = [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText];\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.hoverProvider);\n        if (!options) {\n            return;\n        }\n        this.register({\n            id: UUID.generateUuid(),\n            registerOptions: options\n        });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideHover: (document, position, token) => {\n                const client = this._client;\n                const provideHover = (document, position, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.HoverRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asHover(result);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.HoverRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideHover\n                    ? middleware.provideHover(document, position, token, provideHover)\n                    : provideHover(document, position, token);\n            }\n        };\n        return [this.registerProvider(selector, provider), provider];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerHoverProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.HoverFeature = HoverFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefinitionFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass DefinitionFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DefinitionRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        let definitionSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'definition');\n        definitionSupport.dynamicRegistration = true;\n        definitionSupport.linkSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.definitionProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideDefinition: (document, position, token) => {\n                const client = this._client;\n                const provideDefinition = (document, position, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.DefinitionRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asDefinitionResult(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DefinitionRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideDefinition\n                    ? middleware.provideDefinition(document, position, token, provideDefinition)\n                    : provideDefinition(document, position, token);\n            }\n        };\n        return [this.registerProvider(selector, provider), provider];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.DefinitionFeature = DefinitionFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SignatureHelpFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass SignatureHelpFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.SignatureHelpRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        let config = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'signatureHelp');\n        config.dynamicRegistration = true;\n        config.signatureInformation = { documentationFormat: [vscode_languageserver_protocol_1.MarkupKind.Markdown, vscode_languageserver_protocol_1.MarkupKind.PlainText] };\n        config.signatureInformation.parameterInformation = { labelOffsetSupport: true };\n        config.signatureInformation.activeParameterSupport = true;\n        config.contextSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.signatureHelpProvider);\n        if (!options) {\n            return;\n        }\n        this.register({\n            id: UUID.generateUuid(),\n            registerOptions: options\n        });\n    }\n    registerLanguageProvider(options) {\n        const provider = {\n            provideSignatureHelp: (document, position, token, context) => {\n                const client = this._client;\n                const providerSignatureHelp = (document, position, context, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.SignatureHelpRequest.type, client.code2ProtocolConverter.asSignatureHelpParams(document, position, context), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asSignatureHelp(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.SignatureHelpRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideSignatureHelp\n                    ? middleware.provideSignatureHelp(document, position, context, token, providerSignatureHelp)\n                    : providerSignatureHelp(document, position, context, token);\n            }\n        };\n        return [this.registerProvider(options, provider), provider];\n    }\n    registerProvider(options, provider) {\n        const selector = this._client.protocol2CodeConverter.asDocumentSelector(options.documentSelector);\n        if (options.retriggerCharacters === undefined) {\n            const triggerCharacters = options.triggerCharacters || [];\n            return vscode_1.languages.registerSignatureHelpProvider(selector, provider, ...triggerCharacters);\n        }\n        else {\n            const metaData = {\n                triggerCharacters: options.triggerCharacters || [],\n                retriggerCharacters: options.retriggerCharacters || []\n            };\n            return vscode_1.languages.registerSignatureHelpProvider(selector, provider, metaData);\n        }\n    }\n}\nexports.SignatureHelpFeature = SignatureHelpFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentHighlightFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass DocumentHighlightFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DocumentHighlightRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'documentHighlight').dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.documentHighlightProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideDocumentHighlights: (document, position, token) => {\n                const client = this._client;\n                const _provideDocumentHighlights = (document, position, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.DocumentHighlightRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asDocumentHighlights(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentHighlightRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideDocumentHighlights\n                    ? middleware.provideDocumentHighlights(document, position, token, _provideDocumentHighlights)\n                    : _provideDocumentHighlights(document, position, token);\n            }\n        };\n        return [vscode_1.languages.registerDocumentHighlightProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n    }\n}\nexports.DocumentHighlightFeature = DocumentHighlightFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentSymbolFeature = exports.SupportedSymbolTags = exports.SupportedSymbolKinds = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nexports.SupportedSymbolKinds = [\n    vscode_languageserver_protocol_1.SymbolKind.File,\n    vscode_languageserver_protocol_1.SymbolKind.Module,\n    vscode_languageserver_protocol_1.SymbolKind.Namespace,\n    vscode_languageserver_protocol_1.SymbolKind.Package,\n    vscode_languageserver_protocol_1.SymbolKind.Class,\n    vscode_languageserver_protocol_1.SymbolKind.Method,\n    vscode_languageserver_protocol_1.SymbolKind.Property,\n    vscode_languageserver_protocol_1.SymbolKind.Field,\n    vscode_languageserver_protocol_1.SymbolKind.Constructor,\n    vscode_languageserver_protocol_1.SymbolKind.Enum,\n    vscode_languageserver_protocol_1.SymbolKind.Interface,\n    vscode_languageserver_protocol_1.SymbolKind.Function,\n    vscode_languageserver_protocol_1.SymbolKind.Variable,\n    vscode_languageserver_protocol_1.SymbolKind.Constant,\n    vscode_languageserver_protocol_1.SymbolKind.String,\n    vscode_languageserver_protocol_1.SymbolKind.Number,\n    vscode_languageserver_protocol_1.SymbolKind.Boolean,\n    vscode_languageserver_protocol_1.SymbolKind.Array,\n    vscode_languageserver_protocol_1.SymbolKind.Object,\n    vscode_languageserver_protocol_1.SymbolKind.Key,\n    vscode_languageserver_protocol_1.SymbolKind.Null,\n    vscode_languageserver_protocol_1.SymbolKind.EnumMember,\n    vscode_languageserver_protocol_1.SymbolKind.Struct,\n    vscode_languageserver_protocol_1.SymbolKind.Event,\n    vscode_languageserver_protocol_1.SymbolKind.Operator,\n    vscode_languageserver_protocol_1.SymbolKind.TypeParameter\n];\nexports.SupportedSymbolTags = [\n    vscode_languageserver_protocol_1.SymbolTag.Deprecated\n];\nclass DocumentSymbolFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DocumentSymbolRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        let symbolCapabilities = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'documentSymbol');\n        symbolCapabilities.dynamicRegistration = true;\n        symbolCapabilities.symbolKind = {\n            valueSet: exports.SupportedSymbolKinds\n        };\n        symbolCapabilities.hierarchicalDocumentSymbolSupport = true;\n        symbolCapabilities.tagSupport = {\n            valueSet: exports.SupportedSymbolTags\n        };\n        symbolCapabilities.labelSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.documentSymbolProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideDocumentSymbols: (document, token) => {\n                const client = this._client;\n                const _provideDocumentSymbols = async (document, token) => {\n                    try {\n                        const data = await client.sendRequest(vscode_languageserver_protocol_1.DocumentSymbolRequest.type, client.code2ProtocolConverter.asDocumentSymbolParams(document), token);\n                        if (token.isCancellationRequested || data === undefined || data === null) {\n                            return null;\n                        }\n                        if (data.length === 0) {\n                            return [];\n                        }\n                        else {\n                            const first = data[0];\n                            if (vscode_languageserver_protocol_1.DocumentSymbol.is(first)) {\n                                return await client.protocol2CodeConverter.asDocumentSymbols(data, token);\n                            }\n                            else {\n                                return await client.protocol2CodeConverter.asSymbolInformations(data, token);\n                            }\n                        }\n                    }\n                    catch (error) {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentSymbolRequest.type, token, error, null);\n                    }\n                };\n                const middleware = client.middleware;\n                return middleware.provideDocumentSymbols\n                    ? middleware.provideDocumentSymbols(document, token, _provideDocumentSymbols)\n                    : _provideDocumentSymbols(document, token);\n            }\n        };\n        const metaData = options.label !== undefined ? { label: options.label } : undefined;\n        return [vscode_1.languages.registerDocumentSymbolProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider, metaData), provider];\n    }\n}\nexports.DocumentSymbolFeature = DocumentSymbolFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceSymbolFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst documentSymbol_1 = require(\"./documentSymbol\");\nconst UUID = require(\"./utils/uuid\");\nclass WorkspaceSymbolFeature extends features_1.WorkspaceFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        let symbolCapabilities = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'symbol');\n        symbolCapabilities.dynamicRegistration = true;\n        symbolCapabilities.symbolKind = {\n            valueSet: documentSymbol_1.SupportedSymbolKinds\n        };\n        symbolCapabilities.tagSupport = {\n            valueSet: documentSymbol_1.SupportedSymbolTags\n        };\n        symbolCapabilities.resolveSupport = { properties: ['location.range'] };\n    }\n    initialize(capabilities) {\n        if (!capabilities.workspaceSymbolProvider) {\n            return;\n        }\n        this.register({\n            id: UUID.generateUuid(),\n            registerOptions: capabilities.workspaceSymbolProvider === true ? { workDoneProgress: false } : capabilities.workspaceSymbolProvider\n        });\n    }\n    registerLanguageProvider(options) {\n        const provider = {\n            provideWorkspaceSymbols: (query, token) => {\n                const client = this._client;\n                const provideWorkspaceSymbols = (query, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type, { query }, token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asSymbolInformations(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.WorkspaceSymbolRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideWorkspaceSymbols\n                    ? middleware.provideWorkspaceSymbols(query, token, provideWorkspaceSymbols)\n                    : provideWorkspaceSymbols(query, token);\n            },\n            resolveWorkspaceSymbol: options.resolveProvider === true\n                ? (item, token) => {\n                    const client = this._client;\n                    const resolveWorkspaceSymbol = (item, token) => {\n                        return client.sendRequest(vscode_languageserver_protocol_1.WorkspaceSymbolResolveRequest.type, client.code2ProtocolConverter.asWorkspaceSymbol(item), token).then((result) => {\n                            if (token.isCancellationRequested) {\n                                return null;\n                            }\n                            return client.protocol2CodeConverter.asSymbolInformation(result);\n                        }, (error) => {\n                            return client.handleFailedRequest(vscode_languageserver_protocol_1.WorkspaceSymbolResolveRequest.type, token, error, null);\n                        });\n                    };\n                    const middleware = client.middleware;\n                    return middleware.resolveWorkspaceSymbol\n                        ? middleware.resolveWorkspaceSymbol(item, token, resolveWorkspaceSymbol)\n                        : resolveWorkspaceSymbol(item, token);\n                }\n                : undefined\n        };\n        return [vscode_1.languages.registerWorkspaceSymbolProvider(provider), provider];\n    }\n}\nexports.WorkspaceSymbolFeature = WorkspaceSymbolFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReferencesFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass ReferencesFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.ReferencesRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'references').dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.referencesProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideReferences: (document, position, options, token) => {\n                const client = this._client;\n                const _providerReferences = (document, position, options, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.ReferencesRequest.type, client.code2ProtocolConverter.asReferenceParams(document, position, options), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asReferences(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.ReferencesRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideReferences\n                    ? middleware.provideReferences(document, position, options, token, _providerReferences)\n                    : _providerReferences(document, position, options, token);\n            }\n        };\n        return [this.registerProvider(selector, provider), provider];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerReferenceProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.ReferencesFeature = ReferencesFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeActionFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nclass CodeActionFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.CodeActionRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const cap = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'codeAction');\n        cap.dynamicRegistration = true;\n        cap.isPreferredSupport = true;\n        cap.disabledSupport = true;\n        cap.dataSupport = true;\n        // We can only resolve the edit property.\n        cap.resolveSupport = {\n            properties: ['edit']\n        };\n        cap.codeActionLiteralSupport = {\n            codeActionKind: {\n                valueSet: [\n                    vscode_languageserver_protocol_1.CodeActionKind.Empty,\n                    vscode_languageserver_protocol_1.CodeActionKind.QuickFix,\n                    vscode_languageserver_protocol_1.CodeActionKind.Refactor,\n                    vscode_languageserver_protocol_1.CodeActionKind.RefactorExtract,\n                    vscode_languageserver_protocol_1.CodeActionKind.RefactorInline,\n                    vscode_languageserver_protocol_1.CodeActionKind.RefactorRewrite,\n                    vscode_languageserver_protocol_1.CodeActionKind.Source,\n                    vscode_languageserver_protocol_1.CodeActionKind.SourceOrganizeImports\n                ]\n            }\n        };\n        cap.honorsChangeAnnotations = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.codeActionProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideCodeActions: (document, range, context, token) => {\n                const client = this._client;\n                const _provideCodeActions = async (document, range, context, token) => {\n                    const params = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                        range: client.code2ProtocolConverter.asRange(range),\n                        context: client.code2ProtocolConverter.asCodeActionContextSync(context)\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.CodeActionRequest.type, params, token).then((values) => {\n                        if (token.isCancellationRequested || values === null || values === undefined) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asCodeActionResult(values, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.CodeActionRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideCodeActions\n                    ? middleware.provideCodeActions(document, range, context, token, _provideCodeActions)\n                    : _provideCodeActions(document, range, context, token);\n            },\n            resolveCodeAction: options.resolveProvider\n                ? (item, token) => {\n                    const client = this._client;\n                    const middleware = this._client.middleware;\n                    const resolveCodeAction = async (item, token) => {\n                        return client.sendRequest(vscode_languageserver_protocol_1.CodeActionResolveRequest.type, client.code2ProtocolConverter.asCodeActionSync(item), token).then((result) => {\n                            if (token.isCancellationRequested) {\n                                return item;\n                            }\n                            return client.protocol2CodeConverter.asCodeAction(result, token);\n                        }, (error) => {\n                            return client.handleFailedRequest(vscode_languageserver_protocol_1.CodeActionResolveRequest.type, token, error, item);\n                        });\n                    };\n                    return middleware.resolveCodeAction\n                        ? middleware.resolveCodeAction(item, token, resolveCodeAction)\n                        : resolveCodeAction(item, token);\n                }\n                : undefined\n        };\n        return [vscode_1.languages.registerCodeActionsProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider, (options.codeActionKinds\n                ? { providedCodeActionKinds: this._client.protocol2CodeConverter.asCodeActionKinds(options.codeActionKinds) }\n                : undefined)), provider];\n    }\n}\nexports.CodeActionFeature = CodeActionFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeLensFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nclass CodeLensFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.CodeLensRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'codeLens').dynamicRegistration = true;\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'codeLens').refreshSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const client = this._client;\n        client.onRequest(vscode_languageserver_protocol_1.CodeLensRefreshRequest.type, async () => {\n            for (const provider of this.getAllProviders()) {\n                provider.onDidChangeCodeLensEmitter.fire();\n            }\n        });\n        const options = this.getRegistrationOptions(documentSelector, capabilities.codeLensProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const eventEmitter = new vscode_1.EventEmitter();\n        const provider = {\n            onDidChangeCodeLenses: eventEmitter.event,\n            provideCodeLenses: (document, token) => {\n                const client = this._client;\n                const provideCodeLenses = (document, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.CodeLensRequest.type, client.code2ProtocolConverter.asCodeLensParams(document), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asCodeLenses(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.CodeLensRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideCodeLenses\n                    ? middleware.provideCodeLenses(document, token, provideCodeLenses)\n                    : provideCodeLenses(document, token);\n            },\n            resolveCodeLens: (options.resolveProvider)\n                ? (codeLens, token) => {\n                    const client = this._client;\n                    const resolveCodeLens = (codeLens, token) => {\n                        return client.sendRequest(vscode_languageserver_protocol_1.CodeLensResolveRequest.type, client.code2ProtocolConverter.asCodeLens(codeLens), token).then((result) => {\n                            if (token.isCancellationRequested) {\n                                return codeLens;\n                            }\n                            return client.protocol2CodeConverter.asCodeLens(result);\n                        }, (error) => {\n                            return client.handleFailedRequest(vscode_languageserver_protocol_1.CodeLensResolveRequest.type, token, error, codeLens);\n                        });\n                    };\n                    const middleware = client.middleware;\n                    return middleware.resolveCodeLens\n                        ? middleware.resolveCodeLens(codeLens, token, resolveCodeLens)\n                        : resolveCodeLens(codeLens, token);\n                }\n                : undefined\n        };\n        return [vscode_1.languages.registerCodeLensProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), { provider, onDidChangeCodeLensEmitter: eventEmitter }];\n    }\n}\nexports.CodeLensFeature = CodeLensFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentOnTypeFormattingFeature = exports.DocumentRangeFormattingFeature = exports.DocumentFormattingFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nvar FileFormattingOptions;\n(function (FileFormattingOptions) {\n    function fromConfiguration(document) {\n        const filesConfig = vscode_1.workspace.getConfiguration('files', document);\n        return {\n            trimTrailingWhitespace: filesConfig.get('trimTrailingWhitespace'),\n            trimFinalNewlines: filesConfig.get('trimFinalNewlines'),\n            insertFinalNewline: filesConfig.get('insertFinalNewline'),\n        };\n    }\n    FileFormattingOptions.fromConfiguration = fromConfiguration;\n})(FileFormattingOptions || (FileFormattingOptions = {}));\nclass DocumentFormattingFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DocumentFormattingRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'formatting').dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.documentFormattingProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideDocumentFormattingEdits: (document, options, token) => {\n                const client = this._client;\n                const provideDocumentFormattingEdits = (document, options, token) => {\n                    const params = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                        options: client.code2ProtocolConverter.asFormattingOptions(options, FileFormattingOptions.fromConfiguration(document))\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.DocumentFormattingRequest.type, params, token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asTextEdits(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentFormattingRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideDocumentFormattingEdits\n                    ? middleware.provideDocumentFormattingEdits(document, options, token, provideDocumentFormattingEdits)\n                    : provideDocumentFormattingEdits(document, options, token);\n            }\n        };\n        return [vscode_1.languages.registerDocumentFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n    }\n}\nexports.DocumentFormattingFeature = DocumentFormattingFeature;\nclass DocumentRangeFormattingFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'rangeFormatting');\n        capability.dynamicRegistration = true;\n        capability.rangesSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.documentRangeFormattingProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideDocumentRangeFormattingEdits: (document, range, options, token) => {\n                const client = this._client;\n                const provideDocumentRangeFormattingEdits = (document, range, options, token) => {\n                    const params = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                        range: client.code2ProtocolConverter.asRange(range),\n                        options: client.code2ProtocolConverter.asFormattingOptions(options, FileFormattingOptions.fromConfiguration(document))\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type, params, token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asTextEdits(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentRangeFormattingRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideDocumentRangeFormattingEdits\n                    ? middleware.provideDocumentRangeFormattingEdits(document, range, options, token, provideDocumentRangeFormattingEdits)\n                    : provideDocumentRangeFormattingEdits(document, range, options, token);\n            }\n        };\n        if (options.rangesSupport) {\n            provider.provideDocumentRangesFormattingEdits = (document, ranges, options, token) => {\n                const client = this._client;\n                const provideDocumentRangesFormattingEdits = (document, ranges, options, token) => {\n                    const params = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                        ranges: client.code2ProtocolConverter.asRanges(ranges),\n                        options: client.code2ProtocolConverter.asFormattingOptions(options, FileFormattingOptions.fromConfiguration(document))\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.DocumentRangesFormattingRequest.type, params, token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asTextEdits(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentRangesFormattingRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideDocumentRangesFormattingEdits\n                    ? middleware.provideDocumentRangesFormattingEdits(document, ranges, options, token, provideDocumentRangesFormattingEdits)\n                    : provideDocumentRangesFormattingEdits(document, ranges, options, token);\n            };\n        }\n        return [vscode_1.languages.registerDocumentRangeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n    }\n}\nexports.DocumentRangeFormattingFeature = DocumentRangeFormattingFeature;\nclass DocumentOnTypeFormattingFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'onTypeFormatting').dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.documentOnTypeFormattingProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideOnTypeFormattingEdits: (document, position, ch, options, token) => {\n                const client = this._client;\n                const provideOnTypeFormattingEdits = (document, position, ch, options, token) => {\n                    let params = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                        position: client.code2ProtocolConverter.asPosition(position),\n                        ch: ch,\n                        options: client.code2ProtocolConverter.asFormattingOptions(options, FileFormattingOptions.fromConfiguration(document))\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type, params, token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asTextEdits(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentOnTypeFormattingRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideOnTypeFormattingEdits\n                    ? middleware.provideOnTypeFormattingEdits(document, position, ch, options, token, provideOnTypeFormattingEdits)\n                    : provideOnTypeFormattingEdits(document, position, ch, options, token);\n            }\n        };\n        const moreTriggerCharacter = options.moreTriggerCharacter || [];\n        return [vscode_1.languages.registerOnTypeFormattingEditProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider, options.firstTriggerCharacter, ...moreTriggerCharacter), provider];\n    }\n}\nexports.DocumentOnTypeFormattingFeature = DocumentOnTypeFormattingFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RenameFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst Is = require(\"./utils/is\");\nconst features_1 = require(\"./features\");\nclass RenameFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.RenameRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        let rename = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'rename');\n        rename.dynamicRegistration = true;\n        rename.prepareSupport = true;\n        rename.prepareSupportDefaultBehavior = vscode_languageserver_protocol_1.PrepareSupportDefaultBehavior.Identifier;\n        rename.honorsChangeAnnotations = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.renameProvider);\n        if (!options) {\n            return;\n        }\n        if (Is.boolean(capabilities.renameProvider)) {\n            options.prepareProvider = false;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideRenameEdits: (document, position, newName, token) => {\n                const client = this._client;\n                const provideRenameEdits = (document, position, newName, token) => {\n                    let params = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                        position: client.code2ProtocolConverter.asPosition(position),\n                        newName: newName\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.RenameRequest.type, params, token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asWorkspaceEdit(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.RenameRequest.type, token, error, null, false);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideRenameEdits\n                    ? middleware.provideRenameEdits(document, position, newName, token, provideRenameEdits)\n                    : provideRenameEdits(document, position, newName, token);\n            },\n            prepareRename: options.prepareProvider\n                ? (document, position, token) => {\n                    const client = this._client;\n                    const prepareRename = (document, position, token) => {\n                        let params = {\n                            textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                            position: client.code2ProtocolConverter.asPosition(position),\n                        };\n                        return client.sendRequest(vscode_languageserver_protocol_1.PrepareRenameRequest.type, params, token).then((result) => {\n                            if (token.isCancellationRequested) {\n                                return null;\n                            }\n                            if (vscode_languageserver_protocol_1.Range.is(result)) {\n                                return client.protocol2CodeConverter.asRange(result);\n                            }\n                            else if (this.isDefaultBehavior(result)) {\n                                return result.defaultBehavior === true\n                                    ? null\n                                    : Promise.reject(new Error(`The element can't be renamed.`));\n                            }\n                            else if (result && vscode_languageserver_protocol_1.Range.is(result.range)) {\n                                return {\n                                    range: client.protocol2CodeConverter.asRange(result.range),\n                                    placeholder: result.placeholder\n                                };\n                            }\n                            // To cancel the rename vscode API expects a rejected promise.\n                            return Promise.reject(new Error(`The element can't be renamed.`));\n                        }, (error) => {\n                            if (typeof error.message === 'string') {\n                                throw new Error(error.message);\n                            }\n                            else {\n                                throw new Error(`The element can't be renamed.`);\n                            }\n                        });\n                    };\n                    const middleware = client.middleware;\n                    return middleware.prepareRename\n                        ? middleware.prepareRename(document, position, token, prepareRename)\n                        : prepareRename(document, position, token);\n                }\n                : undefined\n        };\n        return [this.registerProvider(selector, provider), provider];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerRenameProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n    isDefaultBehavior(value) {\n        const candidate = value;\n        return candidate && Is.boolean(candidate.defaultBehavior);\n    }\n}\nexports.RenameFeature = RenameFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DocumentLinkFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass DocumentLinkFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DocumentLinkRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const documentLinkCapabilities = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'documentLink');\n        documentLinkCapabilities.dynamicRegistration = true;\n        documentLinkCapabilities.tooltipSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.documentLinkProvider);\n        if (!options) {\n            return;\n        }\n        this.register({ id: UUID.generateUuid(), registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideDocumentLinks: (document, token) => {\n                const client = this._client;\n                const provideDocumentLinks = (document, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.DocumentLinkRequest.type, client.code2ProtocolConverter.asDocumentLinkParams(document), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asDocumentLinks(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentLinkRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideDocumentLinks\n                    ? middleware.provideDocumentLinks(document, token, provideDocumentLinks)\n                    : provideDocumentLinks(document, token);\n            },\n            resolveDocumentLink: options.resolveProvider\n                ? (link, token) => {\n                    const client = this._client;\n                    let resolveDocumentLink = (link, token) => {\n                        return client.sendRequest(vscode_languageserver_protocol_1.DocumentLinkResolveRequest.type, client.code2ProtocolConverter.asDocumentLink(link), token).then((result) => {\n                            if (token.isCancellationRequested) {\n                                return link;\n                            }\n                            return client.protocol2CodeConverter.asDocumentLink(result);\n                        }, (error) => {\n                            return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentLinkResolveRequest.type, token, error, link);\n                        });\n                    };\n                    const middleware = client.middleware;\n                    return middleware.resolveDocumentLink\n                        ? middleware.resolveDocumentLink(link, token, resolveDocumentLink)\n                        : resolveDocumentLink(link, token);\n                }\n                : undefined\n        };\n        return [vscode_1.languages.registerDocumentLinkProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n    }\n}\nexports.DocumentLinkFeature = DocumentLinkFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExecuteCommandFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nconst features_1 = require(\"./features\");\nclass ExecuteCommandFeature {\n    constructor(client) {\n        this._client = client;\n        this._commands = new Map();\n    }\n    getState() {\n        return { kind: 'workspace', id: this.registrationType.method, registrations: this._commands.size > 0 };\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.ExecuteCommandRequest.type;\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'executeCommand').dynamicRegistration = true;\n    }\n    initialize(capabilities) {\n        if (!capabilities.executeCommandProvider) {\n            return;\n        }\n        this.register({\n            id: UUID.generateUuid(),\n            registerOptions: Object.assign({}, capabilities.executeCommandProvider)\n        });\n    }\n    register(data) {\n        const client = this._client;\n        const middleware = client.middleware;\n        const executeCommand = (command, args) => {\n            let params = {\n                command,\n                arguments: args\n            };\n            return client.sendRequest(vscode_languageserver_protocol_1.ExecuteCommandRequest.type, params).then(undefined, (error) => {\n                return client.handleFailedRequest(vscode_languageserver_protocol_1.ExecuteCommandRequest.type, undefined, error, undefined);\n            });\n        };\n        if (data.registerOptions.commands) {\n            const disposables = [];\n            for (const command of data.registerOptions.commands) {\n                disposables.push(vscode_1.commands.registerCommand(command, (...args) => {\n                    return middleware.executeCommand\n                        ? middleware.executeCommand(command, args, executeCommand)\n                        : executeCommand(command, args);\n                }));\n            }\n            this._commands.set(data.id, disposables);\n        }\n    }\n    unregister(id) {\n        let disposables = this._commands.get(id);\n        if (disposables) {\n            disposables.forEach(disposable => disposable.dispose());\n        }\n    }\n    clear() {\n        this._commands.forEach((value) => {\n            value.forEach(disposable => disposable.dispose());\n        });\n        this._commands.clear();\n    }\n}\nexports.ExecuteCommandFeature = ExecuteCommandFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileSystemWatcherFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass FileSystemWatcherFeature {\n    constructor(client, notifyFileEvent) {\n        this._client = client;\n        this._notifyFileEvent = notifyFileEvent;\n        this._watchers = new Map();\n    }\n    getState() {\n        return { kind: 'workspace', id: this.registrationType.method, registrations: this._watchers.size > 0 };\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type;\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'didChangeWatchedFiles').dynamicRegistration = true;\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'didChangeWatchedFiles').relativePatternSupport = true;\n    }\n    initialize(_capabilities, _documentSelector) {\n    }\n    register(data) {\n        if (!Array.isArray(data.registerOptions.watchers)) {\n            return;\n        }\n        const disposables = [];\n        for (const watcher of data.registerOptions.watchers) {\n            const globPattern = this._client.protocol2CodeConverter.asGlobPattern(watcher.globPattern);\n            if (globPattern === undefined) {\n                continue;\n            }\n            let watchCreate = true, watchChange = true, watchDelete = true;\n            if (watcher.kind !== undefined && watcher.kind !== null) {\n                watchCreate = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Create) !== 0;\n                watchChange = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Change) !== 0;\n                watchDelete = (watcher.kind & vscode_languageserver_protocol_1.WatchKind.Delete) !== 0;\n            }\n            const fileSystemWatcher = vscode_1.workspace.createFileSystemWatcher(globPattern, !watchCreate, !watchChange, !watchDelete);\n            this.hookListeners(fileSystemWatcher, watchCreate, watchChange, watchDelete, disposables);\n            disposables.push(fileSystemWatcher);\n        }\n        this._watchers.set(data.id, disposables);\n    }\n    registerRaw(id, fileSystemWatchers) {\n        let disposables = [];\n        for (let fileSystemWatcher of fileSystemWatchers) {\n            this.hookListeners(fileSystemWatcher, true, true, true, disposables);\n        }\n        this._watchers.set(id, disposables);\n    }\n    hookListeners(fileSystemWatcher, watchCreate, watchChange, watchDelete, listeners) {\n        if (watchCreate) {\n            fileSystemWatcher.onDidCreate((resource) => this._notifyFileEvent({\n                uri: this._client.code2ProtocolConverter.asUri(resource),\n                type: vscode_languageserver_protocol_1.FileChangeType.Created\n            }), null, listeners);\n        }\n        if (watchChange) {\n            fileSystemWatcher.onDidChange((resource) => this._notifyFileEvent({\n                uri: this._client.code2ProtocolConverter.asUri(resource),\n                type: vscode_languageserver_protocol_1.FileChangeType.Changed\n            }), null, listeners);\n        }\n        if (watchDelete) {\n            fileSystemWatcher.onDidDelete((resource) => this._notifyFileEvent({\n                uri: this._client.code2ProtocolConverter.asUri(resource),\n                type: vscode_languageserver_protocol_1.FileChangeType.Deleted\n            }), null, listeners);\n        }\n    }\n    unregister(id) {\n        let disposables = this._watchers.get(id);\n        if (disposables) {\n            for (let disposable of disposables) {\n                disposable.dispose();\n            }\n        }\n    }\n    clear() {\n        this._watchers.forEach((disposables) => {\n            for (let disposable of disposables) {\n                disposable.dispose();\n            }\n        });\n        this._watchers.clear();\n    }\n}\nexports.FileSystemWatcherFeature = FileSystemWatcherFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ColorProviderFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass ColorProviderFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DocumentColorRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'colorProvider').dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        let [id, options] = this.getRegistration(documentSelector, capabilities.colorProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideColorPresentations: (color, context, token) => {\n                const client = this._client;\n                const provideColorPresentations = (color, context, token) => {\n                    const requestParams = {\n                        color,\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(context.document),\n                        range: client.code2ProtocolConverter.asRange(context.range)\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, requestParams, token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return this._client.protocol2CodeConverter.asColorPresentations(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.ColorPresentationRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideColorPresentations\n                    ? middleware.provideColorPresentations(color, context, token, provideColorPresentations)\n                    : provideColorPresentations(color, context, token);\n            },\n            provideDocumentColors: (document, token) => {\n                const client = this._client;\n                const provideDocumentColors = (document, token) => {\n                    const requestParams = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document)\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.DocumentColorRequest.type, requestParams, token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return this._client.protocol2CodeConverter.asColorInformations(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DocumentColorRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideDocumentColors\n                    ? middleware.provideDocumentColors(document, token, provideDocumentColors)\n                    : provideDocumentColors(document, token);\n            }\n        };\n        return [vscode_1.languages.registerColorProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n    }\n}\nexports.ColorProviderFeature = ColorProviderFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImplementationFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass ImplementationFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.ImplementationRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        let implementationSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'implementation');\n        implementationSupport.dynamicRegistration = true;\n        implementationSupport.linkSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        let [id, options] = this.getRegistration(documentSelector, capabilities.implementationProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideImplementation: (document, position, token) => {\n                const client = this._client;\n                const provideImplementation = (document, position, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.ImplementationRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asDefinitionResult(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.ImplementationRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideImplementation\n                    ? middleware.provideImplementation(document, position, token, provideImplementation)\n                    : provideImplementation(document, position, token);\n            }\n        };\n        return [this.registerProvider(selector, provider), provider];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerImplementationProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.ImplementationFeature = ImplementationFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeDefinitionFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass TypeDefinitionFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.TypeDefinitionRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'typeDefinition').dynamicRegistration = true;\n        let typeDefinitionSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'typeDefinition');\n        typeDefinitionSupport.dynamicRegistration = true;\n        typeDefinitionSupport.linkSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        let [id, options] = this.getRegistration(documentSelector, capabilities.typeDefinitionProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideTypeDefinition: (document, position, token) => {\n                const client = this._client;\n                const provideTypeDefinition = (document, position, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.TypeDefinitionRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asDefinitionResult(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.TypeDefinitionRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideTypeDefinition\n                    ? middleware.provideTypeDefinition(document, position, token, provideTypeDefinition)\n                    : provideTypeDefinition(document, position, token);\n            }\n        };\n        return [this.registerProvider(selector, provider), provider];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerTypeDefinitionProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.TypeDefinitionFeature = TypeDefinitionFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceFoldersFeature = exports.arrayDiff = void 0;\nconst UUID = require(\"./utils/uuid\");\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nfunction access(target, key) {\n    if (target === undefined || target === null) {\n        return undefined;\n    }\n    return target[key];\n}\nfunction arrayDiff(left, right) {\n    return left.filter(element => right.indexOf(element) < 0);\n}\nexports.arrayDiff = arrayDiff;\nclass WorkspaceFoldersFeature {\n    constructor(client) {\n        this._client = client;\n        this._listeners = new Map();\n    }\n    getState() {\n        return { kind: 'workspace', id: this.registrationType.method, registrations: this._listeners.size > 0 };\n    }\n    get registrationType() {\n        return vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type;\n    }\n    fillInitializeParams(params) {\n        const folders = vscode_1.workspace.workspaceFolders;\n        this.initializeWithFolders(folders);\n        if (folders === void 0) {\n            params.workspaceFolders = null;\n        }\n        else {\n            params.workspaceFolders = folders.map(folder => this.asProtocol(folder));\n        }\n    }\n    initializeWithFolders(currentWorkspaceFolders) {\n        this._initialFolders = currentWorkspaceFolders;\n    }\n    fillClientCapabilities(capabilities) {\n        capabilities.workspace = capabilities.workspace || {};\n        capabilities.workspace.workspaceFolders = true;\n    }\n    initialize(capabilities) {\n        const client = this._client;\n        client.onRequest(vscode_languageserver_protocol_1.WorkspaceFoldersRequest.type, (token) => {\n            const workspaceFolders = () => {\n                const folders = vscode_1.workspace.workspaceFolders;\n                if (folders === undefined) {\n                    return null;\n                }\n                const result = folders.map((folder) => {\n                    return this.asProtocol(folder);\n                });\n                return result;\n            };\n            const middleware = client.middleware.workspace;\n            return middleware && middleware.workspaceFolders\n                ? middleware.workspaceFolders(token, workspaceFolders)\n                : workspaceFolders(token);\n        });\n        const value = access(access(access(capabilities, 'workspace'), 'workspaceFolders'), 'changeNotifications');\n        let id;\n        if (typeof value === 'string') {\n            id = value;\n        }\n        else if (value === true) {\n            id = UUID.generateUuid();\n        }\n        if (id) {\n            this.register({ id: id, registerOptions: undefined });\n        }\n    }\n    sendInitialEvent(currentWorkspaceFolders) {\n        let promise;\n        if (this._initialFolders && currentWorkspaceFolders) {\n            const removed = arrayDiff(this._initialFolders, currentWorkspaceFolders);\n            const added = arrayDiff(currentWorkspaceFolders, this._initialFolders);\n            if (added.length > 0 || removed.length > 0) {\n                promise = this.doSendEvent(added, removed);\n            }\n        }\n        else if (this._initialFolders) {\n            promise = this.doSendEvent([], this._initialFolders);\n        }\n        else if (currentWorkspaceFolders) {\n            promise = this.doSendEvent(currentWorkspaceFolders, []);\n        }\n        if (promise !== undefined) {\n            promise.catch((error) => {\n                this._client.error(`Sending notification ${vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type.method} failed`, error);\n            });\n        }\n    }\n    doSendEvent(addedFolders, removedFolders) {\n        let params = {\n            event: {\n                added: addedFolders.map(folder => this.asProtocol(folder)),\n                removed: removedFolders.map(folder => this.asProtocol(folder))\n            }\n        };\n        return this._client.sendNotification(vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type, params);\n    }\n    register(data) {\n        let id = data.id;\n        let client = this._client;\n        let disposable = vscode_1.workspace.onDidChangeWorkspaceFolders((event) => {\n            let didChangeWorkspaceFolders = (event) => {\n                return this.doSendEvent(event.added, event.removed);\n            };\n            let middleware = client.middleware.workspace;\n            const promise = middleware && middleware.didChangeWorkspaceFolders\n                ? middleware.didChangeWorkspaceFolders(event, didChangeWorkspaceFolders)\n                : didChangeWorkspaceFolders(event);\n            promise.catch((error) => {\n                this._client.error(`Sending notification ${vscode_languageserver_protocol_1.DidChangeWorkspaceFoldersNotification.type.method} failed`, error);\n            });\n        });\n        this._listeners.set(id, disposable);\n        this.sendInitialEvent(vscode_1.workspace.workspaceFolders);\n    }\n    unregister(id) {\n        let disposable = this._listeners.get(id);\n        if (disposable === void 0) {\n            return;\n        }\n        this._listeners.delete(id);\n        disposable.dispose();\n    }\n    clear() {\n        for (let disposable of this._listeners.values()) {\n            disposable.dispose();\n        }\n        this._listeners.clear();\n    }\n    asProtocol(workspaceFolder) {\n        if (workspaceFolder === void 0) {\n            return null;\n        }\n        return { uri: this._client.code2ProtocolConverter.asUri(workspaceFolder.uri), name: workspaceFolder.name };\n    }\n}\nexports.WorkspaceFoldersFeature = WorkspaceFoldersFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FoldingRangeFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass FoldingRangeFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.FoldingRangeRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        let capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'foldingRange');\n        capability.dynamicRegistration = true;\n        capability.rangeLimit = 5000;\n        capability.lineFoldingOnly = true;\n        capability.foldingRangeKind = { valueSet: [vscode_languageserver_protocol_1.FoldingRangeKind.Comment, vscode_languageserver_protocol_1.FoldingRangeKind.Imports, vscode_languageserver_protocol_1.FoldingRangeKind.Region] };\n        capability.foldingRange = { collapsedText: false };\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'foldingRange').refreshSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        this._client.onRequest(vscode_languageserver_protocol_1.FoldingRangeRefreshRequest.type, async () => {\n            for (const provider of this.getAllProviders()) {\n                provider.onDidChangeFoldingRange.fire();\n            }\n        });\n        let [id, options] = this.getRegistration(documentSelector, capabilities.foldingRangeProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const eventEmitter = new vscode_1.EventEmitter();\n        const provider = {\n            onDidChangeFoldingRanges: eventEmitter.event,\n            provideFoldingRanges: (document, context, token) => {\n                const client = this._client;\n                const provideFoldingRanges = (document, _, token) => {\n                    const requestParams = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document)\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.FoldingRangeRequest.type, requestParams, token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asFoldingRanges(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.FoldingRangeRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideFoldingRanges\n                    ? middleware.provideFoldingRanges(document, context, token, provideFoldingRanges)\n                    : provideFoldingRanges(document, context, token);\n            }\n        };\n        return [vscode_1.languages.registerFoldingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), { provider: provider, onDidChangeFoldingRange: eventEmitter }];\n    }\n}\nexports.FoldingRangeFeature = FoldingRangeFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeclarationFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass DeclarationFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.DeclarationRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const declarationSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'declaration');\n        declarationSupport.dynamicRegistration = true;\n        declarationSupport.linkSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const [id, options] = this.getRegistration(documentSelector, capabilities.declarationProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideDeclaration: (document, position, token) => {\n                const client = this._client;\n                const provideDeclaration = (document, position, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.DeclarationRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asDeclarationResult(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.DeclarationRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideDeclaration\n                    ? middleware.provideDeclaration(document, position, token, provideDeclaration)\n                    : provideDeclaration(document, position, token);\n            }\n        };\n        return [this.registerProvider(selector, provider), provider];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerDeclarationProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.DeclarationFeature = DeclarationFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelectionRangeFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass SelectionRangeFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.SelectionRangeRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'selectionRange');\n        capability.dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const [id, options] = this.getRegistration(documentSelector, capabilities.selectionRangeProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideSelectionRanges: (document, positions, token) => {\n                const client = this._client;\n                const provideSelectionRanges = async (document, positions, token) => {\n                    const requestParams = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                        positions: client.code2ProtocolConverter.asPositionsSync(positions, token)\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.SelectionRangeRequest.type, requestParams, token).then((ranges) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asSelectionRanges(ranges, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.SelectionRangeRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideSelectionRanges\n                    ? middleware.provideSelectionRanges(document, positions, token, provideSelectionRanges)\n                    : provideSelectionRanges(document, positions, token);\n            }\n        };\n        return [this.registerProvider(selector, provider), provider];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerSelectionRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.SelectionRangeFeature = SelectionRangeFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressFeature = void 0;\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst progressPart_1 = require(\"./progressPart\");\nfunction ensure(target, key) {\n    if (target[key] === void 0) {\n        target[key] = Object.create(null);\n    }\n    return target[key];\n}\nclass ProgressFeature {\n    constructor(_client) {\n        this._client = _client;\n        this.activeParts = new Set();\n    }\n    getState() {\n        return { kind: 'window', id: vscode_languageserver_protocol_1.WorkDoneProgressCreateRequest.method, registrations: this.activeParts.size > 0 };\n    }\n    fillClientCapabilities(capabilities) {\n        ensure(capabilities, 'window').workDoneProgress = true;\n    }\n    initialize() {\n        const client = this._client;\n        const deleteHandler = (part) => {\n            this.activeParts.delete(part);\n        };\n        const createHandler = (params) => {\n            this.activeParts.add(new progressPart_1.ProgressPart(this._client, params.token, deleteHandler));\n        };\n        client.onRequest(vscode_languageserver_protocol_1.WorkDoneProgressCreateRequest.type, createHandler);\n    }\n    clear() {\n        for (const part of this.activeParts) {\n            part.done();\n        }\n        this.activeParts.clear();\n    }\n}\nexports.ProgressFeature = ProgressFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallHierarchyFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass CallHierarchyProvider {\n    constructor(client) {\n        this.client = client;\n        this.middleware = client.middleware;\n    }\n    prepareCallHierarchy(document, position, token) {\n        const client = this.client;\n        const middleware = this.middleware;\n        const prepareCallHierarchy = (document, position, token) => {\n            const params = client.code2ProtocolConverter.asTextDocumentPositionParams(document, position);\n            return client.sendRequest(vscode_languageserver_protocol_1.CallHierarchyPrepareRequest.type, params, token).then((result) => {\n                if (token.isCancellationRequested) {\n                    return null;\n                }\n                return client.protocol2CodeConverter.asCallHierarchyItems(result, token);\n            }, (error) => {\n                return client.handleFailedRequest(vscode_languageserver_protocol_1.CallHierarchyPrepareRequest.type, token, error, null);\n            });\n        };\n        return middleware.prepareCallHierarchy\n            ? middleware.prepareCallHierarchy(document, position, token, prepareCallHierarchy)\n            : prepareCallHierarchy(document, position, token);\n    }\n    provideCallHierarchyIncomingCalls(item, token) {\n        const client = this.client;\n        const middleware = this.middleware;\n        const provideCallHierarchyIncomingCalls = (item, token) => {\n            const params = {\n                item: client.code2ProtocolConverter.asCallHierarchyItem(item)\n            };\n            return client.sendRequest(vscode_languageserver_protocol_1.CallHierarchyIncomingCallsRequest.type, params, token).then((result) => {\n                if (token.isCancellationRequested) {\n                    return null;\n                }\n                return client.protocol2CodeConverter.asCallHierarchyIncomingCalls(result, token);\n            }, (error) => {\n                return client.handleFailedRequest(vscode_languageserver_protocol_1.CallHierarchyIncomingCallsRequest.type, token, error, null);\n            });\n        };\n        return middleware.provideCallHierarchyIncomingCalls\n            ? middleware.provideCallHierarchyIncomingCalls(item, token, provideCallHierarchyIncomingCalls)\n            : provideCallHierarchyIncomingCalls(item, token);\n    }\n    provideCallHierarchyOutgoingCalls(item, token) {\n        const client = this.client;\n        const middleware = this.middleware;\n        const provideCallHierarchyOutgoingCalls = (item, token) => {\n            const params = {\n                item: client.code2ProtocolConverter.asCallHierarchyItem(item)\n            };\n            return client.sendRequest(vscode_languageserver_protocol_1.CallHierarchyOutgoingCallsRequest.type, params, token).then((result) => {\n                if (token.isCancellationRequested) {\n                    return null;\n                }\n                return client.protocol2CodeConverter.asCallHierarchyOutgoingCalls(result, token);\n            }, (error) => {\n                return client.handleFailedRequest(vscode_languageserver_protocol_1.CallHierarchyOutgoingCallsRequest.type, token, error, null);\n            });\n        };\n        return middleware.provideCallHierarchyOutgoingCalls\n            ? middleware.provideCallHierarchyOutgoingCalls(item, token, provideCallHierarchyOutgoingCalls)\n            : provideCallHierarchyOutgoingCalls(item, token);\n    }\n}\nclass CallHierarchyFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.CallHierarchyPrepareRequest.type);\n    }\n    fillClientCapabilities(cap) {\n        const capabilities = cap;\n        const capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'callHierarchy');\n        capability.dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const [id, options] = this.getRegistration(documentSelector, capabilities.callHierarchyProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const client = this._client;\n        const provider = new CallHierarchyProvider(client);\n        return [vscode_1.languages.registerCallHierarchyProvider(this._client.protocol2CodeConverter.asDocumentSelector(options.documentSelector), provider), provider];\n    }\n}\nexports.CallHierarchyFeature = CallHierarchyFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SemanticTokensFeature = void 0;\nconst vscode = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst Is = require(\"./utils/is\");\nclass SemanticTokensFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.SemanticTokensRegistrationType.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'semanticTokens');\n        capability.dynamicRegistration = true;\n        capability.tokenTypes = [\n            vscode_languageserver_protocol_1.SemanticTokenTypes.namespace,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.type,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.class,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.enum,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.interface,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.struct,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.typeParameter,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.parameter,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.variable,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.property,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.enumMember,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.event,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.function,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.method,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.macro,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.keyword,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.modifier,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.comment,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.string,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.number,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.regexp,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.operator,\n            vscode_languageserver_protocol_1.SemanticTokenTypes.decorator\n        ];\n        capability.tokenModifiers = [\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.declaration,\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.definition,\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.readonly,\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.static,\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.deprecated,\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.abstract,\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.async,\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.modification,\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.documentation,\n            vscode_languageserver_protocol_1.SemanticTokenModifiers.defaultLibrary\n        ];\n        capability.formats = [vscode_languageserver_protocol_1.TokenFormat.Relative];\n        capability.requests = {\n            range: true,\n            full: {\n                delta: true\n            }\n        };\n        capability.multilineTokenSupport = false;\n        capability.overlappingTokenSupport = false;\n        capability.serverCancelSupport = true;\n        capability.augmentsSyntaxTokens = true;\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'semanticTokens').refreshSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const client = this._client;\n        client.onRequest(vscode_languageserver_protocol_1.SemanticTokensRefreshRequest.type, async () => {\n            for (const provider of this.getAllProviders()) {\n                provider.onDidChangeSemanticTokensEmitter.fire();\n            }\n        });\n        const [id, options] = this.getRegistration(documentSelector, capabilities.semanticTokensProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const fullProvider = Is.boolean(options.full) ? options.full : options.full !== undefined;\n        const hasEditProvider = options.full !== undefined && typeof options.full !== 'boolean' && options.full.delta === true;\n        const eventEmitter = new vscode.EventEmitter();\n        const documentProvider = fullProvider\n            ? {\n                onDidChangeSemanticTokens: eventEmitter.event,\n                provideDocumentSemanticTokens: (document, token) => {\n                    const client = this._client;\n                    const middleware = client.middleware;\n                    const provideDocumentSemanticTokens = (document, token) => {\n                        const params = {\n                            textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document)\n                        };\n                        return client.sendRequest(vscode_languageserver_protocol_1.SemanticTokensRequest.type, params, token).then((result) => {\n                            if (token.isCancellationRequested) {\n                                return null;\n                            }\n                            return client.protocol2CodeConverter.asSemanticTokens(result, token);\n                        }, (error) => {\n                            return client.handleFailedRequest(vscode_languageserver_protocol_1.SemanticTokensRequest.type, token, error, null);\n                        });\n                    };\n                    return middleware.provideDocumentSemanticTokens\n                        ? middleware.provideDocumentSemanticTokens(document, token, provideDocumentSemanticTokens)\n                        : provideDocumentSemanticTokens(document, token);\n                },\n                provideDocumentSemanticTokensEdits: hasEditProvider\n                    ? (document, previousResultId, token) => {\n                        const client = this._client;\n                        const middleware = client.middleware;\n                        const provideDocumentSemanticTokensEdits = (document, previousResultId, token) => {\n                            const params = {\n                                textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                                previousResultId\n                            };\n                            return client.sendRequest(vscode_languageserver_protocol_1.SemanticTokensDeltaRequest.type, params, token).then(async (result) => {\n                                if (token.isCancellationRequested) {\n                                    return null;\n                                }\n                                if (vscode_languageserver_protocol_1.SemanticTokens.is(result)) {\n                                    return await client.protocol2CodeConverter.asSemanticTokens(result, token);\n                                }\n                                else {\n                                    return await client.protocol2CodeConverter.asSemanticTokensEdits(result, token);\n                                }\n                            }, (error) => {\n                                return client.handleFailedRequest(vscode_languageserver_protocol_1.SemanticTokensDeltaRequest.type, token, error, null);\n                            });\n                        };\n                        return middleware.provideDocumentSemanticTokensEdits\n                            ? middleware.provideDocumentSemanticTokensEdits(document, previousResultId, token, provideDocumentSemanticTokensEdits)\n                            : provideDocumentSemanticTokensEdits(document, previousResultId, token);\n                    }\n                    : undefined\n            }\n            : undefined;\n        const hasRangeProvider = options.range === true;\n        const rangeProvider = hasRangeProvider\n            ? {\n                provideDocumentRangeSemanticTokens: (document, range, token) => {\n                    const client = this._client;\n                    const middleware = client.middleware;\n                    const provideDocumentRangeSemanticTokens = (document, range, token) => {\n                        const params = {\n                            textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                            range: client.code2ProtocolConverter.asRange(range)\n                        };\n                        return client.sendRequest(vscode_languageserver_protocol_1.SemanticTokensRangeRequest.type, params, token).then((result) => {\n                            if (token.isCancellationRequested) {\n                                return null;\n                            }\n                            return client.protocol2CodeConverter.asSemanticTokens(result, token);\n                        }, (error) => {\n                            return client.handleFailedRequest(vscode_languageserver_protocol_1.SemanticTokensRangeRequest.type, token, error, null);\n                        });\n                    };\n                    return middleware.provideDocumentRangeSemanticTokens\n                        ? middleware.provideDocumentRangeSemanticTokens(document, range, token, provideDocumentRangeSemanticTokens)\n                        : provideDocumentRangeSemanticTokens(document, range, token);\n                }\n            }\n            : undefined;\n        const disposables = [];\n        const client = this._client;\n        const legend = client.protocol2CodeConverter.asSemanticTokensLegend(options.legend);\n        const documentSelector = client.protocol2CodeConverter.asDocumentSelector(selector);\n        if (documentProvider !== undefined) {\n            disposables.push(vscode.languages.registerDocumentSemanticTokensProvider(documentSelector, documentProvider, legend));\n        }\n        if (rangeProvider !== undefined) {\n            disposables.push(vscode.languages.registerDocumentRangeSemanticTokensProvider(documentSelector, rangeProvider, legend));\n        }\n        return [new vscode.Disposable(() => disposables.forEach(item => item.dispose())), { range: rangeProvider, full: documentProvider, onDidChangeSemanticTokensEmitter: eventEmitter }];\n    }\n}\nexports.SemanticTokensFeature = SemanticTokensFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WillDeleteFilesFeature = exports.WillRenameFilesFeature = exports.WillCreateFilesFeature = exports.DidDeleteFilesFeature = exports.DidRenameFilesFeature = exports.DidCreateFilesFeature = void 0;\nconst code = require(\"vscode\");\nconst minimatch = require(\"minimatch\");\nconst proto = require(\"vscode-languageserver-protocol\");\nconst UUID = require(\"./utils/uuid\");\nfunction ensure(target, key) {\n    if (target[key] === void 0) {\n        target[key] = {};\n    }\n    return target[key];\n}\nfunction access(target, key) {\n    return target[key];\n}\nfunction assign(target, key, value) {\n    target[key] = value;\n}\nclass FileOperationFeature {\n    constructor(client, event, registrationType, clientCapability, serverCapability) {\n        this._client = client;\n        this._event = event;\n        this._registrationType = registrationType;\n        this._clientCapability = clientCapability;\n        this._serverCapability = serverCapability;\n        this._filters = new Map();\n    }\n    getState() {\n        return { kind: 'workspace', id: this._registrationType.method, registrations: this._filters.size > 0 };\n    }\n    filterSize() {\n        return this._filters.size;\n    }\n    get registrationType() {\n        return this._registrationType;\n    }\n    fillClientCapabilities(capabilities) {\n        const value = ensure(ensure(capabilities, 'workspace'), 'fileOperations');\n        // this happens n times but it is the same value so we tolerate this.\n        assign(value, 'dynamicRegistration', true);\n        assign(value, this._clientCapability, true);\n    }\n    initialize(capabilities) {\n        const options = capabilities.workspace?.fileOperations;\n        const capability = options !== undefined ? access(options, this._serverCapability) : undefined;\n        if (capability?.filters !== undefined) {\n            try {\n                this.register({\n                    id: UUID.generateUuid(),\n                    registerOptions: { filters: capability.filters }\n                });\n            }\n            catch (e) {\n                this._client.warn(`Ignoring invalid glob pattern for ${this._serverCapability} registration: ${e}`);\n            }\n        }\n    }\n    register(data) {\n        if (!this._listener) {\n            this._listener = this._event(this.send, this);\n        }\n        const minimatchFilter = data.registerOptions.filters.map((filter) => {\n            const matcher = new minimatch.Minimatch(filter.pattern.glob, FileOperationFeature.asMinimatchOptions(filter.pattern.options));\n            if (!matcher.makeRe()) {\n                throw new Error(`Invalid pattern ${filter.pattern.glob}!`);\n            }\n            return { scheme: filter.scheme, matcher, kind: filter.pattern.matches };\n        });\n        this._filters.set(data.id, minimatchFilter);\n    }\n    unregister(id) {\n        this._filters.delete(id);\n        if (this._filters.size === 0 && this._listener) {\n            this._listener.dispose();\n            this._listener = undefined;\n        }\n    }\n    clear() {\n        this._filters.clear();\n        if (this._listener) {\n            this._listener.dispose();\n            this._listener = undefined;\n        }\n    }\n    getFileType(uri) {\n        return FileOperationFeature.getFileType(uri);\n    }\n    async filter(event, prop) {\n        // (Asynchronously) map each file onto a boolean of whether it matches\n        // any of the globs.\n        const fileMatches = await Promise.all(event.files.map(async (item) => {\n            const uri = prop(item);\n            // Use fsPath to make this consistent with file system watchers but help\n            // minimatch to use '/' instead of `\\\\` if present.\n            const path = uri.fsPath.replace(/\\\\/g, '/');\n            for (const filters of this._filters.values()) {\n                for (const filter of filters) {\n                    if (filter.scheme !== undefined && filter.scheme !== uri.scheme) {\n                        continue;\n                    }\n                    if (filter.matcher.match(path)) {\n                        // The pattern matches. If kind is undefined then everything is ok\n                        if (filter.kind === undefined) {\n                            return true;\n                        }\n                        const fileType = await this.getFileType(uri);\n                        // If we can't determine the file type than we treat it as a match.\n                        // Dropping it would be another alternative.\n                        if (fileType === undefined) {\n                            this._client.error(`Failed to determine file type for ${uri.toString()}.`);\n                            return true;\n                        }\n                        if ((fileType === code.FileType.File && filter.kind === proto.FileOperationPatternKind.file) || (fileType === code.FileType.Directory && filter.kind === proto.FileOperationPatternKind.folder)) {\n                            return true;\n                        }\n                    }\n                    else if (filter.kind === proto.FileOperationPatternKind.folder) {\n                        const fileType = await FileOperationFeature.getFileType(uri);\n                        if (fileType === code.FileType.Directory && filter.matcher.match(`${path}/`)) {\n                            return true;\n                        }\n                    }\n                }\n            }\n            return false;\n        }));\n        // Filter the files to those that matched.\n        const files = event.files.filter((_, index) => fileMatches[index]);\n        return { ...event, files };\n    }\n    static async getFileType(uri) {\n        try {\n            return (await code.workspace.fs.stat(uri)).type;\n        }\n        catch (e) {\n            return undefined;\n        }\n    }\n    static asMinimatchOptions(options) {\n        // The spec doesn't state that dot files don't match. So we make\n        // matching those the default.\n        const result = { dot: true };\n        if (options?.ignoreCase === true) {\n            result.nocase = true;\n        }\n        return result;\n    }\n}\nclass NotificationFileOperationFeature extends FileOperationFeature {\n    constructor(client, event, notificationType, clientCapability, serverCapability, accessUri, createParams) {\n        super(client, event, notificationType, clientCapability, serverCapability);\n        this._notificationType = notificationType;\n        this._accessUri = accessUri;\n        this._createParams = createParams;\n    }\n    async send(originalEvent) {\n        // Create a copy of the event that has the files filtered to match what the\n        // server wants.\n        const filteredEvent = await this.filter(originalEvent, this._accessUri);\n        if (filteredEvent.files.length) {\n            const next = async (event) => {\n                return this._client.sendNotification(this._notificationType, this._createParams(event));\n            };\n            return this.doSend(filteredEvent, next);\n        }\n    }\n}\nclass CachingNotificationFileOperationFeature extends NotificationFileOperationFeature {\n    constructor() {\n        super(...arguments);\n        this._fsPathFileTypes = new Map();\n    }\n    async getFileType(uri) {\n        const fsPath = uri.fsPath;\n        if (this._fsPathFileTypes.has(fsPath)) {\n            return this._fsPathFileTypes.get(fsPath);\n        }\n        const type = await FileOperationFeature.getFileType(uri);\n        if (type) {\n            this._fsPathFileTypes.set(fsPath, type);\n        }\n        return type;\n    }\n    async cacheFileTypes(event, prop) {\n        // Calling filter will force the matching logic to run. For any item\n        // that requires a getFileType lookup, the overriden getFileType will\n        // be called that will cache the result so that when onDidRename fires,\n        // it can still be checked even though the item no longer exists on disk\n        // in its original location.\n        await this.filter(event, prop);\n    }\n    clearFileTypeCache() {\n        this._fsPathFileTypes.clear();\n    }\n    unregister(id) {\n        super.unregister(id);\n        if (this.filterSize() === 0 && this._willListener) {\n            this._willListener.dispose();\n            this._willListener = undefined;\n        }\n    }\n    clear() {\n        super.clear();\n        if (this._willListener) {\n            this._willListener.dispose();\n            this._willListener = undefined;\n        }\n    }\n}\nclass DidCreateFilesFeature extends NotificationFileOperationFeature {\n    constructor(client) {\n        super(client, code.workspace.onDidCreateFiles, proto.DidCreateFilesNotification.type, 'didCreate', 'didCreate', (i) => i, client.code2ProtocolConverter.asDidCreateFilesParams);\n    }\n    doSend(event, next) {\n        const middleware = this._client.middleware.workspace;\n        return middleware?.didCreateFiles\n            ? middleware.didCreateFiles(event, next)\n            : next(event);\n    }\n}\nexports.DidCreateFilesFeature = DidCreateFilesFeature;\nclass DidRenameFilesFeature extends CachingNotificationFileOperationFeature {\n    constructor(client) {\n        super(client, code.workspace.onDidRenameFiles, proto.DidRenameFilesNotification.type, 'didRename', 'didRename', (i) => i.oldUri, client.code2ProtocolConverter.asDidRenameFilesParams);\n    }\n    register(data) {\n        if (!this._willListener) {\n            this._willListener = code.workspace.onWillRenameFiles(this.willRename, this);\n        }\n        super.register(data);\n    }\n    willRename(e) {\n        e.waitUntil(this.cacheFileTypes(e, (i) => i.oldUri));\n    }\n    doSend(event, next) {\n        this.clearFileTypeCache();\n        const middleware = this._client.middleware.workspace;\n        return middleware?.didRenameFiles\n            ? middleware.didRenameFiles(event, next)\n            : next(event);\n    }\n}\nexports.DidRenameFilesFeature = DidRenameFilesFeature;\nclass DidDeleteFilesFeature extends CachingNotificationFileOperationFeature {\n    constructor(client) {\n        super(client, code.workspace.onDidDeleteFiles, proto.DidDeleteFilesNotification.type, 'didDelete', 'didDelete', (i) => i, client.code2ProtocolConverter.asDidDeleteFilesParams);\n    }\n    register(data) {\n        if (!this._willListener) {\n            this._willListener = code.workspace.onWillDeleteFiles(this.willDelete, this);\n        }\n        super.register(data);\n    }\n    willDelete(e) {\n        e.waitUntil(this.cacheFileTypes(e, (i) => i));\n    }\n    doSend(event, next) {\n        this.clearFileTypeCache();\n        const middleware = this._client.middleware.workspace;\n        return middleware?.didDeleteFiles\n            ? middleware.didDeleteFiles(event, next)\n            : next(event);\n    }\n}\nexports.DidDeleteFilesFeature = DidDeleteFilesFeature;\nclass RequestFileOperationFeature extends FileOperationFeature {\n    constructor(client, event, requestType, clientCapability, serverCapability, accessUri, createParams) {\n        super(client, event, requestType, clientCapability, serverCapability);\n        this._requestType = requestType;\n        this._accessUri = accessUri;\n        this._createParams = createParams;\n    }\n    async send(originalEvent) {\n        const waitUntil = this.waitUntil(originalEvent);\n        originalEvent.waitUntil(waitUntil);\n    }\n    async waitUntil(originalEvent) {\n        // Create a copy of the event that has the files filtered to match what the\n        // server wants.\n        const filteredEvent = await this.filter(originalEvent, this._accessUri);\n        if (filteredEvent.files.length) {\n            const next = (event) => {\n                return this._client.sendRequest(this._requestType, this._createParams(event), event.token)\n                    .then(this._client.protocol2CodeConverter.asWorkspaceEdit);\n            };\n            return this.doSend(filteredEvent, next);\n        }\n        else {\n            return undefined;\n        }\n    }\n}\nclass WillCreateFilesFeature extends RequestFileOperationFeature {\n    constructor(client) {\n        super(client, code.workspace.onWillCreateFiles, proto.WillCreateFilesRequest.type, 'willCreate', 'willCreate', (i) => i, client.code2ProtocolConverter.asWillCreateFilesParams);\n    }\n    doSend(event, next) {\n        const middleware = this._client.middleware.workspace;\n        return middleware?.willCreateFiles\n            ? middleware.willCreateFiles(event, next)\n            : next(event);\n    }\n}\nexports.WillCreateFilesFeature = WillCreateFilesFeature;\nclass WillRenameFilesFeature extends RequestFileOperationFeature {\n    constructor(client) {\n        super(client, code.workspace.onWillRenameFiles, proto.WillRenameFilesRequest.type, 'willRename', 'willRename', (i) => i.oldUri, client.code2ProtocolConverter.asWillRenameFilesParams);\n    }\n    doSend(event, next) {\n        const middleware = this._client.middleware.workspace;\n        return middleware?.willRenameFiles\n            ? middleware.willRenameFiles(event, next)\n            : next(event);\n    }\n}\nexports.WillRenameFilesFeature = WillRenameFilesFeature;\nclass WillDeleteFilesFeature extends RequestFileOperationFeature {\n    constructor(client) {\n        super(client, code.workspace.onWillDeleteFiles, proto.WillDeleteFilesRequest.type, 'willDelete', 'willDelete', (i) => i, client.code2ProtocolConverter.asWillDeleteFilesParams);\n    }\n    doSend(event, next) {\n        const middleware = this._client.middleware.workspace;\n        return middleware?.willDeleteFiles\n            ? middleware.willDeleteFiles(event, next)\n            : next(event);\n    }\n}\nexports.WillDeleteFilesFeature = WillDeleteFilesFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedEditingFeature = void 0;\nconst code = require(\"vscode\");\nconst proto = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass LinkedEditingFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, proto.LinkedEditingRangeRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const linkedEditingSupport = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'linkedEditingRange');\n        linkedEditingSupport.dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        let [id, options] = this.getRegistration(documentSelector, capabilities.linkedEditingRangeProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideLinkedEditingRanges: (document, position, token) => {\n                const client = this._client;\n                const provideLinkedEditing = (document, position, token) => {\n                    return client.sendRequest(proto.LinkedEditingRangeRequest.type, client.code2ProtocolConverter.asTextDocumentPositionParams(document, position), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asLinkedEditingRanges(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(proto.LinkedEditingRangeRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideLinkedEditingRange\n                    ? middleware.provideLinkedEditingRange(document, position, token, provideLinkedEditing)\n                    : provideLinkedEditing(document, position, token);\n            }\n        };\n        return [this.registerProvider(selector, provider), provider];\n    }\n    registerProvider(selector, provider) {\n        return code.languages.registerLinkedEditingRangeProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.LinkedEditingFeature = LinkedEditingFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeHierarchyFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass TypeHierarchyProvider {\n    constructor(client) {\n        this.client = client;\n        this.middleware = client.middleware;\n    }\n    prepareTypeHierarchy(document, position, token) {\n        const client = this.client;\n        const middleware = this.middleware;\n        const prepareTypeHierarchy = (document, position, token) => {\n            const params = client.code2ProtocolConverter.asTextDocumentPositionParams(document, position);\n            return client.sendRequest(vscode_languageserver_protocol_1.TypeHierarchyPrepareRequest.type, params, token).then((result) => {\n                if (token.isCancellationRequested) {\n                    return null;\n                }\n                return client.protocol2CodeConverter.asTypeHierarchyItems(result, token);\n            }, (error) => {\n                return client.handleFailedRequest(vscode_languageserver_protocol_1.TypeHierarchyPrepareRequest.type, token, error, null);\n            });\n        };\n        return middleware.prepareTypeHierarchy\n            ? middleware.prepareTypeHierarchy(document, position, token, prepareTypeHierarchy)\n            : prepareTypeHierarchy(document, position, token);\n    }\n    provideTypeHierarchySupertypes(item, token) {\n        const client = this.client;\n        const middleware = this.middleware;\n        const provideTypeHierarchySupertypes = (item, token) => {\n            const params = {\n                item: client.code2ProtocolConverter.asTypeHierarchyItem(item)\n            };\n            return client.sendRequest(vscode_languageserver_protocol_1.TypeHierarchySupertypesRequest.type, params, token).then((result) => {\n                if (token.isCancellationRequested) {\n                    return null;\n                }\n                return client.protocol2CodeConverter.asTypeHierarchyItems(result, token);\n            }, (error) => {\n                return client.handleFailedRequest(vscode_languageserver_protocol_1.TypeHierarchySupertypesRequest.type, token, error, null);\n            });\n        };\n        return middleware.provideTypeHierarchySupertypes\n            ? middleware.provideTypeHierarchySupertypes(item, token, provideTypeHierarchySupertypes)\n            : provideTypeHierarchySupertypes(item, token);\n    }\n    provideTypeHierarchySubtypes(item, token) {\n        const client = this.client;\n        const middleware = this.middleware;\n        const provideTypeHierarchySubtypes = (item, token) => {\n            const params = {\n                item: client.code2ProtocolConverter.asTypeHierarchyItem(item)\n            };\n            return client.sendRequest(vscode_languageserver_protocol_1.TypeHierarchySubtypesRequest.type, params, token).then((result) => {\n                if (token.isCancellationRequested) {\n                    return null;\n                }\n                return client.protocol2CodeConverter.asTypeHierarchyItems(result, token);\n            }, (error) => {\n                return client.handleFailedRequest(vscode_languageserver_protocol_1.TypeHierarchySubtypesRequest.type, token, error, null);\n            });\n        };\n        return middleware.provideTypeHierarchySubtypes\n            ? middleware.provideTypeHierarchySubtypes(item, token, provideTypeHierarchySubtypes)\n            : provideTypeHierarchySubtypes(item, token);\n    }\n}\nclass TypeHierarchyFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.TypeHierarchyPrepareRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const capability = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'typeHierarchy');\n        capability.dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const [id, options] = this.getRegistration(documentSelector, capabilities.typeHierarchyProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const client = this._client;\n        const provider = new TypeHierarchyProvider(client);\n        return [vscode_1.languages.registerTypeHierarchyProvider(client.protocol2CodeConverter.asDocumentSelector(options.documentSelector), provider), provider];\n    }\n}\nexports.TypeHierarchyFeature = TypeHierarchyFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlineValueFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass InlineValueFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.InlineValueRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'inlineValue').dynamicRegistration = true;\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'inlineValue').refreshSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        this._client.onRequest(vscode_languageserver_protocol_1.InlineValueRefreshRequest.type, async () => {\n            for (const provider of this.getAllProviders()) {\n                provider.onDidChangeInlineValues.fire();\n            }\n        });\n        const [id, options] = this.getRegistration(documentSelector, capabilities.inlineValueProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const eventEmitter = new vscode_1.EventEmitter();\n        const provider = {\n            onDidChangeInlineValues: eventEmitter.event,\n            provideInlineValues: (document, viewPort, context, token) => {\n                const client = this._client;\n                const provideInlineValues = (document, viewPort, context, token) => {\n                    const requestParams = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                        range: client.code2ProtocolConverter.asRange(viewPort),\n                        context: client.code2ProtocolConverter.asInlineValueContext(context)\n                    };\n                    return client.sendRequest(vscode_languageserver_protocol_1.InlineValueRequest.type, requestParams, token).then((values) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asInlineValues(values, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.InlineValueRequest.type, token, error, null);\n                    });\n                };\n                const middleware = client.middleware;\n                return middleware.provideInlineValues\n                    ? middleware.provideInlineValues(document, viewPort, context, token, provideInlineValues)\n                    : provideInlineValues(document, viewPort, context, token);\n            }\n        };\n        return [this.registerProvider(selector, provider), { provider: provider, onDidChangeInlineValues: eventEmitter }];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerInlineValuesProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.InlineValueFeature = InlineValueFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlayHintsFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nclass InlayHintsFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.InlayHintRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        const inlayHint = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'inlayHint');\n        inlayHint.dynamicRegistration = true;\n        inlayHint.resolveSupport = {\n            properties: ['tooltip', 'textEdits', 'label.tooltip', 'label.location', 'label.command']\n        };\n        (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'inlayHint').refreshSupport = true;\n    }\n    initialize(capabilities, documentSelector) {\n        this._client.onRequest(vscode_languageserver_protocol_1.InlayHintRefreshRequest.type, async () => {\n            for (const provider of this.getAllProviders()) {\n                provider.onDidChangeInlayHints.fire();\n            }\n        });\n        const [id, options] = this.getRegistration(documentSelector, capabilities.inlayHintProvider);\n        if (!id || !options) {\n            return;\n        }\n        this.register({ id: id, registerOptions: options });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const eventEmitter = new vscode_1.EventEmitter();\n        const provider = {\n            onDidChangeInlayHints: eventEmitter.event,\n            provideInlayHints: (document, viewPort, token) => {\n                const client = this._client;\n                const provideInlayHints = async (document, viewPort, token) => {\n                    const requestParams = {\n                        textDocument: client.code2ProtocolConverter.asTextDocumentIdentifier(document),\n                        range: client.code2ProtocolConverter.asRange(viewPort)\n                    };\n                    try {\n                        const values = await client.sendRequest(vscode_languageserver_protocol_1.InlayHintRequest.type, requestParams, token);\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asInlayHints(values, token);\n                    }\n                    catch (error) {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.InlayHintRequest.type, token, error, null);\n                    }\n                };\n                const middleware = client.middleware;\n                return middleware.provideInlayHints\n                    ? middleware.provideInlayHints(document, viewPort, token, provideInlayHints)\n                    : provideInlayHints(document, viewPort, token);\n            }\n        };\n        provider.resolveInlayHint = options.resolveProvider === true\n            ? (hint, token) => {\n                const client = this._client;\n                const resolveInlayHint = async (item, token) => {\n                    try {\n                        const value = await client.sendRequest(vscode_languageserver_protocol_1.InlayHintResolveRequest.type, client.code2ProtocolConverter.asInlayHint(item), token);\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        const result = client.protocol2CodeConverter.asInlayHint(value, token);\n                        return token.isCancellationRequested ? null : result;\n                    }\n                    catch (error) {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.InlayHintResolveRequest.type, token, error, null);\n                    }\n                };\n                const middleware = client.middleware;\n                return middleware.resolveInlayHint\n                    ? middleware.resolveInlayHint(hint, token, resolveInlayHint)\n                    : resolveInlayHint(hint, token);\n            }\n            : undefined;\n        return [this.registerProvider(selector, provider), { provider: provider, onDidChangeInlayHints: eventEmitter }];\n    }\n    registerProvider(selector, provider) {\n        return vscode_1.languages.registerInlayHintsProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider);\n    }\n}\nexports.InlayHintsFeature = InlayHintsFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InlineCompletionItemFeature = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = require(\"./utils/uuid\");\nclass InlineCompletionItemFeature extends features_1.TextDocumentLanguageFeature {\n    constructor(client) {\n        super(client, vscode_languageserver_protocol_1.InlineCompletionRequest.type);\n    }\n    fillClientCapabilities(capabilities) {\n        let inlineCompletion = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'inlineCompletion');\n        inlineCompletion.dynamicRegistration = true;\n    }\n    initialize(capabilities, documentSelector) {\n        const options = this.getRegistrationOptions(documentSelector, capabilities.inlineCompletionProvider);\n        if (!options) {\n            return;\n        }\n        this.register({\n            id: UUID.generateUuid(),\n            registerOptions: options\n        });\n    }\n    registerLanguageProvider(options) {\n        const selector = options.documentSelector;\n        const provider = {\n            provideInlineCompletionItems: (document, position, context, token) => {\n                const client = this._client;\n                const middleware = this._client.middleware;\n                const provideInlineCompletionItems = (document, position, context, token) => {\n                    return client.sendRequest(vscode_languageserver_protocol_1.InlineCompletionRequest.type, client.code2ProtocolConverter.asInlineCompletionParams(document, position, context), token).then((result) => {\n                        if (token.isCancellationRequested) {\n                            return null;\n                        }\n                        return client.protocol2CodeConverter.asInlineCompletionResult(result, token);\n                    }, (error) => {\n                        return client.handleFailedRequest(vscode_languageserver_protocol_1.InlineCompletionRequest.type, token, error, null);\n                    });\n                };\n                return middleware.provideInlineCompletionItems\n                    ? middleware.provideInlineCompletionItems(document, position, context, token, provideInlineCompletionItems)\n                    : provideInlineCompletionItems(document, position, context, token);\n            }\n        };\n        return [vscode_1.languages.registerInlineCompletionItemProvider(this._client.protocol2CodeConverter.asDocumentSelector(selector), provider), provider];\n    }\n}\nexports.InlineCompletionItemFeature = InlineCompletionItemFeature;\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProposedFeatures = exports.BaseLanguageClient = exports.MessageTransports = exports.SuspendMode = exports.State = exports.CloseAction = exports.ErrorAction = exports.RevealOutputChannelOn = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst c2p = require(\"./codeConverter\");\nconst p2c = require(\"./protocolConverter\");\nconst Is = require(\"./utils/is\");\nconst async_1 = require(\"./utils/async\");\nconst UUID = require(\"./utils/uuid\");\nconst progressPart_1 = require(\"./progressPart\");\nconst features_1 = require(\"./features\");\nconst diagnostic_1 = require(\"./diagnostic\");\nconst notebook_1 = require(\"./notebook\");\nconst configuration_1 = require(\"./configuration\");\nconst textSynchronization_1 = require(\"./textSynchronization\");\nconst completion_1 = require(\"./completion\");\nconst hover_1 = require(\"./hover\");\nconst definition_1 = require(\"./definition\");\nconst signatureHelp_1 = require(\"./signatureHelp\");\nconst documentHighlight_1 = require(\"./documentHighlight\");\nconst documentSymbol_1 = require(\"./documentSymbol\");\nconst workspaceSymbol_1 = require(\"./workspaceSymbol\");\nconst reference_1 = require(\"./reference\");\nconst codeAction_1 = require(\"./codeAction\");\nconst codeLens_1 = require(\"./codeLens\");\nconst formatting_1 = require(\"./formatting\");\nconst rename_1 = require(\"./rename\");\nconst documentLink_1 = require(\"./documentLink\");\nconst executeCommand_1 = require(\"./executeCommand\");\nconst fileSystemWatcher_1 = require(\"./fileSystemWatcher\");\nconst colorProvider_1 = require(\"./colorProvider\");\nconst implementation_1 = require(\"./implementation\");\nconst typeDefinition_1 = require(\"./typeDefinition\");\nconst workspaceFolder_1 = require(\"./workspaceFolder\");\nconst foldingRange_1 = require(\"./foldingRange\");\nconst declaration_1 = require(\"./declaration\");\nconst selectionRange_1 = require(\"./selectionRange\");\nconst progress_1 = require(\"./progress\");\nconst callHierarchy_1 = require(\"./callHierarchy\");\nconst semanticTokens_1 = require(\"./semanticTokens\");\nconst fileOperations_1 = require(\"./fileOperations\");\nconst linkedEditingRange_1 = require(\"./linkedEditingRange\");\nconst typeHierarchy_1 = require(\"./typeHierarchy\");\nconst inlineValue_1 = require(\"./inlineValue\");\nconst inlayHint_1 = require(\"./inlayHint\");\nconst inlineCompletion_1 = require(\"./inlineCompletion\");\n/**\n * Controls when the output channel is revealed.\n */\nvar RevealOutputChannelOn;\n(function (RevealOutputChannelOn) {\n    RevealOutputChannelOn[RevealOutputChannelOn[\"Debug\"] = 0] = \"Debug\";\n    RevealOutputChannelOn[RevealOutputChannelOn[\"Info\"] = 1] = \"Info\";\n    RevealOutputChannelOn[RevealOutputChannelOn[\"Warn\"] = 2] = \"Warn\";\n    RevealOutputChannelOn[RevealOutputChannelOn[\"Error\"] = 3] = \"Error\";\n    RevealOutputChannelOn[RevealOutputChannelOn[\"Never\"] = 4] = \"Never\";\n})(RevealOutputChannelOn || (exports.RevealOutputChannelOn = RevealOutputChannelOn = {}));\n/**\n * An action to be performed when the connection is producing errors.\n */\nvar ErrorAction;\n(function (ErrorAction) {\n    /**\n     * Continue running the server.\n     */\n    ErrorAction[ErrorAction[\"Continue\"] = 1] = \"Continue\";\n    /**\n     * Shutdown the server.\n     */\n    ErrorAction[ErrorAction[\"Shutdown\"] = 2] = \"Shutdown\";\n})(ErrorAction || (exports.ErrorAction = ErrorAction = {}));\n/**\n * An action to be performed when the connection to a server got closed.\n */\nvar CloseAction;\n(function (CloseAction) {\n    /**\n     * Don't restart the server. The connection stays closed.\n     */\n    CloseAction[CloseAction[\"DoNotRestart\"] = 1] = \"DoNotRestart\";\n    /**\n     * Restart the server.\n     */\n    CloseAction[CloseAction[\"Restart\"] = 2] = \"Restart\";\n})(CloseAction || (exports.CloseAction = CloseAction = {}));\n/**\n * Signals in which state the language client is in.\n */\nvar State;\n(function (State) {\n    /**\n     * The client is stopped or got never started.\n     */\n    State[State[\"Stopped\"] = 1] = \"Stopped\";\n    /**\n     * The client is starting but not ready yet.\n     */\n    State[State[\"Starting\"] = 3] = \"Starting\";\n    /**\n     * The client is running and ready.\n     */\n    State[State[\"Running\"] = 2] = \"Running\";\n})(State || (exports.State = State = {}));\nvar SuspendMode;\n(function (SuspendMode) {\n    /**\n     * Don't allow suspend mode.\n     */\n    SuspendMode[\"off\"] = \"off\";\n    /**\n     * Support suspend mode even if not all\n     * registered providers have a corresponding\n     * activation listener.\n     */\n    SuspendMode[\"on\"] = \"on\";\n})(SuspendMode || (exports.SuspendMode = SuspendMode = {}));\nvar ResolvedClientOptions;\n(function (ResolvedClientOptions) {\n    function sanitizeIsTrusted(isTrusted) {\n        if (isTrusted === undefined || isTrusted === null) {\n            return false;\n        }\n        if ((typeof isTrusted === 'boolean') || (typeof isTrusted === 'object' && isTrusted !== null && Is.stringArray(isTrusted.enabledCommands))) {\n            return isTrusted;\n        }\n        return false;\n    }\n    ResolvedClientOptions.sanitizeIsTrusted = sanitizeIsTrusted;\n})(ResolvedClientOptions || (ResolvedClientOptions = {}));\nclass DefaultErrorHandler {\n    constructor(client, maxRestartCount) {\n        this.client = client;\n        this.maxRestartCount = maxRestartCount;\n        this.restarts = [];\n    }\n    error(_error, _message, count) {\n        if (count && count <= 3) {\n            return { action: ErrorAction.Continue };\n        }\n        return { action: ErrorAction.Shutdown };\n    }\n    closed() {\n        this.restarts.push(Date.now());\n        if (this.restarts.length <= this.maxRestartCount) {\n            return { action: CloseAction.Restart };\n        }\n        else {\n            let diff = this.restarts[this.restarts.length - 1] - this.restarts[0];\n            if (diff <= 3 * 60 * 1000) {\n                return { action: CloseAction.DoNotRestart, message: `The ${this.client.name} server crashed ${this.maxRestartCount + 1} times in the last 3 minutes. The server will not be restarted. See the output for more information.` };\n            }\n            else {\n                this.restarts.shift();\n                return { action: CloseAction.Restart };\n            }\n        }\n    }\n}\nvar ClientState;\n(function (ClientState) {\n    ClientState[\"Initial\"] = \"initial\";\n    ClientState[\"Starting\"] = \"starting\";\n    ClientState[\"StartFailed\"] = \"startFailed\";\n    ClientState[\"Running\"] = \"running\";\n    ClientState[\"Stopping\"] = \"stopping\";\n    ClientState[\"Stopped\"] = \"stopped\";\n})(ClientState || (ClientState = {}));\nvar MessageTransports;\n(function (MessageTransports) {\n    function is(value) {\n        let candidate = value;\n        return candidate && vscode_languageserver_protocol_1.MessageReader.is(value.reader) && vscode_languageserver_protocol_1.MessageWriter.is(value.writer);\n    }\n    MessageTransports.is = is;\n})(MessageTransports || (exports.MessageTransports = MessageTransports = {}));\nclass BaseLanguageClient {\n    constructor(id, name, clientOptions) {\n        this._traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text;\n        this._diagnosticQueue = new Map();\n        this._diagnosticQueueState = { state: 'idle' };\n        this._features = [];\n        this._dynamicFeatures = new Map();\n        this.workspaceEditLock = new async_1.Semaphore(1);\n        this._id = id;\n        this._name = name;\n        clientOptions = clientOptions || {};\n        const markdown = { isTrusted: false, supportHtml: false };\n        if (clientOptions.markdown !== undefined) {\n            markdown.isTrusted = ResolvedClientOptions.sanitizeIsTrusted(clientOptions.markdown.isTrusted);\n            markdown.supportHtml = clientOptions.markdown.supportHtml === true;\n        }\n        // const defaultInterval = (clientOptions as TestOptions).$testMode ? 50 : 60000;\n        this._clientOptions = {\n            documentSelector: clientOptions.documentSelector ?? [],\n            synchronize: clientOptions.synchronize ?? {},\n            diagnosticCollectionName: clientOptions.diagnosticCollectionName,\n            outputChannelName: clientOptions.outputChannelName ?? this._name,\n            revealOutputChannelOn: clientOptions.revealOutputChannelOn ?? RevealOutputChannelOn.Error,\n            stdioEncoding: clientOptions.stdioEncoding ?? 'utf8',\n            initializationOptions: clientOptions.initializationOptions,\n            initializationFailedHandler: clientOptions.initializationFailedHandler,\n            progressOnInitialization: !!clientOptions.progressOnInitialization,\n            errorHandler: clientOptions.errorHandler ?? this.createDefaultErrorHandler(clientOptions.connectionOptions?.maxRestartCount),\n            middleware: clientOptions.middleware ?? {},\n            uriConverters: clientOptions.uriConverters,\n            workspaceFolder: clientOptions.workspaceFolder,\n            connectionOptions: clientOptions.connectionOptions,\n            markdown,\n            // suspend: {\n            // \tmode: clientOptions.suspend?.mode ?? SuspendMode.off,\n            // \tcallback: clientOptions.suspend?.callback ?? (() => Promise.resolve(true)),\n            // \tinterval: clientOptions.suspend?.interval ? Math.max(clientOptions.suspend.interval, defaultInterval) : defaultInterval\n            // },\n            diagnosticPullOptions: clientOptions.diagnosticPullOptions ?? { onChange: true, onSave: false },\n            notebookDocumentOptions: clientOptions.notebookDocumentOptions ?? {}\n        };\n        this._clientOptions.synchronize = this._clientOptions.synchronize || {};\n        this._state = ClientState.Initial;\n        this._ignoredRegistrations = new Set();\n        this._listeners = [];\n        this._notificationHandlers = new Map();\n        this._pendingNotificationHandlers = new Map();\n        this._notificationDisposables = new Map();\n        this._requestHandlers = new Map();\n        this._pendingRequestHandlers = new Map();\n        this._requestDisposables = new Map();\n        this._progressHandlers = new Map();\n        this._pendingProgressHandlers = new Map();\n        this._progressDisposables = new Map();\n        this._connection = undefined;\n        // this._idleStart = undefined;\n        this._initializeResult = undefined;\n        if (clientOptions.outputChannel) {\n            this._outputChannel = clientOptions.outputChannel;\n            this._disposeOutputChannel = false;\n        }\n        else {\n            this._outputChannel = undefined;\n            this._disposeOutputChannel = true;\n        }\n        this._traceOutputChannel = clientOptions.traceOutputChannel;\n        this._diagnostics = undefined;\n        this._pendingOpenNotifications = new Set();\n        this._pendingChangeSemaphore = new async_1.Semaphore(1);\n        this._pendingChangeDelayer = new async_1.Delayer(250);\n        this._fileEvents = [];\n        this._fileEventDelayer = new async_1.Delayer(250);\n        this._onStop = undefined;\n        this._telemetryEmitter = new vscode_languageserver_protocol_1.Emitter();\n        this._stateChangeEmitter = new vscode_languageserver_protocol_1.Emitter();\n        this._trace = vscode_languageserver_protocol_1.Trace.Off;\n        this._tracer = {\n            log: (messageOrDataObject, data) => {\n                if (Is.string(messageOrDataObject)) {\n                    this.logTrace(messageOrDataObject, data);\n                }\n                else {\n                    this.logObjectTrace(messageOrDataObject);\n                }\n            },\n        };\n        this._c2p = c2p.createConverter(clientOptions.uriConverters ? clientOptions.uriConverters.code2Protocol : undefined);\n        this._p2c = p2c.createConverter(clientOptions.uriConverters ? clientOptions.uriConverters.protocol2Code : undefined, this._clientOptions.markdown.isTrusted, this._clientOptions.markdown.supportHtml);\n        this._syncedDocuments = new Map();\n        this.registerBuiltinFeatures();\n    }\n    get name() {\n        return this._name;\n    }\n    get middleware() {\n        return this._clientOptions.middleware ?? Object.create(null);\n    }\n    get clientOptions() {\n        return this._clientOptions;\n    }\n    get protocol2CodeConverter() {\n        return this._p2c;\n    }\n    get code2ProtocolConverter() {\n        return this._c2p;\n    }\n    get onTelemetry() {\n        return this._telemetryEmitter.event;\n    }\n    get onDidChangeState() {\n        return this._stateChangeEmitter.event;\n    }\n    get outputChannel() {\n        if (!this._outputChannel) {\n            this._outputChannel = vscode_1.window.createOutputChannel(this._clientOptions.outputChannelName ? this._clientOptions.outputChannelName : this._name);\n        }\n        return this._outputChannel;\n    }\n    get traceOutputChannel() {\n        if (this._traceOutputChannel) {\n            return this._traceOutputChannel;\n        }\n        return this.outputChannel;\n    }\n    get diagnostics() {\n        return this._diagnostics;\n    }\n    get state() {\n        return this.getPublicState();\n    }\n    get $state() {\n        return this._state;\n    }\n    set $state(value) {\n        let oldState = this.getPublicState();\n        this._state = value;\n        let newState = this.getPublicState();\n        if (newState !== oldState) {\n            this._stateChangeEmitter.fire({ oldState, newState });\n        }\n    }\n    getPublicState() {\n        switch (this.$state) {\n            case ClientState.Starting:\n                return State.Starting;\n            case ClientState.Running:\n                return State.Running;\n            default:\n                return State.Stopped;\n        }\n    }\n    get initializeResult() {\n        return this._initializeResult;\n    }\n    async sendRequest(type, ...params) {\n        if (this.$state === ClientState.StartFailed || this.$state === ClientState.Stopping || this.$state === ClientState.Stopped) {\n            return Promise.reject(new vscode_languageserver_protocol_1.ResponseError(vscode_languageserver_protocol_1.ErrorCodes.ConnectionInactive, `Client is not running`));\n        }\n        // Ensure we have a connection before we force the document sync.\n        const connection = await this.$start();\n        // If any document is synced in full mode make sure we flush any pending\n        // full document syncs.\n        if (this._didChangeTextDocumentFeature.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full) {\n            await this.sendPendingFullTextDocumentChanges(connection);\n        }\n        const _sendRequest = this._clientOptions.middleware?.sendRequest;\n        if (_sendRequest !== undefined) {\n            let param = undefined;\n            let token = undefined;\n            // Separate cancellation tokens from other parameters for a better client interface\n            if (params.length === 1) {\n                // CancellationToken is an interface, so we need to check if the first param complies to it\n                if (vscode_languageserver_protocol_1.CancellationToken.is(params[0])) {\n                    token = params[0];\n                }\n                else {\n                    param = params[0];\n                }\n            }\n            else if (params.length === 2) {\n                param = params[0];\n                token = params[1];\n            }\n            // Return the general middleware invocation defining `next` as a utility function that reorganizes parameters to\n            // pass them to the original sendRequest function.\n            return _sendRequest(type, param, token, (type, param, token) => {\n                const params = [];\n                // Add the parameters if there are any\n                if (param !== undefined) {\n                    params.push(param);\n                }\n                // Add the cancellation token if there is one\n                if (token !== undefined) {\n                    params.push(token);\n                }\n                return connection.sendRequest(type, ...params);\n            });\n        }\n        else {\n            return connection.sendRequest(type, ...params);\n        }\n    }\n    onRequest(type, handler) {\n        const method = typeof type === 'string' ? type : type.method;\n        this._requestHandlers.set(method, handler);\n        const connection = this.activeConnection();\n        let disposable;\n        if (connection !== undefined) {\n            this._requestDisposables.set(method, connection.onRequest(type, handler));\n            disposable = {\n                dispose: () => {\n                    const disposable = this._requestDisposables.get(method);\n                    if (disposable !== undefined) {\n                        disposable.dispose();\n                        this._requestDisposables.delete(method);\n                    }\n                }\n            };\n        }\n        else {\n            this._pendingRequestHandlers.set(method, handler);\n            disposable = {\n                dispose: () => {\n                    this._pendingRequestHandlers.delete(method);\n                    const disposable = this._requestDisposables.get(method);\n                    if (disposable !== undefined) {\n                        disposable.dispose();\n                        this._requestDisposables.delete(method);\n                    }\n                }\n            };\n        }\n        return {\n            dispose: () => {\n                this._requestHandlers.delete(method);\n                disposable.dispose();\n            }\n        };\n    }\n    async sendNotification(type, params) {\n        if (this.$state === ClientState.StartFailed || this.$state === ClientState.Stopping || this.$state === ClientState.Stopped) {\n            return Promise.reject(new vscode_languageserver_protocol_1.ResponseError(vscode_languageserver_protocol_1.ErrorCodes.ConnectionInactive, `Client is not running`));\n        }\n        const needsPendingFullTextDocumentSync = this._didChangeTextDocumentFeature.syncKind === vscode_languageserver_protocol_1.TextDocumentSyncKind.Full;\n        let openNotification;\n        if (needsPendingFullTextDocumentSync && typeof type !== 'string' && type.method === vscode_languageserver_protocol_1.DidOpenTextDocumentNotification.method) {\n            openNotification = params?.textDocument.uri;\n            this._pendingOpenNotifications.add(openNotification);\n        }\n        // Ensure we have a connection before we force the document sync.\n        const connection = await this.$start();\n        // If any document is synced in full mode make sure we flush any pending\n        // full document syncs.\n        if (needsPendingFullTextDocumentSync) {\n            await this.sendPendingFullTextDocumentChanges(connection);\n        }\n        // We need to remove the pending open notification before we actually\n        // send the notification over the connection. Otherwise there could be\n        // a request coming in that although the open notification got already put\n        // onto the wire will ignore pending document changes.\n        //\n        // Since the code path of connection.sendNotification is actually sync\n        // until the message is handed of to the writer and the writer as a semaphore\n        // lock with a capacity of 1 no additional async scheduling can happen until\n        // the message is actually handed of.\n        if (openNotification !== undefined) {\n            this._pendingOpenNotifications.delete(openNotification);\n        }\n        const _sendNotification = this._clientOptions.middleware?.sendNotification;\n        return _sendNotification\n            ? _sendNotification(type, connection.sendNotification.bind(connection), params)\n            : connection.sendNotification(type, params);\n    }\n    onNotification(type, handler) {\n        const method = typeof type === 'string' ? type : type.method;\n        this._notificationHandlers.set(method, handler);\n        const connection = this.activeConnection();\n        let disposable;\n        if (connection !== undefined) {\n            this._notificationDisposables.set(method, connection.onNotification(type, handler));\n            disposable = {\n                dispose: () => {\n                    const disposable = this._notificationDisposables.get(method);\n                    if (disposable !== undefined) {\n                        disposable.dispose();\n                        this._notificationDisposables.delete(method);\n                    }\n                }\n            };\n        }\n        else {\n            this._pendingNotificationHandlers.set(method, handler);\n            disposable = {\n                dispose: () => {\n                    this._pendingNotificationHandlers.delete(method);\n                    const disposable = this._notificationDisposables.get(method);\n                    if (disposable !== undefined) {\n                        disposable.dispose();\n                        this._notificationDisposables.delete(method);\n                    }\n                }\n            };\n        }\n        return {\n            dispose: () => {\n                this._notificationHandlers.delete(method);\n                disposable.dispose();\n            }\n        };\n    }\n    async sendProgress(type, token, value) {\n        if (this.$state === ClientState.StartFailed || this.$state === ClientState.Stopping || this.$state === ClientState.Stopped) {\n            return Promise.reject(new vscode_languageserver_protocol_1.ResponseError(vscode_languageserver_protocol_1.ErrorCodes.ConnectionInactive, `Client is not running`));\n        }\n        try {\n            // Ensure we have a connection before we force the document sync.\n            const connection = await this.$start();\n            return connection.sendProgress(type, token, value);\n        }\n        catch (error) {\n            this.error(`Sending progress for token ${token} failed.`, error);\n            throw error;\n        }\n    }\n    onProgress(type, token, handler) {\n        this._progressHandlers.set(token, { type, handler });\n        const connection = this.activeConnection();\n        let disposable;\n        const handleWorkDoneProgress = this._clientOptions.middleware?.handleWorkDoneProgress;\n        const realHandler = vscode_languageserver_protocol_1.WorkDoneProgress.is(type) && handleWorkDoneProgress !== undefined\n            ? (params) => {\n                handleWorkDoneProgress(token, params, () => handler(params));\n            }\n            : handler;\n        if (connection !== undefined) {\n            this._progressDisposables.set(token, connection.onProgress(type, token, realHandler));\n            disposable = {\n                dispose: () => {\n                    const disposable = this._progressDisposables.get(token);\n                    if (disposable !== undefined) {\n                        disposable.dispose();\n                        this._progressDisposables.delete(token);\n                    }\n                }\n            };\n        }\n        else {\n            this._pendingProgressHandlers.set(token, { type, handler });\n            disposable = {\n                dispose: () => {\n                    this._pendingProgressHandlers.delete(token);\n                    const disposable = this._progressDisposables.get(token);\n                    if (disposable !== undefined) {\n                        disposable.dispose();\n                        this._progressDisposables.delete(token);\n                    }\n                }\n            };\n        }\n        return {\n            dispose: () => {\n                this._progressHandlers.delete(token);\n                disposable.dispose();\n            }\n        };\n    }\n    createDefaultErrorHandler(maxRestartCount) {\n        if (maxRestartCount !== undefined && maxRestartCount < 0) {\n            throw new Error(`Invalid maxRestartCount: ${maxRestartCount}`);\n        }\n        return new DefaultErrorHandler(this, maxRestartCount ?? 4);\n    }\n    async setTrace(value) {\n        this._trace = value;\n        const connection = this.activeConnection();\n        if (connection !== undefined) {\n            await connection.trace(this._trace, this._tracer, {\n                sendNotification: false,\n                traceFormat: this._traceFormat\n            });\n        }\n    }\n    data2String(data) {\n        if (data instanceof vscode_languageserver_protocol_1.ResponseError) {\n            const responseError = data;\n            return `  Message: ${responseError.message}\\n  Code: ${responseError.code} ${responseError.data ? '\\n' + responseError.data.toString() : ''}`;\n        }\n        if (data instanceof Error) {\n            if (Is.string(data.stack)) {\n                return data.stack;\n            }\n            return data.message;\n        }\n        if (Is.string(data)) {\n            return data;\n        }\n        return data.toString();\n    }\n    debug(message, data, showNotification = true) {\n        this.logOutputMessage(vscode_languageserver_protocol_1.MessageType.Debug, RevealOutputChannelOn.Debug, 'Debug', message, data, showNotification);\n    }\n    info(message, data, showNotification = true) {\n        this.logOutputMessage(vscode_languageserver_protocol_1.MessageType.Info, RevealOutputChannelOn.Info, 'Info', message, data, showNotification);\n    }\n    warn(message, data, showNotification = true) {\n        this.logOutputMessage(vscode_languageserver_protocol_1.MessageType.Warning, RevealOutputChannelOn.Warn, 'Warn', message, data, showNotification);\n    }\n    error(message, data, showNotification = true) {\n        this.logOutputMessage(vscode_languageserver_protocol_1.MessageType.Error, RevealOutputChannelOn.Error, 'Error', message, data, showNotification);\n    }\n    logOutputMessage(type, reveal, name, message, data, showNotification) {\n        this.outputChannel.appendLine(`[${name.padEnd(5)} - ${(new Date().toLocaleTimeString())}] ${message}`);\n        if (data !== null && data !== undefined) {\n            this.outputChannel.appendLine(this.data2String(data));\n        }\n        if (showNotification === 'force' || (showNotification && this._clientOptions.revealOutputChannelOn <= reveal)) {\n            this.showNotificationMessage(type, message);\n        }\n    }\n    showNotificationMessage(type, message) {\n        message = message ?? 'A request has failed. See the output for more information.';\n        const messageFunc = type === vscode_languageserver_protocol_1.MessageType.Error\n            ? vscode_1.window.showErrorMessage\n            : type === vscode_languageserver_protocol_1.MessageType.Warning\n                ? vscode_1.window.showWarningMessage\n                : vscode_1.window.showInformationMessage;\n        void messageFunc(message, 'Go to output').then((selection) => {\n            if (selection !== undefined) {\n                this.outputChannel.show(true);\n            }\n        });\n    }\n    logTrace(message, data) {\n        this.traceOutputChannel.appendLine(`[Trace - ${(new Date().toLocaleTimeString())}] ${message}`);\n        if (data) {\n            this.traceOutputChannel.appendLine(this.data2String(data));\n        }\n    }\n    logObjectTrace(data) {\n        if (data.isLSPMessage && data.type) {\n            this.traceOutputChannel.append(`[LSP   - ${(new Date().toLocaleTimeString())}] `);\n        }\n        else {\n            this.traceOutputChannel.append(`[Trace - ${(new Date().toLocaleTimeString())}] `);\n        }\n        if (data) {\n            this.traceOutputChannel.appendLine(`${JSON.stringify(data)}`);\n        }\n    }\n    needsStart() {\n        return this.$state === ClientState.Initial || this.$state === ClientState.Stopping || this.$state === ClientState.Stopped;\n    }\n    needsStop() {\n        return this.$state === ClientState.Starting || this.$state === ClientState.Running;\n    }\n    activeConnection() {\n        return this.$state === ClientState.Running && this._connection !== undefined ? this._connection : undefined;\n    }\n    isRunning() {\n        return this.$state === ClientState.Running;\n    }\n    async start() {\n        if (this._disposed === 'disposing' || this._disposed === 'disposed') {\n            throw new Error(`Client got disposed and can't be restarted.`);\n        }\n        if (this.$state === ClientState.Stopping) {\n            throw new Error(`Client is currently stopping. Can only restart a full stopped client`);\n        }\n        // We are already running or are in the process of getting up\n        // to speed.\n        if (this._onStart !== undefined) {\n            return this._onStart;\n        }\n        const [promise, resolve, reject] = this.createOnStartPromise();\n        this._onStart = promise;\n        // If we restart then the diagnostics collection is reused.\n        if (this._diagnostics === undefined) {\n            this._diagnostics = this._clientOptions.diagnosticCollectionName\n                ? vscode_1.languages.createDiagnosticCollection(this._clientOptions.diagnosticCollectionName)\n                : vscode_1.languages.createDiagnosticCollection();\n        }\n        // When we start make all buffer handlers pending so that they\n        // get added.\n        for (const [method, handler] of this._notificationHandlers) {\n            if (!this._pendingNotificationHandlers.has(method)) {\n                this._pendingNotificationHandlers.set(method, handler);\n            }\n        }\n        for (const [method, handler] of this._requestHandlers) {\n            if (!this._pendingRequestHandlers.has(method)) {\n                this._pendingRequestHandlers.set(method, handler);\n            }\n        }\n        for (const [token, data] of this._progressHandlers) {\n            if (!this._pendingProgressHandlers.has(token)) {\n                this._pendingProgressHandlers.set(token, data);\n            }\n        }\n        this.$state = ClientState.Starting;\n        try {\n            const connection = await this.createConnection();\n            connection.onNotification(vscode_languageserver_protocol_1.LogMessageNotification.type, (message) => {\n                switch (message.type) {\n                    case vscode_languageserver_protocol_1.MessageType.Error:\n                        this.error(message.message, undefined, false);\n                        break;\n                    case vscode_languageserver_protocol_1.MessageType.Warning:\n                        this.warn(message.message, undefined, false);\n                        break;\n                    case vscode_languageserver_protocol_1.MessageType.Info:\n                        this.info(message.message, undefined, false);\n                        break;\n                    case vscode_languageserver_protocol_1.MessageType.Debug:\n                        this.debug(message.message, undefined, false);\n                        break;\n                    default:\n                        this.outputChannel.appendLine(message.message);\n                }\n            });\n            connection.onNotification(vscode_languageserver_protocol_1.ShowMessageNotification.type, (message) => {\n                switch (message.type) {\n                    case vscode_languageserver_protocol_1.MessageType.Error:\n                        void vscode_1.window.showErrorMessage(message.message);\n                        break;\n                    case vscode_languageserver_protocol_1.MessageType.Warning:\n                        void vscode_1.window.showWarningMessage(message.message);\n                        break;\n                    case vscode_languageserver_protocol_1.MessageType.Info:\n                        void vscode_1.window.showInformationMessage(message.message);\n                        break;\n                    default:\n                        void vscode_1.window.showInformationMessage(message.message);\n                }\n            });\n            connection.onRequest(vscode_languageserver_protocol_1.ShowMessageRequest.type, (params) => {\n                let messageFunc;\n                switch (params.type) {\n                    case vscode_languageserver_protocol_1.MessageType.Error:\n                        messageFunc = vscode_1.window.showErrorMessage;\n                        break;\n                    case vscode_languageserver_protocol_1.MessageType.Warning:\n                        messageFunc = vscode_1.window.showWarningMessage;\n                        break;\n                    case vscode_languageserver_protocol_1.MessageType.Info:\n                        messageFunc = vscode_1.window.showInformationMessage;\n                        break;\n                    default:\n                        messageFunc = vscode_1.window.showInformationMessage;\n                }\n                let actions = params.actions || [];\n                return messageFunc(params.message, ...actions);\n            });\n            connection.onNotification(vscode_languageserver_protocol_1.TelemetryEventNotification.type, (data) => {\n                this._telemetryEmitter.fire(data);\n            });\n            connection.onRequest(vscode_languageserver_protocol_1.ShowDocumentRequest.type, async (params) => {\n                const showDocument = async (params) => {\n                    const uri = this.protocol2CodeConverter.asUri(params.uri);\n                    try {\n                        if (params.external === true) {\n                            const success = await vscode_1.env.openExternal(uri);\n                            return { success };\n                        }\n                        else {\n                            const options = {};\n                            if (params.selection !== undefined) {\n                                options.selection = this.protocol2CodeConverter.asRange(params.selection);\n                            }\n                            if (params.takeFocus === undefined || params.takeFocus === false) {\n                                options.preserveFocus = true;\n                            }\n                            else if (params.takeFocus === true) {\n                                options.preserveFocus = false;\n                            }\n                            await vscode_1.window.showTextDocument(uri, options);\n                            return { success: true };\n                        }\n                    }\n                    catch (error) {\n                        return { success: false };\n                    }\n                };\n                const middleware = this._clientOptions.middleware.window?.showDocument;\n                if (middleware !== undefined) {\n                    return middleware(params, showDocument);\n                }\n                else {\n                    return showDocument(params);\n                }\n            });\n            connection.listen();\n            await this.initialize(connection);\n            resolve();\n        }\n        catch (error) {\n            this.$state = ClientState.StartFailed;\n            this.error(`${this._name} client: couldn't create connection to server.`, error, 'force');\n            reject(error);\n        }\n        return this._onStart;\n    }\n    createOnStartPromise() {\n        let resolve;\n        let reject;\n        const promise = new Promise((_resolve, _reject) => {\n            resolve = _resolve;\n            reject = _reject;\n        });\n        return [promise, resolve, reject];\n    }\n    async initialize(connection) {\n        this.refreshTrace(connection, false);\n        const initOption = this._clientOptions.initializationOptions;\n        // If the client is locked to a workspace folder use it. In this case the workspace folder\n        // feature is not registered and we need to initialize the value here.\n        const [rootPath, workspaceFolders] = this._clientOptions.workspaceFolder !== undefined\n            ? [this._clientOptions.workspaceFolder.uri.fsPath, [{ uri: this._c2p.asUri(this._clientOptions.workspaceFolder.uri), name: this._clientOptions.workspaceFolder.name }]]\n            : [this._clientGetRootPath(), null];\n        const initParams = {\n            processId: null,\n            clientInfo: {\n                name: vscode_1.env.appName,\n                version: vscode_1.version\n            },\n            locale: this.getLocale(),\n            rootPath: rootPath ? rootPath : null,\n            rootUri: rootPath ? this._c2p.asUri(vscode_1.Uri.file(rootPath)) : null,\n            capabilities: this.computeClientCapabilities(),\n            initializationOptions: Is.func(initOption) ? initOption() : initOption,\n            trace: vscode_languageserver_protocol_1.Trace.toString(this._trace),\n            workspaceFolders: workspaceFolders\n        };\n        this.fillInitializeParams(initParams);\n        if (this._clientOptions.progressOnInitialization) {\n            const token = UUID.generateUuid();\n            const part = new progressPart_1.ProgressPart(connection, token);\n            initParams.workDoneToken = token;\n            try {\n                const result = await this.doInitialize(connection, initParams);\n                part.done();\n                return result;\n            }\n            catch (error) {\n                part.cancel();\n                throw error;\n            }\n        }\n        else {\n            return this.doInitialize(connection, initParams);\n        }\n    }\n    async doInitialize(connection, initParams) {\n        try {\n            const result = await connection.initialize(initParams);\n            if (result.capabilities.positionEncoding !== undefined && result.capabilities.positionEncoding !== vscode_languageserver_protocol_1.PositionEncodingKind.UTF16) {\n                throw new Error(`Unsupported position encoding (${result.capabilities.positionEncoding}) received from server ${this.name}`);\n            }\n            this._initializeResult = result;\n            this.$state = ClientState.Running;\n            let textDocumentSyncOptions = undefined;\n            if (Is.number(result.capabilities.textDocumentSync)) {\n                if (result.capabilities.textDocumentSync === vscode_languageserver_protocol_1.TextDocumentSyncKind.None) {\n                    textDocumentSyncOptions = {\n                        openClose: false,\n                        change: vscode_languageserver_protocol_1.TextDocumentSyncKind.None,\n                        save: undefined\n                    };\n                }\n                else {\n                    textDocumentSyncOptions = {\n                        openClose: true,\n                        change: result.capabilities.textDocumentSync,\n                        save: {\n                            includeText: false\n                        }\n                    };\n                }\n            }\n            else if (result.capabilities.textDocumentSync !== undefined && result.capabilities.textDocumentSync !== null) {\n                textDocumentSyncOptions = result.capabilities.textDocumentSync;\n            }\n            this._capabilities = Object.assign({}, result.capabilities, { resolvedTextDocumentSync: textDocumentSyncOptions });\n            connection.onNotification(vscode_languageserver_protocol_1.PublishDiagnosticsNotification.type, params => this.handleDiagnostics(params));\n            connection.onRequest(vscode_languageserver_protocol_1.RegistrationRequest.type, params => this.handleRegistrationRequest(params));\n            // See https://github.com/Microsoft/vscode-languageserver-node/issues/199\n            connection.onRequest('client/registerFeature', params => this.handleRegistrationRequest(params));\n            connection.onRequest(vscode_languageserver_protocol_1.UnregistrationRequest.type, params => this.handleUnregistrationRequest(params));\n            // See https://github.com/Microsoft/vscode-languageserver-node/issues/199\n            connection.onRequest('client/unregisterFeature', params => this.handleUnregistrationRequest(params));\n            connection.onRequest(vscode_languageserver_protocol_1.ApplyWorkspaceEditRequest.type, params => this.handleApplyWorkspaceEdit(params));\n            // Add pending notification, request and progress handlers.\n            for (const [method, handler] of this._pendingNotificationHandlers) {\n                this._notificationDisposables.set(method, connection.onNotification(method, handler));\n            }\n            this._pendingNotificationHandlers.clear();\n            for (const [method, handler] of this._pendingRequestHandlers) {\n                this._requestDisposables.set(method, connection.onRequest(method, handler));\n            }\n            this._pendingRequestHandlers.clear();\n            for (const [token, data] of this._pendingProgressHandlers) {\n                this._progressDisposables.set(token, connection.onProgress(data.type, token, data.handler));\n            }\n            this._pendingProgressHandlers.clear();\n            // if (this._clientOptions.suspend.mode !== SuspendMode.off) {\n            // \tthis._idleInterval =  RAL().timer.setInterval(() => this.checkSuspend(), this._clientOptions.suspend.interval);\n            // }\n            await connection.sendNotification(vscode_languageserver_protocol_1.InitializedNotification.type, {});\n            this.hookFileEvents(connection);\n            this.hookConfigurationChanged(connection);\n            this.initializeFeatures(connection);\n            return result;\n        }\n        catch (error) {\n            if (this._clientOptions.initializationFailedHandler) {\n                if (this._clientOptions.initializationFailedHandler(error)) {\n                    void this.initialize(connection);\n                }\n                else {\n                    void this.stop();\n                }\n            }\n            else if (error instanceof vscode_languageserver_protocol_1.ResponseError && error.data && error.data.retry) {\n                void vscode_1.window.showErrorMessage(error.message, { title: 'Retry', id: 'retry' }).then(item => {\n                    if (item && item.id === 'retry') {\n                        void this.initialize(connection);\n                    }\n                    else {\n                        void this.stop();\n                    }\n                });\n            }\n            else {\n                if (error && error.message) {\n                    void vscode_1.window.showErrorMessage(error.message);\n                }\n                this.error('Server initialization failed.', error);\n                void this.stop();\n            }\n            throw error;\n        }\n    }\n    _clientGetRootPath() {\n        let folders = vscode_1.workspace.workspaceFolders;\n        if (!folders || folders.length === 0) {\n            return undefined;\n        }\n        let folder = folders[0];\n        if (folder.uri.scheme === 'file') {\n            return folder.uri.fsPath;\n        }\n        return undefined;\n    }\n    stop(timeout = 2000) {\n        // Wait 2 seconds on stop\n        return this.shutdown('stop', timeout);\n    }\n    dispose(timeout = 2000) {\n        try {\n            this._disposed = 'disposing';\n            return this.stop(timeout);\n        }\n        finally {\n            this._disposed = 'disposed';\n        }\n    }\n    async shutdown(mode, timeout) {\n        // If the client is stopped or in its initial state return.\n        if (this.$state === ClientState.Stopped || this.$state === ClientState.Initial) {\n            return;\n        }\n        // If we are stopping the client and have a stop promise return it.\n        if (this.$state === ClientState.Stopping) {\n            if (this._onStop !== undefined) {\n                return this._onStop;\n            }\n            else {\n                throw new Error(`Client is stopping but no stop promise available.`);\n            }\n        }\n        const connection = this.activeConnection();\n        // We can't stop a client that is not running (e.g. has no connection). Especially not\n        // on that us starting since it can't be correctly synchronized.\n        if (connection === undefined || this.$state !== ClientState.Running) {\n            throw new Error(`Client is not running and can't be stopped. It's current state is: ${this.$state}`);\n        }\n        this._initializeResult = undefined;\n        this.$state = ClientState.Stopping;\n        this.cleanUp(mode);\n        const tp = new Promise(c => { (0, vscode_languageserver_protocol_1.RAL)().timer.setTimeout(c, timeout); });\n        const shutdown = (async (connection) => {\n            await connection.shutdown();\n            await connection.exit();\n            return connection;\n        })(connection);\n        return this._onStop = Promise.race([tp, shutdown]).then((connection) => {\n            // The connection won the race with the timeout.\n            if (connection !== undefined) {\n                connection.end();\n                connection.dispose();\n            }\n            else {\n                this.error(`Stopping server timed out`, undefined, false);\n                throw new Error(`Stopping the server timed out`);\n            }\n        }, (error) => {\n            this.error(`Stopping server failed`, error, false);\n            throw error;\n        }).finally(() => {\n            this.$state = ClientState.Stopped;\n            mode === 'stop' && this.cleanUpChannel();\n            this._onStart = undefined;\n            this._onStop = undefined;\n            this._connection = undefined;\n            this._ignoredRegistrations.clear();\n        });\n    }\n    cleanUp(mode) {\n        // purge outstanding file events.\n        this._fileEvents = [];\n        this._fileEventDelayer.cancel();\n        const disposables = this._listeners.splice(0, this._listeners.length);\n        for (const disposable of disposables) {\n            disposable.dispose();\n        }\n        if (this._syncedDocuments) {\n            this._syncedDocuments.clear();\n        }\n        // Clear features in reverse order;\n        for (const feature of Array.from(this._features.entries()).map(entry => entry[1]).reverse()) {\n            feature.clear();\n        }\n        if (mode === 'stop' && this._diagnostics !== undefined) {\n            this._diagnostics.dispose();\n            this._diagnostics = undefined;\n        }\n        if (this._idleInterval !== undefined) {\n            this._idleInterval.dispose();\n            this._idleInterval = undefined;\n        }\n        // this._idleStart = undefined;\n    }\n    cleanUpChannel() {\n        if (this._outputChannel !== undefined && this._disposeOutputChannel) {\n            this._outputChannel.dispose();\n            this._outputChannel = undefined;\n        }\n    }\n    notifyFileEvent(event) {\n        const client = this;\n        async function didChangeWatchedFile(event) {\n            client._fileEvents.push(event);\n            return client._fileEventDelayer.trigger(async () => {\n                await client.sendNotification(vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type, { changes: client._fileEvents });\n                client._fileEvents = [];\n            });\n        }\n        const workSpaceMiddleware = this.clientOptions.middleware?.workspace;\n        (workSpaceMiddleware?.didChangeWatchedFile ? workSpaceMiddleware.didChangeWatchedFile(event, didChangeWatchedFile) : didChangeWatchedFile(event)).catch((error) => {\n            client.error(`Notify file events failed.`, error);\n        });\n    }\n    async sendPendingFullTextDocumentChanges(connection) {\n        return this._pendingChangeSemaphore.lock(async () => {\n            try {\n                const changes = this._didChangeTextDocumentFeature.getPendingDocumentChanges(this._pendingOpenNotifications);\n                if (changes.length === 0) {\n                    return;\n                }\n                for (const document of changes) {\n                    const params = this.code2ProtocolConverter.asChangeTextDocumentParams(document);\n                    // We await the send and not the delivery since it is more or less the same for\n                    // notifications.\n                    await connection.sendNotification(vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params);\n                    this._didChangeTextDocumentFeature.notificationSent(document, vscode_languageserver_protocol_1.DidChangeTextDocumentNotification.type, params);\n                }\n            }\n            catch (error) {\n                this.error(`Sending pending changes failed`, error, false);\n                throw error;\n            }\n        });\n    }\n    triggerPendingChangeDelivery() {\n        this._pendingChangeDelayer.trigger(async () => {\n            const connection = this.activeConnection();\n            if (connection === undefined) {\n                this.triggerPendingChangeDelivery();\n                return;\n            }\n            await this.sendPendingFullTextDocumentChanges(connection);\n        }).catch((error) => this.error(`Delivering pending changes failed`, error, false));\n    }\n    handleDiagnostics(params) {\n        if (!this._diagnostics) {\n            return;\n        }\n        const key = params.uri;\n        if (this._diagnosticQueueState.state === 'busy' && this._diagnosticQueueState.document === key) {\n            // Cancel the active run;\n            this._diagnosticQueueState.tokenSource.cancel();\n        }\n        this._diagnosticQueue.set(params.uri, params.diagnostics);\n        this.triggerDiagnosticQueue();\n    }\n    triggerDiagnosticQueue() {\n        (0, vscode_languageserver_protocol_1.RAL)().timer.setImmediate(() => { this.workDiagnosticQueue(); });\n    }\n    workDiagnosticQueue() {\n        if (this._diagnosticQueueState.state === 'busy') {\n            return;\n        }\n        const next = this._diagnosticQueue.entries().next();\n        if (next.done === true) {\n            // Nothing in the queue\n            return;\n        }\n        const [document, diagnostics] = next.value;\n        this._diagnosticQueue.delete(document);\n        const tokenSource = new vscode_1.CancellationTokenSource();\n        this._diagnosticQueueState = { state: 'busy', document: document, tokenSource };\n        this._p2c.asDiagnostics(diagnostics, tokenSource.token).then((converted) => {\n            if (!tokenSource.token.isCancellationRequested) {\n                const uri = this._p2c.asUri(document);\n                const middleware = this.clientOptions.middleware;\n                if (middleware.handleDiagnostics) {\n                    middleware.handleDiagnostics(uri, converted, (uri, diagnostics) => this.setDiagnostics(uri, diagnostics));\n                }\n                else {\n                    this.setDiagnostics(uri, converted);\n                }\n            }\n        }).finally(() => {\n            this._diagnosticQueueState = { state: 'idle' };\n            this.triggerDiagnosticQueue();\n        });\n    }\n    setDiagnostics(uri, diagnostics) {\n        if (!this._diagnostics) {\n            return;\n        }\n        this._diagnostics.set(uri, diagnostics);\n    }\n    getLocale() {\n        return vscode_1.env.language;\n    }\n    async $start() {\n        if (this.$state === ClientState.StartFailed) {\n            throw new Error(`Previous start failed. Can't restart server.`);\n        }\n        await this.start();\n        const connection = this.activeConnection();\n        if (connection === undefined) {\n            throw new Error(`Starting server failed`);\n        }\n        return connection;\n    }\n    async createConnection() {\n        let errorHandler = (error, message, count) => {\n            this.handleConnectionError(error, message, count).catch((error) => this.error(`Handling connection error failed`, error));\n        };\n        let closeHandler = () => {\n            this.handleConnectionClosed().catch((error) => this.error(`Handling connection close failed`, error));\n        };\n        const transports = await this.createMessageTransports(this._clientOptions.stdioEncoding || 'utf8');\n        this._connection = createConnection(transports.reader, transports.writer, errorHandler, closeHandler, this._clientOptions.connectionOptions);\n        return this._connection;\n    }\n    async handleConnectionClosed() {\n        // Check whether this is a normal shutdown in progress or the client stopped normally.\n        if (this.$state === ClientState.Stopped) {\n            return;\n        }\n        try {\n            if (this._connection !== undefined) {\n                this._connection.dispose();\n            }\n        }\n        catch (error) {\n            // Disposing a connection could fail if error cases.\n        }\n        let handlerResult = { action: CloseAction.DoNotRestart };\n        if (this.$state !== ClientState.Stopping) {\n            try {\n                handlerResult = await this._clientOptions.errorHandler.closed();\n            }\n            catch (error) {\n                // Ignore errors coming from the error handler.\n            }\n        }\n        this._connection = undefined;\n        if (handlerResult.action === CloseAction.DoNotRestart) {\n            this.error(handlerResult.message ?? 'Connection to server got closed. Server will not be restarted.', undefined, handlerResult.handled === true ? false : 'force');\n            this.cleanUp('stop');\n            if (this.$state === ClientState.Starting) {\n                this.$state = ClientState.StartFailed;\n            }\n            else {\n                this.$state = ClientState.Stopped;\n            }\n            this._onStop = Promise.resolve();\n            this._onStart = undefined;\n        }\n        else if (handlerResult.action === CloseAction.Restart) {\n            this.info(handlerResult.message ?? 'Connection to server got closed. Server will restart.', !handlerResult.handled);\n            this.cleanUp('restart');\n            this.$state = ClientState.Initial;\n            this._onStop = Promise.resolve();\n            this._onStart = undefined;\n            this.start().catch((error) => this.error(`Restarting server failed`, error, 'force'));\n        }\n    }\n    async handleConnectionError(error, message, count) {\n        const handlerResult = await this._clientOptions.errorHandler.error(error, message, count);\n        if (handlerResult.action === ErrorAction.Shutdown) {\n            this.error(handlerResult.message ?? `Client ${this._name}: connection to server is erroring.\\n${error.message}\\nShutting down server.`, undefined, handlerResult.handled === true ? false : 'force');\n            this.stop().catch((error) => {\n                this.error(`Stopping server failed`, error, false);\n            });\n        }\n        else {\n            this.error(handlerResult.message ??\n                `Client ${this._name}: connection to server is erroring.\\n${error.message}`, undefined, handlerResult.handled === true ? false : 'force');\n        }\n    }\n    hookConfigurationChanged(connection) {\n        this._listeners.push(vscode_1.workspace.onDidChangeConfiguration(() => {\n            this.refreshTrace(connection, true);\n        }));\n    }\n    refreshTrace(connection, sendNotification = false) {\n        const config = vscode_1.workspace.getConfiguration(this._id);\n        let trace = vscode_languageserver_protocol_1.Trace.Off;\n        let traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text;\n        if (config) {\n            const traceConfig = config.get('trace.server', 'off');\n            if (typeof traceConfig === 'string') {\n                trace = vscode_languageserver_protocol_1.Trace.fromString(traceConfig);\n            }\n            else {\n                trace = vscode_languageserver_protocol_1.Trace.fromString(config.get('trace.server.verbosity', 'off'));\n                traceFormat = vscode_languageserver_protocol_1.TraceFormat.fromString(config.get('trace.server.format', 'text'));\n            }\n        }\n        this._trace = trace;\n        this._traceFormat = traceFormat;\n        connection.trace(this._trace, this._tracer, {\n            sendNotification,\n            traceFormat: this._traceFormat\n        }).catch((error) => { this.error(`Updating trace failed with error`, error, false); });\n    }\n    hookFileEvents(_connection) {\n        let fileEvents = this._clientOptions.synchronize.fileEvents;\n        if (!fileEvents) {\n            return;\n        }\n        let watchers;\n        if (Is.array(fileEvents)) {\n            watchers = fileEvents;\n        }\n        else {\n            watchers = [fileEvents];\n        }\n        if (!watchers) {\n            return;\n        }\n        this._dynamicFeatures.get(vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type.method).registerRaw(UUID.generateUuid(), watchers);\n    }\n    registerFeatures(features) {\n        for (let feature of features) {\n            this.registerFeature(feature);\n        }\n    }\n    registerFeature(feature) {\n        this._features.push(feature);\n        if (features_1.DynamicFeature.is(feature)) {\n            const registrationType = feature.registrationType;\n            this._dynamicFeatures.set(registrationType.method, feature);\n        }\n    }\n    getFeature(request) {\n        return this._dynamicFeatures.get(request);\n    }\n    hasDedicatedTextSynchronizationFeature(textDocument) {\n        const feature = this.getFeature(vscode_languageserver_protocol_1.NotebookDocumentSyncRegistrationType.method);\n        if (feature === undefined || !(feature instanceof notebook_1.NotebookDocumentSyncFeature)) {\n            return false;\n        }\n        return feature.handles(textDocument);\n    }\n    registerBuiltinFeatures() {\n        const pendingFullTextDocumentChanges = new Map();\n        this.registerFeature(new configuration_1.ConfigurationFeature(this));\n        this.registerFeature(new textSynchronization_1.DidOpenTextDocumentFeature(this, this._syncedDocuments));\n        this._didChangeTextDocumentFeature = new textSynchronization_1.DidChangeTextDocumentFeature(this, pendingFullTextDocumentChanges);\n        this._didChangeTextDocumentFeature.onPendingChangeAdded(() => {\n            this.triggerPendingChangeDelivery();\n        });\n        this.registerFeature(this._didChangeTextDocumentFeature);\n        this.registerFeature(new textSynchronization_1.WillSaveFeature(this));\n        this.registerFeature(new textSynchronization_1.WillSaveWaitUntilFeature(this));\n        this.registerFeature(new textSynchronization_1.DidSaveTextDocumentFeature(this));\n        this.registerFeature(new textSynchronization_1.DidCloseTextDocumentFeature(this, this._syncedDocuments, pendingFullTextDocumentChanges));\n        this.registerFeature(new fileSystemWatcher_1.FileSystemWatcherFeature(this, (event) => this.notifyFileEvent(event)));\n        this.registerFeature(new completion_1.CompletionItemFeature(this));\n        this.registerFeature(new hover_1.HoverFeature(this));\n        this.registerFeature(new signatureHelp_1.SignatureHelpFeature(this));\n        this.registerFeature(new definition_1.DefinitionFeature(this));\n        this.registerFeature(new reference_1.ReferencesFeature(this));\n        this.registerFeature(new documentHighlight_1.DocumentHighlightFeature(this));\n        this.registerFeature(new documentSymbol_1.DocumentSymbolFeature(this));\n        this.registerFeature(new workspaceSymbol_1.WorkspaceSymbolFeature(this));\n        this.registerFeature(new codeAction_1.CodeActionFeature(this));\n        this.registerFeature(new codeLens_1.CodeLensFeature(this));\n        this.registerFeature(new formatting_1.DocumentFormattingFeature(this));\n        this.registerFeature(new formatting_1.DocumentRangeFormattingFeature(this));\n        this.registerFeature(new formatting_1.DocumentOnTypeFormattingFeature(this));\n        this.registerFeature(new rename_1.RenameFeature(this));\n        this.registerFeature(new documentLink_1.DocumentLinkFeature(this));\n        this.registerFeature(new executeCommand_1.ExecuteCommandFeature(this));\n        this.registerFeature(new configuration_1.SyncConfigurationFeature(this));\n        this.registerFeature(new typeDefinition_1.TypeDefinitionFeature(this));\n        this.registerFeature(new implementation_1.ImplementationFeature(this));\n        this.registerFeature(new colorProvider_1.ColorProviderFeature(this));\n        // We only register the workspace folder feature if the client is not locked\n        // to a specific workspace folder.\n        if (this.clientOptions.workspaceFolder === undefined) {\n            this.registerFeature(new workspaceFolder_1.WorkspaceFoldersFeature(this));\n        }\n        this.registerFeature(new foldingRange_1.FoldingRangeFeature(this));\n        this.registerFeature(new declaration_1.DeclarationFeature(this));\n        this.registerFeature(new selectionRange_1.SelectionRangeFeature(this));\n        this.registerFeature(new progress_1.ProgressFeature(this));\n        this.registerFeature(new callHierarchy_1.CallHierarchyFeature(this));\n        this.registerFeature(new semanticTokens_1.SemanticTokensFeature(this));\n        this.registerFeature(new linkedEditingRange_1.LinkedEditingFeature(this));\n        this.registerFeature(new fileOperations_1.DidCreateFilesFeature(this));\n        this.registerFeature(new fileOperations_1.DidRenameFilesFeature(this));\n        this.registerFeature(new fileOperations_1.DidDeleteFilesFeature(this));\n        this.registerFeature(new fileOperations_1.WillCreateFilesFeature(this));\n        this.registerFeature(new fileOperations_1.WillRenameFilesFeature(this));\n        this.registerFeature(new fileOperations_1.WillDeleteFilesFeature(this));\n        this.registerFeature(new typeHierarchy_1.TypeHierarchyFeature(this));\n        this.registerFeature(new inlineValue_1.InlineValueFeature(this));\n        this.registerFeature(new inlayHint_1.InlayHintsFeature(this));\n        this.registerFeature(new diagnostic_1.DiagnosticFeature(this));\n        this.registerFeature(new notebook_1.NotebookDocumentSyncFeature(this));\n    }\n    registerProposedFeatures() {\n        this.registerFeatures(ProposedFeatures.createAll(this));\n    }\n    fillInitializeParams(params) {\n        for (let feature of this._features) {\n            if (Is.func(feature.fillInitializeParams)) {\n                feature.fillInitializeParams(params);\n            }\n        }\n    }\n    computeClientCapabilities() {\n        const result = {};\n        (0, features_1.ensure)(result, 'workspace').applyEdit = true;\n        const workspaceEdit = (0, features_1.ensure)((0, features_1.ensure)(result, 'workspace'), 'workspaceEdit');\n        workspaceEdit.documentChanges = true;\n        workspaceEdit.resourceOperations = [vscode_languageserver_protocol_1.ResourceOperationKind.Create, vscode_languageserver_protocol_1.ResourceOperationKind.Rename, vscode_languageserver_protocol_1.ResourceOperationKind.Delete];\n        workspaceEdit.failureHandling = vscode_languageserver_protocol_1.FailureHandlingKind.TextOnlyTransactional;\n        workspaceEdit.normalizesLineEndings = true;\n        workspaceEdit.changeAnnotationSupport = {\n            groupsOnLabel: true\n        };\n        const diagnostics = (0, features_1.ensure)((0, features_1.ensure)(result, 'textDocument'), 'publishDiagnostics');\n        diagnostics.relatedInformation = true;\n        diagnostics.versionSupport = false;\n        diagnostics.tagSupport = { valueSet: [vscode_languageserver_protocol_1.DiagnosticTag.Unnecessary, vscode_languageserver_protocol_1.DiagnosticTag.Deprecated] };\n        diagnostics.codeDescriptionSupport = true;\n        diagnostics.dataSupport = true;\n        const windowCapabilities = (0, features_1.ensure)(result, 'window');\n        const showMessage = (0, features_1.ensure)(windowCapabilities, 'showMessage');\n        showMessage.messageActionItem = { additionalPropertiesSupport: true };\n        const showDocument = (0, features_1.ensure)(windowCapabilities, 'showDocument');\n        showDocument.support = true;\n        const generalCapabilities = (0, features_1.ensure)(result, 'general');\n        generalCapabilities.staleRequestSupport = {\n            cancel: true,\n            retryOnContentModified: Array.from(BaseLanguageClient.RequestsToCancelOnContentModified)\n        };\n        generalCapabilities.regularExpressions = { engine: 'ECMAScript', version: 'ES2020' };\n        generalCapabilities.markdown = {\n            parser: 'marked',\n            version: '1.1.0',\n        };\n        generalCapabilities.positionEncodings = ['utf-16'];\n        if (this._clientOptions.markdown.supportHtml) {\n            generalCapabilities.markdown.allowedTags = ['ul', 'li', 'p', 'code', 'blockquote', 'ol', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'em', 'pre', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'div', 'del', 'a', 'strong', 'br', 'img', 'span'];\n        }\n        for (let feature of this._features) {\n            feature.fillClientCapabilities(result);\n        }\n        return result;\n    }\n    initializeFeatures(_connection) {\n        const documentSelector = this._clientOptions.documentSelector;\n        for (const feature of this._features) {\n            if (Is.func(feature.preInitialize)) {\n                feature.preInitialize(this._capabilities, documentSelector);\n            }\n        }\n        for (const feature of this._features) {\n            feature.initialize(this._capabilities, documentSelector);\n        }\n    }\n    async handleRegistrationRequest(params) {\n        const middleware = this.clientOptions.middleware?.handleRegisterCapability;\n        if (middleware) {\n            return middleware(params, nextParams => this.doRegisterCapability(nextParams));\n        }\n        else {\n            return this.doRegisterCapability(params);\n        }\n    }\n    async doRegisterCapability(params) {\n        // We will not receive a registration call before a client is running\n        // from a server. However if we stop or shutdown we might which might\n        // try to restart the server. So ignore registrations if we are not running\n        if (!this.isRunning()) {\n            for (const registration of params.registrations) {\n                this._ignoredRegistrations.add(registration.id);\n            }\n            return;\n        }\n        for (const registration of params.registrations) {\n            const feature = this._dynamicFeatures.get(registration.method);\n            if (feature === undefined) {\n                return Promise.reject(new Error(`No feature implementation for ${registration.method} found. Registration failed.`));\n            }\n            const options = registration.registerOptions ?? {};\n            options.documentSelector = options.documentSelector ?? this._clientOptions.documentSelector;\n            const data = {\n                id: registration.id,\n                registerOptions: options\n            };\n            try {\n                feature.register(data);\n            }\n            catch (err) {\n                return Promise.reject(err);\n            }\n        }\n    }\n    async handleUnregistrationRequest(params) {\n        const middleware = this.clientOptions.middleware?.handleUnregisterCapability;\n        if (middleware) {\n            return middleware(params, nextParams => this.doUnregisterCapability(nextParams));\n        }\n        else {\n            return this.doUnregisterCapability(params);\n        }\n    }\n    async doUnregisterCapability(params) {\n        for (const unregistration of params.unregisterations) {\n            if (this._ignoredRegistrations.has(unregistration.id)) {\n                continue;\n            }\n            const feature = this._dynamicFeatures.get(unregistration.method);\n            if (!feature) {\n                return Promise.reject(new Error(`No feature implementation for ${unregistration.method} found. Unregistration failed.`));\n            }\n            feature.unregister(unregistration.id);\n        }\n    }\n    async handleApplyWorkspaceEdit(params) {\n        const workspaceEdit = params.edit;\n        // Make sure we convert workspace edits one after the other. Otherwise\n        // we might execute a workspace edit received first after we received another\n        // one since the conversion might race.\n        const converted = await this.workspaceEditLock.lock(() => {\n            return this._p2c.asWorkspaceEdit(workspaceEdit);\n        });\n        // This is some sort of workaround since the version check should be done by VS Code in the Workspace.applyEdit.\n        // However doing it here adds some safety since the server can lag more behind then an extension.\n        const openTextDocuments = new Map();\n        vscode_1.workspace.textDocuments.forEach((document) => openTextDocuments.set(document.uri.toString(), document));\n        let versionMismatch = false;\n        if (workspaceEdit.documentChanges) {\n            for (const change of workspaceEdit.documentChanges) {\n                if (vscode_languageserver_protocol_1.TextDocumentEdit.is(change) && change.textDocument.version && change.textDocument.version >= 0) {\n                    const changeUri = this._p2c.asUri(change.textDocument.uri).toString();\n                    const textDocument = openTextDocuments.get(changeUri);\n                    if (textDocument && textDocument.version !== change.textDocument.version) {\n                        versionMismatch = true;\n                        break;\n                    }\n                }\n            }\n        }\n        if (versionMismatch) {\n            return Promise.resolve({ applied: false });\n        }\n        return Is.asPromise(vscode_1.workspace.applyEdit(converted).then((value) => { return { applied: value }; }));\n    }\n    handleFailedRequest(type, token, error, defaultValue, showNotification = true) {\n        // If we get a request cancel or a content modified don't log anything.\n        if (error instanceof vscode_languageserver_protocol_1.ResponseError) {\n            // The connection got disposed while we were waiting for a response.\n            // Simply return the default value. Is the best we can do.\n            if (error.code === vscode_languageserver_protocol_1.ErrorCodes.PendingResponseRejected || error.code === vscode_languageserver_protocol_1.ErrorCodes.ConnectionInactive) {\n                return defaultValue;\n            }\n            if (error.code === vscode_languageserver_protocol_1.LSPErrorCodes.RequestCancelled || error.code === vscode_languageserver_protocol_1.LSPErrorCodes.ServerCancelled) {\n                if (token !== undefined && token.isCancellationRequested) {\n                    return defaultValue;\n                }\n                else {\n                    if (error.data !== undefined) {\n                        throw new features_1.LSPCancellationError(error.data);\n                    }\n                    else {\n                        throw new vscode_1.CancellationError();\n                    }\n                }\n            }\n            else if (error.code === vscode_languageserver_protocol_1.LSPErrorCodes.ContentModified) {\n                if (BaseLanguageClient.RequestsToCancelOnContentModified.has(type.method) || BaseLanguageClient.CancellableResolveCalls.has(type.method)) {\n                    throw new vscode_1.CancellationError();\n                }\n                else {\n                    return defaultValue;\n                }\n            }\n        }\n        this.error(`Request ${type.method} failed.`, error, showNotification);\n        throw error;\n    }\n}\nexports.BaseLanguageClient = BaseLanguageClient;\nBaseLanguageClient.RequestsToCancelOnContentModified = new Set([\n    vscode_languageserver_protocol_1.SemanticTokensRequest.method,\n    vscode_languageserver_protocol_1.SemanticTokensRangeRequest.method,\n    vscode_languageserver_protocol_1.SemanticTokensDeltaRequest.method\n]);\nBaseLanguageClient.CancellableResolveCalls = new Set([\n    vscode_languageserver_protocol_1.CompletionResolveRequest.method,\n    vscode_languageserver_protocol_1.CodeLensResolveRequest.method,\n    vscode_languageserver_protocol_1.CodeActionResolveRequest.method,\n    vscode_languageserver_protocol_1.InlayHintResolveRequest.method,\n    vscode_languageserver_protocol_1.DocumentLinkResolveRequest.method,\n    vscode_languageserver_protocol_1.WorkspaceSymbolResolveRequest.method\n]);\nclass ConsoleLogger {\n    error(message) {\n        (0, vscode_languageserver_protocol_1.RAL)().console.error(message);\n    }\n    warn(message) {\n        (0, vscode_languageserver_protocol_1.RAL)().console.warn(message);\n    }\n    info(message) {\n        (0, vscode_languageserver_protocol_1.RAL)().console.info(message);\n    }\n    log(message) {\n        (0, vscode_languageserver_protocol_1.RAL)().console.log(message);\n    }\n}\nfunction createConnection(input, output, errorHandler, closeHandler, options) {\n    const logger = new ConsoleLogger();\n    const connection = (0, vscode_languageserver_protocol_1.createProtocolConnection)(input, output, logger, options);\n    connection.onError((data) => { errorHandler(data[0], data[1], data[2]); });\n    connection.onClose(closeHandler);\n    const result = {\n        listen: () => connection.listen(),\n        sendRequest: connection.sendRequest,\n        onRequest: connection.onRequest,\n        hasPendingResponse: connection.hasPendingResponse,\n        sendNotification: connection.sendNotification,\n        onNotification: connection.onNotification,\n        onProgress: connection.onProgress,\n        sendProgress: connection.sendProgress,\n        trace: (value, tracer, sendNotificationOrTraceOptions) => {\n            const defaultTraceOptions = {\n                sendNotification: false,\n                traceFormat: vscode_languageserver_protocol_1.TraceFormat.Text\n            };\n            if (sendNotificationOrTraceOptions === undefined) {\n                return connection.trace(value, tracer, defaultTraceOptions);\n            }\n            else if (Is.boolean(sendNotificationOrTraceOptions)) {\n                return connection.trace(value, tracer, sendNotificationOrTraceOptions);\n            }\n            else {\n                return connection.trace(value, tracer, sendNotificationOrTraceOptions);\n            }\n        },\n        initialize: (params) => {\n            // This needs to return and MUST not be await to avoid any async\n            // scheduling. Otherwise messages might overtake each other.\n            return connection.sendRequest(vscode_languageserver_protocol_1.InitializeRequest.type, params);\n        },\n        shutdown: () => {\n            // This needs to return and MUST not be await to avoid any async\n            // scheduling. Otherwise messages might overtake each other.\n            return connection.sendRequest(vscode_languageserver_protocol_1.ShutdownRequest.type, undefined);\n        },\n        exit: () => {\n            // This needs to return and MUST not be await to avoid any async\n            // scheduling. Otherwise messages might overtake each other.\n            return connection.sendNotification(vscode_languageserver_protocol_1.ExitNotification.type);\n        },\n        end: () => connection.end(),\n        dispose: () => connection.dispose()\n    };\n    return result;\n}\n// Exporting proposed protocol.\nvar ProposedFeatures;\n(function (ProposedFeatures) {\n    function createAll(_client) {\n        let result = [\n            new inlineCompletion_1.InlineCompletionItemFeature(_client)\n        ];\n        return result;\n    }\n    ProposedFeatures.createAll = createAll;\n})(ProposedFeatures || (exports.ProposedFeatures = ProposedFeatures = {}));\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.terminate = void 0;\nconst cp = require(\"child_process\");\nconst path_1 = require(\"path\");\nconst isWindows = (process.platform === 'win32');\nconst isMacintosh = (process.platform === 'darwin');\nconst isLinux = (process.platform === 'linux');\nfunction terminate(process, cwd) {\n    if (isWindows) {\n        try {\n            // This we run in Atom execFileSync is available.\n            // Ignore stderr since this is otherwise piped to parent.stderr\n            // which might be already closed.\n            let options = {\n                stdio: ['pipe', 'pipe', 'ignore']\n            };\n            if (cwd) {\n                options.cwd = cwd;\n            }\n            cp.execFileSync('taskkill', ['/T', '/F', '/PID', process.pid.toString()], options);\n            return true;\n        }\n        catch (err) {\n            return false;\n        }\n    }\n    else if (isLinux || isMacintosh) {\n        try {\n            var cmd = (0, path_1.join)(__dirname, 'terminateProcess.sh');\n            var result = cp.spawnSync(cmd, [process.pid.toString()]);\n            return result.error ? false : true;\n        }\n        catch (err) {\n            return false;\n        }\n    }\n    else {\n        process.kill('SIGKILL');\n        return true;\n    }\n}\nexports.terminate = terminate;\n", "/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');", "'use strict'\n\nconst debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n", "'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n", "'use strict'\n\nconst {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  safeSrc[index] = safe\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n              `(?:${src[t.PRERELEASE]})?` +\n              `(?:${src[t.BUILD]})?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n", "'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n", "'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n        version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    return (\n      compareIdentifiers(this.major, other.major) ||\n      compareIdentifiers(this.minor, other.minor) ||\n      compareIdentifiers(this.patch, other.patch)\n    )\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('build compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    if (release.startsWith('pre')) {\n      if (!identifier && identifierBase === false) {\n        throw new Error('invalid increment argument: identifier is empty')\n      }\n      // Avoid an invalid semver results\n      if (identifier) {\n        const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n        if (!match || match[1] !== identifier) {\n          throw new Error(`invalid identifier: ${identifier}`)\n        }\n      }\n    }\n\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'release':\n        if (this.prerelease.length === 0) {\n          throw new Error(`version ${this.raw} is not a prerelease`)\n        }\n        this.prerelease.length = 0\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = prerelease\n            }\n          } else {\n            this.prerelease = prerelease\n          }\n        }\n        break\n      }\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.raw = this.format()\n    if (this.build.length) {\n      this.raw += `+${this.build.join('.')}`\n    }\n    return this\n  }\n}\n\nmodule.exports = SemVer\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    if (!throwErrors) {\n      return null\n    }\n    throw er\n  }\n}\n\nmodule.exports = parse\n", "'use strict'\n\nclass LRUCache {\n  constructor () {\n    this.max = 1000\n    this.map = new Map()\n  }\n\n  get (key) {\n    const value = this.map.get(key)\n    if (value === undefined) {\n      return undefined\n    } else {\n      // Remove the key from the map and add it to the end\n      this.map.delete(key)\n      this.map.set(key, value)\n      return value\n    }\n  }\n\n  delete (key) {\n    return this.map.delete(key)\n  }\n\n  set (key, value) {\n    const deleted = this.delete(key)\n\n    if (!deleted && value !== undefined) {\n      // If cache is full, delete the least recently used item\n      if (this.map.size >= this.max) {\n        const firstKey = this.map.keys().next().value\n        this.delete(firstKey)\n      }\n\n      this.map.set(key, value)\n    }\n\n    return this\n  }\n}\n\nmodule.exports = LRUCache\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n", "'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    comp = comp.trim().split(/\\s+/).join(' ')\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    options = parseOptions(options)\n\n    // Special cases where nothing can possibly be lower\n    if (options.includePrerelease &&\n      (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n      return false\n    }\n    if (!options.includePrerelease &&\n      (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n      return false\n    }\n\n    // Same direction increasing (> or >=)\n    if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n      return true\n    }\n    // Same direction decreasing (< or <=)\n    if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // same SemVer and both sides are inclusive (<= or >=)\n    if (\n      (this.semver.version === comp.semver.version) &&\n      this.operator.includes('=') && comp.operator.includes('=')) {\n      return true\n    }\n    // opposite directions less than\n    if (cmp(this.semver, '<', comp.semver, options) &&\n      this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // opposite directions greater than\n    if (cmp(this.semver, '>', comp.semver, options) &&\n      this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n      return true\n    }\n    return false\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.formatted = undefined\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First reduce all whitespace as much as possible so we do not have to rely\n    // on potentially slow regexes like \\s*. This is then stored and used for\n    // future error messages as well.\n    this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n    // First, split on ||\n    this.set = this.raw\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.formatted = undefined\n  }\n\n  get range () {\n    if (this.formatted === undefined) {\n      this.formatted = ''\n      for (let i = 0; i < this.set.length; i++) {\n        if (i > 0) {\n          this.formatted += '||'\n        }\n        const comps = this.set[i]\n        for (let k = 0; k < comps.length; k++) {\n          if (k > 0) {\n            this.formatted += ' '\n          }\n          this.formatted += comps[k].toString().trim()\n        }\n      }\n    }\n    return this.formatted\n  }\n\n  format () {\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts =\n      (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n      (this.options.loose && FLAG_LOOSE)\n    const memoKey = memoOpts + ':' + range\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n    debug('tilde trim', range)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n    debug('caret trim', range)\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  safeRe: re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceTilde(c, options))\n    .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceCaret(c, options))\n    .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp\n    .split(/\\s+/)\n    .map((c) => replaceXRange(c, options))\n    .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0'\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp\n    .trim()\n    .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp\n    .trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagnosticPullMode = exports.vsdiag = void 0;\n__exportStar(require(\"vscode-languageserver-protocol\"), exports);\n__exportStar(require(\"./features\"), exports);\nvar diagnostic_1 = require(\"./diagnostic\");\nObject.defineProperty(exports, \"vsdiag\", { enumerable: true, get: function () { return diagnostic_1.vsdiag; } });\nObject.defineProperty(exports, \"DiagnosticPullMode\", { enumerable: true, get: function () { return diagnostic_1.DiagnosticPullMode; } });\n__exportStar(require(\"./client\"), exports);\n", "\"use strict\";\n/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SettingMonitor = exports.LanguageClient = exports.TransportKind = void 0;\nconst cp = require(\"child_process\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst vscode_1 = require(\"vscode\");\nconst Is = require(\"../common/utils/is\");\nconst client_1 = require(\"../common/client\");\nconst processes_1 = require(\"./processes\");\nconst node_1 = require(\"vscode-languageserver-protocol/node\");\n// Import SemVer functions individually to avoid circular dependencies in SemVer\nconst semverParse = require(\"semver/functions/parse\");\nconst semverSatisfies = require(\"semver/functions/satisfies\");\n__exportStar(require(\"vscode-languageserver-protocol/node\"), exports);\n__exportStar(require(\"../common/api\"), exports);\nconst REQUIRED_VSCODE_VERSION = '^1.82.0'; // do not change format, updated by `updateVSCode` script\nvar TransportKind;\n(function (TransportKind) {\n    TransportKind[TransportKind[\"stdio\"] = 0] = \"stdio\";\n    TransportKind[TransportKind[\"ipc\"] = 1] = \"ipc\";\n    TransportKind[TransportKind[\"pipe\"] = 2] = \"pipe\";\n    TransportKind[TransportKind[\"socket\"] = 3] = \"socket\";\n})(TransportKind || (exports.TransportKind = TransportKind = {}));\nvar Transport;\n(function (Transport) {\n    function isSocket(value) {\n        const candidate = value;\n        return candidate && candidate.kind === TransportKind.socket && Is.number(candidate.port);\n    }\n    Transport.isSocket = isSocket;\n})(Transport || (Transport = {}));\nvar Executable;\n(function (Executable) {\n    function is(value) {\n        return Is.string(value.command);\n    }\n    Executable.is = is;\n})(Executable || (Executable = {}));\nvar NodeModule;\n(function (NodeModule) {\n    function is(value) {\n        return Is.string(value.module);\n    }\n    NodeModule.is = is;\n})(NodeModule || (NodeModule = {}));\nvar StreamInfo;\n(function (StreamInfo) {\n    function is(value) {\n        let candidate = value;\n        return candidate && candidate.writer !== undefined && candidate.reader !== undefined;\n    }\n    StreamInfo.is = is;\n})(StreamInfo || (StreamInfo = {}));\nvar ChildProcessInfo;\n(function (ChildProcessInfo) {\n    function is(value) {\n        let candidate = value;\n        return candidate && candidate.process !== undefined && typeof candidate.detached === 'boolean';\n    }\n    ChildProcessInfo.is = is;\n})(ChildProcessInfo || (ChildProcessInfo = {}));\nclass LanguageClient extends client_1.BaseLanguageClient {\n    constructor(arg1, arg2, arg3, arg4, arg5) {\n        let id;\n        let name;\n        let serverOptions;\n        let clientOptions;\n        let forceDebug;\n        if (Is.string(arg2)) {\n            id = arg1;\n            name = arg2;\n            serverOptions = arg3;\n            clientOptions = arg4;\n            forceDebug = !!arg5;\n        }\n        else {\n            id = arg1.toLowerCase();\n            name = arg1;\n            serverOptions = arg2;\n            clientOptions = arg3;\n            forceDebug = arg4;\n        }\n        if (forceDebug === undefined) {\n            forceDebug = false;\n        }\n        super(id, name, clientOptions);\n        this._serverOptions = serverOptions;\n        this._forceDebug = forceDebug;\n        this._isInDebugMode = forceDebug;\n        try {\n            this.checkVersion();\n        }\n        catch (error) {\n            if (Is.string(error.message)) {\n                this.outputChannel.appendLine(error.message);\n            }\n            throw error;\n        }\n    }\n    checkVersion() {\n        const codeVersion = semverParse(vscode_1.version);\n        if (!codeVersion) {\n            throw new Error(`No valid VS Code version detected. Version string is: ${vscode_1.version}`);\n        }\n        // Remove the insider pre-release since we stay API compatible.\n        if (codeVersion.prerelease && codeVersion.prerelease.length > 0) {\n            codeVersion.prerelease = [];\n        }\n        if (!semverSatisfies(codeVersion, REQUIRED_VSCODE_VERSION)) {\n            throw new Error(`The language client requires VS Code version ${REQUIRED_VSCODE_VERSION} but received version ${vscode_1.version}`);\n        }\n    }\n    get isInDebugMode() {\n        return this._isInDebugMode;\n    }\n    async restart() {\n        await this.stop();\n        // We are in debug mode. Wait a little before we restart\n        // so that the debug port can be freed. We can safely ignore\n        // the disposable returned from start since it will call\n        // stop on the same client instance.\n        if (this.isInDebugMode) {\n            await new Promise((resolve) => setTimeout(resolve, 1000));\n            await this.start();\n        }\n        else {\n            await this.start();\n        }\n    }\n    stop(timeout = 2000) {\n        return super.stop(timeout).finally(() => {\n            if (this._serverProcess) {\n                const toCheck = this._serverProcess;\n                this._serverProcess = undefined;\n                if (this._isDetached === undefined || !this._isDetached) {\n                    this.checkProcessDied(toCheck);\n                }\n                this._isDetached = undefined;\n            }\n        });\n    }\n    checkProcessDied(childProcess) {\n        if (!childProcess || childProcess.pid === undefined) {\n            return;\n        }\n        setTimeout(() => {\n            // Test if the process is still alive. Throws an exception if not\n            try {\n                if (childProcess.pid !== undefined) {\n                    process.kill(childProcess.pid, 0);\n                    (0, processes_1.terminate)(childProcess);\n                }\n            }\n            catch (error) {\n                // All is fine.\n            }\n        }, 2000);\n    }\n    handleConnectionClosed() {\n        this._serverProcess = undefined;\n        return super.handleConnectionClosed();\n    }\n    fillInitializeParams(params) {\n        super.fillInitializeParams(params);\n        if (params.processId === null) {\n            params.processId = process.pid;\n        }\n    }\n    createMessageTransports(encoding) {\n        function getEnvironment(env, fork) {\n            if (!env && !fork) {\n                return undefined;\n            }\n            const result = Object.create(null);\n            Object.keys(process.env).forEach(key => result[key] = process.env[key]);\n            if (fork) {\n                result['ELECTRON_RUN_AS_NODE'] = '1';\n                result['ELECTRON_NO_ASAR'] = '1';\n            }\n            if (env) {\n                Object.keys(env).forEach(key => result[key] = env[key]);\n            }\n            return result;\n        }\n        const debugStartWith = ['--debug=', '--debug-brk=', '--inspect=', '--inspect-brk='];\n        const debugEquals = ['--debug', '--debug-brk', '--inspect', '--inspect-brk'];\n        function startedInDebugMode() {\n            let args = process.execArgv;\n            if (args) {\n                return args.some((arg) => {\n                    return debugStartWith.some(value => arg.startsWith(value)) ||\n                        debugEquals.some(value => arg === value);\n                });\n            }\n            return false;\n        }\n        function assertStdio(process) {\n            if (process.stdin === null || process.stdout === null || process.stderr === null) {\n                throw new Error('Process created without stdio streams');\n            }\n        }\n        const server = this._serverOptions;\n        // We got a function.\n        if (Is.func(server)) {\n            return server().then((result) => {\n                if (client_1.MessageTransports.is(result)) {\n                    this._isDetached = !!result.detached;\n                    return result;\n                }\n                else if (StreamInfo.is(result)) {\n                    this._isDetached = !!result.detached;\n                    return { reader: new node_1.StreamMessageReader(result.reader), writer: new node_1.StreamMessageWriter(result.writer) };\n                }\n                else {\n                    let cp;\n                    if (ChildProcessInfo.is(result)) {\n                        cp = result.process;\n                        this._isDetached = result.detached;\n                    }\n                    else {\n                        cp = result;\n                        this._isDetached = false;\n                    }\n                    cp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                    return { reader: new node_1.StreamMessageReader(cp.stdout), writer: new node_1.StreamMessageWriter(cp.stdin) };\n                }\n            });\n        }\n        let json;\n        let runDebug = server;\n        if (runDebug.run || runDebug.debug) {\n            if (this._forceDebug || startedInDebugMode()) {\n                json = runDebug.debug;\n                this._isInDebugMode = true;\n            }\n            else {\n                json = runDebug.run;\n                this._isInDebugMode = false;\n            }\n        }\n        else {\n            json = server;\n        }\n        return this._getServerWorkingDir(json.options).then(serverWorkingDir => {\n            if (NodeModule.is(json) && json.module) {\n                let node = json;\n                let transport = node.transport || TransportKind.stdio;\n                if (node.runtime) {\n                    const args = [];\n                    const options = node.options ?? Object.create(null);\n                    if (options.execArgv) {\n                        options.execArgv.forEach(element => args.push(element));\n                    }\n                    args.push(node.module);\n                    if (node.args) {\n                        node.args.forEach(element => args.push(element));\n                    }\n                    const execOptions = Object.create(null);\n                    execOptions.cwd = serverWorkingDir;\n                    execOptions.env = getEnvironment(options.env, false);\n                    const runtime = this._getRuntimePath(node.runtime, serverWorkingDir);\n                    let pipeName = undefined;\n                    if (transport === TransportKind.ipc) {\n                        // exec options not correctly typed in lib\n                        execOptions.stdio = [null, null, null, 'ipc'];\n                        args.push('--node-ipc');\n                    }\n                    else if (transport === TransportKind.stdio) {\n                        args.push('--stdio');\n                    }\n                    else if (transport === TransportKind.pipe) {\n                        pipeName = (0, node_1.generateRandomPipeName)();\n                        args.push(`--pipe=${pipeName}`);\n                    }\n                    else if (Transport.isSocket(transport)) {\n                        args.push(`--socket=${transport.port}`);\n                    }\n                    args.push(`--clientProcessId=${process.pid.toString()}`);\n                    if (transport === TransportKind.ipc || transport === TransportKind.stdio) {\n                        const serverProcess = cp.spawn(runtime, args, execOptions);\n                        if (!serverProcess || !serverProcess.pid) {\n                            return handleChildProcessStartError(serverProcess, `Launching server using runtime ${runtime} failed.`);\n                        }\n                        this._serverProcess = serverProcess;\n                        serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                        if (transport === TransportKind.ipc) {\n                            serverProcess.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                            return Promise.resolve({ reader: new node_1.IPCMessageReader(serverProcess), writer: new node_1.IPCMessageWriter(serverProcess) });\n                        }\n                        else {\n                            return Promise.resolve({ reader: new node_1.StreamMessageReader(serverProcess.stdout), writer: new node_1.StreamMessageWriter(serverProcess.stdin) });\n                        }\n                    }\n                    else if (transport === TransportKind.pipe) {\n                        return (0, node_1.createClientPipeTransport)(pipeName).then((transport) => {\n                            const process = cp.spawn(runtime, args, execOptions);\n                            if (!process || !process.pid) {\n                                return handleChildProcessStartError(process, `Launching server using runtime ${runtime} failed.`);\n                            }\n                            this._serverProcess = process;\n                            process.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                            process.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                            return transport.onConnected().then((protocol) => {\n                                return { reader: protocol[0], writer: protocol[1] };\n                            });\n                        });\n                    }\n                    else if (Transport.isSocket(transport)) {\n                        return (0, node_1.createClientSocketTransport)(transport.port).then((transport) => {\n                            const process = cp.spawn(runtime, args, execOptions);\n                            if (!process || !process.pid) {\n                                return handleChildProcessStartError(process, `Launching server using runtime ${runtime} failed.`);\n                            }\n                            this._serverProcess = process;\n                            process.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                            process.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                            return transport.onConnected().then((protocol) => {\n                                return { reader: protocol[0], writer: protocol[1] };\n                            });\n                        });\n                    }\n                }\n                else {\n                    let pipeName = undefined;\n                    return new Promise((resolve, reject) => {\n                        const args = (node.args && node.args.slice()) ?? [];\n                        if (transport === TransportKind.ipc) {\n                            args.push('--node-ipc');\n                        }\n                        else if (transport === TransportKind.stdio) {\n                            args.push('--stdio');\n                        }\n                        else if (transport === TransportKind.pipe) {\n                            pipeName = (0, node_1.generateRandomPipeName)();\n                            args.push(`--pipe=${pipeName}`);\n                        }\n                        else if (Transport.isSocket(transport)) {\n                            args.push(`--socket=${transport.port}`);\n                        }\n                        args.push(`--clientProcessId=${process.pid.toString()}`);\n                        const options = node.options ?? Object.create(null);\n                        options.env = getEnvironment(options.env, true);\n                        options.execArgv = options.execArgv || [];\n                        options.cwd = serverWorkingDir;\n                        options.silent = true;\n                        if (transport === TransportKind.ipc || transport === TransportKind.stdio) {\n                            const sp = cp.fork(node.module, args || [], options);\n                            assertStdio(sp);\n                            this._serverProcess = sp;\n                            sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                            if (transport === TransportKind.ipc) {\n                                sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                                resolve({ reader: new node_1.IPCMessageReader(this._serverProcess), writer: new node_1.IPCMessageWriter(this._serverProcess) });\n                            }\n                            else {\n                                resolve({ reader: new node_1.StreamMessageReader(sp.stdout), writer: new node_1.StreamMessageWriter(sp.stdin) });\n                            }\n                        }\n                        else if (transport === TransportKind.pipe) {\n                            (0, node_1.createClientPipeTransport)(pipeName).then((transport) => {\n                                const sp = cp.fork(node.module, args || [], options);\n                                assertStdio(sp);\n                                this._serverProcess = sp;\n                                sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                                sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                                transport.onConnected().then((protocol) => {\n                                    resolve({ reader: protocol[0], writer: protocol[1] });\n                                }, reject);\n                            }, reject);\n                        }\n                        else if (Transport.isSocket(transport)) {\n                            (0, node_1.createClientSocketTransport)(transport.port).then((transport) => {\n                                const sp = cp.fork(node.module, args || [], options);\n                                assertStdio(sp);\n                                this._serverProcess = sp;\n                                sp.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                                sp.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                                transport.onConnected().then((protocol) => {\n                                    resolve({ reader: protocol[0], writer: protocol[1] });\n                                }, reject);\n                            }, reject);\n                        }\n                    });\n                }\n            }\n            else if (Executable.is(json) && json.command) {\n                const command = json;\n                const args = json.args !== undefined ? json.args.slice(0) : [];\n                let pipeName = undefined;\n                const transport = json.transport;\n                if (transport === TransportKind.stdio) {\n                    args.push('--stdio');\n                }\n                else if (transport === TransportKind.pipe) {\n                    pipeName = (0, node_1.generateRandomPipeName)();\n                    args.push(`--pipe=${pipeName}`);\n                }\n                else if (Transport.isSocket(transport)) {\n                    args.push(`--socket=${transport.port}`);\n                }\n                else if (transport === TransportKind.ipc) {\n                    throw new Error(`Transport kind ipc is not support for command executable`);\n                }\n                const options = Object.assign({}, command.options);\n                options.cwd = options.cwd || serverWorkingDir;\n                if (transport === undefined || transport === TransportKind.stdio) {\n                    const serverProcess = cp.spawn(command.command, args, options);\n                    if (!serverProcess || !serverProcess.pid) {\n                        return handleChildProcessStartError(serverProcess, `Launching server using command ${command.command} failed.`);\n                    }\n                    serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                    this._serverProcess = serverProcess;\n                    this._isDetached = !!options.detached;\n                    return Promise.resolve({ reader: new node_1.StreamMessageReader(serverProcess.stdout), writer: new node_1.StreamMessageWriter(serverProcess.stdin) });\n                }\n                else if (transport === TransportKind.pipe) {\n                    return (0, node_1.createClientPipeTransport)(pipeName).then((transport) => {\n                        const serverProcess = cp.spawn(command.command, args, options);\n                        if (!serverProcess || !serverProcess.pid) {\n                            return handleChildProcessStartError(serverProcess, `Launching server using command ${command.command} failed.`);\n                        }\n                        this._serverProcess = serverProcess;\n                        this._isDetached = !!options.detached;\n                        serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                        serverProcess.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                        return transport.onConnected().then((protocol) => {\n                            return { reader: protocol[0], writer: protocol[1] };\n                        });\n                    });\n                }\n                else if (Transport.isSocket(transport)) {\n                    return (0, node_1.createClientSocketTransport)(transport.port).then((transport) => {\n                        const serverProcess = cp.spawn(command.command, args, options);\n                        if (!serverProcess || !serverProcess.pid) {\n                            return handleChildProcessStartError(serverProcess, `Launching server using command ${command.command} failed.`);\n                        }\n                        this._serverProcess = serverProcess;\n                        this._isDetached = !!options.detached;\n                        serverProcess.stderr.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                        serverProcess.stdout.on('data', data => this.outputChannel.append(Is.string(data) ? data : data.toString(encoding)));\n                        return transport.onConnected().then((protocol) => {\n                            return { reader: protocol[0], writer: protocol[1] };\n                        });\n                    });\n                }\n            }\n            return Promise.reject(new Error(`Unsupported server configuration ` + JSON.stringify(server, null, 4)));\n        }).finally(() => {\n            if (this._serverProcess !== undefined) {\n                this._serverProcess.on('exit', (code, signal) => {\n                    if (code !== null) {\n                        this.error(`Server process exited with code ${code}.`, undefined, false);\n                    }\n                    if (signal !== null) {\n                        this.error(`Server process exited with signal ${signal}.`, undefined, false);\n                    }\n                });\n            }\n        });\n    }\n    _getRuntimePath(runtime, serverWorkingDirectory) {\n        if (path.isAbsolute(runtime)) {\n            return runtime;\n        }\n        const mainRootPath = this._mainGetRootPath();\n        if (mainRootPath !== undefined) {\n            const result = path.join(mainRootPath, runtime);\n            if (fs.existsSync(result)) {\n                return result;\n            }\n        }\n        if (serverWorkingDirectory !== undefined) {\n            const result = path.join(serverWorkingDirectory, runtime);\n            if (fs.existsSync(result)) {\n                return result;\n            }\n        }\n        return runtime;\n    }\n    _mainGetRootPath() {\n        let folders = vscode_1.workspace.workspaceFolders;\n        if (!folders || folders.length === 0) {\n            return undefined;\n        }\n        let folder = folders[0];\n        if (folder.uri.scheme === 'file') {\n            return folder.uri.fsPath;\n        }\n        return undefined;\n    }\n    _getServerWorkingDir(options) {\n        let cwd = options && options.cwd;\n        if (!cwd) {\n            cwd = this.clientOptions.workspaceFolder\n                ? this.clientOptions.workspaceFolder.uri.fsPath\n                : this._mainGetRootPath();\n        }\n        if (cwd) {\n            // make sure the folder exists otherwise creating the process will fail\n            return new Promise(s => {\n                fs.lstat(cwd, (err, stats) => {\n                    s(!err && stats.isDirectory() ? cwd : undefined);\n                });\n            });\n        }\n        return Promise.resolve(undefined);\n    }\n}\nexports.LanguageClient = LanguageClient;\nclass SettingMonitor {\n    constructor(_client, _setting) {\n        this._client = _client;\n        this._setting = _setting;\n        this._listeners = [];\n    }\n    start() {\n        vscode_1.workspace.onDidChangeConfiguration(this.onDidChangeConfiguration, this, this._listeners);\n        this.onDidChangeConfiguration();\n        return new vscode_1.Disposable(() => {\n            if (this._client.needsStop()) {\n                void this._client.stop();\n            }\n        });\n    }\n    onDidChangeConfiguration() {\n        let index = this._setting.indexOf('.');\n        let primary = index >= 0 ? this._setting.substr(0, index) : this._setting;\n        let rest = index >= 0 ? this._setting.substr(index + 1) : undefined;\n        let enabled = rest ? vscode_1.workspace.getConfiguration(primary).get(rest, false) : vscode_1.workspace.getConfiguration(primary);\n        if (enabled && this._client.needsStart()) {\n            this._client.start().catch((error) => this._client.error('Start failed after configuration change', error, 'force'));\n        }\n        else if (!enabled && this._client.needsStop()) {\n            void this._client.stop().catch((error) => this._client.error('Stop failed after configuration change', error, 'force'));\n        }\n    }\n}\nexports.SettingMonitor = SettingMonitor;\nfunction handleChildProcessStartError(process, message) {\n    if (process === null) {\n        return Promise.reject(message);\n    }\n    return new Promise((_, reject) => {\n        process.on('error', (err) => {\n            reject(`${message} ${err}`);\n        });\n        // the error event should always be run immediately,\n        // but race on it just in case\n        setImmediate(() => reject(message));\n    });\n}\n", "/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ----------------------------------------------------------------------------------------- */\n'use strict';\n\nmodule.exports = require('./lib/node/main');", "import type { LanguageClientOptions, ServerOptions } from 'vscode-languageclient/node.js';\nimport type * as vscode from 'vscode';\nimport * as path from 'node:path';\nimport { LanguageClient, TransportKind } from 'vscode-languageclient/node.js';\n\nlet client: LanguageClient;\n\n// This function is called when the extension is activated.\nexport function activate(context: vscode.ExtensionContext): void {\n  client = startLanguageClient(context);\n}\n\n// This function is called when the extension is deactivated.\nexport function deactivate(): Thenable<void> | undefined {\n  if (client) {\n    return client.stop();\n  }\n  return undefined;\n}\n\nfunction startLanguageClient(context: vscode.ExtensionContext): LanguageClient {\n  const serverModule = context.asAbsolutePath(path.join('out', 'language', 'main.cjs'));\n  // The debug options for the server\n  // --inspect=6009: runs the server in Node's Inspector mode so VS Code can attach to the server for debugging.\n  // By setting `process.env.DEBUG_BREAK` to a truthy value, the language server will wait until a debugger is attached.\n  const debugOptions = {\n    execArgv: [\n      '--nolazy',\n      `--inspect${process.env.DEBUG_BREAK ? '-brk' : ''}=${process.env.DEBUG_SOCKET || '6009'}`,\n    ],\n  };\n\n  // If the extension is launched in debug mode then the debug server options are used\n  // Otherwise the run options are used\n  const serverOptions: ServerOptions = {\n    run: { module: serverModule, transport: TransportKind.ipc },\n    debug: { module: serverModule, transport: TransportKind.ipc, options: debugOptions },\n  };\n\n  // Options to control the language client\n  const clientOptions: LanguageClientOptions = {\n    documentSelector: [{ scheme: '*', language: 'agentlang' }],\n  };\n\n  // Create the language client and start the client.\n  const client = new LanguageClient('agentlang', 'Agentlang', serverOptions, clientOptions);\n\n  // Start the client. This will also launch the server\n  client.start();\n  return client;\n}\n"],
  "mappings": "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",
  "names": ["exports", "error", "require_is", "exports", "exports", "ErrorCodes", "Message", "exports", "Touch", "_a", "exports", "Disposable", "exports", "RAL", "exports", "Event", "exports", "CancellationToken", "exports", "CancellationState", "exports", "exports", "MessageReader", "ResolvedMessageReaderOptions", "exports", "MessageWriter", "ResolvedMessageWriterOptions", "exports", "result", "exports", "CancelNotification", "ProgressToken", "ProgressNotification", "StarRequestHandler", "Trace", "TraceValues", "TraceFormat", "SetTraceNotification", "LogTraceNotification", "ConnectionErrors", "ConnectionStrategy", "IdCancellationReceiverStrategy", "RequestCancellationReceiverStrategy", "CancellationReceiverStrategy", "CancellationSenderStrategy", "CancellationStrategy", "MessageStrategy", "ConnectionOptions", "ConnectionState", "startTime", "exports", "exports", "RIL", "exports", "path", "process", "exports", "module", "require_main", "exports", "module", "require", "DocumentUri", "URI", "integer", "uinteger", "Position", "Range", "Location", "LocationLink", "Color", "ColorInformation", "ColorPresentation", "FoldingRangeKind", "FoldingRange", "DiagnosticRelatedInformation", "DiagnosticSeverity", "DiagnosticTag", "CodeDescription", "Diagnostic", "Command", "TextEdit", "ChangeAnnotation", "ChangeAnnotationIdentifier", "AnnotatedTextEdit", "TextDocumentEdit", "CreateFile", "RenameFile", "DeleteFile", "WorkspaceEdit", "TextEditChangeImpl", "ChangeAnnotations", "WorkspaceChange", "TextDocumentIdentifier", "VersionedTextDocumentIdentifier", "OptionalVersionedTextDocumentIdentifier", "TextDocumentItem", "MarkupKind", "MarkupContent", "CompletionItemKind", "InsertTextFormat", "CompletionItemTag", "InsertReplaceEdit", "InsertTextMode", "CompletionItemLabelDetails", "CompletionItem", "CompletionList", "MarkedString", "Hover", "ParameterInformation", "SignatureInformation", "DocumentHighlightKind", "DocumentHighlight", "SymbolKind", "SymbolTag", "SymbolInformation", "WorkspaceSymbol", "DocumentSymbol", "CodeActionKind", "CodeActionTriggerKind", "CodeActionContext", "CodeAction", "CodeLens", "FormattingOptions", "DocumentLink", "SelectionRange", "SemanticTokenTypes", "SemanticTokenModifiers", "SemanticTokens", "InlineValueText", "InlineValueVariableLookup", "InlineValueEvaluatableExpression", "InlineValueContext", "InlayHintKind", "InlayHintLabelPart", "InlayHint", "StringValue", "InlineCompletionItem", "InlineCompletionList", "InlineCompletionTriggerKind", "SelectedCompletionInfo", "InlineCompletionContext", "WorkspaceFolder", "TextDocument", "FullTextDocument", "Is", "undefined", "require_messages", "exports", "MessageDirection", "require_is", "exports", "exports", "ImplementationRequest", "exports", "TypeDefinitionRequest", "exports", "WorkspaceFoldersRequest", "DidChangeWorkspaceFoldersNotification", "exports", "ConfigurationRequest", "exports", "DocumentColorRequest", "ColorPresentationRequest", "exports", "FoldingRangeRequest", "FoldingRangeRefreshRequest", "exports", "DeclarationRequest", "exports", "SelectionRangeRequest", "exports", "WorkDoneProgress", "WorkDoneProgressCreateRequest", "WorkDoneProgressCancelNotification", "exports", "CallHierarchyPrepareRequest", "CallHierarchyIncomingCallsRequest", "CallHierarchyOutgoingCallsRequest", "exports", "TokenFormat", "SemanticTokensRegistrationType", "SemanticTokensRequest", "SemanticTokensDeltaRequest", "SemanticTokensRangeRequest", "SemanticTokensRefreshRequest", "exports", "ShowDocumentRequest", "exports", "LinkedEditingRangeRequest", "exports", "FileOperationPatternKind", "WillCreateFilesRequest", "DidCreateFilesNotification", "WillRenameFilesRequest", "DidRenameFilesNotification", "DidDeleteFilesNotification", "WillDeleteFilesRequest", "exports", "UniquenessLevel", "MonikerKind", "MonikerRequest", "exports", "TypeHierarchyPrepareRequest", "TypeHierarchySupertypesRequest", "TypeHierarchySubtypesRequest", "exports", "InlineValueRequest", "InlineValueRefreshRequest", "exports", "InlayHintRequest", "InlayHintResolveRequest", "InlayHintRefreshRequest", "exports", "DiagnosticServerCancellationData", "DocumentDiagnosticReportKind", "DocumentDiagnosticRequest", "WorkspaceDiagnosticRequest", "DiagnosticRefreshRequest", "exports", "NotebookCellKind", "ExecutionSummary", "NotebookCell", "NotebookDocument", "NotebookDocumentSyncRegistrationType", "DidOpenNotebookDocumentNotification", "NotebookCellArrayChange", "DidChangeNotebookDocumentNotification", "DidSaveNotebookDocumentNotification", "DidCloseNotebookDocumentNotification", "exports", "InlineCompletionRequest", "exports", "TextDocumentFilter", "NotebookDocumentFilter", "NotebookCellTextDocumentFilter", "DocumentSelector", "RegistrationRequest", "UnregistrationRequest", "ResourceOperationKind", "FailureHandlingKind", "PositionEncodingKind", "StaticRegistrationOptions", "TextDocumentRegistrationOptions", "WorkDoneProgressOptions", "InitializeRequest", "InitializeErrorCodes", "InitializedNotification", "ShutdownRequest", "ExitNotification", "DidChangeConfigurationNotification", "MessageType", "ShowMessageNotification", "ShowMessageRequest", "LogMessageNotification", "TelemetryEventNotification", "TextDocumentSyncKind", "DidOpenTextDocumentNotification", "TextDocumentContentChangeEvent", "DidChangeTextDocumentNotification", "DidCloseTextDocumentNotification", "DidSaveTextDocumentNotification", "TextDocumentSaveReason", "WillSaveTextDocumentNotification", "WillSaveTextDocumentWaitUntilRequest", "DidChangeWatchedFilesNotification", "FileChangeType", "RelativePattern", "WatchKind", "PublishDiagnosticsNotification", "CompletionTriggerKind", "CompletionRequest", "CompletionResolveRequest", "HoverRequest", "SignatureHelpTriggerKind", "SignatureHelpRequest", "DefinitionRequest", "ReferencesRequest", "DocumentHighlightRequest", "DocumentSymbolRequest", "CodeActionRequest", "CodeActionResolveRequest", "WorkspaceSymbolRequest", "WorkspaceSymbolResolveRequest", "CodeLensRequest", "CodeLensResolveRequest", "CodeLensRefreshRequest", "DocumentLinkRequest", "DocumentLinkResolveRequest", "DocumentFormattingRequest", "DocumentRangeFormattingRequest", "DocumentRangesFormattingRequest", "DocumentOnTypeFormattingRequest", "PrepareSupportDefaultBehavior", "RenameRequest", "PrepareRenameRequest", "ExecuteCommandRequest", "ApplyWorkspaceEditRequest", "require_connection", "exports", "require_api", "exports", "LSPErrorCodes", "require_main", "exports", "exports", "exports", "exports", "exports", "exports", "exports", "DiagnosticCode", "exports", "exports", "exports", "exports", "exports", "InsertReplaceRange", "code", "exports", "CodeBlock", "exports", "exports", "exports", "StaticFeature", "DynamicFeature", "client", "data", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "path", "set", "exports", "vsdiag", "DocumentDiagnosticReportKind", "DiagnosticPullMode", "RequestStateKind", "PullState", "DocumentOrUri", "client", "document", "previousResultId", "token", "result", "resultIds", "_a", "exports", "Converter", "c2p", "event", "$NotebookCell", "$NotebookDocumentFilter", "$NotebookDocumentSyncOptions", "SyncInfo", "client", "notebookDocument", "cells", "exports", "client", "params", "sections", "path", "exports", "client", "textDocument", "event", "exports", "client", "document", "position", "context", "token", "item", "exports", "client", "document", "position", "token", "exports", "client", "document", "position", "token", "exports", "client", "document", "position", "context", "token", "exports", "client", "document", "position", "token", "exports", "client", "document", "token", "exports", "client", "query", "token", "item", "exports", "client", "options", "document", "position", "token", "exports", "client", "document", "range", "context", "token", "item", "exports", "client", "document", "token", "codeLens", "exports", "FileFormattingOptions", "client", "options", "document", "token", "range", "ranges", "position", "ch", "exports", "client", "document", "position", "newName", "token", "exports", "client", "document", "token", "link", "exports", "client", "exports", "client", "exports", "client", "color", "context", "token", "document", "exports", "client", "document", "position", "token", "exports", "client", "document", "position", "token", "exports", "client", "event", "exports", "client", "document", "token", "exports", "client", "document", "position", "token", "exports", "client", "document", "positions", "token", "exports", "client", "exports", "client", "document", "position", "token", "item", "exports", "client", "document", "token", "previousResultId", "range", "exports", "client", "path", "exports", "client", "document", "position", "token", "exports", "client", "document", "position", "token", "item", "exports", "client", "document", "viewPort", "context", "token", "exports", "client", "document", "viewPort", "token", "exports", "client", "document", "position", "context", "token", "exports", "RevealOutputChannelOn", "ErrorAction", "CloseAction", "State", "SuspendMode", "ResolvedClientOptions", "client", "ClientState", "MessageTransports", "type", "param", "token", "params", "disposable", "connection", "event", "uri", "diagnostics", "error", "ProposedFeatures", "exports", "process", "require_node", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "require_api", "exports", "require_main", "exports", "path", "TransportKind", "Transport", "Executable", "NodeModule", "StreamInfo", "ChildProcessInfo", "LanguageClient", "process", "cp", "transport", "_a", "require_node", "exports", "module", "client"]
}
