vscode-eslint 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/vscode-eslint +82 -0
- package/client/out/client.d.ts +13 -0
- package/client/out/extension.d.ts +3 -0
- package/client/out/extension.js +2 -0
- package/client/out/extension.js.map +1 -0
- package/client/out/node-utils.d.ts +51 -0
- package/client/out/settings.d.ts +41 -0
- package/client/out/shared/customMessages.d.ts +89 -0
- package/client/out/shared/settings.d.ts +106 -0
- package/client/out/tasks.d.ts +31 -0
- package/client/out/tests/glob.test.d.ts +1 -0
- package/client/out/vscode-utils.d.ts +5 -0
- package/package.json +9 -2
- package/server/out/diff.d.ts +134 -0
- package/server/out/eslint.d.ts +298 -0
- package/server/out/eslintServer.d.ts +1 -0
- package/server/out/eslintServer.js +2 -0
- package/server/out/eslintServer.js.map +1 -0
- package/server/out/is.d.ts +3 -0
- package/server/out/languageDefaults.d.ts +6 -0
- package/server/out/linkedMap.d.ts +53 -0
- package/server/out/paths.d.ts +22 -0
- package/server/out/shared/customMessages.d.ts +89 -0
- package/server/out/shared/settings.d.ts +106 -0
- package/$shared/customMessages.ts +0 -113
- package/$shared/settings.ts +0 -189
- package/.CodeQL.yml +0 -5
- package/.azure-pipelines.yml +0 -27
- package/.gemini/agents/vscode-eslint.md +0 -23
- package/.github/commands.yml +0 -127
- package/.github/locker.yml +0 -6
- package/.github/needs_more_info.yml +0 -6
- package/.github/workflows/npm-publish.yml +0 -53
- package/.github/workflows/release-please.yml +0 -22
- package/.lsifrc.json +0 -4
- package/.vscode/launch.json +0 -20
- package/.vscode/settings.json +0 -52
- package/.vscode/spellright.dict +0 -8
- package/.vscode/tasks.json +0 -39
- package/.vscodeignore +0 -23
- package/CHANGELOG.md +0 -524
- package/SECURITY.md +0 -41
- package/agents.md +0 -36
- package/bin/vscode-eslint.js +0 -56
- package/build/azure-pipelines/linux/build.yml +0 -14
- package/build/azure-pipelines/pre-release.yml +0 -42
- package/build/azure-pipelines/release.yml +0 -45
- package/build/azure-pipelines/win32/build.yml +0 -14
- package/build/bin/all.js +0 -29
- package/build/bin/linking.js +0 -102
- package/build/bin/symlink.js +0 -35
- package/client/.mocharc.json +0 -6
- package/client/agents.md +0 -5
- package/client/package-lock.json +0 -176
- package/client/package.json +0 -29
- package/client/src/client.ts +0 -992
- package/client/src/extension.ts +0 -180
- package/client/src/node-utils.ts +0 -393
- package/client/src/settings.ts +0 -379
- package/client/src/tasks.ts +0 -186
- package/client/src/tests/glob.test.ts +0 -31
- package/client/src/vscode-utils.ts +0 -28
- package/client/test/mocha.opts +0 -3
- package/client/tsconfig.json +0 -20
- package/client/webpack.config.js +0 -25
- package/contributing.md +0 -19
- package/esbuild.js +0 -62
- package/eslint.config.js +0 -129
- package/history/settings_1_9_x.md +0 -110
- package/images/2_1_10/eslint-dialog.png +0 -0
- package/images/2_1_10/eslint-status.png +0 -0
- package/package-json-schema.json +0 -9
- package/playgrounds/7.0/.eslintignore +0 -1
- package/playgrounds/7.0/.eslintrc.json +0 -71
- package/playgrounds/7.0/.vscode/settings.json +0 -85
- package/playgrounds/7.0/app.js +0 -12
- package/playgrounds/7.0/build/.eslintignore +0 -1
- package/playgrounds/7.0/build/.eslintrc.json +0 -30
- package/playgrounds/7.0/build/build.js +0 -11
- package/playgrounds/7.0/jsconfig.json +0 -5
- package/playgrounds/7.0/package-lock.json +0 -2133
- package/playgrounds/7.0/package.json +0 -10
- package/playgrounds/7.0/readme.md +0 -0
- package/playgrounds/7.0/subDir/sub.js +0 -11
- package/playgrounds/7.0/subDir/test.jsx +0 -10
- package/playgrounds/7.0/test.js +0 -11
- package/playgrounds/7.0/test.sh +0 -1
- package/playgrounds/7.0/test.vue +0 -33
- package/playgrounds/7.0/test2.html +0 -8
- package/playgrounds/8.0/.eslintignore +0 -1
- package/playgrounds/8.0/.eslintrc.json +0 -71
- package/playgrounds/8.0/.vscode/settings.json +0 -91
- package/playgrounds/8.0/app.js +0 -12
- package/playgrounds/8.0/build/.eslintignore +0 -1
- package/playgrounds/8.0/build/.eslintrc.json +0 -30
- package/playgrounds/8.0/build/build.js +0 -11
- package/playgrounds/8.0/jsconfig.json +0 -5
- package/playgrounds/8.0/package-lock.json +0 -2321
- package/playgrounds/8.0/package.json +0 -10
- package/playgrounds/8.0/readme.md +0 -17
- package/playgrounds/8.0/subDir/sub.js +0 -11
- package/playgrounds/8.0/subDir/test.jsx +0 -10
- package/playgrounds/8.0/test.ipynb +0 -49
- package/playgrounds/8.0/test.js +0 -3
- package/playgrounds/8.0/test.sh +0 -1
- package/playgrounds/8.0/test.vue +0 -33
- package/playgrounds/8.0/test2.html +0 -8
- package/playgrounds/9.0/flat/.vscode/settings.json +0 -3
- package/playgrounds/9.0/flat/app.js +0 -12
- package/playgrounds/9.0/flat/dist/ignore.js +0 -12
- package/playgrounds/9.0/flat/eslint.config.js +0 -61
- package/playgrounds/9.0/flat/package-lock.json +0 -1053
- package/playgrounds/9.0/flat/package.json +0 -9
- package/playgrounds/9.0/rc/.eslintrc.json +0 -57
- package/playgrounds/9.0/rc/.vscode/settings.json +0 -3
- package/playgrounds/9.0/rc/app.js +0 -12
- package/playgrounds/9.0/rc/package-lock.json +0 -1345
- package/playgrounds/9.0/rc/package.json +0 -9
- package/playgrounds/flat-config/.vscode/settings.json +0 -22
- package/playgrounds/flat-config/app.js +0 -12
- package/playgrounds/flat-config/eslint.config.js +0 -51
- package/playgrounds/flat-config/package-lock.json +0 -2733
- package/playgrounds/flat-config/package.json +0 -12
- package/playgrounds/flat-config/sub/sub.js +0 -2
- package/playgrounds/flat-config/test.ts +0 -7
- package/playgrounds/flat-config/tsconfig.json +0 -11
- package/playgrounds/flat-config-fail/f1/app.js +0 -12
- package/playgrounds/flat-config-fail/f1/eslint.config.js +0 -51
- package/playgrounds/flat-config-fail/package-lock.json +0 -1683
- package/playgrounds/flat-config-fail/package.json +0 -11
- package/playgrounds/flat-config-mjs/.vscode/settings.json +0 -21
- package/playgrounds/flat-config-mjs/app.js +0 -12
- package/playgrounds/flat-config-mjs/eslint.config.mjs +0 -53
- package/playgrounds/flat-config-mjs/package-lock.json +0 -2860
- package/playgrounds/flat-config-mjs/package.json +0 -11
- package/playgrounds/flat-config-mjs/sub/sub.js +0 -2
- package/playgrounds/flat-config-mjs/test.ts +0 -7
- package/playgrounds/flat-config-mjs/tsconfig.json +0 -11
- package/playgrounds/load-eslint/.vscode/settings.json +0 -21
- package/playgrounds/load-eslint/app.js +0 -12
- package/playgrounds/load-eslint/eslint.config.js +0 -51
- package/playgrounds/load-eslint/package-lock.json +0 -2860
- package/playgrounds/load-eslint/package.json +0 -11
- package/playgrounds/load-eslint/sub/sub.js +0 -2
- package/playgrounds/load-eslint/test.ts +0 -7
- package/playgrounds/load-eslint/tsconfig.json +0 -11
- package/playgrounds/noLib/test.js +0 -22
- package/playgrounds/noWD/.vscode/settings.json +0 -2
- package/playgrounds/noWD/src/.eslintrc.json +0 -18
- package/playgrounds/noWD/src/package-lock.json +0 -2812
- package/playgrounds/noWD/src/package.json +0 -12
- package/playgrounds/noWD/src/test.js +0 -3
- package/playgrounds/notebooks/notebook.ipynb +0 -7072
- package/playgrounds/notebooks/notebook2.ipynb +0 -20
- package/playgrounds/testing.code-workspace +0 -28
- package/playgrounds/ts/.eslintrc.base.json +0 -23
- package/playgrounds/ts/.eslintrc.json +0 -191
- package/playgrounds/ts/.vscode/settings.json +0 -12
- package/playgrounds/ts/package-lock.json +0 -2687
- package/playgrounds/ts/package.json +0 -11
- package/playgrounds/ts/test copy.ts +0 -4
- package/playgrounds/ts/test.ipynb +0 -49
- package/playgrounds/ts/test.ts +0 -4
- package/playgrounds/ts/test.tsx +0 -14
- package/playgrounds/ts/tsconfig.json +0 -100
- package/server/agents.md +0 -9
- package/server/package-lock.json +0 -93
- package/server/package.json +0 -32
- package/server/src/diff.ts +0 -1079
- package/server/src/eslint.ts +0 -1471
- package/server/src/eslintServer.ts +0 -865
- package/server/src/is.ts +0 -18
- package/server/src/languageDefaults.ts +0 -40
- package/server/src/linkedMap.ts +0 -448
- package/server/src/paths.ts +0 -128
- package/server/src/thenable.d.ts +0 -5
- package/server/tsconfig.json +0 -21
- package/server/webpack.config.js +0 -25
- package/shared.webpack.config.js +0 -59
- package/tsconfig.base.json +0 -9
- package/tsconfig.json +0 -21
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","mappings":"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","sources":["webpack://client/./src/client.ts","webpack://client/./src/extension.ts","webpack://client/./src/node-utils.ts","webpack://client/./src/settings.ts","webpack://client/./src/shared/customMessages.ts","webpack://client/./src/shared/settings.ts","webpack://client/./src/tasks.ts","webpack://client/./src/vscode-utils.ts","webpack://client/./node_modules/semver/classes/comparator.js","webpack://client/./node_modules/semver/classes/range.js","webpack://client/./node_modules/semver/classes/semver.js","webpack://client/./node_modules/semver/functions/cmp.js","webpack://client/./node_modules/semver/functions/compare.js","webpack://client/./node_modules/semver/functions/eq.js","webpack://client/./node_modules/semver/functions/gt.js","webpack://client/./node_modules/semver/functions/gte.js","webpack://client/./node_modules/semver/functions/lt.js","webpack://client/./node_modules/semver/functions/lte.js","webpack://client/./node_modules/semver/functions/neq.js","webpack://client/./node_modules/semver/functions/parse.js","webpack://client/./node_modules/semver/functions/satisfies.js","webpack://client/./node_modules/semver/internal/constants.js","webpack://client/./node_modules/semver/internal/debug.js","webpack://client/./node_modules/semver/internal/identifiers.js","webpack://client/./node_modules/semver/internal/lrucache.js","webpack://client/./node_modules/semver/internal/parse-options.js","webpack://client/./node_modules/semver/internal/re.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/api.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/cancellation.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/connection.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/disposable.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/events.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/is.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/linkedMap.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/messageBuffer.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/messageReader.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/messageWriter.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/messages.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/ral.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/semaphore.js","webpack://client/./node_modules/vscode-jsonrpc/lib/common/sharedArrayCancellation.js","webpack://client/./node_modules/vscode-jsonrpc/lib/node/main.js","webpack://client/./node_modules/vscode-jsonrpc/lib/node/ril.js","webpack://client/./node_modules/vscode-languageclient/lib/common/api.js","webpack://client/./node_modules/vscode-languageclient/lib/common/callHierarchy.js","webpack://client/./node_modules/vscode-languageclient/lib/common/client.js","webpack://client/./node_modules/vscode-languageclient/lib/common/codeAction.js","webpack://client/./node_modules/vscode-languageclient/lib/common/codeConverter.js","webpack://client/./node_modules/vscode-languageclient/lib/common/codeLens.js","webpack://client/./node_modules/vscode-languageclient/lib/common/colorProvider.js","webpack://client/./node_modules/vscode-languageclient/lib/common/completion.js","webpack://client/./node_modules/vscode-languageclient/lib/common/configuration.js","webpack://client/./node_modules/vscode-languageclient/lib/common/declaration.js","webpack://client/./node_modules/vscode-languageclient/lib/common/definition.js","webpack://client/./node_modules/vscode-languageclient/lib/common/diagnostic.js","webpack://client/./node_modules/vscode-languageclient/lib/common/documentHighlight.js","webpack://client/./node_modules/vscode-languageclient/lib/common/documentLink.js","webpack://client/./node_modules/vscode-languageclient/lib/common/documentSymbol.js","webpack://client/./node_modules/vscode-languageclient/lib/common/executeCommand.js","webpack://client/./node_modules/vscode-languageclient/lib/common/features.js","webpack://client/./node_modules/vscode-languageclient/lib/common/fileOperations.js","webpack://client/./node_modules/vscode-languageclient/lib/common/fileSystemWatcher.js","webpack://client/./node_modules/vscode-languageclient/lib/common/foldingRange.js","webpack://client/./node_modules/vscode-languageclient/lib/common/formatting.js","webpack://client/./node_modules/vscode-languageclient/lib/common/hover.js","webpack://client/./node_modules/vscode-languageclient/lib/common/implementation.js","webpack://client/./node_modules/vscode-languageclient/lib/common/inlayHint.js","webpack://client/./node_modules/vscode-languageclient/lib/common/inlineCompletion.js","webpack://client/./node_modules/vscode-languageclient/lib/common/inlineValue.js","webpack://client/./node_modules/vscode-languageclient/lib/common/linkedEditingRange.js","webpack://client/./node_modules/vscode-languageclient/lib/common/notebook.js","webpack://client/./node_modules/vscode-languageclient/lib/common/progress.js","webpack://client/./node_modules/vscode-languageclient/lib/common/progressPart.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolCallHierarchyItem.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolCodeAction.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolCodeLens.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolCompletionItem.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolConverter.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolDiagnostic.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolDocumentLink.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolInlayHint.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolTypeHierarchyItem.js","webpack://client/./node_modules/vscode-languageclient/lib/common/protocolWorkspaceSymbol.js","webpack://client/./node_modules/vscode-languageclient/lib/common/reference.js","webpack://client/./node_modules/vscode-languageclient/lib/common/rename.js","webpack://client/./node_modules/vscode-languageclient/lib/common/selectionRange.js","webpack://client/./node_modules/vscode-languageclient/lib/common/semanticTokens.js","webpack://client/./node_modules/vscode-languageclient/lib/common/signatureHelp.js","webpack://client/./node_modules/vscode-languageclient/lib/common/textDocumentContent.js","webpack://client/./node_modules/vscode-languageclient/lib/common/textSynchronization.js","webpack://client/./node_modules/vscode-languageclient/lib/common/typeDefinition.js","webpack://client/./node_modules/vscode-languageclient/lib/common/typeHierarchy.js","webpack://client/./node_modules/vscode-languageclient/lib/common/utils/async.js","webpack://client/./node_modules/vscode-languageclient/lib/common/utils/globPattern.js","webpack://client/./node_modules/vscode-languageclient/lib/common/utils/is.js","webpack://client/./node_modules/vscode-languageclient/lib/common/utils/uuid.js","webpack://client/./node_modules/vscode-languageclient/lib/common/workspaceFolder.js","webpack://client/./node_modules/vscode-languageclient/lib/common/workspaceSymbol.js","webpack://client/./node_modules/vscode-languageclient/lib/node/main.js","webpack://client/./node_modules/vscode-languageclient/lib/node/processes.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/api.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/connection.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/messages.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.callHierarchy.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.colorProvider.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.configuration.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.declaration.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.diagnostic.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.fileOperations.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.foldingRange.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.implementation.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.inlayHint.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineCompletion.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.inlineValue.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.linkedEditingRange.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.moniker.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.notebook.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.progress.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.selectionRange.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.semanticTokens.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.showDocument.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.textDocumentContent.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.typeDefinition.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.typeHierarchy.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/protocol.workspaceFolder.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/common/utils/is.js","webpack://client/./node_modules/vscode-languageserver-protocol/lib/node/main.js","webpack://client/external commonjs \"vscode\"","webpack://client/external node-commonjs \"child_process\"","webpack://client/external node-commonjs \"crypto\"","webpack://client/external node-commonjs \"fs\"","webpack://client/external node-commonjs \"net\"","webpack://client/external node-commonjs \"os\"","webpack://client/external node-commonjs \"path\"","webpack://client/external node-commonjs \"readline\"","webpack://client/external node-commonjs \"util\"","webpack://client/./node_modules/balanced-match/dist/esm/index.js","webpack://client/./node_modules/brace-expansion/dist/esm/index.js","webpack://client/./node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack://client/./node_modules/minimatch/dist/esm/brace-expressions.js","webpack://client/./node_modules/minimatch/dist/esm/unescape.js","webpack://client/./node_modules/minimatch/dist/esm/ast.js","webpack://client/./node_modules/minimatch/dist/esm/escape.js","webpack://client/./node_modules/minimatch/dist/esm/index.js","webpack://client/./node_modules/vscode-languageserver-types/lib/esm/main.js","webpack://client/webpack/bootstrap","webpack://client/webpack/runtime/define property getters","webpack://client/webpack/runtime/hasOwnProperty shorthand","webpack://client/webpack/runtime/make namespace object","webpack://client/webpack/startup"],"sourcesContent":["\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\nimport * as path from 'path';\n\nimport {\n\tworkspace as Workspace, window as Window, languages as Languages, Uri, TextDocument, CodeActionContext, Diagnostic,\n\tCommand, CodeAction, MessageItem, ConfigurationTarget, env as Env, CodeActionKind, WorkspaceConfiguration, NotebookCell, commands,\n\tExtensionContext, LanguageStatusItem, LanguageStatusSeverity, DocumentFilter as VDocumentFilter\n} from 'vscode';\n\nimport {\n\tLanguageClient, LanguageClientOptions, TransportKind, ErrorHandler, CloseAction, RevealOutputChannelOn, ServerOptions,\n\tDidCloseTextDocumentNotification, DidOpenTextDocumentNotification, State, VersionedTextDocumentIdentifier, ExecuteCommandParams,\n\tExecuteCommandRequest, ConfigurationParams, NotebookDocumentSyncRegistrationType, DiagnosticPullMode, DocumentDiagnosticRequest\n} from 'vscode-languageclient/node';\n\nimport { LegacyDirectoryItem, Migration, PatternItem, ValidateItem } from './settings';\nimport { ExitCalled, NoConfigRequest, NoESLintLibraryRequest, OpenESLintDocRequest, ProbeFailedRequest, ShowOutputChannel, Status, StatusNotification, StatusParams } from './shared/customMessages';\nimport { CodeActionSettings, CodeActionsOnSaveMode, CodeActionsOnSaveOptions, CodeActionsOnSaveRules, ConfigurationSettings, DirectoryItem, ESLintOptions, ESLintSeverity, ModeItem, PackageManagers, RuleCustomization, RunValues, Validate } from './shared/settings';\nimport { convert2RegExp, Is, Semaphore, toOSPath, toPosixPath } from './node-utils';\nimport { pickFolder } from './vscode-utils';\n\nexport class Validator {\n\n\tprivate readonly probeFailed: Set<string> = new Set();\n\n\tpublic clear(): void {\n\t\tthis.probeFailed.clear();\n\t}\n\n\tpublic add(uri: Uri): void {\n\t\tthis.probeFailed.add(uri.toString());\n\t}\n\n\tpublic check(textDocument: TextDocument): Validate {\n\t\tconst config = Workspace.getConfiguration('eslint', textDocument.uri);\n\n\t\tif (!config.get<boolean>('enable', true)) {\n\t\t\treturn Validate.off;\n\t\t}\n\n\t\tif (textDocument.uri.scheme === 'untitled' && config.get<boolean>('ignoreUntitled', false)) {\n\t\t\treturn Validate.off;\n\t\t}\n\n\t\tconst languageId = textDocument.languageId;\n\t\tconst validate = config.get<((ValidateItem | string)[]) | null>('validate', null);\n\t\tif (Array.isArray(validate)) {\n\t\t\tfor (const item of validate) {\n\t\t\t\tif (Is.string(item) && item === languageId) {\n\t\t\t\t\treturn Validate.on;\n\t\t\t\t} else if (ValidateItem.is(item) && item.language === languageId) {\n\t\t\t\t\treturn Validate.on;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Validate.off;\n\t\t}\n\n\t\tif (this.probeFailed.has(textDocument.uri.toString())) {\n\t\t\treturn Validate.off;\n\t\t}\n\n\t\tconst probe: string[] | undefined = config.get<string[]>('probe');\n\t\tif (Array.isArray(probe)) {\n\t\t\tfor (const item of probe) {\n\t\t\t\tif (item === languageId) {\n\t\t\t\t\treturn Validate.probe;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn Validate.off;\n\t}\n}\n\ntype NoESLintState = {\n\tglobal?: boolean;\n\tworkspaces?: { [key: string]: boolean };\n};\n\nexport namespace ESLintClient {\n\n\tfunction migrationFailed(client: LanguageClient, error: any): void {\n\t\tclient.error(error.message ?? 'Unknown error', error);\n\t\tvoid Window.showErrorMessage('ESLint settings migration failed. Please see the ESLint output channel for further details', 'Open Channel').then((selected) => {\n\t\t\tif (selected === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclient.outputChannel.show();\n\t\t});\n\n\t}\n\n\texport async function migrateSettings(client: LanguageClient): Promise<void> {\n\t\tconst folders = Workspace.workspaceFolders;\n\t\tif (folders === undefined) {\n\t\t\tvoid Window.showErrorMessage('ESLint settings can only be converted if VS Code is opened on a workspace folder.');\n\t\t\treturn;\n\t\t}\n\n\t\tconst folder = await pickFolder(folders, 'Pick a folder to convert its settings');\n\t\tif (folder === undefined) {\n\t\t\treturn;\n\t\t}\n\t\tconst migration = new Migration(folder.uri);\n\t\tmigration.record();\n\t\tif (migration.needsUpdate()) {\n\t\t\ttry {\n\t\t\t\tawait migration.update();\n\t\t\t} catch (error) {\n\t\t\t\tmigrationFailed(client, error);\n\t\t\t}\n\t\t}\n\t}\n\n\tinterface TimeBudget {\n\t\twarn: number;\n\t\terror: number;\n\t}\n\n\ttype PerformanceStatus = {\n\t\tfirstReport: boolean;\n\t\tvalidationTime: number;\n\t\tfixTime: number;\n\t\treported: number;\n\t\tacknowledged: boolean;\n\t};\n\n\tnamespace PerformanceStatus {\n\t\texport const defaultValue: PerformanceStatus = { firstReport: true, validationTime: 0, fixTime: 0, reported: 0, acknowledged: false };\n\t}\n\n\texport function create(context: ExtensionContext, validator: Validator): [LanguageClient, () => void] {\n\n\t\t// Filters for client options\n\t\tconst packageJsonFilter: VDocumentFilter = { scheme: 'file', pattern: '**/package.json' };\n\t\tconst configFileFilter: VDocumentFilter = { scheme: 'file', pattern: '**/{.eslintr{c.js,c.yaml,c.yml,c,c.json},eslint.confi{g.js,g.mjs,g.cjs}}' };\n\t\tconst supportedQuickFixKinds: Set<string> = new Set([CodeActionKind.Source.value, CodeActionKind.SourceFixAll.value, `${CodeActionKind.SourceFixAll.value}.eslint`, CodeActionKind.QuickFix.value]);\n\n\t\t// A map of documents synced to the server\n\t\tconst syncedDocuments: Map<string, TextDocument> = new Map();\n\t\t// The actual ESLint client\n\t\tconst client: LanguageClient = new LanguageClient('ESLint', createServerOptions(context.extensionUri), createClientOptions());\n\n\t\t// The default error handler.\n\t\tconst defaultErrorHandler: ErrorHandler = client.createDefaultErrorHandler();\n\t\t// Whether the server call process.exit() which is intercepted and reported to\n\t\t// the client\n\t\tlet serverCalledProcessExit: boolean = false;\n\n\t\t// A semaphore to ensure we are only running one migration at a time\n\t\tconst migrationSemaphore: Semaphore<void> = new Semaphore<void>(1);\n\t\t// The actual migration code if any.\n\t\tlet migration: Migration | undefined;\n\t\t// Whether migration should happen now\n\t\tlet notNow: boolean = false;\n\n\t\t// The client's status bar item.\n\t\tconst languageStatus: LanguageStatusItem = Languages.createLanguageStatusItem('eslint.languageStatusItem', []);\n\t\tlet serverRunning: boolean | undefined;\n\n\t\tconst starting = 'ESLint server is starting.';\n\t\tconst running = 'ESLint server is running.';\n\t\tconst stopped = 'ESLint server stopped.';\n\t\tlanguageStatus.name = 'ESLint';\n\t\tlanguageStatus.text = 'ESLint';\n\t\tlanguageStatus.command = { title: 'Open ESLint Output', command: 'eslint.showOutputChannel' };\n\t\ttype StatusInfo = Omit<Omit<StatusParams, 'uri'>, 'validationTime'> & {\n\t\t};\n\t\tconst documentStatus: Map<string, StatusInfo> = new Map();\n\t\tconst performanceStatus: Map<string, PerformanceStatus> = new Map();\n\n\t\t// If the workspace configuration changes we need to update the synced documents since the\n\t\t// list of probe language type can change.\n\t\tcontext.subscriptions.push(Workspace.onDidChangeConfiguration(() => {\n\t\t\tvalidator.clear();\n\t\t\tfor (const textDocument of syncedDocuments.values()) {\n\t\t\t\tif (validator.check(textDocument) === Validate.off) {\n\t\t\t\t\tconst provider = client.getFeature(DidCloseTextDocumentNotification.method).getProvider(textDocument);\n\t\t\t\t\tprovider?.send(textDocument).catch((error) => client.error(`Sending close notification failed.`, error));\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const textDocument of Workspace.textDocuments) {\n\t\t\t\tif (!syncedDocuments.has(textDocument.uri.toString()) && validator.check(textDocument) !== Validate.off) {\n\t\t\t\t\tconst provider = client.getFeature(DidOpenTextDocumentNotification.method).getProvider(textDocument);\n\t\t\t\t\tprovider?.send(textDocument).catch((error) => client.error(`Sending open notification failed.`, error));\n\t\t\t\t}\n\t\t\t}\n\t\t}));\n\n\t\tclient.onNotification(ShowOutputChannel.type, () => {\n\t\t\tclient.outputChannel.show();\n\t\t});\n\n\t\tclient.onNotification(StatusNotification.type, (params) => {\n\t\t\tupdateDocumentStatus(params);\n\t\t});\n\n\t\tclient.onNotification(ExitCalled.type, (params) => {\n\t\t\tserverCalledProcessExit = true;\n\t\t\tclient.error(`Server process exited with code ${params[0]}. This usually indicates a misconfigured ESLint setup.`, params[1]);\n\t\t\tvoid Window.showErrorMessage(`ESLint server shut down itself. See 'ESLint' output channel for details.`, { title: 'Open Output', id: 1}).then((value) => {\n\t\t\t\tif (value !== undefined && value.id === 1) {\n\t\t\t\t\tclient.outputChannel.show();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tclient.onRequest(NoConfigRequest.type, (params) => {\n\t\t\tconst document = Uri.parse(params.document.uri);\n\t\t\tconst workspaceFolder = Workspace.getWorkspaceFolder(document);\n\t\t\tconst fileLocation = document.fsPath;\n\t\t\tif (workspaceFolder) {\n\t\t\t\tclient.warn([\n\t\t\t\t\t'',\n\t\t\t\t\t`No ESLint configuration (e.g .eslintrc) found for file: ${fileLocation}`,\n\t\t\t\t\t`File will not be validated. Consider running 'eslint --init' in the workspace folder ${workspaceFolder.name}`,\n\t\t\t\t\t`Alternatively you can disable ESLint by executing the 'Disable ESLint' command.`\n\t\t\t\t].join('\\n'));\n\t\t\t} else {\n\t\t\t\tclient.warn([\n\t\t\t\t\t'',\n\t\t\t\t\t`No ESLint configuration (e.g .eslintrc) found for file: ${fileLocation}`,\n\t\t\t\t\t`File will not be validated. Alternatively you can disable ESLint by executing the 'Disable ESLint' command.`\n\t\t\t\t].join('\\n'));\n\t\t\t}\n\n\t\t\tupdateDocumentStatus({ uri: params.document.uri, state: Status.error });\n\t\t\treturn {};\n\t\t});\n\n\t\tclient.onRequest(NoESLintLibraryRequest.type, async (params) => {\n\t\t\tconst key = 'noESLintMessageShown';\n\t\t\tconst state = context.globalState.get<NoESLintState>(key, {});\n\n\t\t\tconst uri: Uri = Uri.parse(params.source.uri);\n\t\t\tconst workspaceFolder = Workspace.getWorkspaceFolder(uri);\n\t\t\tconst packageManager = await getPackageManager(uri);\n\t\t\tconst localInstall = {\n\t\t\t\tnpm: 'npm install eslint',\n\t\t\t\tpnpm: 'pnpm install eslint',\n\t\t\t\tyarn: 'yarn add eslint',\n\t\t\t};\n\t\t\tconst globalInstall = {\n\t\t\t\tnpm: 'npm install -g eslint',\n\t\t\t\tpnpm: 'pnpm install -g eslint',\n\t\t\t\tyarn: 'yarn global add eslint'\n\t\t\t};\n\t\t\tinterface ButtonItem extends MessageItem {\n\t\t\t\tid: number;\n\t\t\t}\n\t\t\tconst outputItem: ButtonItem = {\n\t\t\t\ttitle: 'Go to output',\n\t\t\t\tid: 1\n\t\t\t};\n\t\t\tif (workspaceFolder) {\n\t\t\t\tclient.info([\n\t\t\t\t\t'',\n\t\t\t\t\t`Failed to load the ESLint library for the document ${uri.fsPath}`,\n\t\t\t\t\t'',\n\t\t\t\t\t`To use ESLint please install eslint by running ${localInstall[packageManager]} in the workspace folder ${workspaceFolder.name}`,\n\t\t\t\t\t`or globally using '${globalInstall[packageManager]}'. You need to reopen the workspace after installing eslint.`,\n\t\t\t\t\t'',\n\t\t\t\t\t`Alternatively you can disable ESLint for the workspace folder ${workspaceFolder.name} by executing the 'Disable ESLint' command.`\n\t\t\t\t].filter((str => (str !== null))).join('\\n'));\n\n\t\t\t\tif (state.workspaces === undefined) {\n\t\t\t\t\tstate.workspaces = {};\n\t\t\t\t}\n\t\t\t\tif (!state.workspaces[workspaceFolder.uri.toString()]) {\n\t\t\t\t\tstate.workspaces[workspaceFolder.uri.toString()] = true;\n\t\t\t\t\tvoid context.globalState.update(key, state);\n\t\t\t\t\tvoid Window.showInformationMessage(`Failed to load the ESLint library for the document ${uri.fsPath}. See the output for more information.`, outputItem).then((item) => {\n\t\t\t\t\t\tif (item && item.id === 1) {\n\t\t\t\t\t\t\tclient.outputChannel.show(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tclient.info([\n\t\t\t\t\t`Failed to load the ESLint library for the document ${uri.fsPath}`,\n\t\t\t\t\t`To use ESLint for single JavaScript file install eslint globally using '${globalInstall[packageManager]}'.`,\n\t\t\t\t\t'You need to reopen VS Code after installing eslint.',\n\t\t\t\t].filter((str => (str !== null))).join('\\n'));\n\n\t\t\t\tif (!state.global) {\n\t\t\t\t\tstate.global = true;\n\t\t\t\t\tvoid context.globalState.update(key, state);\n\t\t\t\t\tvoid Window.showInformationMessage(`Failed to load the ESLint library for the document ${uri.fsPath}. See the output for more information.`, outputItem).then((item) => {\n\t\t\t\t\t\tif (item && item.id === 1) {\n\t\t\t\t\t\t\tclient.outputChannel.show(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {};\n\t\t});\n\n\t\tclient.onRequest(OpenESLintDocRequest.type, async (params) => {\n\t\t\tawait commands.executeCommand('vscode.open', Uri.parse(params.url));\n\t\t\treturn {};\n\t\t});\n\n\t\tclient.onRequest(ProbeFailedRequest.type, (params) => {\n\t\t\tconst uri = client.protocol2CodeConverter.asUri(params.textDocument.uri);\n\t\t\tvalidator.add(uri);\n\t\t\tconst closeFeature = client.getFeature(DidCloseTextDocumentNotification.method);\n\t\t\tconst diagnosticsFeature = client.getFeature(DocumentDiagnosticRequest.method);\n\t\t\tfor (const document of Workspace.textDocuments) {\n\t\t\t\tif (document.uri.toString() === uri.toString()) {\n\t\t\t\t\tcloseFeature.getProvider(document)?.send(document).catch((error) => client.error(`Sending close notification failed`, error));\n\t\t\t\t\tdiagnosticsFeature?.getProvider(document)?.forget(document);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tconst notebookFeature = client.getFeature(NotebookDocumentSyncRegistrationType.method);\n\t\tif (notebookFeature !== undefined) {\n\t\t\tnotebookFeature.register({\n\t\t\t\tid: String(Date.now()),\n\t\t\t\tregisterOptions: {\n\t\t\t\t\tnotebookSelector: [{\n\t\t\t\t\t\tnotebook: { scheme: 'file' },\n\t\t\t\t\t\t// We dynamically filter using the filterCells callback.\n\t\t\t\t\t\t// To force the filtering match all cells for now.\n\t\t\t\t\t\t// See also https://github.com/microsoft/vscode-languageserver-node/issues/1017\n\t\t\t\t\t\tcells: [ { language: '*' } ]\n\t\t\t\t\t}]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tclient.onDidChangeState((event) => {\n\t\t\tif (event.newState === State.Starting) {\n\t\t\t\tclient.info(starting);\n\t\t\t\tserverRunning = undefined;\n\t\t\t} else if (event.newState === State.Running) {\n\t\t\t\tclient.info(running);\n\t\t\t\tserverRunning = true;\n\t\t\t} else {\n\t\t\t\tclient.info(stopped);\n\t\t\t\tserverRunning = false;\n\t\t\t}\n\t\t\tupdateStatusBar(undefined);\n\t\t});\n\n\t\tcontext.subscriptions.push(\n\t\t\tWindow.onDidChangeActiveTextEditor(() => {\n\t\t\t\tupdateStatusBar(undefined);\n\t\t\t}),\n\t\t\tWorkspace.onDidCloseTextDocument((document) => {\n\t\t\t\tconst uri = document.uri.toString();\n\t\t\t\tdocumentStatus.delete(uri);\n\t\t\t\tupdateLanguageStatusSelector();\n\t\t\t\tupdateStatusBar(undefined);\n\t\t\t}),\n\t\t\tcommands.registerCommand('eslint.executeAutofix', async () => {\n\t\t\t\tconst textEditor = Window.activeTextEditor;\n\t\t\t\tif (!textEditor) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst textDocument: VersionedTextDocumentIdentifier = {\n\t\t\t\t\turi: textEditor.document.uri.toString(),\n\t\t\t\t\tversion: textEditor.document.version\n\t\t\t\t};\n\t\t\t\tconst params: ExecuteCommandParams = {\n\t\t\t\t\tcommand: 'eslint.applyAllFixes',\n\t\t\t\t\targuments: [textDocument]\n\t\t\t\t};\n\t\t\t\tawait client.start();\n\t\t\t\tclient.sendRequest(ExecuteCommandRequest.type, params).then(undefined, () => {\n\t\t\t\t\tvoid Window.showErrorMessage('Failed to apply ESLint fixes to the document. Please consider opening an issue with steps to reproduce.');\n\t\t\t\t});\n\t\t\t})\n\t\t);\n\n\t\treturn [client, acknowledgePerformanceStatus];\n\n\t\tfunction getCurrentServerWorkingDirectory(): string {\n\t\t\tif (!Workspace.isTrusted) {\n\t\t\t\treturn process.cwd();\n\t\t\t}\n\t\t\tconst workspaceFolders = Workspace.workspaceFolders;\n\t\t\tif (workspaceFolders === undefined || workspaceFolders.length !== 1) {\n\t\t\t\treturn process.cwd();\n\t\t\t}\n\t\t\tconst uri = workspaceFolders[0].uri;\n\t\t\tif (uri.scheme !== 'file') {\n\t\t\t\treturn process.cwd();\n\t\t\t}\n\t\t\treturn uri.fsPath;\n\t\t}\n\n\t\tfunction createServerOptions(extensionUri: Uri): ServerOptions {\n\t\t\tconst serverModule = Uri.joinPath(extensionUri, 'server', 'out', 'eslintServer.js').fsPath;\n\t\t\tconst eslintConfig = Workspace.getConfiguration('eslint');\n\t\t\tconst debug = sanitize(eslintConfig.get<boolean>('debug', false) ?? false, 'boolean', false);\n\t\t\tconst runtime = sanitize(eslintConfig.get<string | null>('runtime', null) ?? undefined, 'string', undefined);\n\t\t\tconst execArgv = sanitize(eslintConfig.get<string[] | null>('execArgv', null) ?? undefined, 'string', undefined);\n\t\t\tconst nodeEnv = sanitize(eslintConfig.get<string | null>('nodeEnv', null) ?? undefined, 'string', undefined);\n\n\t\t\tlet env: { [key: string]: string | number | boolean } | undefined;\n\t\t\tif (debug) {\n\t\t\t\tenv = env || {};\n\t\t\t\tenv.DEBUG = 'eslint:*,-eslint:code-path,eslintrc:*';\n\t\t\t}\n\t\t\tif (nodeEnv !== undefined) {\n\t\t\t\tenv = env || {};\n\t\t\t\tenv.NODE_ENV = nodeEnv;\n\t\t\t}\n\t\t\tconst cwd = getCurrentServerWorkingDirectory();\n\t\t\tconst debugArgv = ['--nolazy', '--inspect=6011'];\n\t\t\tconst result: ServerOptions = {\n\t\t\t\trun: { module: serverModule, transport: TransportKind.ipc, runtime, options: { execArgv, cwd, env } },\n\t\t\t\tdebug: { module: serverModule, transport: TransportKind.ipc, runtime, options: { execArgv: execArgv !== undefined ? execArgv.concat(debugArgv) : debugArgv, cwd, env } }\n\t\t\t};\n\t\t\treturn result;\n\t\t}\n\n\t\tfunction sanitize<T, D>(value: T, type: 'bigint' | 'boolean' | 'function' | 'number' | 'object' | 'string' | 'symbol' | 'undefined', def: D): T | D {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\treturn value.filter(item => typeof item === type) as unknown as T;\n\t\t\t} else if (typeof value !== type) {\n\t\t\t\treturn def;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\n\t\tfunction createClientOptions(): LanguageClientOptions {\n\t\t\tconst clientOptions: LanguageClientOptions = {\n\t\t\t\tdocumentSelector: [{ scheme: 'file' }, { scheme: 'untitled' }],\n\t\t\t\trevealOutputChannelOn: RevealOutputChannelOn.Never,\n\t\t\t\tinitializationOptions: {\n\t\t\t\t},\n\t\t\t\tprogressOnInitialization: true,\n\t\t\t\tsynchronize: {\n\t\t\t\t\tfileEvents: [\n\t\t\t\t\t\tWorkspace.createFileSystemWatcher('**/.eslintr{c.js,c.cjs,c.yaml,c.yml,c,c.json}'),\n\t\t\t\t\t\tWorkspace.createFileSystemWatcher('**/eslint.config.{js,mjs,cjs,ts,mts,cts}'),\n\t\t\t\t\t\tWorkspace.createFileSystemWatcher('**/.eslintignore'),\n\t\t\t\t\t\tWorkspace.createFileSystemWatcher('**/package.json')\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\tinitializationFailedHandler: (error) => {\n\t\t\t\t\tclient.error('Server initialization failed.', error);\n\t\t\t\t\tclient.outputChannel.show(true);\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\terrorHandler: {\n\t\t\t\t\terror: (error, message, count) => {\n\t\t\t\t\t\treturn defaultErrorHandler.error(error, message, count);\n\t\t\t\t\t},\n\t\t\t\t\tclosed: () => {\n\t\t\t\t\t\tif (serverCalledProcessExit) {\n\t\t\t\t\t\t\treturn { action: CloseAction.DoNotRestart };\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn defaultErrorHandler.closed();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tdiagnosticPullOptions: {\n\t\t\t\t\tonChange: true,\n\t\t\t\t\tonSave: true,\n\t\t\t\t\tonFocus: true,\n\t\t\t\t\tfilter: (document, mode) => {\n\t\t\t\t\t\tconst config = Workspace.getConfiguration('eslint', document);\n\t\t\t\t\t\tconst run = config.get<RunValues>('run', 'onType');\n\t\t\t\t\t\tif (mode === DiagnosticPullMode.onType && run !== 'onType') {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t} else if (mode === DiagnosticPullMode.onSave && run !== 'onSave') {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn validator.check(document) === Validate.off;\n\t\t\t\t\t},\n\t\t\t\t\tonTabs: false\n\t\t\t\t},\n\t\t\t\tmiddleware: {\n\t\t\t\t\tdidOpen: async (document, next) => {\n\t\t\t\t\t\tif (Languages.match(packageJsonFilter, document) || Languages.match(configFileFilter, document) || validator.check(document) !== Validate.off) {\n\t\t\t\t\t\t\tconst result = next(document);\n\t\t\t\t\t\t\tsyncedDocuments.set(document.uri.toString(), document);\n\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tdidChange: async (event, next) => {\n\t\t\t\t\t\tif (syncedDocuments.has(event.document.uri.toString())) {\n\t\t\t\t\t\t\treturn next(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\twillSave: async (event, next) => {\n\t\t\t\t\t\tif (syncedDocuments.has(event.document.uri.toString())) {\n\t\t\t\t\t\t\treturn next(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\twillSaveWaitUntil: (event, next) => {\n\t\t\t\t\t\tif (syncedDocuments.has(event.document.uri.toString())) {\n\t\t\t\t\t\t\treturn next(event);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn Promise.resolve([]);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tdidSave: async (document, next) => {\n\t\t\t\t\t\tif (syncedDocuments.has(document.uri.toString())) {\n\t\t\t\t\t\t\treturn next(document);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tdidClose: async (document, next) => {\n\t\t\t\t\t\tconst uri = document.uri.toString();\n\t\t\t\t\t\tif (syncedDocuments.has(uri)) {\n\t\t\t\t\t\t\tsyncedDocuments.delete(uri);\n\t\t\t\t\t\t\treturn next(document);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tnotebooks: {\n\t\t\t\t\t\tdidOpen: (notebookDocument, cells, next) => {\n\t\t\t\t\t\t\tconst result = next(notebookDocument, cells);\n\t\t\t\t\t\t\tfor (const cell of cells) {\n\t\t\t\t\t\t\t\tsyncedDocuments.set(cell.document.uri.toString(), cell.document);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdidChange: (event, next) => {\n\t\t\t\t\t\t\tif (event.cells?.structure?.didOpen !== undefined) {\n\t\t\t\t\t\t\t\tfor (const open of event.cells.structure.didOpen) {\n\t\t\t\t\t\t\t\t\tsyncedDocuments.set(open.document.uri.toString(), open.document);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (event.cells?.structure?.didClose !== undefined) {\n\t\t\t\t\t\t\t\tfor (const closed of event.cells.structure.didClose) {\n\t\t\t\t\t\t\t\t\tsyncedDocuments.delete(closed.document.uri.toString());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn next(event);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdidClose: (document, cells, next) => {\n\t\t\t\t\t\t\tfor (const cell of cells) {\n\t\t\t\t\t\t\t\tconst key = cell.document.uri.toString();\n\t\t\t\t\t\t\t\tsyncedDocuments.delete(key);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn next(document, cells);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tprovideCodeActions: async (document, range, context, token, next): Promise<(Command | CodeAction)[] | null | undefined> => {\n\t\t\t\t\t\tif (!syncedDocuments.has(document.uri.toString())) {\n\t\t\t\t\t\t\treturn [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (context.only !== undefined && !supportedQuickFixKinds.has(context.only.value)) {\n\t\t\t\t\t\t\treturn [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (context.only === undefined && (!context.diagnostics || context.diagnostics.length === 0)) {\n\t\t\t\t\t\t\treturn [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst eslintDiagnostics: Diagnostic[] = [];\n\t\t\t\t\t\tfor (const diagnostic of context.diagnostics) {\n\t\t\t\t\t\t\tif (diagnostic.source === 'eslint') {\n\t\t\t\t\t\t\t\teslintDiagnostics.push(diagnostic);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (context.only === undefined && eslintDiagnostics.length === 0) {\n\t\t\t\t\t\t\treturn [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst newContext: CodeActionContext = Object.assign({}, context, { diagnostics: eslintDiagnostics });\n\t\t\t\t\t\tconst start = Date.now();\n\t\t\t\t\t\tconst result = await next(document, range, newContext, token);\n\t\t\t\t\t\tif (context.only?.value.startsWith('source.fixAll')) {\n\t\t\t\t\t\t\tlet performanceInfo = performanceStatus.get(document.languageId);\n\t\t\t\t\t\t\tif (performanceInfo === undefined) {\n\t\t\t\t\t\t\t\tperformanceInfo = PerformanceStatus.defaultValue;\n\t\t\t\t\t\t\t\tperformanceStatus.set(document.languageId, performanceInfo);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tperformanceInfo.firstReport = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tperformanceInfo.fixTime = Date.now() - start;\n\t\t\t\t\t\t\tupdateStatusBar(document);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t\tworkspace: {\n\t\t\t\t\t\tdidChangeWatchedFile: (event, next) => {\n\t\t\t\t\t\t\tvalidator.clear();\n\t\t\t\t\t\t\treturn next(event);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdidChangeConfiguration: async (sections, next) => {\n\t\t\t\t\t\t\tif (migration !== undefined && (sections === undefined || sections.length === 0)) {\n\t\t\t\t\t\t\t\tmigration.captureDidChangeSetting(() => {\n\t\t\t\t\t\t\t\t\treturn next(sections);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn next(sections);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tconfiguration: (params) => {\n\t\t\t\t\t\t\treturn readConfiguration(params);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tnotebookDocumentOptions: {\n\t\t\t\t\tfilterCells: (_notebookDocument, cells) => {\n\t\t\t\t\t\tconst result: NotebookCell[] = [];\n\t\t\t\t\t\tfor (const cell of cells) {\n\t\t\t\t\t\t\tconst document = cell.document;\n\t\t\t\t\t\t\tif (Languages.match(packageJsonFilter, document) || Languages.match(configFileFilter, document) || validator.check(document) !== Validate.off) {\n\t\t\t\t\t\t\t\tresult.push(cell);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn clientOptions;\n\t\t}\n\n\t\tasync function getPackageManager(uri: Uri) {\n\t\t\tconst userProvidedPackageManager:PackageManagers = Workspace.getConfiguration('eslint', uri).get('packageManager', 'npm');\n\t\t\tconst detectedPackageManager = await commands.executeCommand<PackageManagers>('npm.packageManager');\n\n\t\t\tif (userProvidedPackageManager === detectedPackageManager) {\n\t\t\t\treturn detectedPackageManager;\n\t\t\t}\n\t\t\tclient.warn(`Detected package manager(${detectedPackageManager}) differs from the one in the deprecated packageManager setting(${userProvidedPackageManager}). We will honor this setting until it is removed.`, {}, true);\n\t\t\treturn userProvidedPackageManager;\n\t\t}\n\n\t\tasync function readConfiguration(params: ConfigurationParams): Promise<(ConfigurationSettings | null)[]> {\n\t\t\tif (params.items === undefined) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst result: (ConfigurationSettings | null)[] = [];\n\t\t\tfor (const item of params.items) {\n\t\t\t\tif (item.section || !item.scopeUri) {\n\t\t\t\t\tresult.push(null);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst resource = client.protocol2CodeConverter.asUri(item.scopeUri);\n\t\t\t\tconst textDocument = getTextDocument(resource);\n\t\t\t\tconst config = Workspace.getConfiguration('eslint', textDocument ?? resource);\n\t\t\t\tconst workspaceFolder = resource.scheme === 'untitled'\n\t\t\t\t\t? Workspace.workspaceFolders?.[0]\n\t\t\t\t\t: Workspace.getWorkspaceFolder(resource);\n\t\t\t\tawait migrationSemaphore.lock(async () => {\n\t\t\t\t\tconst globalMigration = Workspace.getConfiguration('eslint').get('migration.2_x', 'on');\n\t\t\t\t\tif (notNow === false && globalMigration === 'on') {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tmigration = new Migration(resource);\n\t\t\t\t\t\t\tmigration.record();\n\t\t\t\t\t\t\tinterface Item extends MessageItem {\n\t\t\t\t\t\t\t\tid: 'yes' | 'no' | 'readme' | 'global' | 'local';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (migration.needsUpdate()) {\n\t\t\t\t\t\t\t\tconst folder = workspaceFolder?.name;\n\t\t\t\t\t\t\t\tconst file = path.basename(resource.fsPath);\n\t\t\t\t\t\t\t\tconst selected = await Window.showInformationMessage<Item>(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t`The ESLint 'autoFixOnSave' setting needs to be migrated to the new 'editor.codeActionsOnSave' setting`,\n\t\t\t\t\t\t\t\t\t\tfolder !== undefined ? `for the workspace folder: ${folder}.` : `for the file: ${file}.`,\n\t\t\t\t\t\t\t\t\t\t`For compatibility reasons the 'autoFixOnSave' remains and needs to be removed manually.`,\n\t\t\t\t\t\t\t\t\t\t`Do you want to migrate the setting?`\n\t\t\t\t\t\t\t\t\t].join(' '),\n\t\t\t\t\t\t\t\t\t{ modal: true},\n\t\t\t\t\t\t\t\t\t{ id: 'yes', title: 'Yes'},\n\t\t\t\t\t\t\t\t\t{ id: 'global', title: 'Never migrate Settings' },\n\t\t\t\t\t\t\t\t\t{ id: 'readme', title: 'Open Readme' },\n\t\t\t\t\t\t\t\t\t{ id: 'no', title: 'Not now', isCloseAffordance: true }\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tif (selected !== undefined) {\n\t\t\t\t\t\t\t\t\tif (selected.id === 'yes') {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tawait migration.update();\n\t\t\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\t\t\tmigrationFailed(client, error);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else if (selected.id === 'no') {\n\t\t\t\t\t\t\t\t\t\tnotNow = true;\n\t\t\t\t\t\t\t\t\t} else if (selected.id === 'global') {\n\t\t\t\t\t\t\t\t\t\tawait config.update('migration.2_x', 'off', ConfigurationTarget.Global);\n\t\t\t\t\t\t\t\t\t} else if (selected.id === 'readme') {\n\t\t\t\t\t\t\t\t\t\tnotNow = true;\n\t\t\t\t\t\t\t\t\t\tvoid Env.openExternal(Uri.parse('https://github.com/microsoft/vscode-eslint#settings-migration'));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tmigration = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst useFlatConfig = config.get<boolean | null>('useFlatConfig', null);\n\t\t\t\tconst settings: ConfigurationSettings = {\n\t\t\t\t\tvalidate: Validate.off,\n\t\t\t\t\tpackageManager: config.get<PackageManagers>('packageManager', 'npm'),\n\t\t\t\t\tuseESLintClass: config.get<boolean>('useESLintClass', false),\n\t\t\t\t\tuseFlatConfig: useFlatConfig === null ? undefined : useFlatConfig,\n\t\t\t\t\tuseRealpaths: config.get<boolean>('useRealpaths', false),\n\t\t\t\t\texperimental: {\n\t\t\t\t\t\tuseFlatConfig: config.get<boolean>('experimental.useFlatConfig', false),\n\t\t\t\t\t},\n\t\t\t\t\tcodeActionOnSave: {\n\t\t\t\t\t\tmode: CodeActionsOnSaveMode.all\n\t\t\t\t\t},\n\t\t\t\t\tformat: false,\n\t\t\t\t\tquiet: config.get<boolean>('quiet', false),\n\t\t\t\t\tonIgnoredFiles: ESLintSeverity.from(config.get<string>('onIgnoredFiles', ESLintSeverity.off)),\n\t\t\t\t\toptions: config.get<ESLintOptions>('options', {}),\n\t\t\t\t\trulesCustomizations: getRuleCustomizations(config, resource),\n\t\t\t\t\trun: config.get<RunValues>('run', 'onType'),\n\t\t\t\t\tproblems: {\n\t\t\t\t\t\tshortenToSingleLine: config.get<boolean>('problems.shortenToSingleLine', false),\n\t\t\t\t\t},\n\t\t\t\t\tnodePath: config.get<string | undefined>('nodePath', undefined) ?? null,\n\t\t\t\t\tworkingDirectory: undefined,\n\t\t\t\t\tworkspaceFolder: undefined,\n\t\t\t\t\tcodeAction: {\n\t\t\t\t\t\tdisableRuleComment: config.get<CodeActionSettings['disableRuleComment']>('codeAction.disableRuleComment', { enable: true, location: 'separateLine' as const, commentStyle: 'line' as const }),\n\t\t\t\t\t\tshowDocumentation: config.get<CodeActionSettings['showDocumentation']>('codeAction.showDocumentation', { enable: true })\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst document: TextDocument | undefined = syncedDocuments.get(item.scopeUri);\n\t\t\t\tif (document === undefined) {\n\t\t\t\t\tresult.push(settings);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (config.get<boolean>('enabled', true)) {\n\t\t\t\t\tsettings.validate = validator.check(document);\n\t\t\t\t}\n\t\t\t\tif (settings.validate !== Validate.off) {\n\t\t\t\t\tsettings.format = !!config.get<boolean>('format.enable', false);\n\t\t\t\t\tsettings.codeActionOnSave.mode = CodeActionsOnSaveMode.from(config.get<CodeActionsOnSaveMode>('codeActionsOnSave.mode', CodeActionsOnSaveMode.all));\n\t\t\t\t\tsettings.codeActionOnSave.rules = CodeActionsOnSaveRules.from(config.get<string[] | null>('codeActionsOnSave.rules', null));\n\t\t\t\t\tsettings.codeActionOnSave.options = CodeActionsOnSaveOptions.from(config.get<ESLintOptions | null>('codeActionsOnSave.options', null));\n\t\t\t\t}\n\t\t\t\tif (workspaceFolder !== undefined) {\n\t\t\t\t\tsettings.workspaceFolder = {\n\t\t\t\t\t\tname: workspaceFolder.name,\n\t\t\t\t\t\turi: client.code2ProtocolConverter.asUri(workspaceFolder.uri)\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst workingDirectories = config.get<(string | LegacyDirectoryItem | DirectoryItem | PatternItem | ModeItem)[] | undefined>('workingDirectories', undefined);\n\t\t\t\tif (Array.isArray(workingDirectories)) {\n\t\t\t\t\tlet workingDirectory: ModeItem | DirectoryItem | undefined = undefined;\n\t\t\t\t\tconst workspaceFolderPath = workspaceFolder && workspaceFolder.uri.scheme === 'file' ? workspaceFolder.uri.fsPath : undefined;\n\t\t\t\t\tfor (const entry of workingDirectories) {\n\t\t\t\t\t\tlet directory: string | undefined;\n\t\t\t\t\t\tlet pattern: string | undefined;\n\t\t\t\t\t\tlet noCWD = false;\n\t\t\t\t\t\tif (Is.string(entry)) {\n\t\t\t\t\t\t\tdirectory = entry;\n\t\t\t\t\t\t} else if (LegacyDirectoryItem.is(entry)) {\n\t\t\t\t\t\t\tdirectory = entry.directory;\n\t\t\t\t\t\t\tnoCWD = !entry.changeProcessCWD;\n\t\t\t\t\t\t} else if (DirectoryItem.is(entry)) {\n\t\t\t\t\t\t\tdirectory = entry.directory;\n\t\t\t\t\t\t\tif (entry['!cwd'] !== undefined) {\n\t\t\t\t\t\t\t\tnoCWD = entry['!cwd'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (PatternItem.is(entry)) {\n\t\t\t\t\t\t\tpattern = entry.pattern;\n\t\t\t\t\t\t\tif (entry['!cwd'] !== undefined) {\n\t\t\t\t\t\t\t\tnoCWD = entry['!cwd'];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (ModeItem.is(entry)) {\n\t\t\t\t\t\t\tworkingDirectory = entry;\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet itemValue: string | undefined;\n\t\t\t\t\t\tif (directory !== undefined || pattern !== undefined) {\n\t\t\t\t\t\t\tconst filePath = document.uri.scheme === 'file' ? document.uri.fsPath : undefined;\n\t\t\t\t\t\t\tif (filePath !== undefined) {\n\t\t\t\t\t\t\t\tif (directory !== undefined) {\n\t\t\t\t\t\t\t\t\tdirectory = toOSPath(directory);\n\t\t\t\t\t\t\t\t\tif (!path.isAbsolute(directory) && workspaceFolderPath !== undefined) {\n\t\t\t\t\t\t\t\t\t\tdirectory = path.join(workspaceFolderPath, directory);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (directory.charAt(directory.length - 1) !== path.sep) {\n\t\t\t\t\t\t\t\t\t\tdirectory = directory + path.sep;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (filePath.startsWith(directory)) {\n\t\t\t\t\t\t\t\t\t\titemValue = directory;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (pattern !== undefined && pattern.length > 0) {\n\t\t\t\t\t\t\t\t\tif (!path.posix.isAbsolute(pattern) && workspaceFolderPath !== undefined) {\n\t\t\t\t\t\t\t\t\t\tpattern = path.posix.join(toPosixPath(workspaceFolderPath), pattern);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (pattern.charAt(pattern.length - 1) !== path.posix.sep) {\n\t\t\t\t\t\t\t\t\t\tpattern = pattern + path.posix.sep;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst regExp: RegExp | undefined = convert2RegExp(pattern);\n\t\t\t\t\t\t\t\t\tif (regExp !== undefined) {\n\t\t\t\t\t\t\t\t\t\tconst match = regExp.exec(filePath);\n\t\t\t\t\t\t\t\t\t\tif (match !== null && match.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\titemValue = match[0];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (itemValue !== undefined) {\n\t\t\t\t\t\t\tif (workingDirectory === undefined || ModeItem.is(workingDirectory)) {\n\t\t\t\t\t\t\t\tworkingDirectory = { directory: itemValue, '!cwd': noCWD };\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (workingDirectory.directory.length < itemValue.length) {\n\t\t\t\t\t\t\t\t\tworkingDirectory.directory = itemValue;\n\t\t\t\t\t\t\t\t\tworkingDirectory['!cwd'] = noCWD;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsettings.workingDirectory = workingDirectory;\n\t\t\t\t}\n\t\t\t\tresult.push(settings);\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tfunction parseRulesCustomizations(rawConfig: unknown): RuleCustomization[] {\n\t\t\tif (!rawConfig || !Array.isArray(rawConfig)) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn rawConfig.map(rawValue => {\n\t\t\t\tif (typeof rawValue.severity === 'string' && typeof rawValue.rule === 'string') {\n\t\t\t\t\tif (typeof rawValue.fixable === 'boolean') {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tseverity: rawValue.severity,\n\t\t\t\t\t\t\trule: rawValue.rule,\n\t\t\t\t\t\t\tfixable: rawValue.fixable\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tseverity: rawValue.severity,\n\t\t\t\t\t\t\trule: rawValue.rule,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn undefined;\n\t\t\t}).filter((value): value is RuleCustomization => !!value);\n\t\t}\n\n\t\tfunction getRuleCustomizations(config: WorkspaceConfiguration, uri: Uri): RuleCustomization[] {\n\t\t\tlet customizations: RuleCustomization[] | undefined = undefined;\n\t\t\tif (uri.scheme === 'vscode-notebook-cell') {\n\t\t\t\tcustomizations = config.get<RuleCustomization[] | undefined>('notebooks.rules.customizations', undefined);\n\t\t\t}\n\t\t\tif (customizations === undefined || customizations === null) {\n\t\t\t\tcustomizations = config.get<RuleCustomization[] | undefined>('rules.customizations');\n\t\t\t}\n\t\t\treturn parseRulesCustomizations(customizations);\n\t\t}\n\n\t\tfunction getTextDocument(uri: Uri): TextDocument | undefined {\n\t\t\treturn syncedDocuments.get(uri.toString());\n\t\t}\n\n\t\tfunction updateDocumentStatus(params: StatusParams): void {\n\t\t\tconst needsSelectorUpdate = !documentStatus.has(params.uri);\n\t\t\tdocumentStatus.set(params.uri, { state: params.state });\n\t\t\tif (needsSelectorUpdate) {\n\t\t\t\tupdateLanguageStatusSelector();\n\t\t\t}\n\t\t\tconst textDocument = syncedDocuments.get(params.uri);\n\t\t\tif (textDocument !== undefined) {\n\t\t\t\tlet performanceInfo = performanceStatus.get(textDocument.languageId);\n\t\t\t\tif (performanceInfo === undefined) {\n\t\t\t\t\tperformanceInfo = PerformanceStatus.defaultValue;\n\t\t\t\t\tperformanceStatus.set(textDocument.languageId, performanceInfo);\n\t\t\t\t} else {\n\t\t\t\t\tperformanceInfo.firstReport = false;\n\t\t\t\t}\n\t\t\t\tperformanceInfo.validationTime = params.validationTime ?? 0;\n\t\t\t}\n\t\t\tupdateStatusBar(textDocument);\n\t\t}\n\n\t\tfunction updateLanguageStatusSelector(): void {\n\t\t\tconst selector: VDocumentFilter[] = [];\n\t\t\tfor (const key of documentStatus.keys()) {\n\t\t\t\tconst uri: Uri = Uri.parse(key);\n\t\t\t\tconst document = syncedDocuments.get(key);\n\t\t\t\tconst filter: VDocumentFilter = {\n\t\t\t\t\tscheme: uri.scheme,\n\t\t\t\t\tpattern: uri.fsPath,\n\t\t\t\t\tlanguage: document?.languageId\n\t\t\t\t};\n\t\t\t\tselector.push(filter);\n\t\t\t}\n\t\t\tlanguageStatus.selector = selector;\n\t\t}\n\n\t\tfunction acknowledgePerformanceStatus(): void {\n\t\t\tconst activeTextDocument = Window.activeTextEditor?.document;\n\t\t\tif (activeTextDocument === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst performanceInfo = performanceStatus.get(activeTextDocument.languageId);\n\t\t\tif (performanceInfo === undefined || performanceInfo.reported === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tperformanceInfo.acknowledged = true;\n\t\t\tupdateStatusBar(activeTextDocument);\n\t\t}\n\n\t\tfunction updateStatusBar(textDocument: TextDocument | undefined) {\n\t\t\tconst activeTextDocument = textDocument ?? Window.activeTextEditor?.document;\n\t\t\tif (activeTextDocument === undefined || serverRunning === false) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst performanceInfo = performanceStatus.get(activeTextDocument.languageId);\n\t\t\tconst statusInfo = documentStatus.get(activeTextDocument.uri.toString()) ?? { state: Status.ok};\n\n\t\t\tlet validationBudget = Workspace.getConfiguration('eslint', activeTextDocument).get<TimeBudget>('timeBudget.onValidation', { warn: 4000, error: 8000 });\n\t\t\tif (validationBudget.warn < 0 || validationBudget.error < 0) {\n\t\t\t\tvalidationBudget = {\n\t\t\t\t\twarn: validationBudget.warn < 0 ? Number.MAX_VALUE : validationBudget.warn,\n\t\t\t\t\terror: validationBudget.error < 0 ? Number.MAX_VALUE : validationBudget.error\n\t\t\t\t};\n\t\t\t}\n\t\t\tlet fixesBudget = Workspace.getConfiguration('eslint', activeTextDocument).get<TimeBudget>('timeBudget.onFixes', { warn: 3000, error: 6000 });\n\t\t\tif (fixesBudget.warn < 0 || fixesBudget.error < 0) {\n\t\t\t\tfixesBudget = {\n\t\t\t\t\twarn: fixesBudget.warn < 0 ? Number.MAX_VALUE : fixesBudget.warn,\n\t\t\t\t\terror: fixesBudget.error < 0 ? Number.MAX_VALUE : fixesBudget.error\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tlet severity: LanguageStatusSeverity = LanguageStatusSeverity.Information;\n\t\t\tconst [timeTaken, detail, message, timeBudget] = function(): [number, string | undefined, string, TimeBudget] {\n\t\t\t\tif (performanceInfo === undefined || performanceInfo.firstReport || performanceInfo.acknowledged) {\n\t\t\t\t\treturn [-1, undefined, '', { warn: 0, error: 0 }];\n\t\t\t\t}\n\t\t\t\tif ((performanceInfo.fixTime) > (performanceInfo.validationTime)) {\n\t\t\t\t\tconst timeTaken = Math.max(performanceInfo.fixTime, performanceInfo.reported);\n\t\t\t\t\treturn [\n\t\t\t\t\t\ttimeTaken,\n\t\t\t\t\t\ttimeTaken > fixesBudget.warn ? `Computing fixes took ${timeTaken}ms` : undefined,\n\t\t\t\t\t\t`Computing fixes during save for file ${activeTextDocument.uri.toString()} during save took ${timeTaken}ms. Please check the ESLint rules for performance issues.`,\n\t\t\t\t\t\tfixesBudget\n\t\t\t\t\t];\n\t\t\t\t} else if ((performanceInfo.validationTime) > 0) {\n\t\t\t\t\tconst timeTaken = Math.max(performanceInfo.validationTime, performanceInfo.reported);\n\t\t\t\t\treturn [\n\t\t\t\t\t\ttimeTaken,\n\t\t\t\t\t\ttimeTaken > validationBudget.warn ? `Validation took ${timeTaken}ms` : undefined,\n\t\t\t\t\t\t`Linting file ${activeTextDocument.uri.toString()} took ${timeTaken}ms. Please check the ESLint rules for performance issues.`,\n\t\t\t\t\t\tvalidationBudget\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\treturn [-1, undefined, '', { warn: 0, error: 0 }];\n\t\t\t}();\n\n\t\t\tswitch (statusInfo.state) {\n\t\t\t\tcase Status.ok:\n\t\t\t\t\tbreak;\n\t\t\t\tcase Status.warn:\n\t\t\t\t\tseverity = LanguageStatusSeverity.Warning;\n\t\t\t\t\tbreak;\n\t\t\t\tcase Status.error:\n\t\t\t\t\tseverity = LanguageStatusSeverity.Error;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (severity === LanguageStatusSeverity.Information && timeTaken > timeBudget.warn) {\n\t\t\t\tseverity = LanguageStatusSeverity.Warning;\n\t\t\t}\n\t\t\tif (severity === LanguageStatusSeverity.Warning && timeTaken > timeBudget.error) {\n\t\t\t\tseverity = LanguageStatusSeverity.Error;\n\t\t\t}\n\t\t\tif (timeTaken > timeBudget.warn && performanceInfo !== undefined) {\n\t\t\t\tif (timeTaken > performanceInfo.reported) {\n\t\t\t\t\tif (timeTaken > timeBudget.error) {\n\t\t\t\t\t\tclient.error(message);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclient.warn(message);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (detail !== undefined && languageStatus.detail !== detail) {\n\t\t\t\tlanguageStatus.detail = detail;\n\t\t\t}\n\t\t\tif (languageStatus.severity !== severity) {\n\t\t\t\tlanguageStatus.severity = severity;\n\t\t\t}\n\t\t\tif (performanceInfo !== undefined) {\n\t\t\t\tperformanceInfo.reported = Math.max(performanceInfo.reported, timeTaken);\n\t\t\t}\n\t\t}\n\t}\n}\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\nimport * as path from 'path';\r\nimport * as fs from 'fs';\r\nimport {\r\n\tworkspace as Workspace, window as Window, commands as Commands, Disposable, ExtensionContext, TextDocument\r\n} from 'vscode';\r\n\r\nimport {\r\n\tDocumentDiagnosticRequest,\r\n\tLanguageClient,\r\n\tState\r\n} from 'vscode-languageclient/node';\r\n\r\nimport { Validate } from './shared/settings';\r\n\r\nimport { findEslint } from './node-utils';\r\nimport { pickFolder } from './vscode-utils';\r\nimport { TaskProvider } from './tasks';\r\nimport { ESLintClient, Validator } from './client';\r\n\r\nfunction createDefaultConfiguration(): void {\r\n\tconst folders = Workspace.workspaceFolders;\r\n\tif (!folders) {\r\n\t\tvoid Window.showErrorMessage('An ESLint configuration can only be generated if VS Code is opened on a workspace folder.');\r\n\t\treturn;\r\n\t}\r\n\tconst noConfigFolders = folders.filter(folder => {\r\n\t\tconst configFiles = ['.eslintrc.js', '.eslintrc.cjs', '.eslintrc.yaml', '.eslintrc.yml', '.eslintrc', '.eslintrc.json'];\r\n\t\tfor (const configFile of configFiles) {\r\n\t\t\tif (fs.existsSync(path.join(folder.uri.fsPath, configFile))) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tif (noConfigFolders.length === 0) {\r\n\t\tif (folders.length === 1) {\r\n\t\t\tvoid Window.showInformationMessage('The workspace already contains an ESLint configuration file.');\r\n\t\t} else {\r\n\t\t\tvoid Window.showInformationMessage('All workspace folders already contain an ESLint configuration file.');\r\n\t\t}\r\n\t\treturn;\r\n\t}\r\n\tvoid pickFolder(noConfigFolders, 'Select a workspace folder to generate a ESLint configuration for').then(async (folder) => {\r\n\t\tif (!folder) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst folderRootPath = folder.uri.fsPath;\r\n\t\tconst terminal = Window.createTerminal({\r\n\t\t\tname: `ESLint init`,\r\n\t\t\tcwd: folderRootPath\r\n\t\t});\r\n\t\tconst eslintCommand = await findEslint(folderRootPath);\r\n\t\tterminal.sendText(`${eslintCommand} --init`);\r\n\t\tterminal.show();\r\n\t});\r\n}\r\n\r\nlet onActivateCommands: Disposable[] | undefined;\r\nlet client: LanguageClient;\r\nlet acknowledgePerformanceStatus: () => void;\r\nconst taskProvider: TaskProvider = new TaskProvider();\r\nconst validator: Validator = new Validator();\r\n\r\nexport function activate(context: ExtensionContext) {\r\n\r\n\tfunction didOpenTextDocument(textDocument: TextDocument) {\r\n\t\tif (activated) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (validator.check(textDocument) !== Validate.off) {\r\n\t\t\topenListener.dispose();\r\n\t\t\tconfigurationListener.dispose();\r\n\t\t\tactivated = true;\r\n\t\t\trealActivate(context);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction configurationChanged() {\r\n\t\tif (activated) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tfor (const textDocument of Workspace.textDocuments) {\r\n\t\t\tif (validator.check(textDocument) !== Validate.off) {\r\n\t\t\t\topenListener.dispose();\r\n\t\t\t\tconfigurationListener.dispose();\r\n\t\t\t\tactivated = true;\r\n\t\t\t\trealActivate(context);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlet activated: boolean = false;\r\n\tconst openListener: Disposable = Workspace.onDidOpenTextDocument(didOpenTextDocument);\r\n\tconst configurationListener: Disposable = Workspace.onDidChangeConfiguration(configurationChanged);\r\n\r\n\tconst notValidating = () => {\r\n\t\tconst enabled = Workspace.getConfiguration('eslint', Window.activeTextEditor?.document).get('enable', true);\r\n\t\tif (!enabled) {\r\n\t\t\tvoid Window.showInformationMessage(`ESLint is not running because the deprecated setting 'eslint.enable' is set to false. Remove the setting and use the extension disablement feature.`);\r\n\t\t} else {\r\n\t\t\tvoid Window.showInformationMessage('ESLint is not running. By default only TypeScript and JavaScript files are validated. If you want to validate other file types please specify them in the \\'eslint.probe\\' setting.');\r\n\t\t}\r\n\t};\r\n\tonActivateCommands = [\r\n\t\tCommands.registerCommand('eslint.executeAutofix', notValidating),\r\n\t\tCommands.registerCommand('eslint.showOutputChannel', notValidating),\r\n\t\tCommands.registerCommand('eslint.migrateSettings', notValidating),\r\n\t\tCommands.registerCommand('eslint.restart', notValidating),\r\n\t\tCommands.registerCommand('eslint.revalidate', notValidating)\r\n\t];\r\n\r\n\tcontext.subscriptions.push(\r\n\t\tCommands.registerCommand('eslint.createConfig', createDefaultConfiguration)\r\n\t);\r\n\r\n\ttaskProvider.start();\r\n\tconfigurationChanged();\r\n}\r\n\r\nfunction realActivate(context: ExtensionContext): void {\r\n\r\n\tif (onActivateCommands) {\r\n\t\tonActivateCommands.forEach(command => command.dispose());\r\n\t\tonActivateCommands = undefined;\r\n\t}\r\n\r\n\t[client, acknowledgePerformanceStatus] = ESLintClient.create(context, validator);\r\n\r\n\tcontext.subscriptions.push(\r\n\t\tCommands.registerCommand('eslint.showOutputChannel', async () => {\r\n\t\t\tclient.outputChannel.show();\r\n\t\t\tacknowledgePerformanceStatus();\r\n\t\t}),\r\n\t\tCommands.registerCommand('eslint.migrateSettings', () => {\r\n\t\t\tvoid ESLintClient.migrateSettings(client);\r\n\t\t}),\r\n\t\tCommands.registerCommand('eslint.restart', async () => {\r\n\t\t\t// If the previous start failed, we need to create a new client to pick up\r\n\t\t\t// a potentially updated environment (e.g., PATH changes from direnv).\r\n\t\t\tif (client.state === State.StartFailed) {\r\n\t\t\t\tawait client.dispose();\r\n\t\t\t\t[client, acknowledgePerformanceStatus] = ESLintClient.create(context, validator);\r\n\t\t\t\treturn client.start().catch((error) => {\r\n\t\t\t\t\tclient.error(`Starting the server failed.`, error, 'force');\r\n\t\t\t\t\tconst message = typeof error === 'string' ? error : typeof error.message === 'string' ? error.message : undefined;\r\n\t\t\t\t\tif (message !== undefined && message.indexOf('ENOENT') !== -1) {\r\n\t\t\t\t\t\tclient.info(`PATH environment variable is: ${process.env['PATH']}`);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\treturn client.restart().catch((error) => client.error(`Restarting client failed`, error, 'force'));\r\n\t\t\t}\r\n\t\t}),\r\n\t\tCommands.registerCommand('eslint.revalidate', () => {\r\n\t\t\tclient.getFeature(DocumentDiagnosticRequest.method).refresh();\r\n\t\t})\r\n\t);\r\n\r\n\tclient.start().catch((error) => {\r\n\t\tclient.error(`Starting the server failed.`, error, 'force');\r\n\t\tconst message = typeof error === 'string' ? error : typeof error.message === 'string' ? error.message : undefined;\r\n\t\tif (message !== undefined && message.indexOf('ENOENT') !== -1) {\r\n\t\t\tclient.info(`PATH environment variable is: ${process.env['PATH']}`);\r\n\t\t}\r\n\t});\r\n}\r\n\r\nexport function deactivate(): Promise<void> {\r\n\tif (onActivateCommands !== undefined) {\r\n\t\tonActivateCommands.forEach(command => command.dispose());\r\n\t}\r\n\ttaskProvider.dispose();\r\n\treturn client !== undefined ? client.stop() : Promise.resolve();\r\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\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nexport namespace Is {\n\tconst toString = Object.prototype.toString;\n\n\texport function boolean(value: any): value is boolean {\n\t\treturn value === true || value === false;\n\t}\n\n\texport function string(value: any): value is string {\n\t\treturn toString.call(value) === '[object String]';\n\t}\n\n\texport function objectLiteral(value: any): value is object {\n\t\treturn value !== null && value !== undefined && !Array.isArray(value) && typeof value === 'object';\n\t}\n}\n\n/**\n * Converts a path to the OS representation,\n * @param path the path to convert.\n * @returns the converted path.\n */\nexport function toOSPath(path: string): string {\n\tif (process.platform === 'win32') {\n\t\tpath = path.replace(/^\\/(\\w)\\//, '$1:\\\\');\n\t\treturn path.replace(/\\//g, '\\\\');\n\t} else {\n\t\treturn path;\n\t}\n}\n\n/**\n * Converts a path to a posix path.\n * @param path the path to convert.\n * @returns the posix path.\n */\nexport function toPosixPath(path: string): string {\n\tif (process.platform !== 'win32') {\n\t\treturn path;\n\t}\n\treturn path.replace(/\\\\/g, '/');\n}\n\n/**\n * Find a ESLint installation at a given root path.\n * @param rootPath the root path.\n * @returns the eslint installation or the unresolved command eslint.\n */\nexport async function findEslint(rootPath: string): Promise<string> {\n\tconst platform = process.platform;\n\tif (platform === 'win32' && await existFile(path.join(rootPath, 'node_modules', '.bin', 'eslint.cmd'))) {\n\t\treturn path.join('.', 'node_modules', '.bin', 'eslint.cmd');\n\t} else if ((platform === 'linux' || platform === 'darwin') && await existFile(path.join(rootPath, 'node_modules', '.bin', 'eslint'))) {\n\t\treturn path.join('.', 'node_modules', '.bin', 'eslint');\n\t} else {\n\t\treturn 'eslint';\n\t}\n}\n\nfunction existFile(file: string): Promise<boolean> {\n\treturn new Promise<boolean>((resolve, _reject) => {\n\t\tfs.stat(file, (error, stats) => {\n\t\t\tif (error !== null) {\n\t\t\t\tresolve(false);\n\t\t\t} else {\n\t\t\t\tresolve(stats.isFile());\n\t\t\t}\n\t\t});\n\t});\n}\n\n// ----- Glob pattern parser\n\nenum NodeType {\n\ttext = 'text',\n\tseparator = 'separator',\n\tbrace = 'brace',\n\tbracket = 'bracket',\n\tquestionMark = 'questionMark',\n\tstar = 'star',\n\tglobStar = 'globStar'\n}\n\n// Text inside the pattern\ntype TextNode = {\n\ttype: NodeType.text;\n\tvalue: string;\n};\n\n// A separator\ntype SeparatorNode = {\n\ttype: NodeType.separator;\n};\n\n// The character ?\ntype QuestionMarkNode = {\n\ttype: NodeType.questionMark;\n};\n\n// The character *\ntype StarNode = {\n\ttype: NodeType.star;\n};\n\n// The sequence **\ntype GlobStarNode = {\n\ttype: NodeType.globStar;\n};\n\n// A bracket\ntype BracketNode = {\n\ttype: NodeType.bracket;\n\tvalue: string;\n};\n\ntype BraceAlternative = TextNode | QuestionMarkNode | StarNode | BracketNode | BraceNode;\ntype BraceNode = {\n\ttype: NodeType.brace;\n\talternatives: BraceAlternative[];\n};\n\ntype Node = TextNode | SeparatorNode | QuestionMarkNode | StarNode | GlobStarNode | BracketNode | BraceNode;\n\nfunction escapeRegExpCharacters(value: string): string {\n\treturn value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, '\\\\$&');\n}\n\n/**\n * A parser to parse a pattern in string form.\n */\nclass PatternParser {\n\n\tprivate value: string;\n\tprivate index: number;\n\n\tprivate mode: 'pattern' | 'brace';\n\tprivate stopChar: string | undefined;\n\n\tconstructor(value: string, mode: 'pattern' | 'brace' = 'pattern') {\n\t\tthis.value = value;\n\t\tthis.index = 0;\n\t\tthis.mode = mode;\n\t\tthis.stopChar = mode === 'pattern' ? undefined : '}';\n\t}\n\n\tprivate makeTextNode(start: number): Node {\n\t\treturn { type: NodeType.text, value: escapeRegExpCharacters(this.value.substring(start, this.index)) };\n\t}\n\n\tnext(): Node | undefined {\n\t\tconst start = this.index;\n\t\tlet ch: string | undefined;\n\t\twhile((ch = this.value[this.index]) !== this.stopChar) {\n\t\t\tswitch (ch) {\n\t\t\t\tcase '/':\n\t\t\t\t\tif (start < this.index) {\n\t\t\t\t\t\treturn this.makeTextNode(start);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.index++;\n\t\t\t\t\t\treturn { type: NodeType.separator };\n\t\t\t\t\t}\n\t\t\t\tcase '?':\n\t\t\t\t\tthis.index++;\n\t\t\t\t\treturn { type: NodeType.questionMark };\n\t\t\t\tcase '*':\n\t\t\t\t\tif (this.value[this.index + 1] === '*') {\n\t\t\t\t\t\tthis.index += 2;\n\t\t\t\t\t\treturn { type: NodeType.globStar };\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.index++;\n\t\t\t\t\t\treturn {type: NodeType.star };\n\t\t\t\t\t}\n\t\t\t\tcase '{':\n\t\t\t\t\tif (start < this.index) {\n\t\t\t\t\t\treturn this.makeTextNode(start);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst bracketParser = new PatternParser(this.value.substring(this.index + 1), 'brace');\n\t\t\t\t\t\tconst alternatives: BraceAlternative[] = [];\n\t\t\t\t\t\tlet node: Node | undefined;\n\t\t\t\t\t\twhile ((node = bracketParser.next()) !== undefined) {\n\t\t\t\t\t\t\tif (node.type === NodeType.globStar || node.type === NodeType.separator) {\n\t\t\t\t\t\t\t\tthrow new Error(`Invalid glob pattern ${this.index}. Stopped at ${this.index}`);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\talternatives.push(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.index= this.index + bracketParser.index + 2;\n\t\t\t\t\t\treturn { type: NodeType.brace, alternatives: alternatives };\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase ',':\n\t\t\t\t\tif (this.mode === 'brace') {\n\t\t\t\t\t\tif (start < this.index) {\n\t\t\t\t\t\t\tconst result = this.makeTextNode(start);\n\t\t\t\t\t\t\tthis.index++;\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.index++;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '[':\n\t\t\t\t\t// eslint-disable-next-line no-case-declarations\n\t\t\t\t\tconst buffer: string[] = [];\n\t\t\t\t\tthis.index++;\n\t\t\t\t\t// eslint-disable-next-line no-case-declarations\n\t\t\t\t\tconst firstIndex = this.index;\n\t\t\t\t\twhile (this.index < this.value.length) {\n\t\t\t\t\t\tconst ch = this.value[this.index];\n\t\t\t\t\t\tif (this.index === firstIndex) {\n\t\t\t\t\t\t\tswitch (ch) {\n\t\t\t\t\t\t\t\tcase ']':\n\t\t\t\t\t\t\t\t\tbuffer.push(ch);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '!':\n\t\t\t\t\t\t\t\tcase '^':\n\t\t\t\t\t\t\t\t\tbuffer.push('^');\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tbuffer.push(escapeRegExpCharacters(ch));\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (ch === '-') {\n\t\t\t\t\t\t\tbuffer.push(ch);\n\t\t\t\t\t\t} else if (ch === ']') {\n\t\t\t\t\t\t\tthis.index++;\n\t\t\t\t\t\t\treturn { type: NodeType.bracket, value: buffer.join('') };\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbuffer.push(escapeRegExpCharacters(ch));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.index++;\n\t\t\t\t\t}\n\t\t\t\t\tthrow new Error(`Invalid glob pattern ${this.index}. Stopped at ${this.index}`);\n\t\t\t\tdefault:\n\t\t\t\t\tthis.index++;\n\t\t\t}\n\t\t}\n\t\treturn start === this.index ? undefined : this.makeTextNode(start);\n\t}\n}\n\n/**\n * Converts a pattern in string from to a regular expression.\n *\n * @param pattern the pattern as a string to be converted\n * @returns the regular expression or undefined if the pattern can't be converted.\n */\nexport function convert2RegExp(pattern: string): RegExp | undefined {\n\tconst separator = process.platform === 'win32' ? '\\\\\\\\' : '\\\\/';\n\tconst fileChar = `[^${separator}]`;\n\tfunction convertNode(node: Node): string {\n\t\tswitch (node.type) {\n\t\t\tcase NodeType.separator:\n\t\t\t\treturn separator;\n\t\t\t\tbreak;\n\t\t\tcase NodeType.text:\n\t\t\t\treturn node.value;\n\t\t\t\tbreak;\n\t\t\tcase NodeType.questionMark:\n\t\t\t\treturn fileChar;\n\t\t\t\tbreak;\n\t\t\tcase NodeType.star:\n\t\t\t\treturn `${fileChar}*?`;\n\t\t\t\tbreak;\n\t\t\tcase NodeType.globStar:\n\t\t\t\treturn `(?:${fileChar}|(?:(?:${fileChar}${separator})+${fileChar}))*?`;\n\t\t\tcase NodeType.bracket:\n\t\t\t\treturn `[${node.value}]`;\n\t\t\tcase NodeType.brace: {\n\t\t\t\tconst buffer: string[] = [];\n\t\t\t\tfor (const child of node.alternatives) {\n\t\t\t\t\tbuffer.push(convertNode(child));\n\t\t\t\t}\n\t\t\t\treturn `(?:${buffer.join('|')})`;\n\t\t\t}\n\t\t}\n\t}\n\n\ttry {\n\t\tconst buffer: string[] = ['^'];\n\n\t\tconst parser = new PatternParser(pattern);\n\t\tlet node: Node | undefined;\n\t\twhile ((node = parser.next()) !== undefined) {\n\t\t\tbuffer.push(convertNode(node));\n\t\t}\n\t\treturn buffer.length > 0 ? new RegExp(buffer.join('')) : undefined;\n\t} catch (err) {\n\t\tconsole.error(err);\n\t\treturn undefined;\n\t}\n}\n\n// ----- semaphore implementation\n\n/**\n * A piece of work.\n */\ninterface Thunk<T> {\n\t(): T;\n}\n\n/**\n * A thunk waiting in the queue.\n */\ninterface Waiting<T> {\n\tthunk: Thunk<T | PromiseLike<T>>;\n\tresolve: (value: T | PromiseLike<T>) => void;\n\treject: (reason?: any) => void;\n}\n\n/**\n * A semaphore implementation.\n */\nexport class Semaphore<T = void> {\n\n\tprivate _capacity: number;\n\tprivate _active: number;\n\tprivate _waiting: Waiting<T>[];\n\n\tpublic constructor(capacity: number = 1) {\n\t\tif (capacity <= 0) {\n\t\t\tthrow new Error('Capacity must be greater than 0');\n\t\t}\n\t\tthis._capacity = capacity;\n\t\tthis._active = 0;\n\t\tthis._waiting = [];\n\t}\n\n\t/**\n\t * Takes a lock and executes the thunk.\n\t * @param thunk the thunk to execute\n\t * @returns a promise for the result of the thunk\n\t */\n\tpublic lock(thunk: () => T | PromiseLike<T>): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis._waiting.push({ thunk, resolve, reject });\n\t\t\tthis.runNext();\n\t\t});\n\t}\n\n\t/**\n\t * Returns the numbers of the active thunks.\n\t */\n\tpublic get active(): number {\n\t\treturn this._active;\n\t}\n\n\tprivate runNext(): void {\n\t\tif (this._waiting.length === 0 || this._active === this._capacity) {\n\t\t\treturn;\n\t\t}\n\t\tsetImmediate(() => this.doRunNext());\n\t}\n\n\tprivate doRunNext(): void {\n\t\tif (this._waiting.length === 0 || this._active === this._capacity) {\n\t\t\treturn;\n\t\t}\n\t\tconst next = this._waiting.shift()!;\n\t\tthis._active++;\n\t\tif (this._active > this._capacity) {\n\t\t\tthrow new Error(`To many thunks active`);\n\t\t}\n\t\ttry {\n\t\t\tconst result = next.thunk();\n\t\t\tif (result instanceof Promise) {\n\t\t\t\tresult.then((value) => {\n\t\t\t\t\tthis._active--;\n\t\t\t\t\tnext.resolve(value);\n\t\t\t\t\tthis.runNext();\n\t\t\t\t}, (err) => {\n\t\t\t\t\tthis._active--;\n\t\t\t\t\tnext.reject(err);\n\t\t\t\t\tthis.runNext();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis._active--;\n\t\t\t\tnext.resolve(result);\n\t\t\t\tthis.runNext();\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthis._active--;\n\t\t\tnext.reject(err);\n\t\t\tthis.runNext();\n\t\t}\n\t}\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\nimport { workspace as Workspace, Uri, WorkspaceConfiguration, ConfigurationTarget } from 'vscode';\n\nimport { Is } from './node-utils';\nimport { DirectoryItem, ModeItem } from './shared/settings';\n\n// Defines settings locally to the client or deprecated settings that are converted to\n// shared settings\n\nexport type ValidateItem = {\n\tlanguage: string;\n\tautoFix?: boolean;\n};\n\nexport namespace ValidateItem {\n\texport function is(item: any): item is ValidateItem {\n\t\tconst candidate = item as ValidateItem;\n\t\treturn candidate && Is.string(candidate.language) && (Is.boolean(candidate.autoFix) || candidate.autoFix === void 0);\n\t}\n}\n\nexport type LegacyDirectoryItem = {\n\tdirectory: string;\n\tchangeProcessCWD: boolean;\n};\n\nexport namespace LegacyDirectoryItem {\n\texport function is(item: any): item is LegacyDirectoryItem {\n\t\tconst candidate = item as LegacyDirectoryItem;\n\t\treturn candidate && Is.string(candidate.directory) && Is.boolean(candidate.changeProcessCWD);\n\t}\n}\n\nexport type PatternItem = {\n\tpattern: string;\n\t'!cwd'?: boolean;\n};\n\nexport namespace PatternItem {\n\texport function is(item: any): item is PatternItem {\n\t\tconst candidate = item as PatternItem;\n\t\treturn candidate && Is.string(candidate.pattern) && (Is.boolean(candidate['!cwd']) || candidate['!cwd'] === undefined);\n\t}\n}\n\n// ----- Settings migration code\n\ntype InspectData<T> = {\n\tglobalValue?: T;\n\tworkspaceValue?: T;\n\tworkspaceFolderValue?: T;\n};\n\ntype MigrationElement<T> = {\n\tchanged: boolean;\n\tvalue: T | undefined;\n};\n\ntype MigrationData<T> = {\n\tglobal: MigrationElement<T>;\n\tworkspace: MigrationElement<T>;\n\tworkspaceFolder: MigrationElement<T>;\n};\n\ninterface CodeActionsOnSaveMap {\n\t'source.fixAll'?: boolean;\n\t'source.fixAll.eslint'?: boolean;\n\t[key: string]: boolean | undefined;\n}\n\ntype CodeActionsOnSave = CodeActionsOnSaveMap | string[] | null;\n\nnamespace CodeActionsOnSave {\n\texport function isExplicitlyDisabled(setting: CodeActionsOnSave | undefined): boolean {\n\t\tif (setting === undefined || setting === null || Array.isArray(setting)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn setting['source.fixAll.eslint'] === false;\n\t}\n\n\texport function getSourceFixAll(setting: CodeActionsOnSave): boolean | undefined {\n\t\tif (setting === null) {\n\t\t\treturn undefined;\n\t\t} if (Array.isArray(setting)) {\n\t\t\treturn setting.includes('source.fixAll') ? true : undefined;\n\t\t} else {\n\t\t\treturn setting['source.fixAll'];\n\t\t}\n\t}\n\n\texport function getSourceFixAllESLint(setting: CodeActionsOnSave): boolean | undefined {\n\t\tif (setting === null) {\n\t\t\treturn undefined;\n\t\t} else if (Array.isArray(setting)) {\n\t\t\treturn setting.includes('source.fixAll.eslint') ? true : undefined;\n\t\t} else {\n\t\t\treturn setting['source.fixAll.eslint'];\n\t\t}\n\t}\n\n\texport function setSourceFixAllESLint(setting: CodeActionsOnSave, value: boolean | undefined): void {\n\t\t// If the setting is mistyped do nothing.\n\t\tif (setting === null) {\n\t\t\treturn;\n\t\t} else if (Array.isArray(setting)) {\n\t\t\tconst index = setting.indexOf('source.fixAll.eslint');\n\t\t\tif (value === true) {\n\t\t\t\tif (index === -1) {\n\t\t\t\t\tsetting.push('source.fixAll.eslint');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tsetting.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tsetting['source.fixAll.eslint'] = value;\n\t\t}\n\t}\n}\n\ntype LanguageSettings = {\n\t'editor.codeActionsOnSave'?: CodeActionsOnSave;\n};\n\nnamespace MigrationData {\n\texport function create<T>(inspect: InspectData<T> | undefined): MigrationData<T> {\n\t\treturn inspect === undefined\n\t\t\t? {\n\t\t\t\tglobal: { value: undefined, changed: false },\n\t\t\t\tworkspace: { value: undefined, changed: false },\n\t\t\t\tworkspaceFolder: { value: undefined, changed: false }\n\t\t\t}\n\t\t\t: {\n\t\t\t\tglobal: { value: inspect.globalValue, changed: false },\n\t\t\t\tworkspace: { value: inspect.workspaceValue, changed: false },\n\t\t\t\tworkspaceFolder: { value: inspect.workspaceFolderValue, changed: false }\n\t\t\t};\n\t}\n\texport function needsUpdate(data: MigrationData<any>): boolean {\n\t\treturn data.global.changed || data.workspace.changed || data.workspaceFolder.changed;\n\t}\n}\n\nexport class Migration {\n\tprivate workspaceConfig: WorkspaceConfiguration;\n\tprivate eslintConfig: WorkspaceConfiguration;\n\tprivate editorConfig: WorkspaceConfiguration;\n\n\tprivate codeActionOnSave: MigrationData<CodeActionsOnSave>;\n\tprivate languageSpecificSettings: Map<string, MigrationData<CodeActionsOnSave>>;\n\n\tprivate autoFixOnSave: MigrationData<boolean>;\n\tprivate validate: MigrationData<(ValidateItem | string)[]>;\n\n\tprivate workingDirectories: MigrationData<(string | DirectoryItem)[]>;\n\n\tprivate didChangeConfiguration: (() => void) | undefined;\n\n\tconstructor(resource: Uri) {\n\t\tthis.workspaceConfig = Workspace.getConfiguration(undefined, resource);\n\t\tthis.eslintConfig = Workspace.getConfiguration('eslint', resource);\n\t\tthis.editorConfig = Workspace.getConfiguration('editor', resource);\n\t\tthis.codeActionOnSave = MigrationData.create(this.editorConfig.inspect<CodeActionsOnSave>('codeActionsOnSave'));\n\t\tthis.autoFixOnSave = MigrationData.create(this.eslintConfig.inspect<boolean>('autoFixOnSave'));\n\t\tthis.validate = MigrationData.create(this.eslintConfig.inspect<(ValidateItem | string)[]>('validate'));\n\t\tthis.workingDirectories = MigrationData.create(this.eslintConfig.inspect<(string | DirectoryItem)[]>('workingDirectories'));\n\t\tthis.languageSpecificSettings = new Map();\n\t}\n\n\tpublic record(): void {\n\t\tconst fixAll = this.recordAutoFixOnSave();\n\t\tthis.recordValidate(fixAll);\n\t\tthis.recordWorkingDirectories();\n\t}\n\n\tpublic captureDidChangeSetting(func: () => void): void {\n\t\tthis.didChangeConfiguration = func;\n\t}\n\n\tprivate recordAutoFixOnSave(): [boolean, boolean, boolean] {\n\t\tfunction record(this: void, elem: MigrationElement<boolean>, setting: MigrationElement<CodeActionsOnSave>): boolean {\n\t\t\t// if it is explicitly set to false don't convert anything anymore\n\t\t\tif (CodeActionsOnSave.isExplicitlyDisabled(setting.value)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (!Is.objectLiteral(setting.value) && !Array.isArray(setting.value)) {\n\t\t\t\tsetting.value = Object.create(null) as {};\n\t\t\t}\n\t\t\tconst autoFix: boolean = !!elem.value;\n\t\t\tconst sourceFixAll: boolean = !!CodeActionsOnSave.getSourceFixAll(setting.value);\n\t\t\tlet result: boolean;\n\t\t\tif (autoFix !== sourceFixAll && autoFix && CodeActionsOnSave.getSourceFixAllESLint(setting.value) === undefined) {\n\t\t\t\tCodeActionsOnSave.setSourceFixAllESLint(setting.value, elem.value);\n\t\t\t\tsetting.changed = true;\n\t\t\t\tresult = !!CodeActionsOnSave.getSourceFixAllESLint(setting.value);\n\t\t\t} else {\n\t\t\t\tresult = !!CodeActionsOnSave.getSourceFixAll(setting.value);\n\t\t\t}\n\t\t\t/* For now we don't rewrite the settings to allow users to go back to an older version\n\t\t\telem.value = undefined;\n\t\t\telem.changed = true;\n\t\t\t*/\n\t\t\treturn result;\n\t\t}\n\n\t\treturn [\n\t\t\trecord(this.autoFixOnSave.global, this.codeActionOnSave.global),\n\t\t\trecord(this.autoFixOnSave.workspace, this.codeActionOnSave.workspace),\n\t\t\trecord(this.autoFixOnSave.workspaceFolder, this.codeActionOnSave.workspaceFolder)\n\t\t];\n\t}\n\n\tprivate recordValidate(fixAll: [boolean, boolean, boolean]): void {\n\t\tfunction record(this: void, elem: MigrationElement<(ValidateItem | string)[]>, settingAccessor: (language: string) => MigrationElement<CodeActionsOnSave>, fixAll: boolean): void {\n\t\t\tif (elem.value === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (let i = 0; i < elem.value.length; i++) {\n\t\t\t\tconst item = elem.value[i];\n\t\t\t\tif (typeof item === 'string') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (fixAll && item.autoFix === false && typeof item.language === 'string') {\n\t\t\t\t\tconst setting = settingAccessor(item.language);\n\t\t\t\t\tif (!Is.objectLiteral(setting.value) && !Array.isArray(setting.value)) {\n\t\t\t\t\t\tsetting.value = Object.create(null) as {};\n\t\t\t\t\t}\n\t\t\t\t\tif (CodeActionsOnSave.getSourceFixAllESLint(setting.value!) !== false) {\n\t\t\t\t\t\tCodeActionsOnSave.setSourceFixAllESLint(setting.value!, false);\n\t\t\t\t\t\tsetting.changed = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t/* For now we don't rewrite the settings to allow users to go back to an older version\n\t\t\t\tif (item.language !== undefined) {\n\t\t\t\t\telem.value[i] = item.language;\n\t\t\t\t\telem.changed = true;\n\t\t\t\t}\n\t\t\t\t*/\n\t\t\t}\n\t\t}\n\n\t\tconst languageSpecificSettings = this.languageSpecificSettings;\n\t\tconst workspaceConfig = this.workspaceConfig;\n\t\tfunction getCodeActionsOnSave(language: string): MigrationData<CodeActionsOnSave> {\n\t\t\tlet result: MigrationData<CodeActionsOnSave> | undefined = languageSpecificSettings.get(language);\n\t\t\tif (result !== undefined) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tconst value: InspectData<LanguageSettings> | undefined = workspaceConfig.inspect(`[${language}]`);\n\t\t\tif (value === undefined) {\n\t\t\t\treturn MigrationData.create(undefined);\n\t\t\t}\n\n\t\t\tconst globalValue = value.globalValue?.['editor.codeActionsOnSave'];\n\t\t\tconst workspaceFolderValue = value.workspaceFolderValue?.['editor.codeActionsOnSave'];\n\t\t\tconst workspaceValue = value.workspaceValue?.['editor.codeActionsOnSave'];\n\t\t\tresult = MigrationData.create<CodeActionsOnSave>({ globalValue, workspaceFolderValue, workspaceValue });\n\t\t\tlanguageSpecificSettings.set(language, result);\n\t\t\treturn result;\n\t\t}\n\n\t\trecord(this.validate.global, (language) => getCodeActionsOnSave(language).global, fixAll[0]);\n\t\trecord(this.validate.workspace, (language) => getCodeActionsOnSave(language).workspace, fixAll[1] ? fixAll[1] : fixAll[0]);\n\t\trecord(this.validate.workspaceFolder, (language) => getCodeActionsOnSave(language).workspaceFolder, fixAll[2] ? fixAll[2] : (fixAll[1] ? fixAll[1] : fixAll[0]));\n\t}\n\n\tprivate recordWorkingDirectories(): void {\n\t\tfunction record(this: void, elem: MigrationElement<(string | DirectoryItem | LegacyDirectoryItem | PatternItem | ModeItem)[]>): void {\n\t\t\tif (elem.value === undefined || !Array.isArray(elem.value)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (let i = 0; i < elem.value.length; i++) {\n\t\t\t\tconst item = elem.value[i];\n\t\t\t\tif (typeof item === 'string' || ModeItem.is(item) || PatternItem.is(item)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (DirectoryItem.is(item) && item['!cwd'] !== undefined) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t/* For now we don't rewrite the settings to allow users to go back to an older version\n\t\t\t\tif (LegacyDirectoryItem.is(item)) {\n\t\t\t\t\tconst legacy: LegacyDirectoryItem = item;\n\t\t\t\t\tif (legacy.changeProcessCWD === false) {\n\t\t\t\t\t\t(item as DirectoryItem)['!cwd'] = true;\n\t\t\t\t\t\telem.changed = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (DirectoryItem.is(item) && item['!cwd'] === undefined) {\n\t\t\t\t\telem.value[i] = item.directory;\n\t\t\t\t\telem.changed = true;\n\t\t\t\t}\n\t\t\t\t*/\n\t\t\t}\n\t\t}\n\n\t\trecord(this.workingDirectories.global);\n\t\trecord(this.workingDirectories.workspace);\n\t\trecord(this.workingDirectories.workspaceFolder);\n\t}\n\n\tpublic needsUpdate(): boolean {\n\t\tif (MigrationData.needsUpdate(this.autoFixOnSave) ||\n\t\t\tMigrationData.needsUpdate(this.validate) ||\n\t\t\tMigrationData.needsUpdate(this.codeActionOnSave) ||\n\t\t\tMigrationData.needsUpdate(this.workingDirectories)\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t\tfor (const value of this.languageSpecificSettings.values()) {\n\t\t\tif (MigrationData.needsUpdate(value)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic async update(): Promise<void> {\n\t\tasync function _update<T>(config: WorkspaceConfiguration, section: string, newValue: MigrationElement<T>, target: ConfigurationTarget): Promise<void> {\n\t\t\tif (!newValue.changed) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait config.update(section, newValue.value, target);\n\t\t}\n\n\t\tasync function _updateLanguageSetting(config: WorkspaceConfiguration, section: string, settings: LanguageSettings | undefined, newValue: MigrationElement<CodeActionsOnSave>, target: ConfigurationTarget): Promise<void> {\n\t\t\tif (!newValue.changed) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (settings === undefined) {\n\t\t\t\tsettings = Object.create(null) as object;\n\t\t\t}\n\t\t\tif (settings['editor.codeActionsOnSave'] === undefined) {\n\t\t\t\tsettings['editor.codeActionsOnSave'] = {};\n\t\t\t}\n\t\t\tsettings['editor.codeActionsOnSave'] = newValue.value;\n\t\t\tawait config.update(section, settings, target);\n\t\t}\n\n\t\ttry {\n\t\t\tawait _update(this.editorConfig, 'codeActionsOnSave', this.codeActionOnSave.global, ConfigurationTarget.Global);\n\t\t\tawait _update(this.editorConfig, 'codeActionsOnSave', this.codeActionOnSave.workspace, ConfigurationTarget.Workspace);\n\t\t\tawait _update(this.editorConfig, 'codeActionsOnSave', this.codeActionOnSave.workspaceFolder, ConfigurationTarget.WorkspaceFolder);\n\n\t\t\tawait _update(this.eslintConfig, 'autoFixOnSave', this.autoFixOnSave.global, ConfigurationTarget.Global);\n\t\t\tawait _update(this.eslintConfig, 'autoFixOnSave', this.autoFixOnSave.workspace, ConfigurationTarget.Workspace);\n\t\t\tawait _update(this.eslintConfig, 'autoFixOnSave', this.autoFixOnSave.workspaceFolder, ConfigurationTarget.WorkspaceFolder);\n\n\t\t\tawait _update(this.eslintConfig, 'validate', this.validate.global, ConfigurationTarget.Global);\n\t\t\tawait _update(this.eslintConfig, 'validate', this.validate.workspace, ConfigurationTarget.Workspace);\n\t\t\tawait _update(this.eslintConfig, 'validate', this.validate.workspaceFolder, ConfigurationTarget.WorkspaceFolder);\n\n\t\t\tawait _update(this.eslintConfig, 'workingDirectories', this.workingDirectories.global, ConfigurationTarget.Global);\n\t\t\tawait _update(this.eslintConfig, 'workingDirectories', this.workingDirectories.workspace, ConfigurationTarget.Workspace);\n\t\t\tawait _update(this.eslintConfig, 'workingDirectories', this.workingDirectories.workspaceFolder, ConfigurationTarget.WorkspaceFolder);\n\n\t\t\tfor (const language of this.languageSpecificSettings.keys()) {\n\t\t\t\tconst value = this.languageSpecificSettings.get(language)!;\n\t\t\t\tif (MigrationData.needsUpdate(value)) {\n\t\t\t\t\tconst section = `[${language}]`;\n\t\t\t\t\tconst current = this.workspaceConfig.inspect<LanguageSettings>(section);\n\t\t\t\t\tawait _updateLanguageSetting(this.workspaceConfig, section, current?.globalValue, value.global, ConfigurationTarget.Global);\n\t\t\t\t\tawait _updateLanguageSetting(this.workspaceConfig, section, current?.workspaceValue, value.workspace, ConfigurationTarget.Workspace);\n\t\t\t\t\tawait _updateLanguageSetting(this.workspaceConfig, section, current?.workspaceFolderValue, value.workspaceFolder, ConfigurationTarget.WorkspaceFolder);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tif (this.didChangeConfiguration) {\n\t\t\t\tthis.didChangeConfiguration();\n\t\t\t\tthis.didChangeConfiguration = undefined;\n\t\t\t}\n\t\t}\n\t}\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\nimport { NotificationType, NotificationType0, RequestType, TextDocumentIdentifier } from 'vscode-languageserver-protocol';\n\nexport enum Status {\n\tok = 1,\n\twarn = 2,\n\terror = 3\n}\n\nexport type StatusParams = {\n\turi: string;\n\tstate: Status;\n\tvalidationTime?: number;\n};\n\n/**\n * The status notification is sent from the server to the client to\n * inform the client about server status changes.\n */\nexport namespace StatusNotification {\n\texport const method: 'eslint/status' = 'eslint/status';\n\texport const type = new NotificationType<StatusParams>(method);\n}\n\nexport type NoConfigParams = {\n\tmessage: string;\n\tdocument: TextDocumentIdentifier;\n};\n\nexport type NoConfigResult = {\n};\n\n/**\n * The NoConfigRequest is sent from the server to the client to inform\n * the client that no eslint configuration file could be found when\n * trying to lint a file.\n */\nexport namespace NoConfigRequest {\n\texport const method: 'eslint/noConfig' = 'eslint/noConfig';\n\texport const type = new RequestType<NoConfigParams, NoConfigResult, void>(method);\n}\n\nexport type NoESLintLibraryParams = {\n\tsource: TextDocumentIdentifier;\n};\n\nexport type NoESLintLibraryResult = {\n};\n\n/**\n * The NoESLintLibraryRequest is sent from the server to the client to\n * inform the client that no eslint library could be found when trying\n * to lint a file.\n */\nexport namespace NoESLintLibraryRequest {\n\texport const method: 'eslint/noLibrary' = 'eslint/noLibrary';\n\texport const type = new RequestType<NoESLintLibraryParams, NoESLintLibraryResult, void>(method);\n}\n\nexport type OpenESLintDocParams = {\n\turl: string;\n};\n\nexport type OpenESLintDocResult = {\n};\n\n/**\n * The eslint/openDoc request is sent from the server to the client to\n * ask the client to open the documentation URI for a given\n * ESLint rule.\n */\nexport namespace OpenESLintDocRequest {\n\texport const method: 'eslint/openDoc' = 'eslint/openDoc';\n\texport const type = new RequestType<OpenESLintDocParams, OpenESLintDocResult, void>(method);\n}\n\nexport type ProbeFailedParams = {\n\ttextDocument: TextDocumentIdentifier;\n};\n\n/**\n * The eslint/probeFailed request is sent from the server to the client\n * to tell the client the the lint probing for a certain document has\n * failed and that there is no need to sync that document to the server\n * anymore.\n */\nexport namespace ProbeFailedRequest {\n\texport const method: 'eslint/probeFailed' = 'eslint/probeFailed';\n\texport const type = new RequestType<ProbeFailedParams, void, void>(method);\n}\n\n/**\n * The eslint/showOutputChannel notification is sent from the server to\n * the client to ask the client to reveal it's output channel.\n */\nexport namespace ShowOutputChannel {\n\texport const method: 'eslint/showOutputChannel' = 'eslint/showOutputChannel';\n\texport const type = new NotificationType0('eslint/showOutputChannel');\n}\n\n/**\n * The eslint/exitCalled notification is sent from the server to the client\n * to inform the client that a process.exit call on the server got intercepted.\n * The call was very likely made by an ESLint plugin.\n */\nexport namespace ExitCalled {\n\texport const method: 'eslint/exitCalled' = 'eslint/exitCalled';\n\texport const type = new NotificationType<[number, string]>(method);\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\nimport {\n\tWorkspaceFolder\n} from 'vscode-languageserver-protocol';\n\nnamespace Is {\n\tconst toString = Object.prototype.toString;\n\n\texport function boolean(value: any): value is boolean {\n\t\treturn value === true || value === false;\n\t}\n\n\texport function string(value: any): value is string {\n\t\treturn toString.call(value) === '[object String]';\n\t}\n}\n\nexport enum Validate {\n\ton = 'on',\n\toff = 'off',\n\tprobe = 'probe'\n}\n\nexport type CodeActionSettings = {\n\tdisableRuleComment: {\n\t\tenable: boolean;\n\t\tlocation: 'separateLine' | 'sameLine';\n\t\tcommentStyle: 'line' | 'block';\n\t};\n\tshowDocumentation: {\n\t\tenable: boolean;\n\t};\n};\n\nexport enum CodeActionsOnSaveMode {\n\tall = 'all',\n\tproblems = 'problems'\n}\n\nexport namespace CodeActionsOnSaveMode {\n\texport function from(value: string | undefined | null): CodeActionsOnSaveMode {\n\t\tif (value === undefined || value === null || !Is.string(value)) {\n\t\t\treturn CodeActionsOnSaveMode.all;\n\t\t}\n\t\tswitch(value.toLowerCase()) {\n\t\t\tcase CodeActionsOnSaveMode.problems:\n\t\t\t\treturn CodeActionsOnSaveMode.problems;\n\t\t\tdefault:\n\t\t\t\treturn CodeActionsOnSaveMode.all;\n\t\t}\n\t}\n}\n\nexport namespace CodeActionsOnSaveRules {\n\texport function from(value: string[] | undefined | null): string[] | undefined {\n\t\tif (value === undefined || value === null || !Array.isArray(value)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn value.filter(item => Is.string(item));\n\t}\n}\n\nexport namespace CodeActionsOnSaveOptions {\n\texport function from(value: object | undefined | null): ESLintOptions | undefined {\n\t\tif (value === undefined || value === null || typeof value !== 'object') {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn value;\n\t}\n}\n\nexport type CodeActionsOnSaveSettings = {\n\tmode: CodeActionsOnSaveMode;\n\trules?: string[];\n\toptions?: ESLintOptions;\n};\n\nexport enum ESLintSeverity {\n\toff = 'off',\n\twarn = 'warn',\n\terror = 'error'\n}\n\nexport namespace ESLintSeverity {\n\texport function from(value: string | undefined | null): ESLintSeverity {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn ESLintSeverity.off;\n\t\t}\n\t\tswitch (value.toLowerCase()) {\n\t\t\tcase ESLintSeverity.off:\n\t\t\t\treturn ESLintSeverity.off;\n\t\t\tcase ESLintSeverity.warn:\n\t\t\t\treturn ESLintSeverity.warn;\n\t\t\tcase ESLintSeverity.error:\n\t\t\t\treturn ESLintSeverity.error;\n\t\t\tdefault:\n\t\t\t\treturn ESLintSeverity.off;\n\t\t}\n\t}\n}\n\nexport enum RuleSeverity {\n\t// Original ESLint values\n\tinfo = 'info',\n\twarn = 'warn',\n\terror = 'error',\n\toff = 'off',\n\n\t// Added severity override changes\n\tdefault = 'default',\n\tdowngrade = 'downgrade',\n\tupgrade = 'upgrade'\n}\n\nexport type RuleCustomization = {\n\trule: string;\n\tseverity: RuleSeverity;\n\t/** Only apply to autofixable rules */\n\tfixable?: boolean;\n};\n\nexport type RunValues = 'onType' | 'onSave';\n\nexport enum ModeEnum {\n\tauto = 'auto',\n\tlocation = 'location'\n}\n\nexport namespace ModeEnum {\n\texport function is(value: string): value is ModeEnum {\n\t\treturn value === ModeEnum.auto || value === ModeEnum.location;\n\t}\n}\n\nexport type ModeItem = {\n\tmode: ModeEnum;\n};\n\nexport namespace ModeItem {\n\texport function is(item: any): item is ModeItem {\n\t\tconst candidate = item as ModeItem;\n\t\treturn candidate && ModeEnum.is(candidate.mode);\n\t}\n}\n\nexport type DirectoryItem = {\n\tdirectory: string;\n\t'!cwd'?: boolean;\n};\n\nexport namespace DirectoryItem {\n\texport function is(item: any): item is DirectoryItem {\n\t\tconst candidate = item as DirectoryItem;\n\t\treturn candidate && Is.string(candidate.directory) && (Is.boolean(candidate['!cwd']) || candidate['!cwd'] === undefined);\n\t}\n}\n\nexport type PackageManagers = 'npm' | 'yarn' | 'pnpm';\n\nexport type ESLintOptions = object & { fixTypes?: string[] };\n\nexport type ConfigurationSettings = {\n\tvalidate: Validate;\n\tpackageManager: PackageManagers;\n\tuseESLintClass: boolean;\n\tuseFlatConfig?: boolean | undefined;\n\tuseRealpaths: boolean;\n\texperimental?: {\n\t\tuseFlatConfig: boolean;\n\t};\n\tcodeAction: CodeActionSettings;\n\tcodeActionOnSave: CodeActionsOnSaveSettings;\n\tformat: boolean;\n\tquiet: boolean;\n\tonIgnoredFiles: ESLintSeverity;\n\toptions: ESLintOptions | undefined;\n\trulesCustomizations: RuleCustomization[];\n\trun: RunValues;\n\tproblems: {\n\t\tshortenToSingleLine: boolean;\n\t};\n\tnodePath: string | null;\n\tworkspaceFolder: WorkspaceFolder | undefined;\n\tworkingDirectory: ModeItem | DirectoryItem | undefined;\n};\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n\r\nimport * as vscode from 'vscode';\r\nimport { Disposable } from 'vscode-languageclient';\r\n\r\nimport { findEslint } from './node-utils';\r\n\r\n/**\r\n * A special task definition for ESLint tasks\r\n */\r\ninterface EslintTaskDefinition extends vscode.TaskDefinition {\r\n}\r\n\r\n\r\nclass FolderTaskProvider {\r\n\tconstructor(private _workspaceFolder: vscode.WorkspaceFolder) {\r\n\t}\r\n\r\n\tpublic get workspaceFolder(): vscode.WorkspaceFolder {\r\n\t\treturn this._workspaceFolder;\r\n\t}\r\n\r\n\tpublic isEnabled(): boolean {\r\n\t\tconst config = vscode.workspace.getConfiguration('eslint', this._workspaceFolder.uri);\r\n\t\treturn config.get<boolean>('lintTask.enable', false) ?? config.get<boolean>('provideLintTask', false);\r\n\t}\r\n\r\n\tpublic start(): void {\r\n\t}\r\n\r\n\tpublic dispose(): void {\r\n\t}\r\n\r\n\tpublic async getTask(): Promise<vscode.Task | undefined> {\r\n\t\tconst rootPath = this._workspaceFolder.uri.scheme === 'file' ? this._workspaceFolder.uri.fsPath : undefined;\r\n\t\tif (!rootPath) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t\ttry {\r\n\r\n\t\t\tconst kind: EslintTaskDefinition = {\r\n\t\t\t\ttype: 'eslint'\r\n\t\t\t};\r\n\r\n\t\t\tconst options: vscode.ShellExecutionOptions = { cwd: this.workspaceFolder.uri.fsPath };\r\n\t\t\tconst config = vscode.workspace.getConfiguration('eslint', this._workspaceFolder.uri);\r\n\t\t\tconst command = config.get<string>('lintTask.command', await findEslint(rootPath));\r\n\t\t\tconst lintTaskOptions = config.get<string>('lintTask.options', '.');\r\n\t\t\treturn new vscode.Task(\r\n\t\t\t\tkind, this.workspaceFolder,\r\n\t\t\t\t'lint whole folder', 'eslint', new vscode.ShellExecution(`${command} ${lintTaskOptions}`, options),\r\n\t\t\t\t'$eslint-stylish'\r\n\t\t\t);\r\n\t\t} catch {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * A task provider that adds ESLint checking tasks.\r\n */\r\nexport class TaskProvider {\r\n\r\n\t/**\r\n\t * A Disposable to unregister the task provider inside\r\n\t * VS Code.\r\n\t */\r\n\tprivate taskProvider: vscode.Disposable | undefined;\r\n\r\n\t/**\r\n\t * The actual providers per workspace folder.\r\n\t */\r\n\tprivate readonly providers: Map<string, FolderTaskProvider>;\r\n\r\n\t/**\r\n\t * A disposable to unregister event listeners\r\n\t */\r\n\tprivate disposable: Disposable | undefined;\r\n\r\n\tconstructor() {\r\n\t\tthis.providers = new Map();\r\n\t}\r\n\r\n\tpublic start(): void {\r\n\t\tconst folders = vscode.workspace.workspaceFolders;\r\n\t\tif (folders !== undefined) {\r\n\t\t\tthis.updateWorkspaceFolders(folders, []);\r\n\t\t}\r\n\r\n\t\tconst disposables: vscode.Disposable[] = [];\r\n\t\tdisposables.push(vscode.workspace.onDidChangeWorkspaceFolders((event) => this.updateWorkspaceFolders(event.added, event.removed)));\r\n\t\tdisposables.push(vscode.workspace.onDidChangeConfiguration(this.updateConfiguration, this));\r\n\t\tthis.disposable = vscode.Disposable.from(...disposables);\r\n\t}\r\n\r\n\tpublic dispose(): void {\r\n\t\tif (this.taskProvider !== undefined) {\r\n\t\t\tthis.taskProvider.dispose();\r\n\t\t\tthis.taskProvider = undefined;\r\n\t\t}\r\n\t\tif (this.disposable !== undefined) {\r\n\t\t\tthis.disposable.dispose();\r\n\t\t\tthis.disposable = undefined;\r\n\t\t}\r\n\t\tthis.providers.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * The workspace folders have changed.\r\n\t */\r\n\tprivate updateWorkspaceFolders(added: ReadonlyArray<vscode.WorkspaceFolder>, removed: ReadonlyArray<vscode.WorkspaceFolder>): void {\r\n\t\tfor (const remove of removed) {\r\n\t\t\tconst provider = this.providers.get(remove.uri.toString());\r\n\t\t\tif (provider) {\r\n\t\t\t\tprovider.dispose();\r\n\t\t\t\tthis.providers.delete(remove.uri.toString());\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (const add of added) {\r\n\t\t\tconst provider = new FolderTaskProvider(add);\r\n\t\t\tif (provider.isEnabled()) {\r\n\t\t\t\tthis.providers.set(add.uri.toString(), provider);\r\n\t\t\t\tprovider.start();\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.updateProvider();\r\n\t}\r\n\r\n\t/**\r\n\t * The configuration has changed.\r\n\t */\r\n\tprivate updateConfiguration(): void {\r\n\t\tfor (const detector of this.providers.values()) {\r\n\t\t\tif (!detector.isEnabled()) {\r\n\t\t\t\tdetector.dispose();\r\n\t\t\t\tthis.providers.delete(detector.workspaceFolder.uri.toString());\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst folders = vscode.workspace.workspaceFolders;\r\n\t\tif (folders) {\r\n\t\t\tfor (const folder of folders) {\r\n\t\t\t\tif (!this.providers.has(folder.uri.toString())) {\r\n\t\t\t\t\tconst provider = new FolderTaskProvider(folder);\r\n\t\t\t\t\tif (provider.isEnabled()) {\r\n\t\t\t\t\t\tthis.providers.set(folder.uri.toString(), provider);\r\n\t\t\t\t\t\tprovider.start();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.updateProvider();\r\n\t}\r\n\r\n\tprivate updateProvider(): void {\r\n\t\tif (!this.taskProvider && this.providers.size > 0) {\r\n\t\t\tthis.taskProvider = vscode.tasks.registerTaskProvider('eslint', {\r\n\t\t\t\tprovideTasks: () => {\r\n\t\t\t\t\treturn this.getTasks();\r\n\t\t\t\t},\r\n\t\t\t\tresolveTask(_task: vscode.Task): vscode.Task | undefined {\r\n\t\t\t\t\treturn undefined;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (this.taskProvider && this.providers.size === 0) {\r\n\t\t\tthis.taskProvider.dispose();\r\n\t\t\tthis.taskProvider = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getTasks(): Promise<vscode.Task[]> {\r\n\t\tif (this.providers.size === 0) {\r\n\t\t\treturn [];\r\n\t\t} else {\r\n\t\t\tconst promises: Promise<vscode.Task | undefined>[] = [];\r\n\t\t\tfor (const provider of this.providers.values()) {\r\n\t\t\t\tpromises.push(provider.getTask());\r\n\t\t\t}\r\n\t\t\tconst values = await Promise.all(promises);\r\n\t\t\treturn values.filter<vscode.Task>((value): value is vscode.Task => { return value !== undefined; });\r\n\t\t}\r\n\t}\r\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\nimport { QuickPickItem, window, WorkspaceFolder } from 'vscode';\n\ninterface WorkspaceFolderItem extends QuickPickItem {\n\tfolder: WorkspaceFolder;\n}\n\n/**\n * Picks a folder from a list of workspace folders.\n */\nexport async function pickFolder(folders: ReadonlyArray<WorkspaceFolder>, placeHolder: string): Promise<WorkspaceFolder | undefined> {\n\tif (folders.length === 1) {\n\t\treturn Promise.resolve(folders[0]);\n\t}\n\n\tconst selected = await window.showQuickPick(\n\t\tfolders.map<WorkspaceFolderItem>((folder) => { return { label: folder.name, description: folder.uri.fsPath, folder: folder }; }),\n\t\t{ placeHolder: placeHolder }\n\t);\n\tif (selected === undefined) {\n\t\treturn undefined;\n\t}\n\treturn selected.folder;\n}","const 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","const 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","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, safeSrc: src, 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 r = new RegExp(`^${this.options.loose ? src[t.PRERELEASELOOSE] : src[t.PRERELEASE]}$`)\n const match = `-${identifier}`.match(r)\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","const 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","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const 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","const 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","// 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","const 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","const 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","class 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","// 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","const {\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\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\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 * 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\" preserve=\"true\"/>\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\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.RequestCancellationReceiverStrategy = exports.IdCancellationReceiverStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.TraceValues = exports.TraceValue = 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, \"TraceValue\", { enumerable: true, get: function () { return connection_1.TraceValue; } });\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, \"IdCancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.IdCancellationReceiverStrategy; } });\nObject.defineProperty(exports, \"RequestCancellationReceiverStrategy\", { enumerable: true, get: function () { return connection_1.RequestCancellationReceiverStrategy; } });\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; } });\nObject.defineProperty(exports, \"TraceValues\", { enumerable: true, get: function () { return connection_1.TraceValues; } });\nconst ral_1 = __importDefault(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 *--------------------------------------------------------------------------------------------*/\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CancellationTokenSource = exports.CancellationToken = void 0;\nconst ral_1 = __importDefault(require(\"./ral\"));\nconst Is = __importStar(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 _isCancelled = false;\n _emitter;\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 _token;\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 * ------------------------------------------------------------------------------------------ */\n/// <reference path=\"../../typings/thenable.d.ts\" preserve=\"true\"/>\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.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.TraceValue = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0;\nexports.createMessageConnection = createMessageConnection;\nconst ral_1 = __importDefault(require(\"./ral\"));\nconst Is = __importStar(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 /**\n * Clients must not use these properties. They are here to ensure correct typing.\n * in TypeScript\n */\n __;\n _pr;\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 TraceValue;\n(function (TraceValue) {\n /**\n * Turn tracing off.\n */\n TraceValue.Off = 'off';\n /**\n * Trace messages only.\n */\n TraceValue.Messages = 'messages';\n /**\n * Compact message tracing.\n */\n TraceValue.Compact = 'compact';\n /**\n * Verbose message tracing.\n */\n TraceValue.Verbose = 'verbose';\n})(TraceValue || (exports.TraceValue = TraceValue = {}));\n/**\n * @deprecated Use TraceValue instead\n */\nexports.TraceValues = TraceValue;\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 code;\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\n && (CancellationStrategy.is(candidate.cancellationStrategy) || ConnectionStrategy.is(candidate.connectionStrategy) || MessageStrategy.is(candidate.messageStrategy) || Is.number(candidate.maxParallelism));\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 const maxParallelism = options?.maxParallelism ?? -1;\n let inFlight = 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 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 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 // If we have unlimited parallelism we queue the response to keep\n // the previous semantics.\n if (maxParallelism === -1) {\n queue.set(createResponseQueueKey(message.id), message);\n }\n else {\n // If we have limited parallelism we resolve responses to avoid\n // dead locks.\n handleResponse(message);\n }\n }\n else {\n queue.set(createNotificationQueueKey(), message);\n }\n }\n function triggerMessageQueue() {\n if (timer || messageQueue.size === 0) {\n return;\n }\n if (maxParallelism !== -1 && inFlight >= maxParallelism) {\n return;\n }\n timer = (0, ral_1.default)().timer.setImmediate(async () => {\n timer = undefined;\n if (messageQueue.size === 0) {\n return;\n }\n if (maxParallelism !== -1 && inFlight >= maxParallelism) {\n return;\n }\n const message = messageQueue.shift();\n let result;\n try {\n inFlight++;\n const messageStrategy = options?.messageStrategy;\n if (MessageStrategy.is(messageStrategy)) {\n result = messageStrategy.handleMessage(message, handleMessage);\n }\n else {\n result = handleMessage(message);\n }\n }\n catch (error) {\n logger.error(`Processing message queue failed: ${error.toString()}`);\n }\n finally {\n if (result instanceof Promise) {\n result.then(() => {\n inFlight--;\n triggerMessageQueue();\n }).catch((error) => {\n logger.error(`Processing message queue failed: ${error.toString()}`);\n });\n }\n else {\n inFlight--;\n }\n triggerMessageQueue();\n }\n });\n }\n async function handleMessage(message) {\n if (messages_1.Message.isRequest(message)) {\n return handleRequest(message);\n }\n else if (messages_1.Message.isNotification(message)) {\n return handleNotification(message);\n }\n else if (messages_1.Message.isResponse(message)) {\n return handleResponse(message);\n }\n else {\n return handleInvalidMessage(message);\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 async function handleRequest(requestMessage) {\n if (isDisposed()) {\n // we return here silently since we fired an event when the\n // connection got disposed.\n return Promise.resolve();\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 return messageWriter.write(message);\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 return messageWriter.write(message);\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 return replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InvalidParams, `Request ${requestMessage.method} defines ${type.numberOfParams} params but received none.`), requestMessage.method, startTime);\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 return 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 }\n handlerResult = requestHandler(...requestMessage.params, cancellationSource.token);\n }\n else {\n if (type !== undefined && type.parameterStructures === messages_1.ParameterStructures.byPosition) {\n return 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 }\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 resultOrError = await handlerResult;\n await reply(resultOrError, requestMessage.method, startTime);\n }\n catch (error) {\n if (error instanceof messages_1.ResponseError) {\n await reply(error, requestMessage.method, startTime);\n }\n else if (error && Is.string(error.message)) {\n await replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed with message: ${error.message}`), requestMessage.method, startTime);\n }\n else {\n await replyError(new messages_1.ResponseError(messages_1.ErrorCodes.InternalError, `Request ${requestMessage.method} failed unexpectedly without providing any details.`), requestMessage.method, startTime);\n }\n }\n finally {\n requestTokens.delete(tokenKey);\n }\n }\n else {\n await 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 async 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 await 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 await 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 await 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 await notificationHandler(message.params);\n }\n }\n else if (starNotificationHandler) {\n await 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 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 else {\n data = 'No parameters provided.';\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 else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.';\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 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 else {\n data = 'No parameters provided.';\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 else {\n if (message.result) {\n data = `Result: ${stringifyTrace(message.result)}`;\n }\n else if (message.error === undefined) {\n data = 'No result returned.';\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 const 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 if (notificationHandlers.get(method)?.handler === handler) {\n notificationHandlers.delete(method);\n }\n }\n else if (starNotificationHandler === type) {\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 if (progressHandlers.get(token) === handler) {\n progressHandlers.delete(token);\n }\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 function sendCancellation(connection, id) {\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 }\n else {\n p.catch(() => {\n logger.log(`Sending cancellation messages for id ${id} failed.`);\n });\n }\n }\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 let tokenWasCancelled = false;\n if (token !== undefined) {\n if (token.isCancellationRequested) {\n tokenWasCancelled = true;\n }\n else {\n disposable = token.onCancellationRequested(() => {\n sendCancellation(connection, id);\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 // eslint-disable-next-line no-async-promise-executor\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 responsePromises.set(id, responsePromise);\n await messageWriter.write(requestMessage);\n if (tokenWasCancelled) {\n sendCancellation(connection, id);\n }\n }\n catch (error) {\n // Writing the message failed. So we need to delete it from the response promises and\n // reject it.\n responsePromises.delete(id);\n responsePromise.reject(new messages_1.ResponseError(messages_1.ErrorCodes.MessageWriteError, error.message ? error.message : 'Unknown reason'));\n logger.error(`Sending request failed.`);\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 if (requestHandlers.get(method)?.handler === handler) {\n requestHandlers.delete(method);\n }\n }\n else if (starRequestHandler === type) {\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, async (params) => {\n const handler = progressHandlers.get(params.token);\n if (handler) {\n await handler(params.value);\n }\n else {\n unhandledProgressEmitter.fire(params);\n }\n });\n return connection;\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.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 * ------------------------------------------------------------------------------------------ */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = exports.Event = void 0;\nconst ral_1 = __importDefault(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 _callbacks;\n _contexts;\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 _options;\n static _noop = function () { };\n _event;\n _callbacks;\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;\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.boolean = boolean;\nexports.string = string;\nexports.number = number;\nexports.error = error;\nexports.func = func;\nexports.array = array;\nexports.stringArray = stringArray;\nfunction boolean(value) {\n return value === true || value === false;\n}\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nfunction error(value) {\n return value instanceof Error;\n}\nfunction func(value) {\n return typeof value === 'function';\n}\nfunction array(value) {\n return Array.isArray(value);\n}\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\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.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 [Symbol.toStringTag] = 'LinkedMap';\n _map;\n _head;\n _tail;\n _size;\n _state;\n constructor() {\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 before(key) {\n const item = this._map.get(key);\n return item ? item.previous?.value : undefined;\n }\n after(key) {\n const item = this._map.get(key);\n return item ? item.next?.value : undefined;\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 [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 _limit;\n _ratio;\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.AbstractMessageBuffer = void 0;\nconst CR = 13;\nconst LF = 10;\nconst CRLF = '\\r\\n';\nclass AbstractMessageBuffer {\n _encoding;\n _chunks;\n _totalLength;\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 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 const 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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = void 0;\nconst ral_1 = __importDefault(require(\"./ral\"));\nconst Is = __importStar(require(\"./is\"));\nconst events_1 = require(\"./events\");\nconst semaphore_1 = require(\"./semaphore\");\nvar MessageReader;\n(function (MessageReader) {\n function is(value) {\n const 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 errorEmitter;\n closeEmitter;\n partialMessageEmitter;\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 this.partialMessageEmitter.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 readable;\n options;\n callback;\n nextMessageLength;\n messageToken;\n buffer;\n partialMessageTimer;\n _partialMessageTimeout;\n readSemaphore;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = void 0;\nconst ral_1 = __importDefault(require(\"./ral\"));\nconst Is = __importStar(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 const 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 errorEmitter;\n closeEmitter;\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 writable;\n options;\n errorCount;\n writeSemaphore;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 code;\n data;\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 kind;\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 */\n static 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 */\n static 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 */\n static byName = new ParameterStructures('byName');\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 * An abstract implementation of a MessageType.\n */\nclass AbstractMessageSignature {\n method;\n numberOfParams;\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 /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 0);\n }\n}\nexports.RequestType0 = RequestType0;\nclass RequestType extends AbstractMessageSignature {\n _parameterStructures;\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\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 _parameterStructures;\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\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 /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 2);\n }\n}\nexports.RequestType2 = RequestType2;\nclass RequestType3 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 3);\n }\n}\nexports.RequestType3 = RequestType3;\nclass RequestType4 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 4);\n }\n}\nexports.RequestType4 = RequestType4;\nclass RequestType5 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 5);\n }\n}\nexports.RequestType5 = RequestType5;\nclass RequestType6 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 6);\n }\n}\nexports.RequestType6 = RequestType6;\nclass RequestType7 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 7);\n }\n}\nexports.RequestType7 = RequestType7;\nclass RequestType8 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 8);\n }\n}\nexports.RequestType8 = RequestType8;\nclass RequestType9 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 9);\n }\n}\nexports.RequestType9 = RequestType9;\nclass NotificationType extends AbstractMessageSignature {\n _parameterStructures;\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\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 /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 0);\n }\n}\nexports.NotificationType0 = NotificationType0;\nclass NotificationType1 extends AbstractMessageSignature {\n _parameterStructures;\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\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 /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 2);\n }\n}\nexports.NotificationType2 = NotificationType2;\nclass NotificationType3 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 3);\n }\n}\nexports.NotificationType3 = NotificationType3;\nclass NotificationType4 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 4);\n }\n}\nexports.NotificationType4 = NotificationType4;\nclass NotificationType5 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 5);\n }\n}\nexports.NotificationType5 = NotificationType5;\nclass NotificationType6 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 6);\n }\n}\nexports.NotificationType6 = NotificationType6;\nclass NotificationType7 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 7);\n }\n}\nexports.NotificationType7 = NotificationType7;\nclass NotificationType8 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\n constructor(method) {\n super(method, 8);\n }\n}\nexports.NotificationType8 = NotificationType8;\nclass NotificationType9 extends AbstractMessageSignature {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n _;\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 * ------------------------------------------------------------------------------------------ */\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 * ------------------------------------------------------------------------------------------ */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Semaphore = void 0;\nconst ral_1 = __importDefault(require(\"./ral\"));\nclass Semaphore {\n _capacity;\n _active;\n _waiting;\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(`Too 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.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 buffers;\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 data;\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 token;\n constructor(buffer) {\n this.token = new SharedArrayBufferCancellationToken(buffer);\n }\n cancel() {\n }\n dispose() {\n }\n}\nclass SharedArrayReceiverStrategy {\n kind = 'request';\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\";\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StreamMessageWriter = exports.StreamMessageReader = exports.SocketMessageWriter = exports.SocketMessageReader = exports.PortMessageWriter = exports.PortMessageReader = exports.IPCMessageWriter = exports.IPCMessageReader = void 0;\nexports.generateRandomPipeName = generateRandomPipeName;\nexports.createClientPipeTransport = createClientPipeTransport;\nexports.createServerPipeTransport = createServerPipeTransport;\nexports.createClientSocketTransport = createClientSocketTransport;\nexports.createServerSocketTransport = createServerSocketTransport;\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 * ----------------------------------------------------------------------------------------- */\nconst ril_1 = __importDefault(require(\"./ril\"));\n// Install the node runtime abstract.\nril_1.default.install();\nconst path = __importStar(require(\"path\"));\nconst os = __importStar(require(\"os\"));\nconst fs = __importStar(require(\"fs\"));\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 process;\n constructor(process) {\n super();\n this.process = process;\n const 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 process;\n errorCount;\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 onData;\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 port;\n errorCount;\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 socket;\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 if (process.platform === 'win32') {\n return `\\\\\\\\.\\\\pipe\\\\lsp-${(0, crypto_1.randomBytes)(16).toString('hex')}-sock`;\n }\n let randomLength = 32;\n const fixedLength = 'lsp-.sock'.length;\n const tmpDir = fs.realpathSync(XDG_RUNTIME_DIR ?? os.tmpdir());\n const limit = safeIpcPathLengths.get(process.platform);\n if (limit !== undefined) {\n randomLength = Math.min(limit - tmpDir.length - fixedLength, randomLength);\n }\n if (randomLength < 16) {\n throw new Error(`Unable to generate a random pipe name with ${randomLength} characters.`);\n }\n const randomSuffix = (0, crypto_1.randomBytes)(Math.floor(randomLength / 2)).toString('hex');\n return path.join(tmpDir, `lsp-${randomSuffix}.sock`);\n}\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 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(pipeName, () => {\n server.removeListener('error', reject);\n resolve({\n onConnected: () => { return connected; }\n });\n });\n });\n}\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}\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}\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}\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}\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 static emptyBuffer = Buffer.allocUnsafe(0);\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}\nclass ReadableStreamWrapper {\n stream;\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 stream;\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\";\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 * ------------------------------------------------------------------------------------------ */\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 client;\n middleware;\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\";\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProposedFeatures = exports.LanguageClient = exports.BaseLanguageClient = exports.ShutdownMode = exports.MessageTransports = exports.SuspendMode = exports.State = exports.CloseAction = exports.ErrorAction = exports.RevealOutputChannelOn = 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 vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst c2p = __importStar(require(\"./codeConverter\"));\nconst p2c = __importStar(require(\"./protocolConverter\"));\nconst Is = __importStar(require(\"./utils/is\"));\nconst async_1 = require(\"./utils/async\");\nconst UUID = __importStar(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 typeDefinition_1 = require(\"./typeDefinition\");\nconst implementation_1 = require(\"./implementation\");\nconst colorProvider_1 = require(\"./colorProvider\");\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 foldingRange_1 = require(\"./foldingRange\");\nconst declaration_1 = require(\"./declaration\");\nconst selectionRange_1 = require(\"./selectionRange\");\nconst callHierarchy_1 = require(\"./callHierarchy\");\nconst semanticTokens_1 = require(\"./semanticTokens\");\nconst linkedEditingRange_1 = require(\"./linkedEditingRange\");\nconst typeHierarchy_1 = require(\"./typeHierarchy\");\nconst inlineValue_1 = require(\"./inlineValue\");\nconst inlayHint_1 = require(\"./inlayHint\");\nconst workspaceFolder_1 = require(\"./workspaceFolder\");\nconst fileOperations_1 = require(\"./fileOperations\");\nconst inlineCompletion_1 = require(\"./inlineCompletion\");\nconst textDocumentContent_1 = require(\"./textDocumentContent\");\nconst fileSystemWatcher_1 = require(\"./fileSystemWatcher\");\nconst progress_1 = require(\"./progress\");\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 start has failed.\n */\n State[State[\"StartFailed\"] = 4] = \"StartFailed\";\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 client;\n maxRestartCount;\n restarts;\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 const 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 const 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 = {}));\nvar ShutdownMode;\n(function (ShutdownMode) {\n ShutdownMode[\"Restart\"] = \"restart\";\n ShutdownMode[\"Stop\"] = \"stop\";\n})(ShutdownMode || (exports.ShutdownMode = ShutdownMode = {}));\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 open;\n _onOpen;\n _onClose;\n disposable;\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 if (uri.scheme === notebook_1.NotebookDocumentSyncFeature.CellScheme) {\n // Notebook cells aren't in the list of tabs, but the notebook should be.\n return vscode_1.workspace.notebookDocuments.some(notebook => {\n if (this.open.has(notebook.uri.toString())) {\n const cell = notebook.getCells().find(cell => cell.document.uri.toString() === uri.toString());\n return cell !== undefined;\n }\n return false;\n });\n }\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 else if (input instanceof vscode_1.TabInputNotebook) {\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}\nclass BaseLanguageClient {\n _id;\n _name;\n _clientOptions;\n _state;\n _onStart;\n _onStop;\n _connection;\n _idleInterval;\n _ignoredRegistrations;\n // private _idleStart: number | undefined;\n _listeners;\n _disposed;\n _notificationHandlers;\n _notificationDisposables;\n _pendingNotificationHandlers;\n _requestHandlers;\n _requestDisposables;\n _pendingRequestHandlers;\n _progressHandlers;\n _pendingProgressHandlers;\n _progressDisposables;\n _initializeResult;\n _outputChannel;\n _disposeOutputChannel;\n _traceOutputChannel;\n _traceLogLevel;\n _capabilities;\n _diagnostics;\n _syncedDocuments;\n _didChangeTextDocumentFeature;\n _inFlightOpenNotifications;\n _pendingChangeSemaphore;\n _pendingChangeDelayer;\n _didOpenTextDocumentFeature;\n _fileEvents;\n _fileEventDelayer;\n _telemetryEmitter;\n _stateChangeEmitter;\n _trace;\n _traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text;\n _tracer;\n _c2p;\n _p2c;\n _tabsModel;\n constructor(id, name, clientOptions) {\n this._id = id;\n this._name = name;\n clientOptions = clientOptions || {};\n const markdown = {\n isTrusted: false,\n supportHtml: false,\n supportThemeIcons: false\n };\n if (clientOptions.markdown !== undefined) {\n markdown.isTrusted = ResolvedClientOptions.sanitizeIsTrusted(clientOptions.markdown.isTrusted);\n markdown.supportHtml = clientOptions.markdown.supportHtml === true;\n markdown.supportThemeIcons = clientOptions.markdown.supportThemeIcons === 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 textSynchronization: this.createTextSynchronizationOptions(clientOptions.textSynchronization)\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 this._traceLogLevel = this._outputChannel.logLevel;\n }\n else {\n this._outputChannel = undefined;\n this._disposeOutputChannel = true;\n this._traceLogLevel = vscode_1.LogLevel.Info;\n }\n this._traceOutputChannel = clientOptions.traceOutputChannel;\n if (this._traceOutputChannel !== undefined) {\n this._traceLogLevel = this._traceOutputChannel.logLevel;\n }\n this._diagnostics = undefined;\n this._inFlightOpenNotifications = 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.trace(messageOrDataObject, data);\n }\n else {\n this.traceObject(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, this._clientOptions.markdown.supportThemeIcons);\n this._syncedDocuments = new Map();\n this.registerBuiltinFeatures();\n }\n createTextSynchronizationOptions(options) {\n if (!options) {\n return { delayOpenNotifications: false };\n }\n if (typeof options.delayOpenNotifications === 'boolean') {\n return { delayOpenNotifications: options.delayOpenNotifications };\n }\n return { delayOpenNotifications: false };\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 tabsModel() {\n if (this._tabsModel === undefined) {\n this._tabsModel = new Tabs();\n }\n return this._tabsModel;\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, { log: true });\n if (this._traceOutputChannel === undefined) {\n this._traceLogLevel = this._outputChannel.logLevel;\n }\n }\n return this._outputChannel;\n }\n get traceOutputChannel() {\n return this._traceOutputChannel ? this._traceOutputChannel : 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 const oldState = this.getPublicState();\n this._state = value;\n const 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 case ClientState.StartFailed:\n return State.StartFailed;\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 // Send ony depending open notifications\n await this._didOpenTextDocumentFeature.sendPendingOpenNotifications();\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 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 if (token !== undefined && token.isCancellationRequested) {\n return Promise.reject(new vscode_languageserver_protocol_1.ResponseError(vscode_languageserver_protocol_1.LSPErrorCodes.RequestCancelled, 'Request got cancelled'));\n }\n const _sendRequest = this._clientOptions.middleware?.sendRequest;\n if (_sendRequest !== undefined) {\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._inFlightOpenNotifications.add(openNotification);\n }\n let documentToClose;\n if (typeof type !== 'string' && type.method === vscode_languageserver_protocol_1.DidCloseTextDocumentNotification.method) {\n documentToClose = params.textDocument.uri;\n }\n // Ensure we have a connection before we force the document sync.\n const connection = await this.$start();\n // Send any depending open notifications\n const didDropOpenNotification = await this._didOpenTextDocumentFeature.sendPendingOpenNotifications(documentToClose);\n if (didDropOpenNotification) {\n // Don't forward this close notification if we dropped the\n // corresponding open notification.\n return;\n }\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 off to the writer and the writer has a semaphore\n // lock with a capacity of 1 no additional async scheduling can happen until\n // the message is actually handed off.\n if (openNotification !== undefined) {\n this._inFlightOpenNotifications.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 error(message, data, showNotification = true) {\n this.outputChannel.error(this.getLogMessage(message, data));\n if (showNotification === 'force' || (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Error)) {\n this.showNotificationMessage(vscode_languageserver_protocol_1.MessageType.Error, message, data);\n }\n }\n warn(message, data, showNotification = true) {\n this.outputChannel.warn(this.getLogMessage(message, data));\n if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Warn) {\n this.showNotificationMessage(vscode_languageserver_protocol_1.MessageType.Warning, message, data);\n }\n }\n info(message, data, showNotification = true) {\n this.outputChannel.info(this.getLogMessage(message, data));\n if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Info) {\n this.showNotificationMessage(vscode_languageserver_protocol_1.MessageType.Info, message, data);\n }\n }\n debug(message, data, showNotification = true) {\n this.outputChannel.debug(this.getLogMessage(message, data));\n if (showNotification && this._clientOptions.revealOutputChannelOn <= RevealOutputChannelOn.Debug) {\n this.showNotificationMessage(vscode_languageserver_protocol_1.MessageType.Debug, message, data);\n }\n }\n trace(message, data) {\n this.traceOutputChannel.trace(this.getLogMessage(message, data));\n }\n traceObject(data) {\n this.traceOutputChannel.trace(JSON.stringify(data));\n }\n showNotificationMessage(type, message, data) {\n message = message ?? 'A request has failed. See the output for more information.';\n if (data) {\n message += '\\n' + this.data2String(data);\n }\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 getLogMessage(message, data) {\n return data !== null && data !== undefined ? `${message}\\n${this.data2String(data)}` : message;\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 = vscode_1.languages.createDiagnosticCollection(this._clientOptions.diagnosticCollectionName ?? this._id);\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 const 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, token) => {\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, token, 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.hookLogLevelChanged(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 const folders = vscode_1.workspace.workspaceFolders;\n if (!folders || folders.length === 0) {\n return undefined;\n }\n const 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(ShutdownMode.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 = 2000) {\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 === ShutdownMode.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 === ShutdownMode.Stop || mode === ShutdownMode.Restart) && 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 const fileEvents = client._fileEvents;\n client._fileEvents = [];\n try {\n await client.sendNotification(vscode_languageserver_protocol_1.DidChangeWatchedFilesNotification.type, { changes: fileEvents });\n }\n catch (error) {\n // Restore the file events.\n client._fileEvents.push(...fileEvents);\n throw error;\n }\n });\n }\n const workSpaceMiddleware = this.clientOptions.middleware?.workspace;\n (workSpaceMiddleware?.didChangeWatchedFile ? workSpaceMiddleware.didChangeWatchedFile(event, didChangeWatchedFile) : didChangeWatchedFile(event)).catch((error) => {\n client.error(`Notifying 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._inFlightOpenNotifications);\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 _diagnosticQueue = new Map();\n _diagnosticQueueState = { state: 'idle' };\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 }).catch((error) => {\n this.error(`Processing diagnostic queue failed.`, error);\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 const errorHandler = (error, message, count) => {\n this.handleConnectionError(error, message, count).catch((error) => this.error(`Handling connection error failed`, error));\n };\n const 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(ShutdownMode.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.', undefined, !handlerResult.handled);\n this.cleanUp(ShutdownMode.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 hookLogLevelChanged(connection) {\n this._listeners.push(this.traceOutputChannel.onDidChangeLogLevel((level) => {\n this._traceLogLevel = level;\n this.refreshTrace(connection, true);\n }));\n }\n refreshTrace(connection, sendNotification = false) {\n const config = vscode_1.workspace.getConfiguration(this._id);\n let trace = this._traceLogLevel !== vscode_1.LogLevel.Trace ? vscode_languageserver_protocol_1.Trace.Off : vscode_languageserver_protocol_1.Trace.Messages;\n let traceFormat = vscode_languageserver_protocol_1.TraceFormat.Text;\n if (config && trace !== vscode_languageserver_protocol_1.Trace.Off) {\n const traceConfig = config.get('trace.server', 'messages');\n if (typeof traceConfig === 'string') {\n trace = vscode_languageserver_protocol_1.Trace.fromString(traceConfig);\n if (trace === vscode_languageserver_protocol_1.Trace.Off) {\n trace = vscode_languageserver_protocol_1.Trace.Messages;\n }\n }\n else {\n trace = vscode_languageserver_protocol_1.Trace.fromString(config.get('trace.server.verbosity', 'messages'));\n if (trace === vscode_languageserver_protocol_1.Trace.Off) {\n trace = vscode_languageserver_protocol_1.Trace.Messages;\n }\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 const 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 _features = [];\n _dynamicFeatures = new Map();\n registerFeatures(features) {\n for (const 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._didOpenTextDocumentFeature = new textSynchronization_1.DidOpenTextDocumentFeature(this, this._syncedDocuments);\n this.registerFeature(this._didOpenTextDocumentFeature);\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 (const 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 workspaceEdit.metadataSupport = true;\n workspaceEdit.snippetEditSupport = true;\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 textDocumentFilter = (0, features_1.ensure)((0, features_1.ensure)(result, 'textDocument'), 'filters');\n textDocumentFilter.relativePatternSupport = 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 (const 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 middleware = this.clientOptions.middleware?.workspace?.handleApplyEdit;\n if (middleware) {\n const resultOrError = await middleware(params, nextParams => this.doHandleApplyWorkspaceEdit(nextParams));\n if (resultOrError instanceof vscode_languageserver_protocol_1.ResponseError) {\n return Promise.reject(resultOrError);\n }\n return resultOrError;\n }\n else {\n return this.doHandleApplyWorkspaceEdit(params);\n }\n }\n workspaceEditLock = new async_1.Semaphore(1);\n async doHandleApplyWorkspaceEdit(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, { isRefactoring: params.metadata?.isRefactoring }).then((value) => { return { applied: value }; }));\n }\n static 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 ]);\n static 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 ]);\n handleFailedRequest(type, token, error, defaultValue, showNotification = true, throwOnCancel = false) {\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 && !throwOnCancel) {\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;\nclass LanguageClient extends BaseLanguageClient {\n serverOptions;\n constructor(id, name, serverOptions, clientOptions) {\n super(id, name, clientOptions);\n this.serverOptions = serverOptions;\n }\n async createMessageTransports(_encoding) {\n return this.serverOptions();\n }\n}\nexports.LanguageClient = LanguageClient;\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 const result = [\n new inlineCompletion_1.InlineCompletionItemFeature(_client),\n new textDocumentContent_1.TextDocumentContentFeature(_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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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', 'command']\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.RefactorMove,\n vscode_languageserver_protocol_1.CodeActionKind.RefactorRewrite,\n vscode_languageserver_protocol_1.CodeActionKind.Source,\n vscode_languageserver_protocol_1.CodeActionKind.SourceOrganizeImports,\n vscode_languageserver_protocol_1.CodeActionKind.Notebook\n ]\n }\n };\n cap.honorsChangeAnnotations = true;\n cap.documentationSupport = true;\n cap.tagSupport = {\n valueSet: [vscode_languageserver_protocol_1.CodeActionTag.LLMGenerated]\n };\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, this.getMetadata(options)), provider];\n }\n getMetadata(options) {\n if (options.codeActionKinds === undefined && options.documentation === undefined) {\n return undefined;\n }\n return {\n providedCodeActionKinds: this._client.protocol2CodeConverter.asCodeActionKinds(options.codeActionKinds),\n documentation: this._client.protocol2CodeConverter.asCodeActionDocumentations(options.documentation)\n };\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 * ------------------------------------------------------------------------------------------ */\n/// <reference path=\"../../typings/vscode.proposed.codeActionAI.d.ts\" preserve: true/>\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConverter = createConverter;\nconst code = __importStar(require(\"vscode\"));\nconst proto = __importStar(require(\"vscode-languageserver-protocol\"));\nconst Is = __importStar(require(\"./utils/is\"));\nconst async = __importStar(require(\"./utils/async\"));\nconst protocolCompletionItem_1 = __importDefault(require(\"./protocolCompletionItem\"));\nconst protocolCodeLens_1 = __importDefault(require(\"./protocolCodeLens\"));\nconst protocolDocumentLink_1 = __importDefault(require(\"./protocolDocumentLink\"));\nconst protocolCodeAction_1 = __importDefault(require(\"./protocolCodeAction\"));\nconst protocolDiagnostic_1 = require(\"./protocolDiagnostic\");\nconst protocolCallHierarchyItem_1 = __importDefault(require(\"./protocolCallHierarchyItem\"));\nconst protocolTypeHierarchyItem_1 = __importDefault(require(\"./protocolTypeHierarchyItem\"));\nconst protocolWorkspaceSymbol_1 = __importDefault(require(\"./protocolWorkspaceSymbol\"));\nconst protocolInlayHint_1 = __importDefault(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 const 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 const result = [];\n for (const tag of tags) {\n const 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 (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 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 const result = { label: label };\n if (labelDetails !== undefined) {\n result.labelDetails = labelDetails;\n }\n const 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 const 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 if (item.isAI) {\n result.tags ??= [];\n result.tags.push(proto.CodeActionTag.LLMGenerated);\n }\n return result;\n }\n function asCodeActionSync(item) {\n const 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 if (item.isAI) {\n result.tags ??= [];\n result.tags.push(proto.CodeActionTag.LLMGenerated);\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 return proto.InlineValueContext.create(context.frameId, asRange(context.stoppedLocation));\n }\n function asInlineCompletionParams(document, position, context) {\n return {\n textDocument: asTextDocumentIdentifier(document), position: asPosition(position),\n context: asInlineCompletionContext(context)\n };\n }\n function asInlineCompletionContext(context) {\n return {\n triggerKind: asInlineCompletionTriggerKind(context.triggerKind),\n selectedCompletionInfo: asSelectedCompletionInfo(context.selectedCompletionInfo)\n };\n }\n function asInlineCompletionTriggerKind(kind) {\n switch (kind) {\n case code.InlineCompletionTriggerKind.Invoke:\n return proto.InlineCompletionTriggerKind.Invoked;\n case code.InlineCompletionTriggerKind.Automatic:\n return proto.InlineCompletionTriggerKind.Automatic;\n }\n }\n function asSelectedCompletionInfo(info) {\n if (info === undefined || info === null) {\n return undefined;\n }\n return { range: asRange(info.range), text: info.text };\n }\n function asCommand(item) {\n const result = proto.Command.create(item.title, item.command);\n if (item.tooltip) {\n result.tooltip = item.tooltip;\n }\n if (item.arguments) {\n result.arguments = item.arguments;\n }\n return result;\n }\n function asCodeLens(item) {\n const 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 const 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 const 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 asInlineCompletionContext\n };\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 const clc = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'codeLens');\n clc.dynamicRegistration = true;\n clc.resolveSupport = { properties: ['command'] };\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.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 const [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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 labelDetailsSupport;\n constructor(client) {\n super(client, vscode_languageserver_protocol_1.CompletionRequest.type);\n this.labelDetailsSupport = new Map();\n }\n fillClientCapabilities(capabilities) {\n const 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 applyKindSupport: true,\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncConfigurationFeature = exports.ConfigurationFeature = void 0;\nexports.toJSONObject = toJSONObject;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst Is = __importStar(require(\"./utils/is\"));\nconst UUID = __importStar(require(\"./utils/uuid\"));\nconst features_1 = require(\"./features\");\n/**\n * Configuration pull model. From server to client.\n */\nclass ConfigurationFeature {\n _client;\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 const client = this._client;\n client.onRequest(vscode_languageserver_protocol_1.ConfigurationRequest.type, (params, token) => {\n const configuration = (params) => {\n const result = [];\n for (const item of params.items) {\n const 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 const 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 const index = section.lastIndexOf('.');\n if (index === -1) {\n result = toJSONObject(vscode_1.workspace.getConfiguration(undefined, resource).get(section));\n }\n else {\n const 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 const config = vscode_1.workspace.getConfiguration(undefined, resource);\n result = {};\n for (const 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}\nclass SyncConfigurationFeature {\n _client;\n isCleared;\n _listeners;\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 const 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 const 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 const 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 const 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 const 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 const resource = this._client.clientOptions.workspaceFolder\n ? this._client.clientOptions.workspaceFolder.uri\n : undefined;\n const result = Object.create(null);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const 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 const 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.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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 const 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.DiagnosticFeature = exports.DiagnosticPullMode = exports.vsdiag = void 0;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst uuid_1 = require(\"./utils/uuid\");\nconst globPattern_1 = require(\"./utils/globPattern\");\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[\"onFocus\"] = \"onFocus\";\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 = {}));\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 documentPullStates;\n workspacePullStates;\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 isDisposed;\n client;\n tabs;\n options;\n onDidChangeDiagnosticsEmitter;\n provider;\n diagnostics;\n openRequests;\n documentStates;\n workspaceErrorCounter;\n workspaceCancellation;\n workspaceTimeout;\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 // The previous resultId from the workspace pull state can map to diagnostics we no longer have\n // (e.g. they came from a workspace report but were overwritten by a later document pull request).\n // Clear the workspace pull state for this document as well to ensure we get fresh diagnostics.\n this.forget(PullState.workspace, document);\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: [] }, true, true);\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, resultReporter) => {\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 client;\n diagnosticRequestor;\n lastDocumentToPull;\n documents;\n timeoutHandle;\n // The problem is that there could be outstanding diagnostic requests\n // when we shutdown which when we receive the result will trigger a\n // reschedule. So we remember if the background scheduler got disposed\n // and ignore those re-schedules\n isDisposed;\n constructor(client, diagnosticRequestor) {\n this.client = client;\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 // Make sure we run up to that document. We could\n // consider inserting it after the current last\n // document for performance reasons but it might not catch\n // all interfile dependencies.\n this.lastDocumentToPull = document;\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 return;\n }\n else if (key === this.lastDocumentToPullKey()) {\n // The remove document was the one we would run up to. So\n // take the one before it.\n const before = this.documents.before(key);\n if (before === undefined) {\n this.stop();\n }\n else {\n this.lastDocumentToPull = before;\n }\n }\n }\n trigger() {\n this.lastDocumentToPull = this.documents.last;\n this.runLoop();\n }\n runLoop() {\n if (this.isDisposed === true) {\n return;\n }\n // We have an empty background list. Make sure we stop\n // background activity.\n if (this.documents.size === 0) {\n this.stop();\n return;\n }\n // We have no last document anymore so stop the loop\n if (this.lastDocumentToPull === undefined) {\n return;\n }\n // We have a timeout in the loop. So we should not schedule\n // another run.\n if (this.timeoutHandle !== undefined) {\n return;\n }\n this.timeoutHandle = (0, vscode_languageserver_protocol_1.RAL)().timer.setTimeout(() => {\n const document = this.documents.first;\n if (document === undefined) {\n return;\n }\n const key = DocumentOrUri.asKey(document);\n this.diagnosticRequestor.pullAsync(document).catch((error) => {\n this.client.error(`Document pull failed for text document ${key}`, error, false);\n }).finally(() => {\n this.timeoutHandle = undefined;\n this.documents.set(key, document, vscode_languageserver_protocol_1.Touch.Last);\n if (key !== this.lastDocumentToPullKey()) {\n this.runLoop();\n }\n });\n }, 500);\n }\n dispose() {\n this.isDisposed = true;\n this.stop();\n this.documents.clear();\n this.lastDocumentToPull = undefined;\n }\n stop() {\n this.timeoutHandle?.dispose();\n this.timeoutHandle = undefined;\n this.lastDocumentToPull = undefined;\n }\n lastDocumentToPullKey() {\n return this.lastDocumentToPull !== undefined ? DocumentOrUri.asKey(this.lastDocumentToPull) : undefined;\n }\n}\nclass DiagnosticFeatureProviderImpl {\n disposable;\n diagnosticRequestor;\n activeTextDocument;\n backgroundScheduler;\n constructor(client, tabs, options) {\n const diagnosticPullOptions = Object.assign({ onChange: false, onSave: false, onFocus: false }, client.clientOptions.diagnosticPullOptions);\n const documentSelector = client.protocol2CodeConverter.asDocumentSelector(options.documentSelector);\n const disposables = [];\n const matchFilter = (filter, resource) => {\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 && !(0, globPattern_1.matchGlobPattern)(filter.pattern, resource)) {\n return false;\n }\n return true;\n };\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 if (matchFilter(filter, resource)) {\n return true;\n }\n }\n return false;\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 matchesCell = (cell) => {\n // Cells match if the language is allowed and if the containing notebook is visible.\n return vscode_1.languages.match(documentSelector, cell.document) > 0 && tabs.isVisible(cell.notebook.uri);\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(client, this.diagnosticRequestor);\n const addToBackgroundIfNeeded = (document) => {\n if (!matches(document) || !options.interFileDependencies || isActiveDocument(document) || diagnosticPullOptions.onChange === false) {\n return;\n }\n this.backgroundScheduler.add(document);\n };\n const considerDocument = (textDocument, mode) => {\n return (diagnosticPullOptions.filter === undefined || !diagnosticPullOptions.filter(textDocument, mode)) && this.diagnosticRequestor.knows(PullState.document, textDocument);\n };\n this.activeTextDocument = vscode_1.window.activeTextEditor?.document;\n disposables.push(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 if (diagnosticPullOptions.onFocus === true && matches(this.activeTextDocument) && considerDocument(this.activeTextDocument, DiagnosticPullMode.onFocus)) {\n this.diagnosticRequestor.pull(this.activeTextDocument);\n }\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 const notebookFeature = client.getFeature(vscode_languageserver_protocol_1.NotebookDocumentSyncRegistrationType.method);\n disposables.push(notebookFeature.onOpenNotificationSent((event) => {\n // Send a pull for all opened cells in the notebook.\n for (const cell of event.getCells()) {\n if (matchesCell(cell)) {\n this.diagnosticRequestor.pull(cell.document, () => { addToBackgroundIfNeeded(cell.document); });\n }\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 // Do the same for already open notebook cells.\n for (const notebookDocument of vscode_1.workspace.notebookDocuments) {\n for (const cell of notebookDocument.getCells()) {\n if (matchesCell(cell)) {\n this.diagnosticRequestor.pull(cell.document, () => { addToBackgroundIfNeeded(cell.document); });\n pulledTextDocuments.add(cell.document.uri.toString());\n }\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 (considerDocument(textDocument, DiagnosticPullMode.onType)) {\n this.diagnosticRequestor.pull(textDocument, () => { this.backgroundScheduler.trigger(); });\n }\n }));\n disposables.push(notebookFeature.onChangeNotificationSent(async (event) => {\n // Send a pull for all changed cells in the notebook.\n const textEvents = event.cells?.textContent || [];\n const changedCells = textEvents.map((c) => event.notebook.getCells().find(cell => cell.document.uri.toString() === c.document.uri.toString()));\n for (const cell of changedCells) {\n if (cell && matchesCell(cell)) {\n this.diagnosticRequestor.pull(cell.document, () => { this.backgroundScheduler.trigger(); });\n }\n }\n // Clear out any closed cells.\n const closedCells = event.cells?.structure?.didClose || [];\n for (const cell of closedCells) {\n this.diagnosticRequestor.forgetDocument(cell.document);\n }\n // Send a pull for any new opened cells.\n const openedCells = event.cells?.structure?.didOpen || [];\n for (const cell of openedCells) {\n if (matchesCell(cell)) {\n this.diagnosticRequestor.pull(cell.document, () => { this.backgroundScheduler.trigger(); });\n }\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 (considerDocument(textDocument, DiagnosticPullMode.onSave)) {\n this.diagnosticRequestor.pull(event.textDocument);\n }\n }));\n disposables.push(notebookFeature.onSaveNotificationSent((event) => {\n for (const cell of event.getCells()) {\n if (matchesCell(cell)) {\n this.diagnosticRequestor.pull(cell.document);\n }\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 disposables.push(notebookFeature.onCloseNotificationSent((event) => {\n for (const cell of event.getCells()) {\n this.cleanUpDocument(cell.document);\n }\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 forget(document) {\n this.cleanUpDocument(document);\n }\n cleanUpDocument(document) {\n this.backgroundScheduler.remove(document);\n if (this.diagnosticRequestor.knows(PullState.document, document)) {\n this.diagnosticRequestor.forgetDocument(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 const capability = ensure(ensure(capabilities, 'textDocument'), 'diagnostic');\n capability.relatedInformation = true;\n capability.tagSupport = { valueSet: [vscode_languageserver_protocol_1.DiagnosticTag.Unnecessary, vscode_languageserver_protocol_1.DiagnosticTag.Deprecated] };\n capability.codeDescriptionSupport = true;\n capability.dataSupport = true;\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 const [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 super.clear();\n }\n refresh() {\n for (const provider of this.getAllProviders()) {\n provider.onDidChangeDiagnosticsEmitter.fire();\n }\n }\n registerLanguageProvider(options) {\n const provider = new DiagnosticFeatureProviderImpl(this._client, this._client.tabsModel, 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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 const 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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 const 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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(require(\"./utils/uuid\"));\nconst features_1 = require(\"./features\");\nclass ExecuteCommandFeature {\n _client;\n _commands;\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 const 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 const disposables = this._commands.get(id);\n if (disposables) {\n this._commands.delete(id);\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceFeature = exports.TextDocumentLanguageFeature = exports.TextDocumentEventFeature = exports.DynamicDocumentFeature = exports.DynamicFeature = exports.StaticFeature = exports.LSPCancellationError = void 0;\nexports.ensure = ensure;\nconst vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst Is = __importStar(require(\"./utils/is\"));\nconst UUID = __importStar(require(\"./utils/uuid\"));\nclass LSPCancellationError extends vscode_1.CancellationError {\n data;\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}\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 _client;\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 _event;\n _type;\n _middleware;\n _createParams;\n _textDocument;\n _selectorFilter;\n _listener;\n _selectors;\n _onNotificationSent;\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 this._onNotificationSent = new vscode_1.EventEmitter();\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 _registrationType;\n _registrations;\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 const 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 const registration = this._registrations.get(id);\n if (registration !== undefined) {\n this._registrations.delete(id);\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 const 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 _client;\n _registrationType;\n _registrations;\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 const registration = this._registrations.get(id);\n if (registration !== undefined) {\n this._registrations.delete(id);\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","\"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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WillDeleteFilesFeature = exports.WillRenameFilesFeature = exports.WillCreateFilesFeature = exports.DidDeleteFilesFeature = exports.DidRenameFilesFeature = exports.DidCreateFilesFeature = void 0;\nconst code = __importStar(require(\"vscode\"));\nconst minimatch = __importStar(require(\"minimatch\"));\nconst proto = __importStar(require(\"vscode-languageserver-protocol\"));\nconst UUID = __importStar(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 _client;\n _event;\n _registrationType;\n _clientCapability;\n _serverCapability;\n _listener;\n // This property must stay private. Otherwise the type `minimatch.IMinimatch` becomes public and as a consequence we would need to\n // ship the d.ts files for minimatch to make the compiler happy when compiling against the vscode-languageclient library\n _filters;\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.info(`Unable to determine file type for ${uri.toString()}. Treating as a match.`);\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 _notificationType;\n _accessUri;\n _createParams;\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 _willListener;\n _fsPathFileTypes = new Map();\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 _requestType;\n _accessUri;\n _createParams;\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.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 _client;\n _notifyFileEvent;\n _watchers;\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 const disposables = [];\n for (const 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 const disposables = this._watchers.get(id);\n if (disposables) {\n this._watchers.delete(id);\n for (const disposable of disposables) {\n disposable.dispose();\n }\n }\n }\n clear() {\n this._watchers.forEach((disposables) => {\n for (const 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.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 const 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 const [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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 const 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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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.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 const 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 const [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.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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 const 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.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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LinkedEditingFeature = void 0;\nconst code = __importStar(require(\"vscode\"));\nconst proto = __importStar(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 const [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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NotebookDocumentSyncFeature = void 0;\nconst vscode = __importStar(require(\"vscode\"));\nconst proto = __importStar(require(\"vscode-languageserver-protocol\"));\nconst UUID = __importStar(require(\"./utils/uuid\"));\nconst Is = __importStar(require(\"./utils/is\"));\nconst globPattern_1 = require(\"./utils/globPattern\");\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 if (!(0, globPattern_1.matchGlobPattern)(filter.pattern, uri)) {\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 client;\n options;\n notebookSyncInfo;\n notebookDidOpen;\n disposables;\n selector;\n onChangeNotificationSent;\n onOpenNotificationSent;\n onCloseNotificationSent;\n onSaveNotificationSent;\n constructor(client, options, onChangeNotificationSent, onOpenNotificationSent, onCloseNotificationSent, onSaveNotificationSent) {\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 this.onChangeNotificationSent = onChangeNotificationSent;\n this.onOpenNotificationSent = onOpenNotificationSent;\n this.onCloseNotificationSent = onCloseNotificationSent;\n this.onSaveNotificationSent = onSaveNotificationSent;\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.getMatchingCellsConsideringSyncInfo(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 if (vscode.languages.match(this.selector, textDocument) > 0) {\n return true;\n }\n // Work around for https://github.com/microsoft/vscode/issues/202163\n const key = textDocument.uri.toString();\n for (const syncInfo of this.notebookSyncInfo.values()) {\n if (syncInfo.uris.has(key)) {\n return true;\n }\n }\n return false;\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.getSyncInfo(notebookDocument);\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.mergeCells(notebookDocument, syncInfo, [cell]);\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, cell, event) {\n // No match with the selector\n if (vscode.languages.match(this.selector, event.document) === 0) {\n return;\n }\n const syncInfo = this.getSyncInfo(notebookDocument);\n // Notebook got never synced. So it doesn't matter if a cell document changes.\n if (syncInfo === undefined || !syncInfo.uris.has(cell.document.uri.toString())) {\n return;\n }\n this.doSendChange({\n notebook: notebookDocument,\n cells: { textContent: [event] }\n }, syncInfo.cells).catch(() => { });\n }\n didCloseNotebookCellTextDocument(notebookDocument, cell) {\n const syncInfo = this.getSyncInfo(notebookDocument);\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, syncInfo = this.getSyncInfo(notebookDocument)) {\n if (syncInfo !== undefined) {\n if (matchingCells === undefined) {\n matchingCells = syncInfo.cells.slice();\n }\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 matchingCells = this.getMatchingCells(notebookDocument);\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.getSyncInfo(notebookDocument);\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.getMatchingCellsFromEvent(notebookDocument, syncInfo, event);\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.getSyncInfo(notebookDocument);\n if (syncInfo === undefined) {\n return;\n }\n this.doSendSave(notebookDocument).catch(() => { });\n }\n didClose(notebookDocument, syncInfo = this.getSyncInfo(notebookDocument)) {\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 syncInfo = this.getSyncInfo(notebookDocument);\n if (syncInfo !== undefined) {\n throw new Error(`Notebook document ${notebookDocument.uri.toString()} is already open`);\n }\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 cellDocuments = cells.map(cell => this.client.code2ProtocolConverter.asTextDocumentItem(cell.document));\n try {\n await this.client.sendNotification(proto.DidOpenNotebookDocumentNotification.type, {\n notebookDocument: Converter.c2p.asNotebookDocument(notebookDocument, cells, this.client.code2ProtocolConverter),\n cellTextDocuments: cellDocuments\n });\n this.onOpenNotificationSent.fire(notebookDocument);\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 const cells = this.getMatchingCellsFromSyncInfo(event.notebook);\n if (cells === undefined) {\n throw new Error(`Received changed event for un-synced notebook ${event.notebook.uri.toString()}`);\n }\n return this.doSendChange(event, cells);\n }\n async doSendChange(event, cells) {\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 this.onChangeNotificationSent.fire(event);\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 this.onSaveNotificationSent.fire(notebookDocument);\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 const cells = this.getMatchingCellsFromSyncInfo(notebookDocument);\n if (cells === undefined) {\n throw new Error(`Received close event for un-synced notebook ${notebookDocument.uri.toString()}`);\n }\n return this.doSendClose(notebookDocument, cells);\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 this.onCloseNotificationSent.fire(notebookDocument);\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 getSynchronizedCells(notebookDocument) {\n const syncInfo = this.getSyncInfo(notebookDocument);\n return syncInfo?.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 getMatchingCellsFromEvent(notebookDocument, syncInfo, event) {\n if (this.options.notebookSelector === undefined) {\n return undefined;\n }\n let selector;\n for (const item of this.options.notebookSelector) {\n if (item.notebook === undefined || $NotebookDocumentFilter.matchNotebook(item.notebook, notebookDocument)) {\n selector = item;\n break;\n }\n }\n if (selector === undefined) {\n return undefined;\n }\n if ((event.cellChanges === undefined || event.cellChanges.length === 0) && (event.contentChanges === undefined || event.contentChanges.length === 0)) {\n return syncInfo.cells;\n }\n let cells;\n if (event.cellChanges !== undefined && event.cellChanges.length > 0) {\n const changedCells = event.cellChanges.map(item => item.cell);\n const filtered = this.filterCells(notebookDocument, changedCells, selector.cells);\n if (filtered.length !== changedCells.length) {\n cells = new Set(syncInfo.uris);\n for (const cell of changedCells) {\n cells.delete(cell.document.uri.toString());\n }\n for (const cell of filtered) {\n cells.add(cell.document.uri.toString());\n }\n }\n }\n if (event.contentChanges !== undefined && event.contentChanges.length > 0) {\n if (cells === undefined) {\n cells = new Set(syncInfo.uris);\n }\n for (const item of event.contentChanges) {\n for (const cell of item.removedCells) {\n cells.delete(cell.document.uri.toString());\n }\n const filtered = this.filterCells(notebookDocument, new Array(...item.addedCells), selector.cells);\n for (const cell of filtered) {\n cells.add(cell.document.uri.toString());\n }\n }\n }\n if (cells === undefined) {\n return syncInfo.cells;\n }\n // Only return the cells that are still in the set, but keep the order\n // as present in the current notebook.\n const result = [];\n const current = notebookDocument.getCells();\n for (const cell of current) {\n if (cells.has(cell.document.uri.toString())) {\n result.push(cell);\n }\n }\n return result;\n }\n getMatchingCellsFromSyncInfo(notebook) {\n const syncInfo = this.getSyncInfo(notebook);\n return syncInfo !== undefined ? syncInfo.cells : undefined;\n }\n getMatchingCellsConsideringSyncInfo(notebook) {\n const syncInfo = this.getSyncInfo(notebook);\n return syncInfo !== undefined ? syncInfo.cells : this.getMatchingCells(notebook);\n }\n mergeCells(notebookDocument, syncInfo, cells) {\n const result = [];\n const merged = new Set(syncInfo.uris);\n for (const cell of cells) {\n merged.add(cell.document.uri.toString());\n }\n // Keep the cell order of the current notebook.\n for (const cell of notebookDocument.getCells()) {\n if (merged.has(cell.document.uri.toString())) {\n result.push(cell);\n }\n }\n return result;\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 getSyncInfo(notebook) {\n return this.notebookSyncInfo.get(notebook.uri.toString());\n }\n}\nclass NotebookDocumentSyncFeature {\n static CellScheme = 'vscode-notebook-cell';\n client;\n registrations;\n dedicatedChannel;\n _onChangeNotificationSent;\n _onOpenNotificationSent;\n _onCloseNotificationSent;\n _onSaveNotificationSent;\n constructor(client) {\n this.client = client;\n this.registrations = new Map();\n this.registrationType = proto.NotebookDocumentSyncRegistrationType.type;\n this._onChangeNotificationSent = new vscode.EventEmitter();\n this._onOpenNotificationSent = new vscode.EventEmitter();\n this._onCloseNotificationSent = new vscode.EventEmitter();\n this._onSaveNotificationSent = new vscode.EventEmitter();\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, cell] = this.findNotebookDocumentAndCell(textDocument);\n if (notebookDocument === undefined || cell === undefined) {\n return;\n }\n for (const provider of this.registrations.values()) {\n if (provider instanceof NotebookDocumentSyncFeatureProvider) {\n provider.didChangeNotebookCellTextDocument(notebookDocument, cell, 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 registrationType;\n get onOpenNotificationSent() {\n return this._onOpenNotificationSent.event;\n }\n get onChangeNotificationSent() {\n return this._onChangeNotificationSent.event;\n }\n get onCloseNotificationSent() {\n return this._onCloseNotificationSent.event;\n }\n get onSaveNotificationSent() {\n return this._onSaveNotificationSent.event;\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, this._onChangeNotificationSent, this._onOpenNotificationSent, this._onCloseNotificationSent, this._onSaveNotificationSent);\n this.registrations.set(data.id, provider);\n }\n unregister(id) {\n const provider = this.registrations.get(id);\n if (provider !== undefined) {\n this.registrations.delete(id);\n provider.dispose();\n }\n }\n clear() {\n for (const provider of this.registrations.values()) {\n provider.dispose();\n }\n this.registrations.clear();\n this._onChangeNotificationSent.dispose();\n this._onChangeNotificationSent = new vscode.EventEmitter();\n this._onOpenNotificationSent.dispose();\n this._onOpenNotificationSent = new vscode.EventEmitter();\n this._onCloseNotificationSent.dispose();\n this._onCloseNotificationSent = new vscode.EventEmitter();\n this._onSaveNotificationSent.dispose();\n this._onSaveNotificationSent = new vscode.EventEmitter();\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;\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 _client;\n activeParts;\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\";\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProgressPart = 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 vscode_1 = require(\"vscode\");\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst Is = __importStar(require(\"./utils/is\"));\nclass ProgressPart {\n _client;\n _token;\n _infinite;\n _reported;\n // listener for LSP progress messages. Set in constructor.\n _lspProgressDisposable;\n // VS Code progress state. Set in Window.withProgress callback.\n _progress;\n _cancellationToken;\n _tokenDisposable;\n _resolve;\n _reject;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = __importStar(require(\"vscode\"));\nclass ProtocolCallHierarchyItem extends code.CallHierarchyItem {\n data;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst vscode = __importStar(require(\"vscode\"));\nclass ProtocolCodeAction extends vscode.CodeAction {\n data;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = __importStar(require(\"vscode\"));\nclass ProtocolCodeLens extends code.CodeLens {\n data;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = __importStar(require(\"vscode\"));\nclass ProtocolCompletionItem extends code.CompletionItem {\n data;\n fromEdit;\n documentationFormat;\n originalItemKind;\n deprecated;\n insertTextMode;\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 * ------------------------------------------------------------------------------------------ */\n/// <reference path=\"../../typings/vscode.proposed.codeActionAI.d.ts\" preserve: true/>\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConverter = createConverter;\nconst code = __importStar(require(\"vscode\"));\nconst ls = __importStar(require(\"vscode-languageserver-protocol\"));\nconst Is = __importStar(require(\"./utils/is\"));\nconst async = __importStar(require(\"./utils/async\"));\nconst protocolCompletionItem_1 = __importDefault(require(\"./protocolCompletionItem\"));\nconst protocolCodeLens_1 = __importDefault(require(\"./protocolCodeLens\"));\nconst protocolDocumentLink_1 = __importDefault(require(\"./protocolDocumentLink\"));\nconst protocolCodeAction_1 = __importDefault(require(\"./protocolCodeAction\"));\nconst protocolDiagnostic_1 = require(\"./protocolDiagnostic\");\nconst protocolCallHierarchyItem_1 = __importDefault(require(\"./protocolCallHierarchyItem\"));\nconst protocolTypeHierarchyItem_1 = __importDefault(require(\"./protocolTypeHierarchyItem\"));\nconst protocolWorkspaceSymbol_1 = __importDefault(require(\"./protocolWorkspaceSymbol\"));\nconst protocolInlayHint_1 = __importDefault(require(\"./protocolInlayHint\"));\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nvar CodeBlock;\n(function (CodeBlock) {\n function is(value) {\n const 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, supportThemeIcons) {\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: asGlobPattern(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: asGlobPattern(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 const 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 const result = [];\n for (const tag of tags) {\n const 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 const result = asMarkdownString();\n return result.appendCodeblock(value.value, value.language);\n }\n else if (Array.isArray(value)) {\n const result = [];\n for (const element of value) {\n const 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 result.supportThemeIcons = supportThemeIcons;\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, list.applyKind?.commitCharacters, defaultRange, list.itemDefaults?.insertTextMode, list.itemDefaults?.insertTextFormat, list.itemDefaults?.data, list.applyKind?.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, commitCharactersApplyKind, defaultRange, defaultInsertTextMode, defaultInsertTextFormat, defaultData, dataApplyKind) {\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 const [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 = applyCommitCharacters(item, defaultCommitCharacters, commitCharactersApplyKind);\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 = applyData(item, defaultData, dataApplyKind);\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 applyCommitCharacters(item, defaultCommitCharacters, applyKind) {\n if (applyKind === ls.ApplyKind.Merge) {\n if (!defaultCommitCharacters && !item.commitCharacters) {\n return undefined;\n }\n const set = new Set();\n if (defaultCommitCharacters) {\n for (const char of defaultCommitCharacters) {\n set.add(char);\n }\n }\n if (Is.stringArray(item.commitCharacters)) {\n for (const char of item.commitCharacters) {\n set.add(char);\n }\n }\n return Array.from(set);\n }\n return item.commitCharacters !== undefined\n ? Is.stringArray(item.commitCharacters) ? item.commitCharacters : undefined\n : defaultCommitCharacters;\n }\n function applyData(item, defaultData, applyKind) {\n if (applyKind === ls.ApplyKind.Merge) {\n const data = {\n ...defaultData,\n };\n if (item.data) {\n Object.entries(item.data).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n data[key] = value;\n }\n });\n }\n return data;\n }\n return item.data ?? defaultData;\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 const 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 if (item.activeParameter === null) {\n result.activeParameter = -1;\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 const 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 ?? -1;\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 const 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 const result = {\n targetUri: _uriConverter(item.targetUri),\n targetRange: asRange(item.targetRange), // See issue: https://github.com/Microsoft/vscode/issues/58649\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 const 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 const 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 const children = [];\n for (const 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 const result = { title: item.title, command: item.command };\n if (item.tooltip) {\n result.tooltip = item.tooltip;\n }\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 const parts = item.split('.');\n result = code.CodeActionKind.Empty;\n for (const 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 function asCodeActionDocumentations(items) {\n if (items === undefined || items === null) {\n return undefined;\n }\n return items.map(doc => ({ kind: asCodeActionKind(doc.kind), command: asCommand(doc.command) }));\n }\n async function asCodeAction(item, token) {\n if (item === undefined || item === null) {\n return undefined;\n }\n const 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 if (item.tags?.includes(ls.CodeActionTag.LLMGenerated)) {\n result.isAI = true;\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 const 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 const edits = [];\n for (const edit of change.edits) {\n if (ls.AnnotatedTextEdit.is(edit)) {\n edits.push([new code.TextEdit(asRange(edit.range), edit.newText), asMetadata(edit.annotationId)]);\n }\n else if (ls.SnippetTextEdit.is(edit)) {\n edits.push([new code.SnippetTextEdit(asRange(edit.range), new code.SnippetString(edit.snippet.value)), asMetadata(edit.annotationId)]);\n }\n else {\n edits.push([new code.TextEdit(asRange(edit.range), edit.newText), undefined]);\n }\n }\n result.set(uri, edits);\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 const range = asRange(item.range);\n const target = item.target ? asUri(item.target) : undefined;\n // target must be optional in DocumentLink\n const 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 const 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 const 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 asCodeActionDocumentations,\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}\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProtocolDiagnostic = exports.DiagnosticCode = void 0;\nconst vscode = __importStar(require(\"vscode\"));\nconst Is = __importStar(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 data;\n hasDiagnosticCode;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = __importStar(require(\"vscode\"));\nclass ProtocolDocumentLink extends code.DocumentLink {\n data;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = __importStar(require(\"vscode\"));\nclass ProtocolInlayHint extends code.InlayHint {\n data;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = __importStar(require(\"vscode\"));\nclass ProtocolTypeHierarchyItem extends code.TypeHierarchyItem {\n data;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code = __importStar(require(\"vscode\"));\nclass WorkspaceSymbol extends code.SymbolInformation {\n data;\n hasRange;\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(require(\"./utils/uuid\"));\nconst Is = __importStar(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 const 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 const 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 const 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.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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SemanticTokensFeature = void 0;\nconst vscode = __importStar(require(\"vscode\"));\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst Is = __importStar(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.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 vscode_languageserver_protocol_1.SemanticTokenTypes.label\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 onDidChangeSemanticTokens: eventEmitter.event,\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 const 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.signatureInformation.noActiveParameterSupport = 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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextDocumentContentFeature = void 0;\nconst vscode = __importStar(require(\"vscode\"));\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nconst features_1 = require(\"./features\");\nconst UUID = __importStar(require(\"./utils/uuid\"));\nclass TextDocumentContentFeature {\n _client;\n _registrations = new Map();\n constructor(client) {\n this._client = client;\n }\n getState() {\n const registrations = this._registrations.size > 0;\n return { kind: 'workspace', id: vscode_languageserver_protocol_1.TextDocumentContentRequest.method, registrations };\n }\n get registrationType() {\n return vscode_languageserver_protocol_1.TextDocumentContentRequest.type;\n }\n getProviders() {\n const result = [];\n for (const registration of this._registrations.values()) {\n result.push(...registration.providers);\n }\n return result;\n }\n fillClientCapabilities(capabilities) {\n const textDocumentContent = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'workspace'), 'textDocumentContent');\n textDocumentContent.dynamicRegistration = true;\n }\n initialize(capabilities) {\n const client = this._client;\n client.onRequest(vscode_languageserver_protocol_1.TextDocumentContentRefreshRequest.type, async (params) => {\n const uri = client.protocol2CodeConverter.asUri(params.uri);\n for (const registrations of this._registrations.values()) {\n for (const provider of registrations.providers) {\n if (provider.scheme === uri.scheme) {\n provider.onDidChangeEmitter.fire(uri);\n }\n }\n }\n });\n if (!capabilities?.workspace?.textDocumentContent) {\n return;\n }\n const capability = capabilities.workspace.textDocumentContent;\n const id = vscode_languageserver_protocol_1.StaticRegistrationOptions.hasId(capability) ? capability.id : UUID.generateUuid();\n this.register({\n id: id,\n registerOptions: capability\n });\n }\n register(data) {\n const registrations = [];\n const disposables = [];\n for (const scheme of data.registerOptions.schemes) {\n const [disposable, registration] = this.registerTextDocumentContentProvider(scheme);\n registrations.push(registration);\n disposables.push(disposable);\n }\n this._registrations.set(data.id, { disposable: vscode.Disposable.from(...disposables), providers: registrations });\n }\n registerTextDocumentContentProvider(scheme) {\n const eventEmitter = new vscode.EventEmitter();\n const provider = {\n onDidChange: eventEmitter.event,\n provideTextDocumentContent: (uri, token) => {\n const client = this._client;\n const provideTextDocumentContent = (uri, token) => {\n const params = {\n uri: client.code2ProtocolConverter.asUri(uri)\n };\n return client.sendRequest(vscode_languageserver_protocol_1.TextDocumentContentRequest.type, params, token).then((result) => {\n if (token.isCancellationRequested) {\n return null;\n }\n return result.text;\n }, (error) => {\n return client.handleFailedRequest(vscode_languageserver_protocol_1.TextDocumentContentRequest.type, token, error, null);\n });\n };\n const middleware = client.middleware;\n return middleware.provideTextDocumentContent\n ? middleware.provideTextDocumentContent(uri, token, provideTextDocumentContent)\n : provideTextDocumentContent(uri, token);\n }\n };\n return [vscode.workspace.registerTextDocumentContentProvider(scheme, provider), { scheme, onDidChangeEmitter: eventEmitter, provider }];\n }\n unregister(id) {\n const registration = this._registrations.get(id);\n if (registration !== undefined) {\n this._registrations.delete(id);\n registration.disposable.dispose();\n }\n }\n clear() {\n this._registrations.forEach((registration) => {\n registration.disposable.dispose();\n });\n this._registrations.clear();\n }\n}\nexports.TextDocumentContentFeature = TextDocumentContentFeature;\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(require(\"./utils/uuid\"));\nclass DidOpenTextDocumentFeature extends features_1.TextDocumentEventFeature {\n _syncedDocuments;\n _pendingOpenNotifications;\n _delayOpen;\n _pendingOpenListeners;\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 this._pendingOpenNotifications = new Map();\n this._delayOpen = client.clientOptions.textSynchronization?.delayOpenNotifications ?? false;\n }\n async callback(document) {\n if (!this._delayOpen) {\n return super.callback(document);\n }\n else {\n if (!this.matches(document)) {\n return;\n }\n const tabsModel = this._client.tabsModel;\n if (tabsModel.isVisible(document)) {\n return super.callback(document);\n }\n else {\n this._pendingOpenNotifications.set(document.uri.toString(), document);\n }\n }\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 tabsModel = this._client.tabsModel;\n if (tabsModel.isVisible(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 else {\n this._pendingOpenNotifications.set(uri, textDocument);\n }\n }\n });\n if (this._delayOpen && this._pendingOpenListeners === undefined) {\n this._pendingOpenListeners = [];\n const tabsModel = this._client.tabsModel;\n this._pendingOpenListeners.push(tabsModel.onClose((closed) => {\n for (const uri of closed) {\n this._pendingOpenNotifications.delete(uri.toString());\n }\n }));\n this._pendingOpenListeners.push(tabsModel.onOpen((opened) => {\n for (const uri of opened) {\n const document = this._pendingOpenNotifications.get(uri.toString());\n if (document !== undefined) {\n super.callback(document).catch(((error) => {\n this._client.error(`Sending document notification ${this._type.method} failed`, error);\n }));\n this._pendingOpenNotifications.delete(uri.toString());\n }\n }\n }));\n this._pendingOpenListeners.push(vscode_1.workspace.onDidCloseTextDocument((document) => {\n this._pendingOpenNotifications.delete(document.uri.toString());\n }));\n }\n }\n /**\n * Sends any pending open notifications unless they are for the document\n * being closed.\n *\n * @param closingDocument The document being closed.\n * @returns Whether a pending open notification was dropped because it was\n * for the closing document.\n */\n async sendPendingOpenNotifications(closingDocument) {\n const notifications = Array.from(this._pendingOpenNotifications.values());\n this._pendingOpenNotifications.clear();\n let didDropOpenNotification = false;\n for (const notification of notifications) {\n if (closingDocument !== undefined && notification.uri.toString() === closingDocument) {\n didDropOpenNotification = true;\n continue;\n }\n await super.callback(notification);\n }\n return didDropOpenNotification;\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 clear() {\n this._pendingOpenNotifications.clear();\n if (this._pendingOpenListeners !== undefined) {\n for (const listener of this._pendingOpenListeners) {\n listener.dispose();\n }\n this._pendingOpenListeners = undefined;\n }\n super.clear();\n }\n}\nexports.DidOpenTextDocumentFeature = DidOpenTextDocumentFeature;\nclass DidCloseTextDocumentFeature extends features_1.TextDocumentEventFeature {\n _syncedDocuments;\n _pendingTextDocumentChanges;\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 const 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 if (selector === undefined) {\n return;\n }\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 const middleware = this._client.middleware;\n const 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 _listener;\n _changeData;\n _onNotificationSent;\n _onPendingChangeAdded;\n _pendingTextDocumentChanges;\n _syncKind;\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 const 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 const value = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization');\n value.willSave = true;\n }\n initialize(capabilities, documentSelector) {\n const 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 _listener;\n _selectors;\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 const value = (0, features_1.ensure)((0, features_1.ensure)(capabilities, 'textDocument'), 'synchronization');\n value.willSaveWaitUntil = true;\n }\n initialize(capabilities, documentSelector) {\n const 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 const middleware = this._client.middleware;\n const willSaveWaitUntil = (event) => {\n return this._client.sendRequest(vscode_languageserver_protocol_1.WillSaveTextDocumentWaitUntilRequest.type, this._client.code2ProtocolConverter.asWillSaveTextDocumentParams(event)).then(async (edits) => {\n const 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 _includeText;\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.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 const 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 const [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.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 client;\n middleware;\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.Semaphore = exports.Delayer = void 0;\nexports.setTestMode = setTestMode;\nexports.clearTestMode = clearTestMode;\nexports.map = map;\nexports.mapAsync = mapAsync;\nexports.forEach = forEach;\nconst vscode_languageserver_protocol_1 = require(\"vscode-languageserver-protocol\");\nclass Delayer {\n defaultDelay;\n timeout;\n completionPromise;\n onSuccess;\n task;\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 const 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 const 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 _capacity;\n _active;\n _waiting;\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}\nfunction clearTestMode() {\n $test = false;\n}\nconst defaultYieldTimeout = 15 /*ms*/;\nclass Timer {\n yieldAfter;\n startTime;\n counter;\n total;\n counterInterval;\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 if (token !== undefined && token.isCancellationRequested) {\n resolve(-1);\n }\n else {\n resolve(convertBatch(index));\n }\n });\n });\n }\n return result;\n}\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 if (token !== undefined && token.isCancellationRequested) {\n resolve(-1);\n }\n else {\n resolve(convertBatch(index));\n }\n });\n });\n }\n return result;\n}\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 if (token !== undefined && token.isCancellationRequested) {\n resolve(-1);\n }\n else {\n resolve(runBatch(index));\n }\n });\n });\n }\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.matchGlobPattern = matchGlobPattern;\nconst minimatch = __importStar(require(\"minimatch\"));\nconst vscode_1 = require(\"vscode\");\nfunction matchGlobPattern(pattern, resource) {\n let miniMatchPattern;\n if (typeof pattern === 'string') {\n miniMatchPattern = pattern.replace(/\\\\/g, '/');\n }\n else {\n try {\n const baseUri = vscode_1.Uri.parse(typeof pattern.baseUri === 'string' ? pattern.baseUri : pattern.baseUri.uri);\n miniMatchPattern = baseUri.with({ path: baseUri.path + '/' + pattern.pattern }).fsPath.replace(/\\\\/g, '/');\n }\n catch (error) {\n return false;\n }\n }\n const matcher = new minimatch.Minimatch(miniMatchPattern, { noext: true });\n if (!matcher.makeRe()) {\n return false;\n }\n return matcher.match(resource.fsPath);\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.boolean = boolean;\nexports.string = string;\nexports.number = number;\nexports.error = error;\nexports.func = func;\nexports.array = array;\nexports.stringArray = stringArray;\nexports.typedArray = typedArray;\nexports.thenable = thenable;\nexports.asPromise = asPromise;\nfunction boolean(value) {\n return value === true || value === false;\n}\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nfunction error(value) {\n return value instanceof Error;\n}\nfunction func(value) {\n return typeof value === 'function';\n}\nfunction array(value) {\n return Array.isArray(value);\n}\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nfunction typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n}\nfunction thenable(value) {\n return value && func(value.then);\n}\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}\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.empty = void 0;\nexports.v4 = v4;\nexports.isUUID = isUUID;\nexports.parse = parse;\nexports.generateUuid = generateUuid;\nclass ValueUUID {\n _value;\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 _chars = ['0', '1', '2', '3', '4', '5', '6', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n static _timeHighBits = ['8', '9', 'a', 'b'];\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}\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}\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}\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}\nfunction generateUuid() {\n return v4().asHex();\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WorkspaceFoldersFeature = void 0;\nexports.arrayDiff = arrayDiff;\nconst UUID = __importStar(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}\nclass WorkspaceFoldersFeature {\n _client;\n _listeners;\n _initialFolders;\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 const 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 const id = data.id;\n const client = this._client;\n const disposable = vscode_1.workspace.onDidChangeWorkspaceFolders((event) => {\n const didChangeWorkspaceFolders = (event) => {\n return this.doSendEvent(event.added, event.removed);\n };\n const 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 const 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 (const 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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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 const 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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(require(\"child_process\"));\nconst fs = __importStar(require(\"fs\"));\nconst path = __importStar(require(\"path\"));\nconst readline = __importStar(require(\"readline\"));\nconst vscode_1 = require(\"vscode\");\nconst Is = __importStar(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.91.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 const 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 const 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 _serverOptions;\n _forceDebug;\n _serverProcess;\n _isDetached;\n _isInDebugMode;\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 shutdown(mode, timeout = 2000) {\n return super.shutdown(mode, 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 const 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 function pipeStdoutToLogOutputChannel(input, outputChannel) {\n readline.createInterface({\n input: input,\n crlfDelay: Infinity,\n terminal: false,\n historySize: 0,\n }).on('line', data => outputChannel.info(data));\n }\n function pipeStderrToLogOutputChannel(input, outputChannel) {\n readline.createInterface({\n input: input,\n crlfDelay: Infinity,\n terminal: false,\n historySize: 0,\n }).on('line', data => outputChannel.error(data));\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 pipeStderrToLogOutputChannel(cp.stderr, this.outputChannel);\n return { reader: new node_1.StreamMessageReader(cp.stdout), writer: new node_1.StreamMessageWriter(cp.stdin) };\n }\n });\n }\n let json;\n const 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 const node = json;\n const 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 pipeStderrToLogOutputChannel(serverProcess.stderr, this.outputChannel);\n if (transport === TransportKind.ipc) {\n pipeStdoutToLogOutputChannel(serverProcess.stdout, this.outputChannel);\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 pipeStderrToLogOutputChannel(process.stderr, this.outputChannel);\n pipeStdoutToLogOutputChannel(process.stdout, this.outputChannel);\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 pipeStderrToLogOutputChannel(process.stderr, this.outputChannel);\n pipeStdoutToLogOutputChannel(process.stdout, this.outputChannel);\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 pipeStderrToLogOutputChannel(sp.stderr, this.outputChannel);\n if (transport === TransportKind.ipc) {\n pipeStdoutToLogOutputChannel(sp.stdout, this.outputChannel);\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 pipeStderrToLogOutputChannel(sp.stderr, this.outputChannel);\n pipeStdoutToLogOutputChannel(sp.stdout, this.outputChannel);\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 pipeStderrToLogOutputChannel(sp.stderr, this.outputChannel);\n pipeStdoutToLogOutputChannel(sp.stdout, this.outputChannel);\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 pipeStderrToLogOutputChannel(serverProcess.stderr, this.outputChannel);\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 pipeStderrToLogOutputChannel(serverProcess.stderr, this.outputChannel);\n pipeStdoutToLogOutputChannel(serverProcess.stdout, this.outputChannel);\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 pipeStderrToLogOutputChannel(serverProcess.stderr, this.outputChannel);\n pipeStdoutToLogOutputChannel(serverProcess.stdout, this.outputChannel);\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 === 0) {\n this.info('Server process exited successfully', undefined, false);\n }\n else 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 const folders = vscode_1.workspace.workspaceFolders;\n if (!folders || folders.length === 0) {\n return undefined;\n }\n const 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 _client;\n _setting;\n _listeners;\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 const index = this._setting.indexOf('.');\n const primary = index >= 0 ? this._setting.substr(0, index) : this._setting;\n const rest = index >= 0 ? this._setting.substr(index + 1) : undefined;\n const 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","\"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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.terminate = terminate;\nconst cp = __importStar(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 const 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 const cmd = (0, path_1.join)(__dirname, 'terminateProcess.sh');\n const 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}\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 has 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 * ------------------------------------------------------------------------------------------ */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createProtocolConnection = createProtocolConnection;\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}\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.CM = exports.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 /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n ____;\n method;\n constructor(method) {\n this.method = method;\n }\n}\nexports.RegistrationType = RegistrationType;\nclass ProtocolRequestType0 extends vscode_jsonrpc_1.RequestType0 {\n /**\n * Clients must not use these properties. They are here to ensure correct typing.\n * in TypeScript\n */\n __;\n ___;\n ____;\n _pr;\n constructor(method) {\n super(method);\n }\n}\nexports.ProtocolRequestType0 = ProtocolRequestType0;\nclass ProtocolRequestType extends vscode_jsonrpc_1.RequestType {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n __;\n ___;\n ____;\n _pr;\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n}\nexports.ProtocolRequestType = ProtocolRequestType;\nclass ProtocolNotificationType0 extends vscode_jsonrpc_1.NotificationType0 {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n ___;\n ____;\n constructor(method) {\n super(method);\n }\n}\nexports.ProtocolNotificationType0 = ProtocolNotificationType0;\nclass ProtocolNotificationType extends vscode_jsonrpc_1.NotificationType {\n /**\n * Clients must not use this property. It is here to ensure correct typing.\n */\n ___;\n ____;\n constructor(method) {\n super(method, vscode_jsonrpc_1.ParameterStructures.byName);\n }\n}\nexports.ProtocolNotificationType = ProtocolNotificationType;\nvar CM;\n(function (CM) {\n function create(client, server) {\n return { client, server };\n }\n CM.create = create;\n})(CM || (exports.CM = CM = {}));\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.capabilities = messages_1.CM.create('textDocument.callHierarchy', 'callHierarchyProvider');\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.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.capabilities = messages_1.CM.create('textDocument.colorProvider', 'colorProvider');\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.capabilities = messages_1.CM.create('textDocument.colorProvider', 'colorProvider');\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.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.capabilities = messages_1.CM.create('workspace.configuration', undefined);\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.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.capabilities = messages_1.CM.create('textDocument.declaration', 'declarationProvider');\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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.capabilities = messages_1.CM.create('textDocument.diagnostic', 'diagnosticProvider');\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.capabilities = messages_1.CM.create('workspace.diagnostics', 'diagnosticProvider.workspaceDiagnostics');\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.capabilities = messages_1.CM.create('workspace.diagnostics.refreshSupport', undefined);\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.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.capabilities = messages_1.CM.create('workspace.fileOperations.willCreate', 'workspace.fileOperations.willCreate');\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.capabilities = messages_1.CM.create('workspace.fileOperations.didCreate', 'workspace.fileOperations.didCreate');\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.capabilities = messages_1.CM.create('workspace.fileOperations.willRename', 'workspace.fileOperations.willRename');\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.capabilities = messages_1.CM.create('workspace.fileOperations.didRename', 'workspace.fileOperations.didRename');\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.capabilities = messages_1.CM.create('workspace.fileOperations.didDelete', 'workspace.fileOperations.didDelete');\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.capabilities = messages_1.CM.create('workspace.fileOperations.willDelete', 'workspace.fileOperations.willDelete');\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.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.capabilities = messages_1.CM.create('textDocument.foldingRange', 'foldingRangeProvider');\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.capabilities = messages_1.CM.create('workspace.foldingRange.refreshSupport', undefined);\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.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.capabilities = messages_1.CM.create('textDocument.implementation', 'implementationProvider');\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.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.capabilities = messages_1.CM.create('textDocument.inlayHint', 'inlayHintProvider');\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.capabilities = messages_1.CM.create('textDocument.inlayHint.resolveSupport', 'inlayHintProvider.resolveProvider');\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.capabilities = messages_1.CM.create('workspace.inlayHint.refreshSupport', undefined);\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.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.capabilities = messages_1.CM.create('textDocument.inlineCompletion', 'inlineCompletionProvider');\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.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.capabilities = messages_1.CM.create('textDocument.inlineValue', 'inlineValueProvider');\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.capabilities = messages_1.CM.create('workspace.inlineValue.refreshSupport', undefined);\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 * ------------------------------------------------------------------------------------------ */\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.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.GlobPattern = 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.RegularExpressionEngineKind = exports.FailureHandlingKind = exports.ResourceOperationKind = exports.UnregistrationRequest = exports.RegistrationRequest = exports.DocumentSelector = exports.NotebookCellTextDocumentFilter = exports.NotebookDocumentFilter = exports.TextDocumentFilter = void 0;\nexports.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 = exports.WorkspaceSymbolRequest = exports.CodeActionResolveRequest = void 0;\nexports.TextDocumentContentRefreshRequest = exports.TextDocumentContentRequest = exports.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 = exports.MonikerRequest = exports.MonikerKind = void 0;\nconst messages_1 = require(\"./messages\");\nconst vscode_languageserver_types_1 = require(\"vscode-languageserver-types\");\nconst Is = __importStar(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; } });\nconst protocol_textDocumentContent_1 = require(\"./protocol.textDocumentContent\");\nObject.defineProperty(exports, \"TextDocumentContentRequest\", { enumerable: true, get: function () { return protocol_textDocumentContent_1.TextDocumentContentRequest; } });\nObject.defineProperty(exports, \"TextDocumentContentRefreshRequest\", { enumerable: true, get: function () { return protocol_textDocumentContent_1.TextDocumentContentRefreshRequest; } });\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) || GlobPattern.is(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 (const 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 * Regular Expression Engines\n *\n * @since 3.18.0\n * @proposed\n */\nvar RegularExpressionEngineKind;\n(function (RegularExpressionEngineKind) {\n RegularExpressionEngineKind.ES2020 = 'ES2020';\n})(RegularExpressionEngineKind || (exports.RegularExpressionEngineKind = RegularExpressionEngineKind = {}));\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.capabilities = messages_1.CM.create('workspace.didChangeConfiguration', undefined);\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 * @proposed\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.capabilities = messages_1.CM.create('window.showMessage', undefined);\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.capabilities = messages_1.CM.create('window.showMessage', undefined);\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.capabilities = messages_1.CM.create('textDocument.synchronization', 'textDocumentSync.openClose');\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 const 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 const 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.capabilities = messages_1.CM.create('textDocument.synchronization', 'textDocumentSync');\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.capabilities = messages_1.CM.create('textDocument.synchronization', 'textDocumentSync.openClose');\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.capabilities = messages_1.CM.create('textDocument.synchronization.didSave', 'textDocumentSync.save');\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.capabilities = messages_1.CM.create('textDocument.synchronization.willSave', 'textDocumentSync.willSave');\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.capabilities = messages_1.CM.create('textDocument.synchronization.willSaveWaitUntil', 'textDocumentSync.willSaveWaitUntil');\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.capabilities = messages_1.CM.create('workspace.didChangeWatchedFiles', undefined);\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 GlobPattern;\n(function (GlobPattern) {\n function is(value) {\n const candidate = value;\n return Is.string(candidate) || RelativePattern.is(candidate);\n }\n GlobPattern.is = is;\n})(GlobPattern || (exports.GlobPattern = GlobPattern = {}));\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.capabilities = messages_1.CM.create('textDocument.publishDiagnostics', undefined);\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.capabilities = messages_1.CM.create('textDocument.completion', 'completionProvider');\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.capabilities = messages_1.CM.create('textDocument.completion.completionItem.resolveSupport', 'completionProvider.resolveProvider');\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.capabilities = messages_1.CM.create('textDocument.hover', 'hoverProvider');\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.capabilities = messages_1.CM.create('textDocument.signatureHelp', 'signatureHelpProvider');\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.capabilities = messages_1.CM.create('textDocument.definition', 'definitionProvider');\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.capabilities = messages_1.CM.create('textDocument.references', 'referencesProvider');\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.capabilities = messages_1.CM.create('textDocument.documentHighlight', 'documentHighlightProvider');\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.capabilities = messages_1.CM.create('textDocument.documentSymbol', 'documentSymbolProvider');\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.capabilities = messages_1.CM.create('textDocument.codeAction', 'codeActionProvider');\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.capabilities = messages_1.CM.create('textDocument.codeAction.resolveSupport', 'codeActionProvider.resolveProvider');\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.capabilities = messages_1.CM.create('workspace.symbol', 'workspaceSymbolProvider');\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.capabilities = messages_1.CM.create('workspace.symbol.resolveSupport', 'workspaceSymbolProvider.resolveProvider');\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.capabilities = messages_1.CM.create('textDocument.codeLens', 'codeLensProvider');\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.capabilities = messages_1.CM.create('textDocument.codeLens.resolveSupport', 'codeLensProvider.resolveProvider');\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.capabilities = messages_1.CM.create('workspace.codeLens', undefined);\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.capabilities = messages_1.CM.create('textDocument.documentLink', 'documentLinkProvider');\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.capabilities = messages_1.CM.create('textDocument.documentLink', 'documentLinkProvider.resolveProvider');\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.capabilities = messages_1.CM.create('textDocument.formatting', 'documentFormattingProvider');\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.capabilities = messages_1.CM.create('textDocument.rangeFormatting', 'documentRangeFormattingProvider');\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.capabilities = messages_1.CM.create('textDocument.rangeFormatting.rangesSupport', 'documentRangeFormattingProvider.rangesSupport');\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.capabilities = messages_1.CM.create('textDocument.onTypeFormatting', 'documentOnTypeFormattingProvider');\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.capabilities = messages_1.CM.create('textDocument.rename', 'renameProvider');\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.capabilities = messages_1.CM.create('textDocument.rename.prepareSupport', 'renameProvider.prepareProvider');\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.capabilities = messages_1.CM.create('workspace.executeCommand', 'executeCommandProvider');\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.capabilities = messages_1.CM.create('workspace.applyEdit', undefined);\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.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.capabilities = messages_1.CM.create('textDocument.linkedEditingRange', 'linkedEditingRangeProvider');\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.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.capabilities = messages_1.CM.create('textDocument.moniker', 'monikerProvider');\n})(MonikerRequest || (exports.MonikerRequest = MonikerRequest = {}));\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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\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 = __importStar(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.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.capabilities = messages_1.CM.create('window.workDoneProgress', undefined);\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) 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.capabilities = messages_1.CM.create('textDocument.selectionRange', 'selectionRangeProvider');\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.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.capabilities = messages_1.CM.create('textDocument.semanticTokens', 'semanticTokensProvider');\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.capabilities = messages_1.CM.create('textDocument.semanticTokens.requests.full.delta', 'semanticTokensProvider.full.delta');\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.capabilities = messages_1.CM.create('textDocument.semanticTokens.requests.range', 'semanticTokensProvider.range');\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.capabilities = messages_1.CM.create('workspace.semanticTokens.refreshSupport', undefined);\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.capabilities = messages_1.CM.create('window.showDocument.support', undefined);\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.TextDocumentContentRefreshRequest = exports.TextDocumentContentRequest = void 0;\nconst messages_1 = require(\"./messages\");\n/**\n * The `workspace/textDocumentContent` request is sent from the client to the\n * server to request the content of a text document.\n *\n * @since 3.18.0\n * @proposed\n */\nvar TextDocumentContentRequest;\n(function (TextDocumentContentRequest) {\n TextDocumentContentRequest.method = 'workspace/textDocumentContent';\n TextDocumentContentRequest.messageDirection = messages_1.MessageDirection.clientToServer;\n TextDocumentContentRequest.type = new messages_1.ProtocolRequestType(TextDocumentContentRequest.method);\n TextDocumentContentRequest.capabilities = messages_1.CM.create('workspace.textDocumentContent', 'workspace.textDocumentContent');\n})(TextDocumentContentRequest || (exports.TextDocumentContentRequest = TextDocumentContentRequest = {}));\n/**\n * The `workspace/textDocumentContent` request is sent from the server to the client to refresh\n * the content of a specific text document.\n *\n * @since 3.18.0\n * @proposed\n */\nvar TextDocumentContentRefreshRequest;\n(function (TextDocumentContentRefreshRequest) {\n TextDocumentContentRefreshRequest.method = `workspace/textDocumentContent/refresh`;\n TextDocumentContentRefreshRequest.messageDirection = messages_1.MessageDirection.serverToClient;\n TextDocumentContentRefreshRequest.type = new messages_1.ProtocolRequestType(TextDocumentContentRefreshRequest.method);\n})(TextDocumentContentRefreshRequest || (exports.TextDocumentContentRefreshRequest = TextDocumentContentRefreshRequest = {}));\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 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 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.capabilities = messages_1.CM.create('textDocument.typeDefinition', 'typeDefinitionProvider');\n})(TypeDefinitionRequest || (exports.TypeDefinitionRequest = TypeDefinitionRequest = {}));\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.capabilities = messages_1.CM.create('textDocument.typeHierarchy', 'typeHierarchyProvider');\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.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.capabilities = messages_1.CM.create('workspace.workspaceFolders', 'workspace.workspaceFolders');\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.capabilities = messages_1.CM.create(undefined, 'workspace.workspaceFolders.changeNotifications');\n})(DidChangeWorkspaceFoldersNotification || (exports.DidChangeWorkspaceFoldersNotification = DidChangeWorkspaceFoldersNotification = {}));\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.boolean = boolean;\nexports.string = string;\nexports.number = number;\nexports.error = error;\nexports.func = func;\nexports.array = array;\nexports.stringArray = stringArray;\nexports.typedArray = typedArray;\nexports.objectLiteral = objectLiteral;\nfunction boolean(value) {\n return value === true || value === false;\n}\nfunction string(value) {\n return typeof value === 'string' || value instanceof String;\n}\nfunction number(value) {\n return typeof value === 'number' || value instanceof Number;\n}\nfunction error(value) {\n return value instanceof Error;\n}\nfunction func(value) {\n return typeof value === 'function';\n}\nfunction array(value) {\n return Array.isArray(value);\n}\nfunction stringArray(value) {\n return array(value) && value.every(elem => string(elem));\n}\nfunction typedArray(value, check) {\n return Array.isArray(value) && value.every(check);\n}\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}\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 = createProtocolConnection;\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}\n","module.exports = require(\"vscode\");","module.exports = require(\"child_process\");","module.exports = require(\"crypto\");","module.exports = require(\"fs\");","module.exports = require(\"net\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"readline\");","module.exports = require(\"util\");","export const balanced = (a, b, str) => {\n const ma = a instanceof RegExp ? maybeMatch(a, str) : a;\n const mb = b instanceof RegExp ? maybeMatch(b, str) : b;\n const r = ma !== null && mb != null && range(ma, mb, str);\n return (r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + ma.length, r[1]),\n post: str.slice(r[1] + mb.length),\n });\n};\nconst maybeMatch = (reg, str) => {\n const m = str.match(reg);\n return m ? m[0] : null;\n};\nexport const range = (a, b, str) => {\n let begs, beg, left, right = undefined, result;\n let ai = str.indexOf(a);\n let bi = str.indexOf(b, ai + 1);\n let i = ai;\n if (ai >= 0 && bi > 0) {\n if (a === b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n while (i >= 0 && !result) {\n if (i === ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n }\n else if (begs.length === 1) {\n const r = begs.pop();\n if (r !== undefined)\n result = [r, bi];\n }\n else {\n beg = begs.pop();\n if (beg !== undefined && beg < left) {\n left = beg;\n right = bi;\n }\n bi = str.indexOf(b, i + 1);\n }\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n if (begs.length && right !== undefined) {\n result = [left, right];\n }\n }\n return result;\n};\n//# sourceMappingURL=index.js.map","import { balanced } from 'balanced-match';\nconst escSlash = '\\0SLASH' + Math.random() + '\\0';\nconst escOpen = '\\0OPEN' + Math.random() + '\\0';\nconst escClose = '\\0CLOSE' + Math.random() + '\\0';\nconst escComma = '\\0COMMA' + Math.random() + '\\0';\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0';\nconst escSlashPattern = new RegExp(escSlash, 'g');\nconst escOpenPattern = new RegExp(escOpen, 'g');\nconst escClosePattern = new RegExp(escClose, 'g');\nconst escCommaPattern = new RegExp(escComma, 'g');\nconst escPeriodPattern = new RegExp(escPeriod, 'g');\nconst slashPattern = /\\\\\\\\/g;\nconst openPattern = /\\\\{/g;\nconst closePattern = /\\\\}/g;\nconst commaPattern = /\\\\,/g;\nconst periodPattern = /\\\\\\./g;\nexport const EXPANSION_MAX = 100_000;\nfunction numeric(str) {\n return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);\n}\nfunction escapeBraces(str) {\n return str\n .replace(slashPattern, escSlash)\n .replace(openPattern, escOpen)\n .replace(closePattern, escClose)\n .replace(commaPattern, escComma)\n .replace(periodPattern, escPeriod);\n}\nfunction unescapeBraces(str) {\n return str\n .replace(escSlashPattern, '\\\\')\n .replace(escOpenPattern, '{')\n .replace(escClosePattern, '}')\n .replace(escCommaPattern, ',')\n .replace(escPeriodPattern, '.');\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}\n */\nfunction parseCommaParts(str) {\n if (!str) {\n return [''];\n }\n const parts = [];\n const m = balanced('{', '}', str);\n if (!m) {\n return str.split(',');\n }\n const { pre, body, post } = m;\n const p = pre.split(',');\n p[p.length - 1] += '{' + body + '}';\n const postParts = parseCommaParts(post);\n if (post.length) {\n ;\n p[p.length - 1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n parts.push.apply(parts, p);\n return parts;\n}\nexport function expand(str, options = {}) {\n if (!str) {\n return [];\n }\n const { max = EXPANSION_MAX } = options;\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.slice(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.slice(2);\n }\n return expand_(escapeBraces(str), max, true).map(unescapeBraces);\n}\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\nfunction expand_(str, max, isTop) {\n /** @type {string[]} */\n const expansions = [];\n const m = balanced('{', '}', str);\n if (!m)\n return [str];\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre;\n const post = m.post.length ? expand_(m.post, max, false) : [''];\n if (/\\$$/.test(m.pre)) {\n for (let k = 0; k < post.length && k < max; k++) {\n const expansion = pre + '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n }\n else {\n const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n const isSequence = isNumericSequence || isAlphaSequence;\n const 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, max, true);\n }\n return [str];\n }\n let n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n }\n else {\n n = parseCommaParts(m.body);\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand_(n[0], max, false).map(embrace);\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n return post.map(p => m.pre + n[0] + p);\n }\n /* c8 ignore stop */\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 let N;\n if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n const x = numeric(n[0]);\n const y = numeric(n[1]);\n const width = Math.max(n[0].length, n[1].length);\n let incr = n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1;\n let test = lte;\n const reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n const pad = n.some(isPadded);\n N = [];\n for (let i = x; test(i, y); i += incr) {\n let c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\') {\n c = '';\n }\n }\n else {\n c = String(i);\n if (pad) {\n const need = width - c.length;\n if (need > 0) {\n const z = new Array(need + 1).join('0');\n if (i < 0) {\n c = '-' + z + c.slice(1);\n }\n else {\n c = z + c;\n }\n }\n }\n }\n N.push(c);\n }\n }\n else {\n N = [];\n for (let j = 0; j < n.length; j++) {\n N.push.apply(N, expand_(n[j], max, false));\n }\n }\n for (let j = 0; j < N.length; j++) {\n for (let k = 0; k < post.length && expansions.length < max; k++) {\n const expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion) {\n expansions.push(expansion);\n }\n }\n }\n }\n return expansions;\n}\n//# sourceMappingURL=index.js.map","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern');\n }\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long');\n }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { <posix class>: [<translation>, /u flag required, negated]\nconst posixClasses = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n const pos = position;\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression');\n }\n /* c8 ignore stop */\n const ranges = [];\n const negs = [];\n let i = pos + 1;\n let sawStart = false;\n let uflag = false;\n let escaping = false;\n let negate = false;\n let endPos = pos;\n let rangeStart = '';\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i);\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true;\n i++;\n continue;\n }\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1;\n break;\n }\n sawStart = true;\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true;\n i++;\n continue;\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true];\n }\n i += cls.length;\n if (neg)\n negs.push(unip);\n else\n ranges.push(unip);\n uflag = uflag || u;\n continue WHILE;\n }\n }\n }\n // now it's just a normal character, effectively\n escaping = false;\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n }\n else if (c === rangeStart) {\n ranges.push(braceEscape(c));\n }\n rangeStart = '';\n i++;\n continue;\n }\n // now might be the start of a range.\n // can be either c-d or c-] or c<more...>] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'));\n i += 2;\n continue;\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c;\n i += 2;\n continue;\n }\n // not the start of a range, just a single character\n ranges.push(braceEscape(c));\n i++;\n }\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false];\n }\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true];\n }\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n return [regexpEscape(r), false, endPos - pos, false];\n }\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n const comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n : ranges.length ? sranges\n : snegs;\n return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2')\n .replace(/\\\\([^\\/])/g, '$1');\n }\n return windowsPathsNoEscape ?\n s.replace(/\\[([^\\/\\\\{}])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g, '$1$2')\n .replace(/\\\\([^\\/{}])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// parse a single path portion\nvar _a;\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n]);\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n]);\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n]);\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map([\n ['!', new Map([['!', '@']])],\n [\n '?',\n new Map([\n ['*', '*'],\n ['+', '*'],\n ]),\n ],\n [\n '@',\n new Map([\n ['!', '!'],\n ['?', '?'],\n ['@', '@'],\n ['*', '*'],\n ['+', '+'],\n ]),\n ],\n [\n '+',\n new Map([\n ['?', '*'],\n ['*', '*'],\n ]),\n ],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nlet ID = 0;\nexport class AST {\n type;\n #root;\n #hasMagic;\n #uflag = false;\n #parts = [];\n #parent;\n #parentIndex;\n #negs;\n #filledNegs = false;\n #options;\n #toString;\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt = false;\n id = ++ID;\n get depth() {\n return (this.#parent?.depth ?? -1) + 1;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return {\n '@@type': 'AST',\n id: this.id,\n type: this.type,\n root: this.#root.id,\n parent: this.#parent?.id,\n depth: this.depth,\n partsLength: this.#parts.length,\n parts: this.#parts,\n };\n }\n constructor(type, parent, options = {}) {\n this.type = type;\n // extglobs are inherently magical\n if (type)\n this.#hasMagic = true;\n this.#parent = parent;\n this.#root = this.#parent ? this.#parent.#root : this;\n this.#options = this.#root === this ? options : this.#root.#options;\n this.#negs = this.#root === this ? [] : this.#root.#negs;\n if (type === '!' && !this.#root.#filledNegs)\n this.#negs.push(this);\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n }\n get hasMagic() {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined)\n return this.#hasMagic;\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string')\n continue;\n if (p.type || p.hasMagic)\n return (this.#hasMagic = true);\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic;\n }\n // reconstructs the pattern\n toString() {\n if (this.#toString !== undefined)\n return this.#toString;\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''));\n }\n else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n }\n }\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root)\n throw new Error('should only call on root');\n if (this.#filledNegs)\n return this;\n /* c8 ignore stop */\n // call toString() once to fill this out\n this.toString();\n this.#filledNegs = true;\n let n;\n while ((n = this.#negs.pop())) {\n if (n.type !== '!')\n continue;\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p = n;\n let pp = p.#parent;\n while (pp) {\n for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??');\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i]);\n }\n }\n p = pp;\n pp = p.#parent;\n }\n }\n return this;\n }\n push(...parts) {\n for (const p of parts) {\n if (p === '')\n continue;\n /* c8 ignore start */\n if (typeof p !== 'string' &&\n !(p instanceof _a && p.#parent === this)) {\n throw new Error('invalid part: ' + p);\n }\n /* c8 ignore stop */\n this.#parts.push(p);\n }\n }\n toJSON() {\n const ret = this.type === null ?\n this.#parts\n .slice()\n .map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => p.toJSON())];\n if (this.isStart() && !this.type)\n ret.unshift([]);\n if (this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n ret.push({});\n }\n return ret;\n }\n isStart() {\n if (this.#root === this)\n return true;\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart())\n return false;\n if (this.#parentIndex === 0)\n return true;\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent;\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i];\n if (!(pp instanceof _a && pp.type === '!')) {\n return false;\n }\n }\n return true;\n }\n isEnd() {\n if (this.#root === this)\n return true;\n if (this.#parent?.type === '!')\n return true;\n if (!this.#parent?.isEnd())\n return false;\n if (!this.type)\n return this.#parent?.isEnd();\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0;\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1;\n }\n copyIn(part) {\n if (typeof part === 'string')\n this.push(part);\n else\n this.push(part.clone(this));\n }\n clone(parent) {\n const c = new _a(this.type, parent);\n for (const p of this.#parts) {\n c.copyIn(p);\n }\n return c;\n }\n static #parseAST(str, ast, pos, opt, extDepth) {\n const maxDepth = opt.maxExtglobRecursion ?? 2;\n let escaping = false;\n let inBrace = false;\n let braceStart = -1;\n let braceNeg = false;\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos;\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n // we don't have to check for adoption here, because that's\n // done at the other recursion point.\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth;\n if (doRecurse) {\n ast.push(acc);\n acc = '';\n const ext = new _a(c, ast);\n i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n ast.push(ext);\n continue;\n }\n acc += c;\n }\n ast.push(acc);\n return i;\n }\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1;\n let part = new _a(null, ast);\n const parts = [];\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n part.push(acc);\n acc = '';\n const ext = new _a(c, part);\n part.push(ext);\n i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n continue;\n }\n if (c === '|') {\n part.push(acc);\n acc = '';\n parts.push(part);\n part = new _a(null, ast);\n continue;\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true;\n }\n part.push(acc);\n acc = '';\n ast.push(...parts, part);\n return i;\n }\n acc += c;\n }\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null;\n ast.#hasMagic = undefined;\n ast.#parts = [str.substring(pos - 1)];\n return i;\n }\n #canAdoptWithSpace(child) {\n return this.#canAdopt(child, adoptionWithSpaceMap);\n }\n #canAdopt(child, map = adoptionMap) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canAdoptType(gc.type, map);\n }\n #canAdoptType(c, map = adoptionAnyMap) {\n return !!map.get(this.type)?.includes(c);\n }\n #adoptWithSpace(child, index) {\n const gc = child.#parts[0];\n const blank = new _a(null, gc, this.options);\n blank.#parts.push('');\n gc.push(blank);\n this.#adopt(child, index);\n }\n #adopt(child, index) {\n const gc = child.#parts[0];\n this.#parts.splice(index, 1, ...gc.#parts);\n for (const p of gc.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.#toString = undefined;\n }\n #canUsurpType(c) {\n const m = usurpMap.get(this.type);\n return !!(m?.has(c));\n }\n #canUsurp(child) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canUsurpType(gc.type);\n }\n #usurp(child) {\n const m = usurpMap.get(this.type);\n const gc = child.#parts[0];\n const nt = m?.get(gc.type);\n /* c8 ignore start - impossible */\n if (!nt)\n return false;\n /* c8 ignore stop */\n this.#parts = gc.#parts;\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#parent = this;\n }\n }\n this.type = nt;\n this.#toString = undefined;\n this.#emptyExt = false;\n }\n static fromGlob(pattern, options = {}) {\n const ast = new _a(null, undefined, options);\n _a.#parseAST(pattern, ast, 0, options, 0);\n return ast;\n }\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern() {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root)\n return this.#root.toMMPattern();\n /* c8 ignore stop */\n const glob = this.toString();\n const [re, body, hasMagic, uflag] = this.toRegExpSource();\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic = hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase());\n if (!anyMagic) {\n return body;\n }\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n });\n }\n get options() {\n return this.#options;\n }\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(allowDot) {\n const dot = allowDot ?? !!this.#options.dot;\n if (this.#root === this) {\n this.#flatten();\n this.#fillNegs();\n }\n if (!isExtglobAST(this)) {\n const noEmpty = this.isStart() &&\n this.isEnd() &&\n !this.#parts.some(s => typeof s !== 'string');\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] = typeof p === 'string' ?\n _a.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot);\n this.#hasMagic = this.#hasMagic || hasMagic;\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .join('');\n let start = '';\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n if (!dotTravAllowed) {\n const aps = addPatternStart;\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav = \n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n start =\n needNoTrav ? startNoTraversal\n : needNoDot ? startNoDot\n : '';\n }\n }\n }\n // append the \"end of path portion\" pattern to negation tails\n let end = '';\n if (this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!') {\n end = '(?:$|\\\\/)';\n }\n const final = start + src + end;\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n const repeated = this.type === '*' || this.type === '+';\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n let body = this.#partsToRegExp(dot);\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString();\n const me = this;\n me.#parts = [s];\n me.type = null;\n me.#hasMagic = undefined;\n return [s, unescape(this.toString()), false, false];\n }\n let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?\n ''\n : this.#partsToRegExp(true);\n if (bodyDotAllowed === body) {\n bodyDotAllowed = '';\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`;\n }\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = '';\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n }\n else {\n const close = this.type === '!' ?\n // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@' ? ')'\n : this.type === '?' ? ')?'\n : this.type === '+' && bodyDotAllowed ? ')'\n : this.type === '*' && bodyDotAllowed ? `)?`\n : `)${this.type}`;\n final = start + body + close;\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#flatten();\n }\n }\n }\n else {\n // do up to 10 passes to flatten as much as possible\n let iterations = 0;\n let done = false;\n do {\n done = true;\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i];\n if (typeof c === 'object') {\n c.#flatten();\n if (this.#canAdopt(c)) {\n done = false;\n this.#adopt(c, i);\n }\n else if (this.#canAdoptWithSpace(c)) {\n done = false;\n this.#adoptWithSpace(c, i);\n }\n else if (this.#canUsurp(c)) {\n done = false;\n this.#usurp(c);\n }\n }\n }\n } while (!done && ++iterations < 10);\n }\n this.#toString = undefined;\n }\n #partsToRegExp(dot) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??');\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|');\n }\n static #parseGlob(glob, hasMagic, noEmpty = false) {\n let escaping = false;\n let re = '';\n let uflag = false;\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false;\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i);\n if (escaping) {\n escaping = false;\n re += (reSpecials.has(c) ? '\\\\' : '') + c;\n continue;\n }\n if (c === '*') {\n if (inStar)\n continue;\n inStar = true;\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n hasMagic = true;\n continue;\n }\n else {\n inStar = false;\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\';\n }\n else {\n escaping = true;\n }\n continue;\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i);\n if (consumed) {\n re += src;\n uflag = uflag || needUflag;\n i += consumed - 1;\n hasMagic = hasMagic || magic;\n continue;\n }\n }\n if (c === '?') {\n re += qmark;\n hasMagic = true;\n continue;\n }\n re += regExpEscape(c);\n }\n return [re, unescape(glob), !!hasMagic, uflag];\n }\n}\n_a = AST;\n//# sourceMappingURL=ast.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, magicalBraces = false, } = {}) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]{}]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&');\n }\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import { expand } from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n assertValidPattern(pattern);\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n }\n return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n ext = ext.toLowerCase();\n return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n ext = ext.toLowerCase();\n return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process ?\n (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix');\nconst path = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\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// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch;\n }\n const orig = minimatch;\n const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern, options = {}) {\n super(pattern, ext(def, options));\n }\n static defaults(options) {\n return orig.defaults(ext(def, options)).Minimatch;\n }\n },\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(type, parent, options = {}) {\n super(type, parent, ext(def, options));\n }\n /* c8 ignore stop */\n static fromGlob(pattern, options = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options));\n }\n },\n unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n defaults: (options) => orig.defaults(ext(def, options)),\n makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR,\n });\n};\nminimatch.defaults = defaults;\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\nexport const braceExpand = (pattern, options = {}) => {\n assertValidPattern(pattern);\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 return expand(pattern, { max: options.braceExpandMax });\n};\nminimatch.braceExpand = braceExpand;\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.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const 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};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n options;\n set;\n pattern;\n windowsPathsNoEscape;\n nonegate;\n negate;\n comment;\n empty;\n preserveMultipleSlashes;\n partial;\n globSet;\n globParts;\n nocase;\n isWindows;\n platform;\n windowsNoMagicRoot;\n maxGlobstarRecursion;\n regexp;\n constructor(pattern, options = {}) {\n assertValidPattern(pattern);\n options = options || {};\n this.options = options;\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n this.pattern = pattern;\n this.platform = options.platform || defaultPlatform;\n this.isWindows = this.platform === 'win32';\n // avoid the annoying deprecation flag lol\n const awe = ('allowWindow' + 'sEscape');\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options[awe] === false;\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/');\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n this.regexp = null;\n this.negate = false;\n this.nonegate = !!options.nonegate;\n this.comment = false;\n this.empty = false;\n this.partial = !!options.partial;\n this.nocase = !!this.options.nocase;\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined ?\n options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase);\n this.globSet = [];\n this.globParts = [];\n this.set = [];\n // make the set of regexps etc.\n this.make();\n }\n hasMagic() {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true;\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string')\n return true;\n }\n }\n return false;\n }\n debug(..._) { }\n make() {\n const pattern = this.pattern;\n const options = this.options;\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 // step 1: figure out negation, etc.\n this.parseNegate();\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())];\n if (options.debug) {\n this.debug = (...args) => console.error(...args);\n }\n this.debug(this.pattern, this.globSet);\n // step 3: now we have a set, so turn each one into a series of\n // path-portion 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 //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n this.globParts = this.preprocess(rawGlobParts);\n this.debug(this.pattern, this.globParts);\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC = s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3]);\n const isDrive = /^[a-z]:/i.test(s[0]);\n if (isUNC) {\n return [\n ...s.slice(0, 4),\n ...s.slice(4).map(ss => this.parse(ss)),\n ];\n }\n else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n }\n }\n return s.map(ss => this.parse(ss));\n });\n this.debug(this.pattern, set);\n // filter out everything that didn't compile properly.\n this.set = set.filter(s => s.indexOf(false) === -1);\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i];\n if (p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])) {\n p[2] = '?';\n }\n }\n }\n this.debug(this.pattern, this.set);\n }\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts) {\n // if we're not in globstar mode, then turn ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*';\n }\n }\n }\n }\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts);\n globParts = this.secondPhasePreProcess(globParts);\n }\n else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts);\n }\n else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts);\n }\n return globParts;\n }\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts) {\n return globParts.map(parts => {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs;\n while (parts[i + 1] === '**') {\n i++;\n }\n if (i !== gs) {\n parts.splice(gs, i - gs);\n }\n }\n return parts;\n });\n }\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts) {\n return globParts.map(parts => {\n parts = parts.reduce((set, part) => {\n const prev = set[set.length - 1];\n if (part === '**' && prev === '**') {\n return set;\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop();\n return set;\n }\n }\n set.push(part);\n return set;\n }, []);\n return parts.length === 0 ? [''] : parts;\n });\n }\n levelTwoFileOptimize(parts) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts);\n }\n let didSomething = false;\n do {\n didSomething = false;\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i];\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '')\n continue;\n if (p === '.' || p === '') {\n didSomething = true;\n parts.splice(i, 1);\n i--;\n }\n }\n if (parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')) {\n didSomething = true;\n parts.pop();\n }\n }\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd = 0;\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1];\n if (p && p !== '.' && p !== '..' && p !== '**') {\n didSomething = true;\n parts.splice(dd - 1, 2);\n dd -= 2;\n }\n }\n } while (didSomething);\n return parts.length === 0 ? [''] : parts;\n }\n // First phase: single-pattern processing\n // <pre> is 1 or more portions\n // <rest> is 1 or more portions\n // <p> is any portion other than ., .., '', or **\n // <e> is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n // <pre>/<e>/<rest> -> <pre>/<rest>\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n // **/**/<rest> -> **/<rest>\n //\n // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow\n // this WOULD be allowed if ** did follow symlinks, or * didn't\n firstPhasePreProcess(globParts) {\n let didSomething = false;\n do {\n didSomething = false;\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n // <pre>/**/**/<rest> -> <pre>/**/<rest>\n gss++;\n }\n // eg, if gs is 2 and gss is 4, that means we have 3 **\n // parts, and can remove 2 of them.\n if (gss > gs) {\n parts.splice(gs + 1, gss - gs);\n }\n let next = parts[gs + 1];\n const p = parts[gs + 2];\n const p2 = parts[gs + 3];\n if (next !== '..')\n continue;\n if (!p ||\n p === '.' ||\n p === '..' ||\n !p2 ||\n p2 === '.' ||\n p2 === '..') {\n continue;\n }\n didSomething = true;\n // edit parts in place, and push the new one\n parts.splice(gs, 1);\n const other = parts.slice(0);\n other[gs] = '**';\n globParts.push(other);\n gs--;\n }\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i];\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '')\n continue;\n if (p === '.' || p === '') {\n didSomething = true;\n parts.splice(i, 1);\n i--;\n }\n }\n if (parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')) {\n didSomething = true;\n parts.pop();\n }\n }\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd = 0;\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1];\n if (p && p !== '.' && p !== '..' && p !== '**') {\n didSomething = true;\n const needDot = dd === 1 && parts[dd + 1] === '**';\n const splin = needDot ? ['.'] : [];\n parts.splice(dd - 1, 2, ...splin);\n if (parts.length === 0)\n parts.push('');\n dd -= 2;\n }\n }\n }\n } while (didSomething);\n return globParts;\n }\n // second phase: multi-pattern dedupes\n // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>\n // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>\n // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>\n //\n // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>\n // ^-- not valid because ** doens't follow symlinks\n secondPhasePreProcess(globParts) {\n for (let i = 0; i < globParts.length - 1; i++) {\n for (let j = i + 1; j < globParts.length; j++) {\n const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n if (matched) {\n globParts[i] = [];\n globParts[j] = matched;\n break;\n }\n }\n }\n return globParts.filter(gs => gs.length);\n }\n partsMatch(a, b, emptyGSMatch = false) {\n let ai = 0;\n let bi = 0;\n let result = [];\n let which = '';\n while (ai < a.length && bi < b.length) {\n if (a[ai] === b[bi]) {\n result.push(which === 'b' ? b[bi] : a[ai]);\n ai++;\n bi++;\n }\n else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n result.push(a[ai]);\n ai++;\n }\n else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n result.push(b[bi]);\n bi++;\n }\n else if (a[ai] === '*' &&\n b[bi] &&\n (this.options.dot || !b[bi].startsWith('.')) &&\n b[bi] !== '**') {\n if (which === 'b')\n return false;\n which = 'a';\n result.push(a[ai]);\n ai++;\n bi++;\n }\n else if (b[bi] === '*' &&\n a[ai] &&\n (this.options.dot || !a[ai].startsWith('.')) &&\n a[ai] !== '**') {\n if (which === 'a')\n return false;\n which = 'b';\n result.push(b[bi]);\n ai++;\n bi++;\n }\n else {\n return false;\n }\n }\n // if we fall out of the loop, it means they two are identical\n // as long as their lengths match\n return a.length === b.length && result;\n }\n parseNegate() {\n if (this.nonegate)\n return;\n const pattern = this.pattern;\n let negate = false;\n let negateOffset = 0;\n for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n negate = !negate;\n negateOffset++;\n }\n if (negateOffset)\n this.pattern = pattern.slice(negateOffset);\n this.negate = negate;\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 = false) {\n let fileStartIndex = 0;\n let patternStartIndex = 0;\n // UNC paths like //?/X:/... can match X:/... and vice versa\n // Drive letters in absolute drive or unc paths are always compared\n // case-insensitively.\n if (this.isWindows) {\n const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n const fileUNC = !fileDrive &&\n file[0] === '' &&\n file[1] === '' &&\n file[2] === '?' &&\n /^[a-z]:$/i.test(file[3]);\n const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n const patternUNC = !patternDrive &&\n pattern[0] === '' &&\n pattern[1] === '' &&\n pattern[2] === '?' &&\n typeof pattern[3] === 'string' &&\n /^[a-z]:$/i.test(pattern[3]);\n const fdi = fileUNC ? 3\n : fileDrive ? 0\n : undefined;\n const pdi = patternUNC ? 3\n : patternDrive ? 0\n : undefined;\n if (typeof fdi === 'number' && typeof pdi === 'number') {\n const [fd, pd] = [\n file[fdi],\n pattern[pdi],\n ];\n // start matching at the drive letter index of each\n if (fd.toLowerCase() === pd.toLowerCase()) {\n pattern[pdi] = fd;\n patternStartIndex = pdi;\n fileStartIndex = fdi;\n }\n }\n }\n // resolve and reduce . and .. portions in the file as well.\n // don't need to do the second phase, because it's only one string[]\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n file = this.levelTwoFileOptimize(file);\n }\n if (pattern.includes(GLOBSTAR)) {\n return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n }\n return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n }\n #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n // split the pattern into head, tail, and middle of ** delimited parts\n const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);\n const lastgs = pattern.lastIndexOf(GLOBSTAR);\n // split the pattern up into globstar-delimited sections\n // the tail has to be at the end, and the others just have\n // to be found in order from the head.\n const [head, body, tail] = partial ? [\n pattern.slice(patternIndex, firstgs),\n pattern.slice(firstgs + 1),\n [],\n ] : [\n pattern.slice(patternIndex, firstgs),\n pattern.slice(firstgs + 1, lastgs),\n pattern.slice(lastgs + 1),\n ];\n // check the head, from the current file/pattern index.\n if (head.length) {\n const fileHead = file.slice(fileIndex, fileIndex + head.length);\n if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n return false;\n }\n fileIndex += head.length;\n patternIndex += head.length;\n }\n // now we know the head matches!\n // if the last portion is not empty, it MUST match the end\n // check the tail\n let fileTailMatch = 0;\n if (tail.length) {\n // if head + tail > file, then we cannot possibly match\n if (tail.length + fileIndex > file.length)\n return false;\n // try to match the tail\n let tailStart = file.length - tail.length;\n if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n fileTailMatch = tail.length;\n }\n else {\n // affordance for stuff like a/**/* matching a/b/\n // if the last file portion is '', and there's more to the pattern\n // then try without the '' bit.\n if (file[file.length - 1] !== '' ||\n fileIndex + tail.length === file.length) {\n return false;\n }\n tailStart--;\n if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n return false;\n }\n fileTailMatch = tail.length + 1;\n }\n }\n // now we know the tail matches!\n // the middle is zero or more portions wrapped in **, possibly\n // containing more ** sections.\n // so a/**/b/**/c/**/d has become **/b/**/c/**\n // if it's empty, it means a/**/b, just verify we have no bad dots\n // if there's no tail, so it ends on /**, then we must have *something*\n // after the head, or it's not a matc\n if (!body.length) {\n let sawSome = !!fileTailMatch;\n for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n const f = String(file[i]);\n sawSome = true;\n if (f === '.' ||\n f === '..' ||\n (!this.options.dot && f.startsWith('.'))) {\n return false;\n }\n }\n // in partial mode, we just need to get past all file parts\n return partial || sawSome;\n }\n // now we know that there's one or more body sections, which can\n // be matched anywhere from the 0 index (because the head was pruned)\n // through to the length-fileTailMatch index.\n // split the body up into sections, and note the minimum index it can\n // be found at (start with the length of all previous segments)\n // [section, before, after]\n const bodySegments = [[[], 0]];\n let currentBody = bodySegments[0];\n let nonGsParts = 0;\n const nonGsPartsSums = [0];\n for (const b of body) {\n if (b === GLOBSTAR) {\n nonGsPartsSums.push(nonGsParts);\n currentBody = [[], 0];\n bodySegments.push(currentBody);\n }\n else {\n currentBody[0].push(b);\n nonGsParts++;\n }\n }\n let i = bodySegments.length - 1;\n const fileLength = file.length - fileTailMatch;\n for (const b of bodySegments) {\n b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n }\n return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n }\n // return false for \"nope, not matching\"\n // return null for \"not matching, cannot keep trying\"\n #matchGlobStarBodySections(file, \n // pattern section, last possible position for it\n bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n // take the first body segment, and walk from fileIndex to its \"after\"\n // value at the end\n // If it doesn't match at that position, we increment, until we hit\n // that final possible position, and give up.\n // If it does match, then advance and try to rest.\n // If any of them fail we keep walking forward.\n // this is still a bit recursively painful, but it's more constrained\n // than previous implementations, because we never test something that\n // can't possibly be a valid matching condition.\n const bs = bodySegments[bodyIndex];\n if (!bs) {\n // just make sure that there's no bad dots\n for (let i = fileIndex; i < file.length; i++) {\n sawTail = true;\n const f = file[i];\n if (f === '.' ||\n f === '..' ||\n (!this.options.dot && f.startsWith('.'))) {\n return false;\n }\n }\n return sawTail;\n }\n // have a non-globstar body section to test\n const [body, after] = bs;\n while (fileIndex <= after) {\n const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n // if limit exceeded, no match. intentional false negative,\n // acceptable break in correctness for security.\n if (m && globStarDepth < this.maxGlobstarRecursion) {\n // match! see if the rest match. if so, we're done!\n const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n if (sub !== false) {\n return sub;\n }\n }\n const f = file[fileIndex];\n if (f === '.' ||\n f === '..' ||\n (!this.options.dot && f.startsWith('.'))) {\n return false;\n }\n fileIndex++;\n }\n // walked off. no point continuing\n return partial || null;\n }\n #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n let fi;\n let pi;\n let pl;\n let fl;\n for (fi = fileIndex,\n pi = patternIndex,\n fl = file.length,\n pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n this.debug('matchOne loop');\n let p = pattern[pi];\n let f = file[fi];\n this.debug(pattern, p, f);\n // should be impossible.\n // some invalid regexp stuff in the set.\n /* c8 ignore start */\n if (p === false || p === GLOBSTAR) {\n return false;\n }\n /* c8 ignore stop */\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n let hit;\n if (typeof p === 'string') {\n hit = f === p;\n this.debug('string match', p, f, hit);\n }\n else {\n hit = p.test(f);\n this.debug('pattern match', p, f, hit);\n }\n if (!hit)\n return false;\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 // 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 }\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 }\n 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 /* c8 ignore start */\n }\n else {\n // should be unreachable.\n throw new Error('wtf?');\n }\n /* c8 ignore stop */\n }\n braceExpand() {\n return braceExpand(this.pattern, this.options);\n }\n parse(pattern) {\n assertValidPattern(pattern);\n const options = this.options;\n // shortcuts\n if (pattern === '**')\n return GLOBSTAR;\n if (pattern === '')\n return '';\n // far and away, the most common glob pattern parts are\n // *, *.*, and *.<ext> Add a fast check method for those.\n let m;\n let fastTest = null;\n if ((m = pattern.match(starRE))) {\n fastTest = options.dot ? starTestDot : starTest;\n }\n else if ((m = pattern.match(starDotExtRE))) {\n fastTest = (options.nocase ?\n options.dot ?\n starDotExtTestNocaseDot\n : starDotExtTestNocase\n : options.dot ? starDotExtTestDot\n : starDotExtTest)(m[1]);\n }\n else if ((m = pattern.match(qmarksRE))) {\n fastTest = (options.nocase ?\n options.dot ?\n qmarksTestNocaseDot\n : qmarksTestNocase\n : options.dot ? qmarksTestDot\n : qmarksTest)(m);\n }\n else if ((m = pattern.match(starDotStarRE))) {\n fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n }\n else if ((m = pattern.match(dotStarRE))) {\n fastTest = dotStarTest;\n }\n const re = AST.fromGlob(pattern, this.options).toMMPattern();\n if (fastTest && typeof re === 'object') {\n // Avoids overriding in frozen environments\n Reflect.defineProperty(re, 'test', { value: fastTest });\n }\n return re;\n }\n makeRe() {\n if (this.regexp || this.regexp === false)\n return this.regexp;\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 if (!set.length) {\n this.regexp = false;\n return this.regexp;\n }\n const options = this.options;\n const twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot;\n const flags = new Set(options.nocase ? ['i'] : []);\n // regexpify non-globstar patterns\n // if ** is only item, then we just do one twoStar\n // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n // if ** is last, append (\\/twoStar|) to previous\n // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n // then filter out GLOBSTAR symbols\n let re = set\n .map(pattern => {\n const pp = pattern.map(p => {\n if (p instanceof RegExp) {\n for (const f of p.flags.split(''))\n flags.add(f);\n }\n return (typeof p === 'string' ? regExpEscape(p)\n : p === GLOBSTAR ? GLOBSTAR\n : p._src);\n });\n pp.forEach((p, i) => {\n const next = pp[i + 1];\n const prev = pp[i - 1];\n if (p !== GLOBSTAR || prev === GLOBSTAR) {\n return;\n }\n if (prev === undefined) {\n if (next !== undefined && next !== GLOBSTAR) {\n pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n }\n else {\n pp[i] = twoStar;\n }\n }\n else if (next === undefined) {\n pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?';\n }\n else if (next !== GLOBSTAR) {\n pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n pp[i + 1] = GLOBSTAR;\n }\n });\n const filtered = pp.filter(p => p !== GLOBSTAR);\n // For partial matches, we need to make the pattern match\n // any prefix of the full path. We do this by generating\n // alternative patterns that match progressively longer prefixes.\n if (this.partial && filtered.length >= 1) {\n const prefixes = [];\n for (let i = 1; i <= filtered.length; i++) {\n prefixes.push(filtered.slice(0, i).join('/'));\n }\n return '(?:' + prefixes.join('|') + ')';\n }\n return filtered.join('/');\n })\n .join('|');\n // need to wrap in parens if we had more than one thing with |,\n // otherwise only the first will be anchored to ^ and the last to $\n const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^' + open + re + close + '$';\n // In partial mode, '/' should always match as it's a valid prefix for any pattern\n if (this.partial) {\n re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$';\n }\n // can match anything, as long as it's not this.\n if (this.negate)\n re = '^(?!' + re + ').+$';\n try {\n this.regexp = new RegExp(re, [...flags].join(''));\n /* c8 ignore start */\n }\n catch (ex) {\n // should be impossible\n this.regexp = false;\n }\n /* c8 ignore stop */\n return this.regexp;\n }\n slashSplit(p) {\n // if p starts with // on windows, we preserve that\n // so that UNC paths aren't broken. Otherwise, any number of\n // / characters are coalesced into one, unless\n // preserveMultipleSlashes is set to true.\n if (this.preserveMultipleSlashes) {\n return p.split('/');\n }\n else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n // add an extra '' for the one we lose\n return ['', ...p.split(/\\/+/)];\n }\n else {\n return p.split(/\\/+/);\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) {\n return false;\n }\n if (this.empty) {\n return f === '';\n }\n if (f === '/' && partial) {\n return true;\n }\n const options = this.options;\n // windows: need to use /, not \\\n if (this.isWindows) {\n f = f.split('\\\\').join('/');\n }\n // treat the test path as a set of pathparts.\n const ff = this.slashSplit(f);\n this.debug(this.pattern, 'split', ff);\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 const set = this.set;\n this.debug(this.pattern, 'set', set);\n // Find the basename of the path by looking for the last non-empty segment\n let filename = ff[ff.length - 1];\n if (!filename) {\n for (let i = ff.length - 2; !filename && i >= 0; i--) {\n filename = ff[i];\n }\n }\n for (let i = 0; i < set.length; i++) {\n const pattern = set[i];\n let file = ff;\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) {\n return true;\n }\n return !this.negate;\n }\n }\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) {\n return false;\n }\n return this.negate;\n }\n static defaults(def) {\n return minimatch.defaults(def).Minimatch;\n }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","/* --------------------------------------------------------------------------------------------\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';\nexport var DocumentUri;\n(function (DocumentUri) {\n function is(value) {\n return typeof value === 'string';\n }\n DocumentUri.is = is;\n})(DocumentUri || (DocumentUri = {}));\nexport var URI;\n(function (URI) {\n function is(value) {\n return typeof value === 'string';\n }\n URI.is = is;\n})(URI || (URI = {}));\nexport 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 || (integer = {}));\nexport 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 || (uinteger = {}));\n/**\n * The Position namespace provides helper functions to work with\n * {@link Position} literals.\n */\nexport 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, 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 const candidate = value;\n return Is.objectLiteral(candidate) && Is.uinteger(candidate.line) && Is.uinteger(candidate.character);\n }\n Position.is = is;\n})(Position || (Position = {}));\n/**\n * The Range namespace provides helper functions to work with\n * {@link Range} literals.\n */\nexport 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[${one}, ${two}, ${three}, ${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 const candidate = value;\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\n }\n Range.is = is;\n})(Range || (Range = {}));\n/**\n * The Location namespace provides helper functions to work with\n * {@link Location} literals.\n */\nexport 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, 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 const 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 || (Location = {}));\n/**\n * The LocationLink namespace provides helper functions to work with\n * {@link LocationLink} literals.\n */\nexport 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, targetRange, targetSelectionRange, 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 const 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 || (LocationLink = {}));\n/**\n * The Color namespace provides helper functions to work with\n * {@link Color} literals.\n */\nexport var Color;\n(function (Color) {\n /**\n * Creates a new Color literal.\n */\n function create(red, green, blue, alpha) {\n return {\n red,\n green,\n blue,\n 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 const 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 || (Color = {}));\n/**\n * The ColorInformation namespace provides helper functions to work with\n * {@link ColorInformation} literals.\n */\nexport var ColorInformation;\n(function (ColorInformation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(range, color) {\n return {\n range,\n 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 const candidate = value;\n return Is.objectLiteral(candidate) && Range.is(candidate.range) && Color.is(candidate.color);\n }\n ColorInformation.is = is;\n})(ColorInformation || (ColorInformation = {}));\n/**\n * The Color namespace provides helper functions to work with\n * {@link ColorPresentation} literals.\n */\nexport var ColorPresentation;\n(function (ColorPresentation) {\n /**\n * Creates a new ColorInformation literal.\n */\n function create(label, textEdit, additionalTextEdits) {\n return {\n label,\n textEdit,\n 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 const 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 || (ColorPresentation = {}));\n/**\n * A set of predefined range kinds.\n */\nexport 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 || (FoldingRangeKind = {}));\n/**\n * The folding range namespace provides helper functions to work with\n * {@link FoldingRange} literals.\n */\nexport var FoldingRange;\n(function (FoldingRange) {\n /**\n * Creates a new FoldingRange literal.\n */\n function create(startLine, endLine, startCharacter, endCharacter, kind, collapsedText) {\n const result = {\n startLine,\n 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 const 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 || (FoldingRange = {}));\n/**\n * The DiagnosticRelatedInformation namespace provides helper functions to work with\n * {@link DiagnosticRelatedInformation} literals.\n */\nexport var DiagnosticRelatedInformation;\n(function (DiagnosticRelatedInformation) {\n /**\n * Creates a new DiagnosticRelatedInformation literal.\n */\n function create(location, message) {\n return {\n location,\n 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 const candidate = value;\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\n }\n DiagnosticRelatedInformation.is = is;\n})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\n/**\n * The diagnostic's severity.\n */\nexport 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 || (DiagnosticSeverity = {}));\n/**\n * The diagnostic tags.\n *\n * @since 3.15.0\n */\nexport 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 || (DiagnosticTag = {}));\n/**\n * The CodeDescription namespace provides functions to deal with descriptions for diagnostic codes.\n *\n * @since 3.16.0\n */\nexport var CodeDescription;\n(function (CodeDescription) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && Is.string(candidate.href);\n }\n CodeDescription.is = is;\n})(CodeDescription || (CodeDescription = {}));\n/**\n * The Diagnostic namespace provides helper functions to work with\n * {@link Diagnostic} literals.\n */\nexport var Diagnostic;\n(function (Diagnostic) {\n /**\n * Creates a new Diagnostic literal.\n */\n function create(range, message, severity, code, source, relatedInformation) {\n const result = { range, 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 const 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 || (Diagnostic = {}));\n/**\n * The Command namespace provides helper functions to work with\n * {@link Command} literals.\n */\nexport var Command;\n(function (Command) {\n /**\n * Creates a new Command literal.\n */\n function create(title, command, ...args) {\n const result = { title, 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 const candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && (candidate.tooltip === undefined || Is.string(candidate.tooltip)) && Is.string(candidate.command);\n }\n Command.is = is;\n})(Command || (Command = {}));\n/**\n * The TextEdit namespace provides helper function to create replace,\n * insert and delete edits more easily.\n */\nexport 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, 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 };\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, newText: '' };\n }\n TextEdit.del = del;\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate)\n && Is.string(candidate.newText)\n && Range.is(candidate.range);\n }\n TextEdit.is = is;\n})(TextEdit || (TextEdit = {}));\nexport var ChangeAnnotation;\n(function (ChangeAnnotation) {\n function create(label, needsConfirmation, description) {\n const result = { 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 const 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 || (ChangeAnnotation = {}));\nexport var ChangeAnnotationIdentifier;\n(function (ChangeAnnotationIdentifier) {\n function is(value) {\n const candidate = value;\n return Is.string(candidate);\n }\n ChangeAnnotationIdentifier.is = is;\n})(ChangeAnnotationIdentifier || (ChangeAnnotationIdentifier = {}));\nexport 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, 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, 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, newText: '', annotationId: annotation };\n }\n AnnotatedTextEdit.del = del;\n function is(value) {\n const candidate = value;\n return TextEdit.is(candidate) && (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId));\n }\n AnnotatedTextEdit.is = is;\n})(AnnotatedTextEdit || (AnnotatedTextEdit = {}));\n/**\n * The TextDocumentEdit namespace provides helper function to create\n * an edit that manipulates a text document.\n */\nexport var TextDocumentEdit;\n(function (TextDocumentEdit) {\n /**\n * Creates a new `TextDocumentEdit`\n */\n function create(textDocument, edits) {\n return { textDocument, edits };\n }\n TextDocumentEdit.create = create;\n function is(value) {\n const candidate = value;\n return Is.defined(candidate)\n && OptionalVersionedTextDocumentIdentifier.is(candidate.textDocument)\n && Array.isArray(candidate.edits);\n }\n TextDocumentEdit.is = is;\n})(TextDocumentEdit || (TextDocumentEdit = {}));\nexport var CreateFile;\n(function (CreateFile) {\n function create(uri, options, annotation) {\n const result = {\n kind: 'create',\n 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 const 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 || (CreateFile = {}));\nexport var RenameFile;\n(function (RenameFile) {\n function create(oldUri, newUri, options, annotation) {\n const result = {\n kind: 'rename',\n oldUri,\n 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 const 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 || (RenameFile = {}));\nexport var DeleteFile;\n(function (DeleteFile) {\n function create(uri, options, annotation) {\n const result = {\n kind: 'delete',\n 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 const 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 || (DeleteFile = {}));\nexport var WorkspaceEdit;\n(function (WorkspaceEdit) {\n function is(value) {\n const candidate = value;\n return candidate &&\n (candidate.changes !== undefined || candidate.documentChanges !== undefined) &&\n (candidate.documentChanges === undefined || candidate.documentChanges.every((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 || (WorkspaceEdit = {}));\nclass TextEditChangeImpl {\n constructor(edits, changeAnnotations) {\n this.edits = edits;\n this.changeAnnotations = changeAnnotations;\n }\n insert(position, newText, annotation) {\n let edit;\n let 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 replace(range, newText, annotation) {\n let edit;\n let 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 delete(range, annotation) {\n let edit;\n let 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 add(edit) {\n this.edits.push(edit);\n }\n all() {\n return this.edits;\n }\n clear() {\n this.edits.splice(0, this.edits.length);\n }\n assertChangeAnnotations(value) {\n if (value === undefined) {\n throw new Error(`Text edit change is not configured to manage change annotations.`);\n }\n }\n}\nexport var SnippetTextEdit;\n(function (SnippetTextEdit) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate)\n && Range.is(candidate.range)\n && StringValue.isSnippet(candidate.snippet)\n && (candidate.annotationId === undefined ||\n (ChangeAnnotation.is(candidate.annotationId) || ChangeAnnotationIdentifier.is(candidate.annotationId)));\n }\n SnippetTextEdit.is = is;\n})(SnippetTextEdit || (SnippetTextEdit = {}));\n/**\n * A helper class\n */\nclass ChangeAnnotations {\n constructor(annotations) {\n this._annotations = annotations === undefined ? Object.create(null) : annotations;\n this._counter = 0;\n this._size = 0;\n }\n all() {\n return this._annotations;\n }\n get size() {\n return this._size;\n }\n manage(idOrAnnotation, annotation) {\n let 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 ${id} is already in use.`);\n }\n if (annotation === undefined) {\n throw new Error(`No annotation provided for id ${id}`);\n }\n this._annotations[id] = annotation;\n this._size++;\n return id;\n }\n nextId() {\n this._counter++;\n return this._counter.toString();\n }\n}\n/**\n * A workspace change helps constructing changes to a workspace.\n */\nexport class WorkspaceChange {\n constructor(workspaceEdit) {\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((change) => {\n if (TextDocumentEdit.is(change)) {\n const 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((key) => {\n const textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\n this._textEditChanges[key] = textEditChange;\n });\n }\n }\n else {\n this._workspaceEdit = {};\n }\n }\n /**\n * Returns the underlying {@link WorkspaceEdit} literal\n * use to be returned from a workspace edit operation like rename.\n */\n get edit() {\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 getTextEditChange(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 const textDocument = { uri: key.uri, version: key.version };\n let result = this._textEditChanges[textDocument.uri];\n if (!result) {\n const edits = [];\n const textDocumentEdit = {\n textDocument,\n 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 let result = this._textEditChanges[key];\n if (!result) {\n const edits = [];\n this._workspaceEdit.changes[key] = edits;\n result = new TextEditChangeImpl(edits);\n this._textEditChanges[key] = result;\n }\n return result;\n }\n }\n initDocumentChanges() {\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 initChanges() {\n if (this._workspaceEdit.documentChanges === undefined && this._workspaceEdit.changes === undefined) {\n this._workspaceEdit.changes = Object.create(null);\n }\n }\n createFile(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 let annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n let operation;\n let 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 renameFile(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 let annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n let operation;\n let 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 deleteFile(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 let annotation;\n if (ChangeAnnotation.is(optionsOrAnnotation) || ChangeAnnotationIdentifier.is(optionsOrAnnotation)) {\n annotation = optionsOrAnnotation;\n }\n else {\n options = optionsOrAnnotation;\n }\n let operation;\n let 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}\n/**\n * The TextDocumentIdentifier namespace provides helper functions to work with\n * {@link TextDocumentIdentifier} literals.\n */\nexport 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 };\n }\n TextDocumentIdentifier.create = create;\n /**\n * Checks whether the given literal conforms to the {@link TextDocumentIdentifier} interface.\n */\n function is(value) {\n const candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri);\n }\n TextDocumentIdentifier.is = is;\n})(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\n/**\n * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link VersionedTextDocumentIdentifier} literals.\n */\nexport 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, 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 const candidate = value;\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.integer(candidate.version);\n }\n VersionedTextDocumentIdentifier.is = is;\n})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\n/**\n * The OptionalVersionedTextDocumentIdentifier namespace provides helper functions to work with\n * {@link OptionalVersionedTextDocumentIdentifier} literals.\n */\nexport 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, 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 const 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 || (OptionalVersionedTextDocumentIdentifier = {}));\n/**\n * Predefined Language kinds\n * @since 3.18.0\n */\nexport var LanguageKind;\n(function (LanguageKind) {\n LanguageKind.ABAP = 'abap';\n LanguageKind.WindowsBat = 'bat';\n LanguageKind.BibTeX = 'bibtex';\n LanguageKind.Clojure = 'clojure';\n LanguageKind.Coffeescript = 'coffeescript';\n LanguageKind.C = 'c';\n LanguageKind.CPP = 'cpp';\n LanguageKind.CSharp = 'csharp';\n LanguageKind.CSS = 'css';\n /**\n * @since 3.18.0\n * @proposed\n */\n LanguageKind.D = 'd';\n /**\n * @since 3.18.0\n * @proposed\n */\n LanguageKind.Delphi = 'pascal';\n LanguageKind.Diff = 'diff';\n LanguageKind.Dart = 'dart';\n LanguageKind.Dockerfile = 'dockerfile';\n LanguageKind.Elixir = 'elixir';\n LanguageKind.Erlang = 'erlang';\n LanguageKind.FSharp = 'fsharp';\n LanguageKind.GitCommit = 'git-commit';\n LanguageKind.GitRebase = 'rebase';\n LanguageKind.Go = 'go';\n LanguageKind.Groovy = 'groovy';\n LanguageKind.Handlebars = 'handlebars';\n LanguageKind.Haskell = 'haskell';\n LanguageKind.HTML = 'html';\n LanguageKind.Ini = 'ini';\n LanguageKind.Java = 'java';\n LanguageKind.JavaScript = 'javascript';\n LanguageKind.JavaScriptReact = 'javascriptreact';\n LanguageKind.JSON = 'json';\n LanguageKind.LaTeX = 'latex';\n LanguageKind.Less = 'less';\n LanguageKind.Lua = 'lua';\n LanguageKind.Makefile = 'makefile';\n LanguageKind.Markdown = 'markdown';\n LanguageKind.ObjectiveC = 'objective-c';\n LanguageKind.ObjectiveCPP = 'objective-cpp';\n /**\n * @since 3.18.0\n * @proposed\n */\n LanguageKind.Pascal = 'pascal';\n LanguageKind.Perl = 'perl';\n LanguageKind.Perl6 = 'perl6';\n LanguageKind.PHP = 'php';\n LanguageKind.Powershell = 'powershell';\n LanguageKind.Pug = 'jade';\n LanguageKind.Python = 'python';\n LanguageKind.R = 'r';\n LanguageKind.Razor = 'razor';\n LanguageKind.Ruby = 'ruby';\n LanguageKind.Rust = 'rust';\n LanguageKind.SCSS = 'scss';\n LanguageKind.SASS = 'sass';\n LanguageKind.Scala = 'scala';\n LanguageKind.ShaderLab = 'shaderlab';\n LanguageKind.ShellScript = 'shellscript';\n LanguageKind.SQL = 'sql';\n LanguageKind.Swift = 'swift';\n LanguageKind.TypeScript = 'typescript';\n LanguageKind.TypeScriptReact = 'typescriptreact';\n LanguageKind.TeX = 'tex';\n LanguageKind.VisualBasic = 'vb';\n LanguageKind.XML = 'xml';\n LanguageKind.XSL = 'xsl';\n LanguageKind.YAML = 'yaml';\n})(LanguageKind || (LanguageKind = {}));\n/**\n * The TextDocumentItem namespace provides helper functions to work with\n * {@link TextDocumentItem} literals.\n */\nexport 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, languageId, version, 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 const 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 || (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 */\nexport 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 const candidate = value;\n return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\n }\n MarkupKind.is = is;\n})(MarkupKind || (MarkupKind = {}));\nexport var MarkupContent;\n(function (MarkupContent) {\n /**\n * Checks whether the given value conforms to the {@link MarkupContent} interface.\n */\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\n }\n MarkupContent.is = is;\n})(MarkupContent || (MarkupContent = {}));\n/**\n * The kind of a completion entry.\n */\nexport 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 || (CompletionItemKind = {}));\n/**\n * Defines whether the insert text in a completion item should be interpreted as\n * plain text or a snippet.\n */\nexport 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 || (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 */\nexport var CompletionItemTag;\n(function (CompletionItemTag) {\n /**\n * Render a completion as obsolete, usually using a strike-out.\n */\n CompletionItemTag.Deprecated = 1;\n})(CompletionItemTag || (CompletionItemTag = {}));\n/**\n * The InsertReplaceEdit namespace provides functions to deal with insert / replace edits.\n *\n * @since 3.16.0\n */\nexport var InsertReplaceEdit;\n(function (InsertReplaceEdit) {\n /**\n * Creates a new insert / replace edit\n */\n function create(newText, insert, replace) {\n return { newText, insert, 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 const candidate = value;\n return candidate && Is.string(candidate.newText) && Range.is(candidate.insert) && Range.is(candidate.replace);\n }\n InsertReplaceEdit.is = is;\n})(InsertReplaceEdit || (InsertReplaceEdit = {}));\n/**\n * How whitespace and indentation is handled during completion\n * item insertion.\n *\n * @since 3.16.0\n */\nexport 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 || (InsertTextMode = {}));\n/**\n * Defines how values from a set of defaults and an individual item will be\n * merged.\n *\n * @since 3.18.0\n */\nexport var ApplyKind;\n(function (ApplyKind) {\n /**\n * The value from the individual item (if provided and not `null`) will be\n * used instead of the default.\n */\n ApplyKind.Replace = 1;\n /**\n * The value from the item will be merged with the default.\n *\n * The specific rules for mergeing values are defined against each field\n * that supports merging.\n */\n ApplyKind.Merge = 2;\n})(ApplyKind || (ApplyKind = {}));\nexport var CompletionItemLabelDetails;\n(function (CompletionItemLabelDetails) {\n function is(value) {\n const 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 || (CompletionItemLabelDetails = {}));\n/**\n * The CompletionItem namespace provides functions to deal with\n * completion items.\n */\nexport 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 };\n }\n CompletionItem.create = create;\n})(CompletionItem || (CompletionItem = {}));\n/**\n * The CompletionList namespace provides functions to deal with\n * completion lists.\n */\nexport 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 || (CompletionList = {}));\nexport 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 const 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 || (MarkedString = {}));\nexport var Hover;\n(function (Hover) {\n /**\n * Checks whether the given value conforms to the {@link Hover} interface.\n */\n function is(value) {\n const 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 || (Hover = {}));\n/**\n * The ParameterInformation namespace provides helper functions to work with\n * {@link ParameterInformation} literals.\n */\nexport 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, documentation } : { label };\n }\n ParameterInformation.create = create;\n})(ParameterInformation || (ParameterInformation = {}));\n/**\n * The SignatureInformation namespace provides helper functions to work with\n * {@link SignatureInformation} literals.\n */\nexport var SignatureInformation;\n(function (SignatureInformation) {\n function create(label, documentation, ...parameters) {\n const result = { 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 || (SignatureInformation = {}));\n/**\n * A document highlight kind.\n */\nexport 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 || (DocumentHighlightKind = {}));\n/**\n * DocumentHighlight namespace to provide helper functions to work with\n * {@link DocumentHighlight} literals.\n */\nexport 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 const result = { range };\n if (Is.number(kind)) {\n result.kind = kind;\n }\n return result;\n }\n DocumentHighlight.create = create;\n})(DocumentHighlight || (DocumentHighlight = {}));\n/**\n * A symbol kind.\n */\nexport 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 || (SymbolKind = {}));\n/**\n * Symbol tags are extra annotations that tweak the rendering of a symbol.\n *\n * @since 3.16\n */\nexport var SymbolTag;\n(function (SymbolTag) {\n /**\n * Render a symbol as obsolete, usually using a strike-out.\n */\n SymbolTag.Deprecated = 1;\n})(SymbolTag || (SymbolTag = {}));\nexport 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 const result = {\n name,\n kind,\n location: { uri, range }\n };\n if (containerName) {\n result.containerName = containerName;\n }\n return result;\n }\n SymbolInformation.create = create;\n})(SymbolInformation || (SymbolInformation = {}));\nexport 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, kind, location: { uri, range } }\n : { name, kind, location: { uri } };\n }\n WorkspaceSymbol.create = create;\n})(WorkspaceSymbol || (WorkspaceSymbol = {}));\nexport 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 const result = {\n name,\n detail,\n kind,\n range,\n 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 const 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 || (DocumentSymbol = {}));\n/**\n * A set of predefined code action kinds\n */\nexport 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 move actions: `refactor.move`\n *\n * Example move actions:\n *\n * - Move a function to a new file\n * - Move a property between classes\n * - Move method to base class\n * - ...\n *\n * @since 3.18.0\n * @proposed\n */\n CodeActionKind.RefactorMove = 'refactor.move';\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 /**\n * Base kind for all code actions applying to the entire notebook's scope. CodeActionKinds using\n * this should always begin with `notebook.`\n *\n * @since 3.18.0\n */\n CodeActionKind.Notebook = 'notebook';\n})(CodeActionKind || (CodeActionKind = {}));\n/**\n * The reason why code actions were requested.\n *\n * @since 3.17.0\n */\nexport 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 || (CodeActionTriggerKind = {}));\n/**\n * The CodeActionContext namespace provides helper functions to work with\n * {@link CodeActionContext} literals.\n */\nexport var CodeActionContext;\n(function (CodeActionContext) {\n /**\n * Creates a new CodeActionContext literal.\n */\n function create(diagnostics, only, triggerKind) {\n const result = { 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 const 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 || (CodeActionContext = {}));\n/**\n * Code action tags are extra annotations that tweak the behavior of a code action.\n *\n * @since 3.18.0 - proposed\n */\nexport var CodeActionTag;\n(function (CodeActionTag) {\n /**\n * Marks the code action as LLM-generated.\n */\n CodeActionTag.LLMGenerated = 1;\n /**\n * Checks whether the given literal conforms to the {@link CodeActionTag} interface.\n */\n function is(value) {\n return Is.defined(value) && value === CodeActionTag.LLMGenerated;\n }\n CodeActionTag.is = is;\n})(CodeActionTag || (CodeActionTag = {}));\nexport var CodeAction;\n(function (CodeAction) {\n function create(title, kindOrCommandOrEdit, kind) {\n const result = { title };\n let 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 const 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 (candidate.tags === undefined || Is.typedArray(candidate.tags, CodeActionTag.is));\n }\n CodeAction.is = is;\n})(CodeAction || (CodeAction = {}));\n/**\n * The CodeLens namespace provides helper functions to work with\n * {@link CodeLens} literals.\n */\nexport var CodeLens;\n(function (CodeLens) {\n /**\n * Creates a new CodeLens literal.\n */\n function create(range, data) {\n const result = { 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 const 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 || (CodeLens = {}));\n/**\n * The FormattingOptions namespace provides helper functions to work with\n * {@link FormattingOptions} literals.\n */\nexport var FormattingOptions;\n(function (FormattingOptions) {\n /**\n * Creates a new FormattingOptions literal.\n */\n function create(tabSize, insertSpaces) {\n return { tabSize, 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 const candidate = value;\n return Is.defined(candidate) && Is.uinteger(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\n }\n FormattingOptions.is = is;\n})(FormattingOptions || (FormattingOptions = {}));\n/**\n * The DocumentLink namespace provides helper functions to work with\n * {@link DocumentLink} literals.\n */\nexport var DocumentLink;\n(function (DocumentLink) {\n /**\n * Creates a new DocumentLink literal.\n */\n function create(range, target, data) {\n return { range, target, 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 const 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 || (DocumentLink = {}));\n/**\n * The SelectionRange namespace provides helper function to work with\n * SelectionRange literals.\n */\nexport 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, parent };\n }\n SelectionRange.create = create;\n function is(value) {\n const 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 || (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 */\nexport 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 /**\n * @since 3.18.0\n */\n SemanticTokenTypes[\"label\"] = \"label\";\n})(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 */\nexport 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 || (SemanticTokenModifiers = {}));\n/**\n * @since 3.16.0\n */\nexport var SemanticTokens;\n(function (SemanticTokens) {\n function is(value) {\n const 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 || (SemanticTokens = {}));\n/**\n * The InlineValueText namespace provides functions to deal with InlineValueTexts.\n *\n * @since 3.17.0\n */\nexport var InlineValueText;\n(function (InlineValueText) {\n /**\n * Creates a new InlineValueText literal.\n */\n function create(range, text) {\n return { range, text };\n }\n InlineValueText.create = create;\n function is(value) {\n const candidate = value;\n return candidate !== undefined && candidate !== null && Range.is(candidate.range) && Is.string(candidate.text);\n }\n InlineValueText.is = is;\n})(InlineValueText || (InlineValueText = {}));\n/**\n * The InlineValueVariableLookup namespace provides functions to deal with InlineValueVariableLookups.\n *\n * @since 3.17.0\n */\nexport var InlineValueVariableLookup;\n(function (InlineValueVariableLookup) {\n /**\n * Creates a new InlineValueText literal.\n */\n function create(range, variableName, caseSensitiveLookup) {\n return { range, variableName, caseSensitiveLookup };\n }\n InlineValueVariableLookup.create = create;\n function is(value) {\n const 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 || (InlineValueVariableLookup = {}));\n/**\n * The InlineValueEvaluatableExpression namespace provides functions to deal with InlineValueEvaluatableExpression.\n *\n * @since 3.17.0\n */\nexport var InlineValueEvaluatableExpression;\n(function (InlineValueEvaluatableExpression) {\n /**\n * Creates a new InlineValueEvaluatableExpression literal.\n */\n function create(range, expression) {\n return { range, expression };\n }\n InlineValueEvaluatableExpression.create = create;\n function is(value) {\n const 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 || (InlineValueEvaluatableExpression = {}));\n/**\n * The InlineValueContext namespace provides helper functions to work with\n * {@link InlineValueContext} literals.\n *\n * @since 3.17.0\n */\nexport var InlineValueContext;\n(function (InlineValueContext) {\n /**\n * Creates a new InlineValueContext literal.\n */\n function create(frameId, stoppedLocation) {\n return { frameId, 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 const candidate = value;\n return Is.defined(candidate) && Range.is(value.stoppedLocation);\n }\n InlineValueContext.is = is;\n})(InlineValueContext || (InlineValueContext = {}));\n/**\n * Inlay hint kinds.\n *\n * @since 3.17.0\n */\nexport 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 || (InlayHintKind = {}));\nexport var InlayHintLabelPart;\n(function (InlayHintLabelPart) {\n function create(value) {\n return { value };\n }\n InlayHintLabelPart.create = create;\n function is(value) {\n const 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 || (InlayHintLabelPart = {}));\nexport var InlayHint;\n(function (InlayHint) {\n function create(position, label, kind) {\n const result = { position, label };\n if (kind !== undefined) {\n result.kind = kind;\n }\n return result;\n }\n InlayHint.create = create;\n function is(value) {\n const 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 || (InlayHint = {}));\nexport var StringValue;\n(function (StringValue) {\n function createSnippet(value) {\n return { kind: 'snippet', value };\n }\n StringValue.createSnippet = createSnippet;\n function isSnippet(value) {\n const candidate = value;\n return Is.objectLiteral(candidate)\n && candidate.kind === 'snippet'\n && Is.string(candidate.value);\n }\n StringValue.isSnippet = isSnippet;\n})(StringValue || (StringValue = {}));\nexport var InlineCompletionItem;\n(function (InlineCompletionItem) {\n function create(insertText, filterText, range, command) {\n return { insertText, filterText, range, command };\n }\n InlineCompletionItem.create = create;\n})(InlineCompletionItem || (InlineCompletionItem = {}));\nexport var InlineCompletionList;\n(function (InlineCompletionList) {\n function create(items) {\n return { items };\n }\n InlineCompletionList.create = create;\n})(InlineCompletionList || (InlineCompletionList = {}));\n/**\n * Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered.\n *\n * @since 3.18.0\n * @proposed\n */\nexport var InlineCompletionTriggerKind;\n(function (InlineCompletionTriggerKind) {\n /**\n * Completion was triggered explicitly by a user gesture.\n */\n InlineCompletionTriggerKind.Invoked = 1;\n /**\n * Completion was triggered automatically while editing.\n */\n InlineCompletionTriggerKind.Automatic = 2;\n})(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\nexport var SelectedCompletionInfo;\n(function (SelectedCompletionInfo) {\n function create(range, text) {\n return { range, text };\n }\n SelectedCompletionInfo.create = create;\n})(SelectedCompletionInfo || (SelectedCompletionInfo = {}));\nexport var InlineCompletionContext;\n(function (InlineCompletionContext) {\n function create(triggerKind, selectedCompletionInfo) {\n return { triggerKind, selectedCompletionInfo };\n }\n InlineCompletionContext.create = create;\n})(InlineCompletionContext || (InlineCompletionContext = {}));\nexport var WorkspaceFolder;\n(function (WorkspaceFolder) {\n function is(value) {\n const candidate = value;\n return Is.objectLiteral(candidate) && URI.is(candidate.uri) && Is.string(candidate.name);\n }\n WorkspaceFolder.is = is;\n})(WorkspaceFolder || (WorkspaceFolder = {}));\nexport const EOL = ['\\n', '\\r\\n', '\\r'];\n/**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\nexport 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 const 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 let text = document.getText();\n const sortedEdits = mergeSort(edits, (a, b) => {\n const 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 let lastModifiedOffset = text.length;\n for (let i = sortedEdits.length - 1; i >= 0; i--) {\n const e = sortedEdits[i];\n const startOffset = document.offsetAt(e.range.start);\n const 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 const p = (data.length / 2) | 0;\n const left = data.slice(0, p);\n const right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n let leftIdx = 0;\n let rightIdx = 0;\n let i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n const 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 || (TextDocument = {}));\n/**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\nclass FullTextDocument {\n constructor(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 get uri() {\n return this._uri;\n }\n get languageId() {\n return this._languageId;\n }\n get version() {\n return this._version;\n }\n getText(range) {\n if (range) {\n const start = this.offsetAt(range.start);\n const end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n }\n update(event, version) {\n this._content = event.text;\n this._version = version;\n this._lineOffsets = undefined;\n }\n getLineOffsets() {\n if (this._lineOffsets === undefined) {\n const lineOffsets = [];\n const text = this._content;\n let isLineStart = true;\n for (let i = 0; i < text.length; i++) {\n if (isLineStart) {\n lineOffsets.push(i);\n isLineStart = false;\n }\n const 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 positionAt(offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n const lineOffsets = this.getLineOffsets();\n let low = 0, high = lineOffsets.length;\n if (high === 0) {\n return Position.create(0, offset);\n }\n while (low < high) {\n const 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 const line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n }\n offsetAt(position) {\n const 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 const lineOffset = lineOffsets[position.line];\n const 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 get lineCount() {\n return this.getLineOffsets().length;\n }\n}\nvar Is;\n(function (Is) {\n const 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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(796);\n"],"names":["ESLintClient","probeFailed","Set","clear","this","add","uri","toString","check","textDocument","config","getConfiguration","get","Validate","off","scheme","languageId","validate","Array","isArray","item","Is","string","on","ValidateItem","is","language","has","probe","migrationFailed","client","error","message","showErrorMessage","then","selected","undefined","outputChannel","show","PerformanceStatus","migrateSettings","async","folders","workspaceFolders","folder","pickFolder","migration","Migration","record","needsUpdate","update","defaultValue","firstReport","validationTime","fixTime","reported","acknowledged","create","context","validator","packageJsonFilter","pattern","configFileFilter","supportedQuickFixKinds","CodeActionKind","Source","value","SourceFixAll","QuickFix","syncedDocuments","Map","LanguageClient","extensionUri","serverModule","Uri","joinPath","fsPath","eslintConfig","debug","sanitize","runtime","execArgv","nodeEnv","env","DEBUG","NODE_ENV","cwd","isTrusted","process","length","getCurrentServerWorkingDirectory","debugArgv","run","module","transport","TransportKind","ipc","options","concat","createServerOptions","clientOptions","documentSelector","revealOutputChannelOn","RevealOutputChannelOn","Never","initializationOptions","progressOnInitialization","synchronize","fileEvents","createFileSystemWatcher","initializationFailedHandler","errorHandler","count","defaultErrorHandler","closed","serverCalledProcessExit","action","CloseAction","DoNotRestart","diagnosticPullOptions","onChange","onSave","onFocus","filter","document","mode","DiagnosticPullMode","onType","onTabs","middleware","didOpen","next","match","result","set","didChange","event","willSave","willSaveWaitUntil","Promise","resolve","didSave","didClose","delete","notebooks","notebookDocument","cells","cell","structure","open","key","provideCodeActions","range","token","only","diagnostics","eslintDiagnostics","diagnostic","source","push","newContext","Object","assign","start","Date","now","startsWith","performanceInfo","performanceStatus","updateStatusBar","workspace","didChangeWatchedFile","didChangeConfiguration","sections","captureDidChangeSetting","configuration","params","items","section","scopeUri","resource","protocol2CodeConverter","asUri","getTextDocument","workspaceFolder","getWorkspaceFolder","migrationSemaphore","lock","globalMigration","notNow","name","file","path","basename","showInformationMessage","join","modal","id","title","isCloseAffordance","ConfigurationTarget","Global","openExternal","parse","useFlatConfig","settings","packageManager","useESLintClass","useRealpaths","experimental","codeActionOnSave","CodeActionsOnSaveMode","all","format","quiet","onIgnoredFiles","ESLintSeverity","from","rulesCustomizations","getRuleCustomizations","problems","shortenToSingleLine","nodePath","workingDirectory","codeAction","disableRuleComment","enable","location","commentStyle","showDocumentation","rules","CodeActionsOnSaveRules","CodeActionsOnSaveOptions","code2ProtocolConverter","workingDirectories","workspaceFolderPath","entry","directory","itemValue","noCWD","LegacyDirectoryItem","changeProcessCWD","DirectoryItem","PatternItem","ModeItem","filePath","toOSPath","isAbsolute","charAt","sep","posix","toPosixPath","regExp","convert2RegExp","exec","readConfiguration","notebookDocumentOptions","filterCells","_notebookDocument","createClientOptions","createDefaultErrorHandler","Semaphore","languageStatus","createLanguageStatusItem","serverRunning","text","command","documentStatus","subscriptions","onDidChangeConfiguration","values","provider","getFeature","DidCloseTextDocumentNotification","method","getProvider","send","catch","textDocuments","DidOpenTextDocumentNotification","onNotification","ShowOutputChannel","type","StatusNotification","updateDocumentStatus","ExitCalled","onRequest","NoConfigRequest","fileLocation","warn","state","Status","NoESLintLibraryRequest","globalState","userProvidedPackageManager","detectedPackageManager","commands","executeCommand","getPackageManager","globalInstall","npm","pnpm","yarn","outputItem","info","str","workspaces","global","OpenESLintDocRequest","url","ProbeFailedRequest","closeFeature","diagnosticsFeature","DocumentDiagnosticRequest","forget","notebookFeature","NotebookDocumentSyncRegistrationType","register","String","registerOptions","notebookSelector","notebook","onDidChangeState","newState","State","Starting","Running","onDidChangeActiveTextEditor","onDidCloseTextDocument","updateLanguageStatusSelector","registerCommand","textEditor","activeTextEditor","arguments","version","sendRequest","ExecuteCommandRequest","activeTextDocument","def","customizations","rawConfig","map","rawValue","severity","rule","fixable","needsSelectorUpdate","selector","keys","statusInfo","ok","validationBudget","Number","MAX_VALUE","fixesBudget","LanguageStatusSeverity","Information","timeTaken","detail","timeBudget","Math","max","Warning","Error","configurationChanged","activated","openListener","dispose","configurationListener","realActivate","onDidOpenTextDocument","notValidating","onActivateCommands","createDefaultConfiguration","taskProvider","forEach","stop","noConfigFolders","configFiles","configFile","fs","existsSync","folderRootPath","terminal","createTerminal","eslintCommand","findEslint","sendText","acknowledgePerformanceStatus","TaskProvider","Validator","StartFailed","indexOf","restart","refresh","platform","replace","rootPath","existFile","separator","fileChar","convertNode","node","NodeType","questionMark","star","globStar","bracket","brace","buffer","child","alternatives","parser","PatternParser","RegExp","err","console","_reject","stat","stats","isFile","escapeRegExpCharacters","prototype","boolean","call","objectLiteral","index","stopChar","constructor","makeTextNode","substring","ch","bracketParser","firstIndex","_capacity","_active","_waiting","capacity","thunk","reject","runNext","active","setImmediate","doRunNext","shift","CodeActionsOnSave","MigrationData","candidate","autoFix","isExplicitlyDisabled","setting","getSourceFixAll","includes","getSourceFixAllESLint","setSourceFixAllESLint","splice","inspect","changed","globalValue","workspaceValue","workspaceFolderValue","data","workspaceConfig","editorConfig","languageSpecificSettings","autoFixOnSave","fixAll","recordAutoFixOnSave","recordValidate","recordWorkingDirectories","func","elem","settingAccessor","i","getCodeActionsOnSave","_update","newValue","target","_updateLanguageSetting","Workspace","WorkspaceFolder","current","NotificationType","RequestType","NotificationType0","RuleSeverity","ModeEnum","toLowerCase","auto","FolderTaskProvider","_workspaceFolder","isEnabled","vscode","getTask","kind","lintTaskOptions","Task","ShellExecution","providers","disposable","updateWorkspaceFolders","disposables","onDidChangeWorkspaceFolders","added","removed","updateConfiguration","Disposable","remove","updateProvider","detector","size","tasks","registerTaskProvider","provideTasks","getTasks","resolveTask","_task","promises","placeHolder","window","showQuickPick","label","description","ANY","Symbol","Comparator","comp","parseOptions","loose","trim","split","semver","operator","r","re","t","COMPARATORLOOSE","COMPARATOR","m","TypeError","SemVer","test","er","cmp","intersects","Range","includePrerelease","exports","safeRe","SPACE_CHARACTERS","raw","formatted","parseRange","c","first","isNullSet","isAny","comps","k","memoKey","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","cached","cache","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","comparatorTrimReplace","TILDETRIM","tildeTrimReplace","CARETTRIM","caretTrimReplace","rangeList","parseComparator","replaceGTE0","rangeMap","comparators","some","thisComparators","isSatisfiable","rangeComparators","every","thisComparator","rangeComparator","testSet","remainingComparators","slice","testComparator","pop","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","replaceTilde","TILDELOOSE","TILDE","_","M","p","pr","ret","replaceCaret","CARETLOOSE","CARET","z","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","prerelease","allowed","major","minor","patch","MAX_LENGTH","MAX_SAFE_INTEGER","safeSrc","src","compareIdentifiers","LOOSE","FULL","num","build","compare","other","compareMain","comparePre","a","b","compareBuild","inc","release","identifier","identifierBase","PRERELEASELOOSE","PRERELEASE","base","isNaN","eq","neq","gt","gte","lt","lte","op","throwErrors","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","NODE_DEBUG","args","numeric","anum","bnum","rcompareIdentifiers","firstKey","looseOption","freeze","emptyOpts","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","BUILD","FULLPLAIN","MAINVERSIONLOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","LONECARET","__importDefault","mod","__esModule","defineProperty","ProgressType","ProgressToken","createMessageConnection","NullLogger","ConnectionOptions","ConnectionStrategy","AbstractMessageBuffer","WriteableStreamMessageWriter","AbstractMessageWriter","MessageWriter","ReadableStreamMessageReader","AbstractMessageReader","MessageReader","SharedArrayReceiverStrategy","SharedArraySenderStrategy","CancellationToken","CancellationTokenSource","Emitter","Event","LRUCache","Touch","LinkedMap","ParameterStructures","NotificationType9","NotificationType8","NotificationType7","NotificationType6","NotificationType5","NotificationType4","NotificationType3","NotificationType2","NotificationType1","ErrorCodes","ResponseError","RequestType9","RequestType8","RequestType7","RequestType6","RequestType5","RequestType4","RequestType3","RequestType2","RequestType1","RequestType0","Message","RAL","MessageStrategy","CancellationStrategy","CancellationSenderStrategy","RequestCancellationReceiverStrategy","IdCancellationReceiverStrategy","CancellationReceiverStrategy","ConnectionError","ConnectionErrors","LogTraceNotification","SetTraceNotification","TraceFormat","TraceValues","TraceValue","Trace","messages_1","enumerable","linkedMap_1","disposable_1","events_1","cancellation_1","sharedArrayCancellation_1","messageReader_1","messageWriter_1","messageBuffer_1","connection_1","ral_1","default","ownKeys","__createBinding","o","k2","desc","getOwnPropertyDescriptor","writable","configurable","__setModuleDefault","v","__importStar","getOwnPropertyNames","ar","hasOwnProperty","None","isCancellationRequested","onCancellationRequested","Cancelled","shortcutEvent","callback","handle","timer","setTimeout","bind","MutableToken","_isCancelled","_emitter","cancel","fire","_token","messageReader","messageWriter","_logger","logger","sequenceNumber","notificationSequenceNumber","unknownResponseSequenceNumber","maxParallelism","starRequestHandler","inFlight","requestHandlers","starNotificationHandler","notificationHandlers","progressHandlers","tracer","messageQueue","responsePromises","knownCanceledRequests","requestTokens","trace","Off","traceFormat","Text","ConnectionState","New","errorEmitter","closeEmitter","unhandledNotificationEmitter","unhandledProgressEmitter","disposeEmitter","cancellationStrategy","cancelUndispatched","_message","isListening","Listening","isClosed","Closed","isDisposed","Disposed","closeHandler","createRequestQueueKey","triggerMessageQueue","messageStrategy","handleMessage","isRequest","requestMessage","reply","resultOrError","startTime","jsonrpc","toJson","traceSendingResponse","write","replyError","Verbose","Compact","stringifyTrace","log","logLSPMessage","traceReceivedRequest","element","requestHandler","handler","tokenKey","cancellationSource","receiver","createCancellationTokenSource","handlerResult","numberOfParams","InvalidParams","parameterStructures","byName","byPosition","InternalError","MethodNotFound","handleRequest","isNotification","notificationHandler","CancelNotification","cancelId","traceReceivedNotification","ProgressNotification","handleNotification","isResponse","handleResponse","JSON","stringify","responseMessage","number","responseHandler","handleInvalidMessage","onClose","onError","toCancel","strategy","connectionStrategy","response","cancellationToken","queue","addMessageToQueue","responsePromise","code","timerStart","traceReceivedResponse","lspMessage","isLSPMessage","timestamp","throwIfClosedOrDisposed","undefinedToNull","param","nullToUndefined","isNamedParam","computeSingleParam","computeMessageParams","connection","sendNotification","messageParams","paramStart","paramEnd","notificationMessage","traceSendingNotification","onProgress","_type","sendProgress","onUnhandledProgress","sendCancellation","sender","throwIfNotListening","last","tokenWasCancelled","traceSendingRequest","enableCancellation","cleanup","MessageWriteError","StarRequestHandler","hasPendingResponse","_value","_tracer","sendNotificationOrTraceOptions","_sendNotification","_traceFormat","onUnhandledNotification","onDispose","end","PendingResponseRejected","promise","listen","AlreadyListening","throwIfListening","verbose","__","_pr","Messages","fromString","super","setPrototypeOf","conn","_disposable","CallbackList","_callbacks","_contexts","bucket","foundCallbackWithDifferentContext","len","invoke","callbacks","contexts","apply","e","isEmpty","_options","static","_event","listener","thisArgs","onFirstListenerAdd","_noop","onLastListenerRemove","array","stringArray","First","AsOld","Last","AsNew","toStringTag","_map","_head","_tail","_size","_state","before","previous","after","touch","addItemLast","addItemFirst","removeItem","callbackfn","thisArg","iterator","done","entries","trimOld","newSize","currentSize","toJSON","fromJSON","_limit","_ratio","limit","ratio","min","checkTrim","peek","round","_encoding","_chunks","_totalLength","encoding","append","chunk","toAppend","byteLength","tryReadHeaders","lowerCaseKeys","chunkIndex","offset","chunkBytesRead","row","_read","headers","header","substr","tryReadBody","numberOfBytes","byteCount","emptyBuffer","asNative","allocNative","resultOffset","chunkPart","semaphore_1","ResolvedMessageReaderOptions","onPartialMessage","partialMessageEmitter","fireError","asError","fireClose","firePartialMessage","fromOptions","charset","contentDecoder","contentDecoders","contentTypeDecoder","contentTypeDecoders","decoder","applicationJson","readable","nextMessageLength","messageToken","partialMessageTimer","_partialMessageTimeout","readSemaphore","messageBuffer","partialMessageTimeout","timeout","onData","contentLength","fromEntries","parseInt","body","setPartialMessageTimer","clearPartialMessageTimer","bytes","decode","waitingTime","ResolvedMessageWriterOptions","contentTypeEncoder","encoder","contentEncoder","errorCount","writeSemaphore","msg","encode","doWrite","handleError","AbstractMessageSignature","ParseError","InvalidRequest","jsonrpcReservedErrorRangeStart","serverErrorStart","MessageReadError","ConnectionInactive","ServerNotInitialized","UnknownErrorCode","jsonrpcReservedErrorRangeEnd","serverErrorEnd","_parameterStructures","_ral","install","ral","CancellationState","Continue","buffers","request","SharedArrayBuffer","Int32Array","$cancellationData","_conn","Atomics","store","SharedArrayBufferCancellationToken","load","SharedArrayBufferCancellationTokenSource","__exportStar","StreamMessageWriter","StreamMessageReader","SocketMessageWriter","SocketMessageReader","PortMessageWriter","PortMessageReader","IPCMessageWriter","IPCMessageReader","generateRandomPipeName","crypto_1","randomBytes","randomLength","tmpDir","realpathSync","XDG_RUNTIME_DIR","os","tmpdir","safeIpcPathLengths","randomSuffix","floor","createClientPipeTransport","pipeName","connectResolve","connected","server","net_1","createServer","socket","close","removeListener","onConnected","createServerPipeTransport","createConnection","createClientSocketTransport","port","createServerSocketTransport","input","output","api_1","reader","read","addListener","isReadableStream","writer","isWritableStream","ril_1","eventEmitter","postMessage","stream","asReadableStream","asWritableStream","destroy","util_1","MessageBuffer","Buffer","allocUnsafe","TextDecoder","ReadableStreamWrapper","onEnd","WritableStreamWrapper","_ril","ms","clearTimeout","clearImmediate","setInterval","clearInterval","RIL","vsdiag","diagnostic_1","CallHierarchyFeature","vscode_1","vscode_languageserver_protocol_1","features_1","CallHierarchyProvider","prepareCallHierarchy","position","asTextDocumentPositionParams","CallHierarchyPrepareRequest","asCallHierarchyItems","handleFailedRequest","provideCallHierarchyIncomingCalls","asCallHierarchyItem","CallHierarchyIncomingCallsRequest","asCallHierarchyIncomingCalls","provideCallHierarchyOutgoingCalls","CallHierarchyOutgoingCallsRequest","asCallHierarchyOutgoingCalls","TextDocumentLanguageFeature","fillClientCapabilities","cap","capabilities","ensure","dynamicRegistration","initialize","getRegistration","callHierarchyProvider","registerLanguageProvider","_client","languages","registerCallHierarchyProvider","asDocumentSelector","ProposedFeatures","BaseLanguageClient","ShutdownMode","MessageTransports","SuspendMode","ErrorAction","c2p","p2c","async_1","UUID","progressPart_1","notebook_1","configuration_1","textSynchronization_1","completion_1","hover_1","definition_1","signatureHelp_1","documentHighlight_1","documentSymbol_1","workspaceSymbol_1","reference_1","typeDefinition_1","implementation_1","colorProvider_1","codeAction_1","codeLens_1","formatting_1","rename_1","documentLink_1","executeCommand_1","foldingRange_1","declaration_1","selectionRange_1","callHierarchy_1","semanticTokens_1","linkedEditingRange_1","typeHierarchy_1","inlineValue_1","inlayHint_1","workspaceFolder_1","fileOperations_1","inlineCompletion_1","textDocumentContent_1","fileSystemWatcher_1","progress_1","ResolvedClientOptions","ClientState","sanitizeIsTrusted","enabledCommands","DefaultErrorHandler","maxRestartCount","restarts","_error","Shutdown","Restart","Tabs","_onOpen","_onClose","EventEmitter","fillTabResources","tabGroups","onDidChangeTabs","opened","oldTabs","currentTabs","tab","toFire","onOpen","isActive","isVisible","NotebookDocumentSyncFeature","CellScheme","notebookDocuments","getCells","find","getTabResources","strings","uris","seen","group","tabs","TabInputText","TabInputTextDiff","modified","TabInputCustom","TabInputNotebook","_id","_name","_clientOptions","_onStart","_onStop","_connection","_idleInterval","_ignoredRegistrations","_listeners","_disposed","_notificationHandlers","_notificationDisposables","_pendingNotificationHandlers","_requestHandlers","_requestDisposables","_pendingRequestHandlers","_progressHandlers","_pendingProgressHandlers","_progressDisposables","_initializeResult","_outputChannel","_disposeOutputChannel","_traceOutputChannel","_traceLogLevel","_capabilities","_diagnostics","_syncedDocuments","_didChangeTextDocumentFeature","_inFlightOpenNotifications","_pendingChangeSemaphore","_pendingChangeDelayer","_didOpenTextDocumentFeature","_fileEvents","_fileEventDelayer","_telemetryEmitter","_stateChangeEmitter","_trace","_c2p","_p2c","_tabsModel","markdown","supportHtml","supportThemeIcons","diagnosticCollectionName","outputChannelName","stdioEncoding","connectionOptions","uriConverters","textSynchronization","createTextSynchronizationOptions","Initial","logLevel","LogLevel","Info","traceOutputChannel","Delayer","messageOrDataObject","traceObject","createConverter","code2Protocol","protocol2Code","registerBuiltinFeatures","delayOpenNotifications","tabsModel","onTelemetry","createOutputChannel","getPublicState","$state","oldState","Stopped","initializeResult","Stopping","$start","sendPendingOpenNotifications","syncKind","TextDocumentSyncKind","Full","sendPendingFullTextDocumentChanges","LSPErrorCodes","RequestCancelled","_sendRequest","activeConnection","needsPendingFullTextDocumentSync","openNotification","documentToClose","handleWorkDoneProgress","realHandler","WorkDoneProgress","setTrace","data2String","responseError","stack","showNotification","getLogMessage","showNotificationMessage","MessageType","Warn","Debug","showWarningMessage","selection","needsStart","needsStop","isRunning","createOnStartPromise","createDiagnosticCollection","LogMessageNotification","appendLine","ShowMessageNotification","ShowMessageRequest","messageFunc","actions","TelemetryEventNotification","ShowDocumentRequest","showDocument","external","success","asRange","takeFocus","preserveFocus","showTextDocument","_resolve","refreshTrace","initOption","_clientGetRootPath","initParams","processId","clientInfo","appName","locale","getLocale","rootUri","computeClientCapabilities","fillInitializeParams","doInitialize","generateUuid","part","ProgressPart","workDoneToken","positionEncoding","PositionEncodingKind","UTF16","textDocumentSyncOptions","textDocumentSync","openClose","change","save","includeText","resolvedTextDocumentSync","PublishDiagnosticsNotification","handleDiagnostics","RegistrationRequest","handleRegistrationRequest","UnregistrationRequest","handleUnregistrationRequest","ApplyWorkspaceEditRequest","handleApplyWorkspaceEdit","InitializedNotification","hookFileEvents","hookLogLevelChanged","hookConfigurationChanged","initializeFeatures","retry","shutdown","Stop","cleanUp","exit","race","finally","cleanUpChannel","feature","_features","reverse","notifyFileEvent","trigger","DidChangeWatchedFilesNotification","changes","workSpaceMiddleware","getPendingDocumentChanges","asChangeTextDocumentParams","DidChangeTextDocumentNotification","notificationSent","triggerPendingChangeDelivery","_diagnosticQueue","_diagnosticQueueState","tokenSource","triggerDiagnosticQueue","workDiagnosticQueue","asDiagnostics","converted","setDiagnostics","transports","createMessageTransports","ConsoleLogger","createProtocolConnection","defaultTraceOptions","InitializeRequest","ShutdownRequest","ExitNotification","handleConnectionError","handleConnectionClosed","handled","onDidChangeLogLevel","level","traceConfig","watchers","_dynamicFeatures","registerRaw","registerFeatures","features","registerFeature","DynamicFeature","registrationType","hasDedicatedTextSynchronizationFeature","handles","pendingFullTextDocumentChanges","ConfigurationFeature","DidOpenTextDocumentFeature","DidChangeTextDocumentFeature","onPendingChangeAdded","WillSaveFeature","WillSaveWaitUntilFeature","DidSaveTextDocumentFeature","DidCloseTextDocumentFeature","FileSystemWatcherFeature","CompletionItemFeature","HoverFeature","SignatureHelpFeature","DefinitionFeature","ReferencesFeature","DocumentHighlightFeature","DocumentSymbolFeature","WorkspaceSymbolFeature","CodeActionFeature","CodeLensFeature","DocumentFormattingFeature","DocumentRangeFormattingFeature","DocumentOnTypeFormattingFeature","RenameFeature","DocumentLinkFeature","ExecuteCommandFeature","SyncConfigurationFeature","TypeDefinitionFeature","ImplementationFeature","ColorProviderFeature","WorkspaceFoldersFeature","FoldingRangeFeature","DeclarationFeature","SelectionRangeFeature","ProgressFeature","SemanticTokensFeature","LinkedEditingFeature","DidCreateFilesFeature","DidRenameFilesFeature","DidDeleteFilesFeature","WillCreateFilesFeature","WillRenameFilesFeature","WillDeleteFilesFeature","TypeHierarchyFeature","InlineValueFeature","InlayHintsFeature","DiagnosticFeature","registerProposedFeatures","createAll","applyEdit","workspaceEdit","documentChanges","resourceOperations","ResourceOperationKind","Create","Rename","Delete","failureHandling","FailureHandlingKind","TextOnlyTransactional","normalizesLineEndings","changeAnnotationSupport","groupsOnLabel","metadataSupport","snippetEditSupport","relatedInformation","versionSupport","tagSupport","valueSet","DiagnosticTag","Unnecessary","Deprecated","codeDescriptionSupport","dataSupport","relativePatternSupport","windowCapabilities","messageActionItem","additionalPropertiesSupport","support","generalCapabilities","staleRequestSupport","retryOnContentModified","RequestsToCancelOnContentModified","regularExpressions","engine","positionEncodings","allowedTags","preInitialize","handleRegisterCapability","nextParams","doRegisterCapability","registration","registrations","handleUnregisterCapability","doUnregisterCapability","unregistration","unregisterations","unregister","handleApplyEdit","doHandleApplyWorkspaceEdit","workspaceEditLock","edit","asWorkspaceEdit","openTextDocuments","versionMismatch","TextDocumentEdit","changeUri","applied","asPromise","isRefactoring","metadata","SemanticTokensRequest","SemanticTokensRangeRequest","SemanticTokensDeltaRequest","CompletionResolveRequest","CodeLensResolveRequest","CodeActionResolveRequest","InlayHintResolveRequest","DocumentLinkResolveRequest","WorkspaceSymbolResolveRequest","throwOnCancel","ServerCancelled","LSPCancellationError","CancellationError","ContentModified","CancellableResolveCalls","serverOptions","InlineCompletionItemFeature","TextDocumentContentFeature","CodeActionRequest","isPreferredSupport","disabledSupport","resolveSupport","properties","codeActionLiteralSupport","codeActionKind","Empty","Refactor","RefactorExtract","RefactorInline","RefactorMove","RefactorRewrite","SourceOrganizeImports","Notebook","honorsChangeAnnotations","documentationSupport","CodeActionTag","LLMGenerated","getRegistrationOptions","codeActionProvider","_provideCodeActions","asTextDocumentIdentifier","asCodeActionContextSync","asCodeActionResult","resolveCodeAction","resolveProvider","asCodeActionSync","asCodeAction","registerCodeActionsProvider","getMetadata","codeActionKinds","documentation","providedCodeActionKinds","asCodeActionKinds","asCodeActionDocumentations","uriConverter","_uriConverter","asTextDocumentItem","getText","asTextDocumentSaveReason","reason","TextDocumentSaveReason","Manual","proto","AfterDelay","FocusOut","asCompletionTriggerKind","triggerKind","CompletionTriggerKind","TriggerCharacter","TriggerForIncompleteCompletions","Invoked","asSignatureHelpTriggerKind","SignatureHelpTriggerKind","Invoke","ContentChange","asParameterInformation","asSignatureInformation","parameters","asWorkerPosition","line","character","asPosition","uinteger","asLocation","Location","asDiagnosticSeverity","DiagnosticSeverity","Hint","asDiagnosticTag","tag","asRelatedInformation","asDiagnostic","Diagnostic","protocolDiagnostic","protocolDiagnostic_1","ProtocolDiagnostic","asDiagnosticCode","DiagnosticCode","hasDiagnosticCode","codeDescription","href","tags","asDiagnosticTags","asDiagnosticsSync","asCompletionItemTag","CompletionItemTag","asTextEdit","newText","asTextEdits","edits","asSymbolKind","SymbolKind","TypeParameter","Property","asSymbolTag","asSymbolTags","asCodeActionTriggerKind","CodeActionTriggerKind","Automatic","asCodeActionKind","asInlineCompletionContext","asInlineCompletionTriggerKind","selectedCompletionInfo","asSelectedCompletionInfo","InlineCompletionTriggerKind","asCommand","Command","tooltip","asInlayHintLabelPart","InlayHintLabelPart","asTooltip","MarkupKind","Markdown","asVersionedTextDocumentIdentifier","asOpenTextDocumentParams","arg0","arg1","arg2","isTextDocument","contentChanges","isTextDocumentChangeEvent","rangeLength","asCloseTextDocumentParams","asSaveTextDocumentParams","includeContent","asWillSaveTextDocumentParams","asDidCreateFilesParams","files","fileUri","asDidRenameFilesParams","oldUri","newUri","asDidDeleteFilesParams","asWillCreateFilesParams","asWillRenameFilesParams","asWillDeleteFilesParams","asCompletionParams","triggerCharacter","asSignatureHelpParams","isRetrigger","activeSignatureHelp","signatures","activeSignature","activeParameter","asRanges","asPositions","asPositionsSync","asCompletionItem","labelDetailsSupport","labelDetails","protocolItem","protocolCompletionItem_1","original","documentationFormat","PlainText","asDocumentation","filterText","InsertTextFormat","textEdit","insertText","SnippetString","Snippet","insertTextFormat","fromEdit","InsertReplaceRange","InsertReplaceEdit","inserting","replacing","asCompletionTextEdit","fillPrimaryInsertText","originalItemKind","sortText","additionalTextEdits","commitCharacters","preselect","asCompletionItemTags","deprecated","insertTextMode","keepWhitespace","InsertTextMode","adjustIndentation","asReferenceParams","includeDeclaration","CodeAction","protocolCodeAction_1","isPreferred","disabled","isAI","asCodeActionContext","CodeActionContext","asInlineValueContext","InlineValueContext","frameId","stoppedLocation","asCodeLens","CodeLens","protocolCodeLens_1","asFormattingOptions","fileOptions","tabSize","insertSpaces","trimTrailingWhitespace","trimFinalNewlines","insertFinalNewline","asDocumentSymbolParams","asCodeLensParams","asDocumentLink","DocumentLink","protocolDocumentLink_1","asDocumentLinkParams","selectionRange","protocolCallHierarchyItem_1","asTypeHierarchyItem","protocolTypeHierarchyItem_1","asInlayHint","InlayHint","textEdits","paddingLeft","paddingRight","protocolInlayHint_1","asWorkspaceSymbol","protocolWorkspaceSymbol_1","hasRange","containerName","asInlineCompletionParams","CodeLensRequest","clc","refreshSupport","CodeLensRefreshRequest","getAllProviders","onDidChangeCodeLensEmitter","codeLensProvider","onDidChangeCodeLenses","provideCodeLenses","asCodeLenses","resolveCodeLens","codeLens","registerCodeLensProvider","DocumentColorRequest","colorProvider","provideColorPresentations","color","requestParams","ColorPresentationRequest","asColorPresentations","provideDocumentColors","asColorInformations","registerColorProvider","SupportedCompletionItemKinds","CompletionItemKind","Method","Function","Constructor","Field","Variable","Class","Interface","Module","Unit","Value","Enum","Keyword","Color","File","Reference","Folder","EnumMember","Constant","Struct","Operator","CompletionRequest","completion","contextSupport","completionItem","snippetSupport","commitCharactersSupport","deprecatedSupport","preselectSupport","insertReplaceSupport","insertTextModeSupport","asIs","completionItemKind","completionList","itemDefaults","applyKindSupport","completionProvider","triggerCharacters","defaultCommitCharacters","allCommitCharacters","provideCompletionItems","asCompletionResult","provideCompletionItem","resolveCompletionItem","registerCompletionItemProvider","toJSONObject","obj","res","getState","ConfigurationRequest","lastIndexOf","isCleared","DidChangeConfigurationNotification","configurationSection","affectsConfiguration","extractSettingsInformation","ensurePath","DeclarationRequest","declarationSupport","linkSupport","declarationProvider","provideDeclaration","asDeclarationResult","registerProvider","registerDeclarationProvider","DefinitionRequest","definitionSupport","definitionProvider","provideDefinition","asDefinitionResult","registerDefinitionProvider","uuid_1","globPattern_1","RequestStateKind","PullState","DocumentOrUri","DocumentDiagnosticReportKind","asKey","DocumentPullStateTracker","documentPullStates","workspacePullStates","track","states","pulledVersion","resultId","unTrack","tracks","getResultId","getAllResultIds","DiagnosticRequestor","onDidChangeDiagnosticsEmitter","openRequests","documentStates","workspaceErrorCounter","workspaceCancellation","workspaceTimeout","createProvider","knows","pull","cb","pullAsync","isUri","currentRequestState","documentState","report","afterState","provideDiagnostics","full","DiagnosticServerCancellationData","retriggerRequest","outDated","reschedule","forgetDocument","workspaceDiagnostics","pullWorkspace","pullWorkspaceAsync","provideWorkspaceDiagnostics","previousResultIds","onDidChangeDiagnostics","previousResultId","unChanged","resultIds","resultReporter","convertReport","convertPreviousResultIds","partialResultToken","WorkspaceDiagnosticRequest","partialResult","BackgroundScheduler","diagnosticRequestor","lastDocumentToPull","documents","timeoutHandle","lastDocumentToPullKey","runLoop","DiagnosticFeatureProviderImpl","backgroundScheduler","matchFilter","matchGlobPattern","matches","TextDocumentFilter","matchResource","matchesCell","isActiveDocument","addToBackgroundIfNeeded","interFileDependencies","considerDocument","editor","oldActive","openFeature","onNotificationSent","onOpenNotificationSent","uriStr","pulledTextDocuments","changeFeature","onChangeNotificationSent","changedCells","textContent","closedCells","openedCells","saveFeature","DidSaveTextDocumentNotification","onSaveNotificationSent","cleanUpDocument","onCloseNotificationSent","capability","relatedDocumentSupport","DiagnosticRefreshRequest","diagnosticProvider","DocumentHighlightRequest","documentHighlightProvider","provideDocumentHighlights","_provideDocumentHighlights","asDocumentHighlights","registerDocumentHighlightProvider","DocumentLinkRequest","documentLinkCapabilities","tooltipSupport","documentLinkProvider","provideDocumentLinks","asDocumentLinks","resolveDocumentLink","link","registerDocumentLinkProvider","SupportedSymbolTags","SupportedSymbolKinds","Namespace","Package","Boolean","Key","Null","SymbolTag","DocumentSymbolRequest","symbolCapabilities","symbolKind","hierarchicalDocumentSymbolSupport","labelSupport","documentSymbolProvider","provideDocumentSymbols","_provideDocumentSymbols","DocumentSymbol","asDocumentSymbols","asSymbolInformations","metaData","registerDocumentSymbolProvider","_commands","executeCommandProvider","WorkspaceFeature","TextDocumentEventFeature","DynamicDocumentFeature","StaticFeature","selectors","getDocumentSelectors","_middleware","_createParams","_textDocument","_selectorFilter","_listener","_selectors","_onNotificationSent","textDocumentFilter","createParams","selectorFilter","getStateInfo","doSend","_registrationType","_registrations","TextDocumentRegistrationOptions","StaticRegistrationOptions","hasId","WorkDoneProgressOptions","getProviders","minimatch","FileOperationFeature","_clientCapability","_serverCapability","_filters","clientCapability","serverCapability","filterSize","fileOperations","filters","minimatchFilter","matcher","Minimatch","glob","asMinimatchOptions","makeRe","getFileType","prop","fileMatches","fileType","FileType","FileOperationPatternKind","Directory","dot","ignoreCase","nocase","NotificationFileOperationFeature","_notificationType","_accessUri","notificationType","accessUri","originalEvent","filteredEvent","CachingNotificationFileOperationFeature","_willListener","_fsPathFileTypes","cacheFileTypes","clearFileTypeCache","onDidCreateFiles","DidCreateFilesNotification","didCreateFiles","onDidRenameFiles","DidRenameFilesNotification","onWillRenameFiles","willRename","waitUntil","didRenameFiles","onDidDeleteFiles","DidDeleteFilesNotification","onWillDeleteFiles","willDelete","didDeleteFiles","RequestFileOperationFeature","_requestType","requestType","onWillCreateFiles","WillCreateFilesRequest","willCreateFiles","WillRenameFilesRequest","willRenameFiles","WillDeleteFilesRequest","willDeleteFiles","_notifyFileEvent","_watchers","_documentSelector","watcher","globPattern","asGlobPattern","watchCreate","watchChange","watchDelete","WatchKind","Change","fileSystemWatcher","hookListeners","fileSystemWatchers","listeners","onDidCreate","FileChangeType","Created","onDidChange","Changed","onDidDelete","Deleted","FoldingRangeRequest","rangeLimit","lineFoldingOnly","foldingRangeKind","FoldingRangeKind","Comment","Imports","Region","foldingRange","collapsedText","FoldingRangeRefreshRequest","onDidChangeFoldingRange","foldingRangeProvider","onDidChangeFoldingRanges","provideFoldingRanges","asFoldingRanges","registerFoldingRangeProvider","FileFormattingOptions","fromConfiguration","filesConfig","DocumentFormattingRequest","documentFormattingProvider","provideDocumentFormattingEdits","registerDocumentFormattingEditProvider","DocumentRangeFormattingRequest","rangesSupport","documentRangeFormattingProvider","provideDocumentRangeFormattingEdits","provideDocumentRangesFormattingEdits","ranges","DocumentRangesFormattingRequest","registerDocumentRangeFormattingEditProvider","DocumentOnTypeFormattingRequest","documentOnTypeFormattingProvider","provideOnTypeFormattingEdits","moreTriggerCharacter","registerOnTypeFormattingEditProvider","firstTriggerCharacter","HoverRequest","hoverCapability","contentFormat","hoverProvider","provideHover","asHover","registerHoverProvider","ImplementationRequest","implementationSupport","implementationProvider","provideImplementation","registerImplementationProvider","InlayHintRequest","inlayHint","InlayHintRefreshRequest","onDidChangeInlayHints","inlayHintProvider","provideInlayHints","viewPort","asInlayHints","resolveInlayHint","hint","registerInlayHintsProvider","InlineCompletionRequest","inlineCompletionProvider","provideInlineCompletionItems","asInlineCompletionResult","registerInlineCompletionItemProvider","InlineValueRequest","InlineValueRefreshRequest","onDidChangeInlineValues","inlineValueProvider","provideInlineValues","asInlineValues","registerInlineValuesProvider","LinkedEditingRangeRequest","linkedEditingRangeProvider","provideLinkedEditingRanges","provideLinkedEditing","asLinkedEditingRanges","provideLinkedEditingRange","registerLinkedEditingRangeProvider","Converter","$NotebookCell","$NotebookDocumentFilter","$NotebookDocumentSyncOptions","SyncInfo","asNotebookCells","asNotebookCell","asMetadata","deepCopy","NotebookCell","NotebookCellKind","Markup","Code","asNotebookCellKind","executionSummary","executionOrder","props","asVersionedNotebookDocumentIdentifier","asNotebookDocument","NotebookDocument","notebookType","asTextContentChange","asNotebookDocumentChangeEvent","deleteCount","equals","one","compareMetaData","endTime","equalsTiming","timing","equalsExecution","equalsMetadata","oneArray","otherArray","isObjectLiteral","oneKeys","otherKeys","sort","computeDiff","originalCells","modifiedCells","compareMetadata","originalLength","modifiedLength","startIndex","originalEndIndex","modifiedEndIndex","newCells","matchNotebook","asDocumentFilter","NotebookDocumentSyncFeatureProvider","notebookSyncInfo","notebookDidOpen","onDidOpenNotebookDocument","onDidChangeNotebookDocument","didChangeNotebookDocument","onDidSaveNotebookDocument","onDidCloseNotebookDocument","getMatchingCellsConsideringSyncInfo","syncInfo","didOpenNotebookCellTextDocument","getSyncInfo","cellMatches","cellIsSynced","matchingCells","mergeCells","doSendChange","doSendOpen","didChangeNotebookCellTextDocument","didCloseNotebookCellTextDocument","cellUri","findIndex","doSendClose","deleted","getMatchingCells","getMatchingCellsFromEvent","newEvent","doSendSave","syncedCells","sendDidOpenNotebookDocument","cellDocuments","DidOpenNotebookDocumentNotification","cellTextDocuments","sendDidChangeNotebookDocument","getMatchingCellsFromSyncInfo","DidChangeNotebookDocumentNotification","sendDidSaveNotebookDocument","DidSaveNotebookDocumentNotification","sendDidCloseNotebookDocument","DidCloseNotebookDocumentNotification","getSynchronizedCells","matchingCellsSet","cellChanges","cellChange","oldCells","diff","addedCells","removedCells","filtered","merged","cellSelector","cellLanguage","dedicatedChannel","_onChangeNotificationSent","_onOpenNotificationSent","_onCloseNotificationSent","_onSaveNotificationSent","notebookCell","findNotebookDocumentAndCell","onDidChangeTextDocument","synchronization","executionSummarySupport","notebookDocumentSync","activeParts","WorkDoneProgressCreateRequest","workDoneProgress","deleteHandler","_infinite","_reported","_lspProgressDisposable","_progress","_cancellationToken","_tokenDisposable","begin","percentage","withProgress","ProgressLocation","Window","cancellable","progress","WorkDoneProgressCancelNotification","delta","increment","ProtocolCallHierarchyItem","CallHierarchyItem","ProtocolCodeAction","ProtocolCodeLens","ProtocolCompletionItem","CompletionItem","trustMarkdown","ls","CodeDescription","diagnosticCode","DiagnosticRelatedInformation","Position","asMarkdownString","MarkdownString","appendText","commitCharactersApplyKind","defaultRange","defaultInsertTextMode","defaultInsertTextFormat","defaultData","dataApplyKind","CompletionItemLabelDetails","asCompletionItemLabel","insert","textEditText","asCompletionInsertText","itemKind","asTextEditsSync","applyKind","ApplyKind","Merge","char","applyCommitCharacters","applyData","TextEdit","asSignatureInformations","mapAsync","SignatureInformation","asParameterInformations","ParameterInformation","asLocationLink","targetUri","targetRange","originSelectionRange","targetSelectionRange","asLocationResult","LocationLink","links","locations","asDocumentHighlight","DocumentHighlight","asDocumentHighlightKind","DocumentHighlightKind","Read","Write","asSymbolInformation","SymbolInformation","fillTags","asDocumentSymbol","children","kindMapping","parts","sharedMetadata","changeAnnotations","annotation","needsConfirmation","asWorkspaceEditEntryMetadata","WorkspaceEdit","CreateFile","createFile","annotationId","RenameFile","renameFile","DeleteFile","deleteFile","AnnotatedTextEdit","SnippetTextEdit","snippet","asColor","red","green","blue","alpha","asColorInformation","ci","ColorInformation","asColorPresentation","cp","presentation","ColorPresentation","asFoldingRangeKind","asFoldingRange","FoldingRange","startLine","endLine","asSelectionRange","SelectionRange","parent","asInlineValue","inlineValue","InlineValueText","InlineValueVariableLookup","variableName","caseSensitiveLookup","InlineValueEvaluatableExpression","expression","asCallHierarchyIncomingCall","CallHierarchyIncomingCall","fromRanges","asCallHierarchyOutgoingCall","CallHierarchyOutgoingCall","asSemanticTokensEdit","SemanticTokensEdit","Uint32Array","RelativePattern","URI","baseUri","asInlineCompletionItem","inlineCompletionItem","InlineCompletionItem","NotebookCellTextDocumentFilter","hover","Hover","CodeBlock","appendCodeblock","appendMarkdown","asHoverContent","contents","list","rangeDefaults","editRange","getCompletionItemDefaults","CompletionList","isIncomplete","asSignatureHelp","SignatureHelp","asReferences","asCommands","doc","foldingRanges","colorInformation","colorPresentations","asSelectionRanges","selectionRanges","inlineValues","asSemanticTokensLegend","asSemanticTokens","SemanticTokens","asSemanticTokensEdits","SemanticTokensEdits","LinkedEditingRanges","asRegularExpression","wordPattern","asTypeHierarchyItems","InlineCompletionList","ProtocolDocumentLink","ProtocolInlayHint","ProtocolTypeHierarchyItem","TypeHierarchyItem","WorkspaceSymbol","locationOrUri","ReferencesRequest","referencesProvider","provideReferences","_providerReferences","registerReferenceProvider","RenameRequest","rename","prepareSupport","prepareSupportDefaultBehavior","PrepareSupportDefaultBehavior","Identifier","renameProvider","prepareProvider","provideRenameEdits","newName","prepareRename","PrepareRenameRequest","isDefaultBehavior","defaultBehavior","placeholder","registerRenameProvider","SelectionRangeRequest","selectionRangeProvider","provideSelectionRanges","positions","registerSelectionRangeProvider","SemanticTokensRegistrationType","tokenTypes","SemanticTokenTypes","namespace","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","function","macro","keyword","comment","regexp","decorator","tokenModifiers","SemanticTokenModifiers","declaration","definition","readonly","abstract","modification","defaultLibrary","formats","TokenFormat","Relative","requests","multilineTokenSupport","overlappingTokenSupport","serverCancelSupport","augmentsSyntaxTokens","SemanticTokensRefreshRequest","onDidChangeSemanticTokensEmitter","semanticTokensProvider","fullProvider","hasEditProvider","documentProvider","onDidChangeSemanticTokens","provideDocumentSemanticTokens","provideDocumentSemanticTokensEdits","rangeProvider","provideDocumentRangeSemanticTokens","legend","registerDocumentSemanticTokensProvider","registerDocumentRangeSemanticTokensProvider","SignatureHelpRequest","signatureInformation","parameterInformation","labelOffsetSupport","activeParameterSupport","noActiveParameterSupport","signatureHelpProvider","provideSignatureHelp","providerSignatureHelp","retriggerCharacters","registerSignatureHelpProvider","TextDocumentContentRequest","TextDocumentContentRefreshRequest","onDidChangeEmitter","textDocumentContent","schemes","registerTextDocumentContentProvider","provideTextDocumentContent","_pendingOpenNotifications","_delayOpen","_pendingOpenListeners","openDocuments","closingDocument","notifications","didDropOpenNotification","notification","_pendingTextDocumentChanges","pendingTextDocumentChanges","_changeData","_onPendingChangeAdded","_syncKind","updateSyncKind","changeData","Incremental","eventUri","excludes","onWillSaveTextDocument","WillSaveTextDocumentNotification","willSaveEvent","WillSaveTextDocumentWaitUntilRequest","vEdits","_includeText","onDidSaveTextDocument","saveOptions","TypeDefinitionRequest","typeDefinitionSupport","typeDefinitionProvider","provideTypeDefinition","registerTypeDefinitionProvider","TypeHierarchyProvider","prepareTypeHierarchy","TypeHierarchyPrepareRequest","provideTypeHierarchySupertypes","TypeHierarchySupertypesRequest","provideTypeHierarchySubtypes","TypeHierarchySubtypesRequest","typeHierarchyProvider","registerTypeHierarchyProvider","setTestMode","$test","clearTestMode","Timer","yieldAfter","convertBatch","shouldYield","yieldCallback","runBatch","defaultDelay","completionPromise","onSuccess","task","delay","cancelTimeout","forceDelivery","isTriggered","counter","total","counterInterval","timeLeft","miniMatchPattern","with","noext","thenable","typedArray","resolved","empty","v4","isUUID","ValueUUID","asHex","V4UUID","_oneOf","random","_randomHex","_chars","_timeHighBits","_UUIDPattern","arrayDiff","access","left","right","_initialFolders","DidChangeWorkspaceFoldersNotification","initializeWithFolders","asProtocol","currentWorkspaceFolders","WorkspaceFoldersRequest","sendInitialEvent","doSendEvent","addedFolders","removedFolders","didChangeWorkspaceFolders","WorkspaceSymbolRequest","workspaceSymbolProvider","provideWorkspaceSymbols","query","resolveWorkspaceSymbol","registerWorkspaceSymbolProvider","SettingMonitor","readline","client_1","processes_1","node_1","semverParse","semverSatisfies","REQUIRED_VSCODE_VERSION","Transport","Executable","NodeModule","StreamInfo","ChildProcessInfo","isSocket","detached","_serverOptions","_forceDebug","_serverProcess","_isDetached","_isInDebugMode","arg3","arg4","arg5","forceDebug","checkVersion","codeVersion","isInDebugMode","toCheck","checkProcessDied","childProcess","pid","kill","terminate","getEnvironment","fork","debugStartWith","debugEquals","assertStdio","stdin","stdout","stderr","pipeStdoutToLogOutputChannel","createInterface","crlfDelay","Infinity","historySize","pipeStderrToLogOutputChannel","json","runDebug","arg","startedInDebugMode","_getServerWorkingDir","serverWorkingDir","stdio","pipe","silent","sp","protocol","execOptions","_getRuntimePath","serverProcess","spawn","handleChildProcessStartError","signal","serverWorkingDirectory","mainRootPath","_mainGetRootPath","s","lstat","isDirectory","_setting","primary","rest","enabled","isWindows","execFileSync","isLinux","isMacintosh","cmd","path_1","__dirname","spawnSync","lspReservedErrorRangeStart","RequestFailed","lspReservedErrorRangeEnd","vscode_jsonrpc_1","CM","ProtocolNotificationType","ProtocolNotificationType0","ProtocolRequestType","ProtocolRequestType0","RegistrationType","MessageDirection","____","___","messageDirection","clientToServer","serverToClient","Unchanged","GlobPattern","TextDocumentContentChangeEvent","InitializeErrorCodes","RegularExpressionEngineKind","DocumentSelector","NotebookDocumentFilter","UniquenessLevel","NotebookCellArrayChange","ExecutionSummary","MonikerRequest","MonikerKind","vscode_languageserver_types_1","protocol_implementation_1","protocol_typeDefinition_1","protocol_workspaceFolder_1","protocol_configuration_1","protocol_colorProvider_1","protocol_foldingRange_1","protocol_declaration_1","protocol_selectionRange_1","protocol_progress_1","protocol_callHierarchy_1","protocol_semanticTokens_1","protocol_showDocument_1","protocol_linkedEditingRange_1","protocol_fileOperations_1","protocol_moniker_1","protocol_typeHierarchy_1","protocol_inlineValue_1","protocol_inlayHint_1","protocol_diagnostic_1","protocol_notebook_1","protocol_inlineCompletion_1","protocol_textDocumentContent_1","Abort","Transactional","Undo","ES2020","UTF8","UTF32","hasWorkDoneProgress","unknownProtocolVersion","Log","isIncremental","isFull","project","$import","$export","local","DocumentUri","two","integer","registrationMethod","require","balanced","ma","maybeMatch","mb","pre","post","reg","begs","beg","ai","bi","escSlash","escOpen","escClose","escComma","escPeriod","escSlashPattern","escOpenPattern","escClosePattern","escCommaPattern","escPeriodPattern","slashPattern","openPattern","closePattern","commaPattern","periodPattern","EXPANSION_MAX","charCodeAt","unescapeBraces","parseCommaParts","postParts","expand","expand_","escapeBraces","embrace","isPadded","el","y","isTop","expansions","expansion","isNumericSequence","isAlphaSequence","isSequence","isOptions","n","N","x","width","incr","abs","pad","fromCharCode","need","j","assertValidPattern","posixClasses","braceEscape","rangesToString","parseClass","pos","negs","sawStart","uflag","escaping","negate","endPos","rangeStart","WHILE","cls","unip","u","neg","sranges","snegs","windowsPathsNoEscape","magicalBraces","_a","types","isExtglobType","isExtglobAST","adoptionMap","adoptionWithSpaceMap","adoptionAnyMap","usurpMap","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","starNoEmpty","ID","AST","depth","for","root","partsLength","hasMagic","pp","copyIn","isStart","unshift","isEnd","pl","clone","ast","opt","extDepth","maxDepth","maxExtglobRecursion","inBrace","braceStart","braceNeg","acc","ext","depthAdd","gc","blank","nt","fromGlob","toMMPattern","toRegExpSource","nocaseMagicOnly","toUpperCase","flags","_src","_glob","allowDot","noEmpty","aps","needNoTrav","needNoDot","repeated","me","bodyDotAllowed","final","iterations","_hasMagic","inStar","needUflag","consumed","magic","nocomment","starDotExtRE","starDotExtTest","f","endsWith","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","defaultPlatform","__MINIMATCH_TESTING_PLATFORM__","GLOBSTAR","defaults","orig","unescape","escape","braceExpand","nobrace","braceExpandMax","mm","nonull","globMagic","nonegate","preserveMultipleSlashes","partial","globSet","globParts","windowsNoMagicRoot","maxGlobstarRecursion","make","parseNegate","rawGlobParts","slashSplit","preprocess","isUNC","isDrive","ss","noglobstar","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","reduce","prev","levelTwoFileOptimize","didSomething","dd","gss","p2","splin","matched","partsMatch","emptyGSMatch","which","negateOffset","matchOne","fileStartIndex","patternStartIndex","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fileIndex","patternIndex","firstgs","lastgs","head","tail","fileHead","fileTailMatch","tailStart","sawSome","bodySegments","currentBody","nonGsParts","nonGsPartsSums","fileLength","bodyIndex","globStarDepth","sawTail","bs","sub","fi","pi","fl","hit","fastTest","Reflect","twoStar","prefixes","ex","ff","filename","matchBase","flipNegate","ChangeAnnotation","ChangeAnnotationIdentifier","TextDocumentIdentifier","VersionedTextDocumentIdentifier","OptionalVersionedTextDocumentIdentifier","LanguageKind","TextDocumentItem","MarkupContent","MarkedString","FormattingOptions","InlayHintKind","StringValue","SelectedCompletionInfo","InlineCompletionContext","MIN_VALUE","three","four","numberRange","startCharacter","endCharacter","defined","del","overwrite","ignoreIfExists","recursive","ignoreIfNotExists","TextEditChangeImpl","assertChangeAnnotations","manage","isSnippet","ChangeAnnotations","annotations","_annotations","_counter","idOrAnnotation","nextId","WorkspaceChange","_textEditChanges","_workspaceEdit","_changeAnnotations","textEditChange","initDocumentChanges","getTextEditChange","textDocumentEdit","initChanges","optionsOrAnnotation","operation","ABAP","WindowsBat","BibTeX","Clojure","Coffeescript","C","CPP","CSharp","CSS","D","Delphi","Diff","Dart","Dockerfile","Elixir","Erlang","FSharp","GitCommit","GitRebase","Go","Groovy","Handlebars","Haskell","HTML","Ini","Java","JavaScript","JavaScriptReact","LaTeX","Less","Lua","Makefile","ObjectiveC","ObjectiveCPP","Pascal","Perl","Perl6","PHP","Powershell","Pug","Python","Razor","Ruby","Rust","SCSS","SASS","Scala","ShaderLab","ShellScript","SQL","Swift","TypeScript","TypeScriptReact","TeX","VisualBasic","XML","XSL","YAML","Replace","fromPlainText","plainText","kindOrCommandOrEdit","checkKind","Type","Parameter","createSnippet","EOL","TextDocument","mergeSort","leftIdx","rightIdx","content","FullTextDocument","lineCount","positionAt","offsetAt","applyEdits","sortedEdits","lastModifiedOffset","startOffset","endOffset","_uri","_languageId","_version","_content","_lineOffsets","getLineOffsets","lineOffsets","isLineStart","low","high","mid","lineOffset","nextLineOffset","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","__webpack_exports__"],"sourceRoot":""}
|