@stonecrop/code-editor 0.13.2 → 0.13.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonMode-DycJAYy-.js","sources":["../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/vs/common/workers.js","../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/vs/language/json/workerManager.js","../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/external/vscode-languageserver-types/lib/esm/main.js","../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/vs/language/common/lspLanguageFeatures.js","../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/external/jsonc-parser/lib/esm/impl/scanner.js","../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/external/jsonc-parser/lib/esm/impl/string-intern.js","../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/external/jsonc-parser/lib/esm/impl/parser.js","../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/external/jsonc-parser/lib/esm/main.js","../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/vs/language/json/tokenization.js","../../common/temp/node_modules/.pnpm/monaco-editor@0.55.1/node_modules/monaco-editor/esm/vs/language/json/jsonMode.js"],"sourcesContent":["import '../editor/browser/coreCommands.js';\nimport '../editor/browser/widget/codeEditor/codeEditorWidget.js';\nimport '../editor/browser/widget/diffEditor/diffEditor.contribution.js';\nimport '../editor/contrib/anchorSelect/browser/anchorSelect.js';\nimport '../editor/contrib/bracketMatching/browser/bracketMatching.js';\nimport '../editor/contrib/caretOperations/browser/caretOperations.js';\nimport '../editor/contrib/caretOperations/browser/transpose.js';\nimport '../editor/contrib/clipboard/browser/clipboard.js';\nimport '../editor/contrib/codeAction/browser/codeActionContributions.js';\nimport '../editor/contrib/codelens/browser/codelensController.js';\nimport '../editor/contrib/colorPicker/browser/colorPickerContribution.js';\nimport '../editor/contrib/comment/browser/comment.js';\nimport '../editor/contrib/contextmenu/browser/contextmenu.js';\nimport '../editor/contrib/cursorUndo/browser/cursorUndo.js';\nimport '../editor/contrib/dnd/browser/dnd.js';\nimport '../editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js';\nimport '../editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js';\nimport '../editor/contrib/find/browser/findController.js';\nimport '../editor/contrib/folding/browser/folding.js';\nimport '../editor/contrib/fontZoom/browser/fontZoom.js';\nimport '../editor/contrib/format/browser/formatActions.js';\nimport '../editor/contrib/documentSymbols/browser/documentSymbols.js';\nimport '../editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js';\nimport '../editor/contrib/inlineProgress/browser/inlineProgress.js';\nimport '../editor/contrib/gotoSymbol/browser/goToCommands.js';\nimport '../editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js';\nimport '../editor/contrib/gotoError/browser/gotoError.js';\nimport '../editor/contrib/gpu/browser/gpuActions.js';\nimport '../editor/contrib/hover/browser/hoverContribution.js';\nimport '../editor/contrib/indentation/browser/indentation.js';\nimport '../editor/contrib/inlayHints/browser/inlayHintsContribution.js';\nimport '../editor/contrib/inPlaceReplace/browser/inPlaceReplace.js';\nimport '../editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js';\nimport '../editor/contrib/lineSelection/browser/lineSelection.js';\nimport '../editor/contrib/linesOperations/browser/linesOperations.js';\nimport '../editor/contrib/linkedEditing/browser/linkedEditing.js';\nimport '../editor/contrib/links/browser/links.js';\nimport '../editor/contrib/longLinesHelper/browser/longLinesHelper.js';\nimport '../editor/contrib/middleScroll/browser/middleScroll.contribution.js';\nimport '../editor/contrib/multicursor/browser/multicursor.js';\nimport '../editor/contrib/parameterHints/browser/parameterHints.js';\nimport '../editor/contrib/placeholderText/browser/placeholderText.contribution.js';\nimport '../editor/contrib/rename/browser/rename.js';\nimport '../editor/contrib/sectionHeaders/browser/sectionHeaders.js';\nimport '../editor/contrib/semanticTokens/browser/documentSemanticTokens.js';\nimport '../editor/contrib/semanticTokens/browser/viewportSemanticTokens.js';\nimport '../editor/contrib/smartSelect/browser/smartSelect.js';\nimport '../editor/contrib/snippet/browser/snippetController2.js';\nimport '../editor/contrib/stickyScroll/browser/stickyScrollContribution.js';\nimport '../editor/contrib/suggest/browser/suggestController.js';\nimport '../editor/contrib/suggest/browser/suggestInlineCompletions.js';\nimport '../editor/contrib/tokenization/browser/tokenization.js';\nimport '../editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js';\nimport '../editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js';\nimport '../editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js';\nimport '../editor/contrib/wordHighlighter/browser/wordHighlighter.js';\nimport '../editor/contrib/wordOperations/browser/wordOperations.js';\nimport '../editor/contrib/wordPartOperations/browser/wordPartOperations.js';\nimport '../editor/contrib/readOnlyMessage/browser/contribution.js';\nimport '../editor/contrib/diffEditorBreadcrumbs/browser/contribution.js';\nimport '../editor/contrib/floatingMenu/browser/floatingMenu.contribution.js';\nimport '../editor/common/standaloneStrings.js';\nimport '../base/browser/ui/codicons/codicon/codicon.css';\nimport '../base/browser/ui/codicons/codicon/codicon-modifiers.css';\nimport '../editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport '../editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport '../editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport '../editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport '../editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport '../editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport '../editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport '../editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport { editor } from '../editor/editor.api2.js';\n\nfunction createTrustedTypesPolicy(policyName, policyOptions) {\n const monacoEnvironment = globalThis.MonacoEnvironment;\n if (monacoEnvironment?.createTrustedTypesPolicy) {\n try {\n return monacoEnvironment.createTrustedTypesPolicy(policyName, policyOptions);\n } catch (err) {\n console.error(err);\n return void 0;\n }\n }\n try {\n return globalThis.trustedTypes?.createPolicy(policyName, policyOptions);\n } catch (err) {\n console.error(err);\n return void 0;\n }\n}\nlet ttPolicy;\nif (typeof self === \"object\" && self.constructor && self.constructor.name === \"DedicatedWorkerGlobalScope\" && globalThis.workerttPolicy !== void 0) {\n ttPolicy = globalThis.workerttPolicy;\n} else {\n ttPolicy = createTrustedTypesPolicy(\"defaultWorkerFactory\", {\n createScriptURL: (value) => value\n });\n}\nfunction getWorker(descriptor) {\n const label = descriptor.label;\n const monacoEnvironment = globalThis.MonacoEnvironment;\n if (monacoEnvironment) {\n if (typeof monacoEnvironment.getWorker === \"function\") {\n return monacoEnvironment.getWorker(\"workerMain.js\", label);\n }\n if (typeof monacoEnvironment.getWorkerUrl === \"function\") {\n const workerUrl = monacoEnvironment.getWorkerUrl(\"workerMain.js\", label);\n return new Worker(\n ttPolicy ? ttPolicy.createScriptURL(workerUrl) : workerUrl,\n { name: label, type: \"module\" }\n );\n }\n }\n if (descriptor.createWorker) {\n return descriptor.createWorker();\n }\n throw new Error(\n `You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker`\n );\n}\nfunction createWebWorker(opts) {\n const worker = Promise.resolve(\n getWorker({\n label: opts.label ?? \"monaco-editor-worker\",\n moduleId: opts.moduleId,\n createWorker: opts.createWorker\n })\n ).then((w) => {\n w.postMessage(\"ignore\");\n w.postMessage(opts.createData);\n return w;\n });\n return editor.createWebWorker({\n worker,\n host: opts.host,\n keepIdleModels: opts.keepIdleModels\n });\n}\n\nexport { createWebWorker };\n","import { createWebWorker } from '../../common/workers.js';\n\nconst STOP_WHEN_IDLE_FOR = 2 * 60 * 1e3;\nclass WorkerManager {\n constructor(defaults) {\n this._defaults = defaults;\n this._worker = null;\n this._client = null;\n this._idleCheckInterval = window.setInterval(() => this._checkIfIdle(), 30 * 1e3);\n this._lastUsedTime = 0;\n this._configChangeListener = this._defaults.onDidChange(() => this._stopWorker());\n }\n _stopWorker() {\n if (this._worker) {\n this._worker.dispose();\n this._worker = null;\n }\n this._client = null;\n }\n dispose() {\n clearInterval(this._idleCheckInterval);\n this._configChangeListener.dispose();\n this._stopWorker();\n }\n _checkIfIdle() {\n if (!this._worker) {\n return;\n }\n let timePassedSinceLastUsed = Date.now() - this._lastUsedTime;\n if (timePassedSinceLastUsed > STOP_WHEN_IDLE_FOR) {\n this._stopWorker();\n }\n }\n _getClient() {\n this._lastUsedTime = Date.now();\n if (!this._client) {\n this._worker = createWebWorker({\n // module that exports the create() method and returns a `JSONWorker` instance\n moduleId: \"vs/language/json/jsonWorker\",\n createWorker: () => new Worker(new URL('json.worker.js', import.meta.url), { type: \"module\" }),\n label: this._defaults.languageId,\n // passed in to the create() method\n createData: {\n languageSettings: this._defaults.diagnosticsOptions,\n languageId: this._defaults.languageId,\n enableSchemaRequest: this._defaults.diagnosticsOptions.enableSchemaRequest\n }\n });\n this._client = this._worker.getProxy();\n }\n return this._client;\n }\n getLanguageServiceWorker(...resources) {\n let _client;\n return this._getClient().then((client) => {\n _client = client;\n }).then((_) => {\n if (this._worker) {\n return this._worker.withSyncedResources(resources);\n }\n }).then((_) => _client);\n }\n}\n\nexport { WorkerManager };\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 DocumentUri;\n(function (DocumentUri) {\n function is(value) {\n return typeof value === 'string';\n }\n DocumentUri.is = is;\n})(DocumentUri || (DocumentUri = {}));\nvar URI;\n(function (URI) {\n function is(value) {\n return typeof value === 'string';\n }\n URI.is = is;\n})(URI || (URI = {}));\nvar 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 = {}));\nvar 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 */\nvar 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 let 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 */\nvar 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 let 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 */\nvar 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 let 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 */\nvar 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 let 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 let 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar Diagnostic;\n(function (Diagnostic) {\n /**\n * Creates a new Diagnostic literal.\n */\n function create(range, message, severity, code, source, relatedInformation) {\n let 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 let 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 */\nvar Command;\n(function (Command) {\n /**\n * Creates a new Command literal.\n */\n function create(title, command, ...args) {\n let 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 let candidate = value;\n return Is.defined(candidate) && Is.string(candidate.title) && 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 */\nvar 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 = {}));\nvar 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 = {}));\nvar 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 = {}));\nvar 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 */\nvar 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 let 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 = {}));\nvar CreateFile;\n(function (CreateFile) {\n function create(uri, options, annotation) {\n let 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 let 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 = {}));\nvar RenameFile;\n(function (RenameFile) {\n function create(oldUri, newUri, options, annotation) {\n let 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 let 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 = {}));\nvar DeleteFile;\n(function (DeleteFile) {\n function create(uri, options, annotation) {\n let 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 let 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 = {}));\nvar WorkspaceEdit;\n(function (WorkspaceEdit) {\n function is(value) {\n let 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 = {}));\n/**\n * The TextDocumentIdentifier namespace provides helper functions to work with\n * {@link TextDocumentIdentifier} literals.\n */\nvar 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 let 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 */\nvar 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 let 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 */\nvar 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 let 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 * The TextDocumentItem namespace provides helper functions to work with\n * {@link TextDocumentItem} literals.\n */\nvar 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 let 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 */\nvar 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 = {}));\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 = {}));\nvar 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 */\nvar 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 */\nvar 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 = {}));\nvar 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 = {}));\nvar Hover;\n(function (Hover) {\n /**\n * Checks whether the given value conforms to the {@link Hover} interface.\n */\n function is(value) {\n let 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 */\nvar 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 */\nvar SignatureInformation;\n(function (SignatureInformation) {\n function create(label, documentation, ...parameters) {\n let 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 */\nvar 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 */\nvar 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 let 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 */\nvar 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 */\nvar SymbolTag;\n(function (SymbolTag) {\n /**\n * Render a symbol as obsolete, usually using a strike-out.\n */\n SymbolTag.Deprecated = 1;\n})(SymbolTag || (SymbolTag = {}));\nvar 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 let 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 = {}));\nvar 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 = {}));\nvar 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 let 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 let 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 */\nvar CodeActionKind;\n(function (CodeActionKind) {\n /**\n * Empty kind.\n */\n CodeActionKind.Empty = '';\n /**\n * Base kind for quickfix actions: 'quickfix'\n */\n CodeActionKind.QuickFix = 'quickfix';\n /**\n * Base kind for refactoring actions: 'refactor'\n */\n CodeActionKind.Refactor = 'refactor';\n /**\n * Base kind for refactoring extraction actions: 'refactor.extract'\n *\n * Example extract actions:\n *\n * - Extract method\n * - Extract function\n * - Extract variable\n * - Extract interface from class\n * - ...\n */\n CodeActionKind.RefactorExtract = 'refactor.extract';\n /**\n * Base kind for refactoring inline actions: 'refactor.inline'\n *\n * Example inline actions:\n *\n * - Inline function\n * - Inline variable\n * - Inline constant\n * - ...\n */\n CodeActionKind.RefactorInline = 'refactor.inline';\n /**\n * Base kind for refactoring rewrite actions: 'refactor.rewrite'\n *\n * Example rewrite actions:\n *\n * - Convert JavaScript function to class\n * - Add or remove parameter\n * - Encapsulate field\n * - Make method static\n * - Move method to base class\n * - ...\n */\n CodeActionKind.RefactorRewrite = 'refactor.rewrite';\n /**\n * Base kind for source actions: `source`\n *\n * Source code actions apply to the entire file.\n */\n CodeActionKind.Source = 'source';\n /**\n * Base kind for an organize imports source action: `source.organizeImports`\n */\n CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\n /**\n * Base kind for auto-fix source actions: `source.fixAll`.\n *\n * Fix all actions automatically fix errors that have a clear fix that do not require user input.\n * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\n *\n * @since 3.15.0\n */\n CodeActionKind.SourceFixAll = 'source.fixAll';\n})(CodeActionKind || (CodeActionKind = {}));\n/**\n * The reason why code actions were requested.\n *\n * @since 3.17.0\n */\nvar 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 */\nvar CodeActionContext;\n(function (CodeActionContext) {\n /**\n * Creates a new CodeActionContext literal.\n */\n function create(diagnostics, only, triggerKind) {\n let 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 let 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 = {}));\nvar CodeAction;\n(function (CodeAction) {\n function create(title, kindOrCommandOrEdit, kind) {\n let 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 let candidate = value;\n return candidate && Is.string(candidate.title) &&\n (candidate.diagnostics === undefined || Is.typedArray(candidate.diagnostics, Diagnostic.is)) &&\n (candidate.kind === undefined || Is.string(candidate.kind)) &&\n (candidate.edit !== undefined || candidate.command !== undefined) &&\n (candidate.command === undefined || Command.is(candidate.command)) &&\n (candidate.isPreferred === undefined || Is.boolean(candidate.isPreferred)) &&\n (candidate.edit === undefined || WorkspaceEdit.is(candidate.edit));\n }\n CodeAction.is = is;\n})(CodeAction || (CodeAction = {}));\n/**\n * The CodeLens namespace provides helper functions to work with\n * {@link CodeLens} literals.\n */\nvar CodeLens;\n(function (CodeLens) {\n /**\n * Creates a new CodeLens literal.\n */\n function create(range, data) {\n let 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 let 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 */\nvar 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 let 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 */\nvar 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 let 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 */\nvar 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 let 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 */\nvar SemanticTokenTypes;\n(function (SemanticTokenTypes) {\n SemanticTokenTypes[\"namespace\"] = \"namespace\";\n /**\n * Represents a generic type. Acts as a fallback for types which can't be mapped to\n * a specific type like class or enum.\n */\n SemanticTokenTypes[\"type\"] = \"type\";\n SemanticTokenTypes[\"class\"] = \"class\";\n SemanticTokenTypes[\"enum\"] = \"enum\";\n SemanticTokenTypes[\"interface\"] = \"interface\";\n SemanticTokenTypes[\"struct\"] = \"struct\";\n SemanticTokenTypes[\"typeParameter\"] = \"typeParameter\";\n SemanticTokenTypes[\"parameter\"] = \"parameter\";\n SemanticTokenTypes[\"variable\"] = \"variable\";\n SemanticTokenTypes[\"property\"] = \"property\";\n SemanticTokenTypes[\"enumMember\"] = \"enumMember\";\n SemanticTokenTypes[\"event\"] = \"event\";\n SemanticTokenTypes[\"function\"] = \"function\";\n SemanticTokenTypes[\"method\"] = \"method\";\n SemanticTokenTypes[\"macro\"] = \"macro\";\n SemanticTokenTypes[\"keyword\"] = \"keyword\";\n SemanticTokenTypes[\"modifier\"] = \"modifier\";\n SemanticTokenTypes[\"comment\"] = \"comment\";\n SemanticTokenTypes[\"string\"] = \"string\";\n SemanticTokenTypes[\"number\"] = \"number\";\n SemanticTokenTypes[\"regexp\"] = \"regexp\";\n SemanticTokenTypes[\"operator\"] = \"operator\";\n /**\n * @since 3.17.0\n */\n SemanticTokenTypes[\"decorator\"] = \"decorator\";\n})(SemanticTokenTypes || (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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 */\nvar 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 = {}));\nvar 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 = {}));\nvar 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 = {}));\nvar StringValue;\n(function (StringValue) {\n function createSnippet(value) {\n return { kind: 'snippet', value };\n }\n StringValue.createSnippet = createSnippet;\n})(StringValue || (StringValue = {}));\nvar 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 = {}));\nvar 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 */\nvar InlineCompletionTriggerKind;\n(function (InlineCompletionTriggerKind) {\n /**\n * Completion was triggered explicitly by a user gesture.\n */\n InlineCompletionTriggerKind.Invoked = 0;\n /**\n * Completion was triggered automatically while editing.\n */\n InlineCompletionTriggerKind.Automatic = 1;\n})(InlineCompletionTriggerKind || (InlineCompletionTriggerKind = {}));\nvar SelectedCompletionInfo;\n(function (SelectedCompletionInfo) {\n function create(range, text) {\n return { range, text };\n }\n SelectedCompletionInfo.create = create;\n})(SelectedCompletionInfo || (SelectedCompletionInfo = {}));\nvar InlineCompletionContext;\n(function (InlineCompletionContext) {\n function create(triggerKind, selectedCompletionInfo) {\n return { triggerKind, selectedCompletionInfo };\n }\n InlineCompletionContext.create = create;\n})(InlineCompletionContext || (InlineCompletionContext = {}));\nvar 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 = {}));\n/**\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\n */\nvar 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 let 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 let sortedEdits = mergeSort(edits, (a, b) => {\n let 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 let e = sortedEdits[i];\n let startOffset = document.offsetAt(e.range.start);\n let 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 let 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 let start = this.offsetAt(range.start);\n let 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 let lineOffsets = [];\n let 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 let 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 let 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 let 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 let line = low - 1;\n return Position.create(line, offset - lineOffsets[line]);\n }\n offsetAt(position) {\n let 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 let lineOffset = lineOffsets[position.line];\n let 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$1(value) {\n return typeof value === 'undefined';\n }\n Is.undefined = undefined$1;\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\nexport { AnnotatedTextEdit, ChangeAnnotation, ChangeAnnotationIdentifier, CodeAction, CodeActionContext, CodeActionKind, CodeActionTriggerKind, CodeDescription, CodeLens, Color, ColorInformation, ColorPresentation, Command, CompletionItem, CompletionItemKind, CompletionItemLabelDetails, CompletionItemTag, CompletionList, CreateFile, DeleteFile, Diagnostic, DiagnosticRelatedInformation, DiagnosticSeverity, DiagnosticTag, DocumentHighlight, DocumentHighlightKind, DocumentLink, DocumentSymbol, DocumentUri, FoldingRange, FoldingRangeKind, FormattingOptions, Hover, InlayHint, InlayHintKind, InlayHintLabelPart, InlineCompletionContext, InlineCompletionItem, InlineCompletionList, InlineCompletionTriggerKind, InlineValueContext, InlineValueEvaluatableExpression, InlineValueText, InlineValueVariableLookup, InsertReplaceEdit, InsertTextFormat, InsertTextMode, Location, LocationLink, MarkedString, MarkupContent, MarkupKind, OptionalVersionedTextDocumentIdentifier, ParameterInformation, Position, Range, RenameFile, SelectedCompletionInfo, SelectionRange, SemanticTokenModifiers, SemanticTokenTypes, SemanticTokens, SignatureInformation, StringValue, SymbolInformation, SymbolKind, SymbolTag, TextDocument, TextDocumentEdit, TextDocumentIdentifier, TextDocumentItem, TextEdit, URI, VersionedTextDocumentIdentifier, WorkspaceEdit, WorkspaceFolder, WorkspaceSymbol, integer, uinteger };\n","import { InsertTextFormat, CompletionItemKind, DocumentHighlightKind, SymbolKind, FoldingRangeKind, DiagnosticSeverity } from '../../../external/vscode-languageserver-types/lib/esm/main.js';\nimport '../../editor/browser/coreCommands.js';\nimport '../../editor/browser/widget/codeEditor/codeEditorWidget.js';\nimport '../../editor/browser/widget/diffEditor/diffEditor.contribution.js';\nimport '../../editor/contrib/anchorSelect/browser/anchorSelect.js';\nimport '../../editor/contrib/bracketMatching/browser/bracketMatching.js';\nimport '../../editor/contrib/caretOperations/browser/caretOperations.js';\nimport '../../editor/contrib/caretOperations/browser/transpose.js';\nimport '../../editor/contrib/clipboard/browser/clipboard.js';\nimport '../../editor/contrib/codeAction/browser/codeActionContributions.js';\nimport '../../editor/contrib/codelens/browser/codelensController.js';\nimport '../../editor/contrib/colorPicker/browser/colorPickerContribution.js';\nimport '../../editor/contrib/comment/browser/comment.js';\nimport '../../editor/contrib/contextmenu/browser/contextmenu.js';\nimport '../../editor/contrib/cursorUndo/browser/cursorUndo.js';\nimport '../../editor/contrib/dnd/browser/dnd.js';\nimport '../../editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js';\nimport '../../editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js';\nimport '../../editor/contrib/find/browser/findController.js';\nimport '../../editor/contrib/folding/browser/folding.js';\nimport '../../editor/contrib/fontZoom/browser/fontZoom.js';\nimport '../../editor/contrib/format/browser/formatActions.js';\nimport '../../editor/contrib/documentSymbols/browser/documentSymbols.js';\nimport '../../editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js';\nimport '../../editor/contrib/inlineProgress/browser/inlineProgress.js';\nimport '../../editor/contrib/gotoSymbol/browser/goToCommands.js';\nimport '../../editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js';\nimport '../../editor/contrib/gotoError/browser/gotoError.js';\nimport '../../editor/contrib/gpu/browser/gpuActions.js';\nimport '../../editor/contrib/hover/browser/hoverContribution.js';\nimport '../../editor/contrib/indentation/browser/indentation.js';\nimport '../../editor/contrib/inlayHints/browser/inlayHintsContribution.js';\nimport '../../editor/contrib/inPlaceReplace/browser/inPlaceReplace.js';\nimport '../../editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js';\nimport '../../editor/contrib/lineSelection/browser/lineSelection.js';\nimport '../../editor/contrib/linesOperations/browser/linesOperations.js';\nimport '../../editor/contrib/linkedEditing/browser/linkedEditing.js';\nimport '../../editor/contrib/links/browser/links.js';\nimport '../../editor/contrib/longLinesHelper/browser/longLinesHelper.js';\nimport '../../editor/contrib/middleScroll/browser/middleScroll.contribution.js';\nimport '../../editor/contrib/multicursor/browser/multicursor.js';\nimport '../../editor/contrib/parameterHints/browser/parameterHints.js';\nimport '../../editor/contrib/placeholderText/browser/placeholderText.contribution.js';\nimport '../../editor/contrib/rename/browser/rename.js';\nimport '../../editor/contrib/sectionHeaders/browser/sectionHeaders.js';\nimport '../../editor/contrib/semanticTokens/browser/documentSemanticTokens.js';\nimport '../../editor/contrib/semanticTokens/browser/viewportSemanticTokens.js';\nimport '../../editor/contrib/smartSelect/browser/smartSelect.js';\nimport '../../editor/contrib/snippet/browser/snippetController2.js';\nimport '../../editor/contrib/stickyScroll/browser/stickyScrollContribution.js';\nimport '../../editor/contrib/suggest/browser/suggestController.js';\nimport '../../editor/contrib/suggest/browser/suggestInlineCompletions.js';\nimport '../../editor/contrib/tokenization/browser/tokenization.js';\nimport '../../editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js';\nimport '../../editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js';\nimport '../../editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js';\nimport '../../editor/contrib/wordHighlighter/browser/wordHighlighter.js';\nimport '../../editor/contrib/wordOperations/browser/wordOperations.js';\nimport '../../editor/contrib/wordPartOperations/browser/wordPartOperations.js';\nimport '../../editor/contrib/readOnlyMessage/browser/contribution.js';\nimport '../../editor/contrib/diffEditorBreadcrumbs/browser/contribution.js';\nimport '../../editor/contrib/floatingMenu/browser/floatingMenu.contribution.js';\nimport '../../editor/common/standaloneStrings.js';\nimport '../../base/browser/ui/codicons/codicon/codicon.css';\nimport '../../base/browser/ui/codicons/codicon/codicon-modifiers.css';\nimport '../../editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport '../../editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport '../../editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport '../../editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport '../../editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport '../../editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport '../../editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport '../../editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport { editor, Range, languages, Uri, MarkerSeverity } from '../../editor/editor.api2.js';\n\nclass DiagnosticsAdapter {\n constructor(_languageId, _worker, configChangeEvent) {\n this._languageId = _languageId;\n this._worker = _worker;\n this._disposables = [];\n this._listener = /* @__PURE__ */ Object.create(null);\n const onModelAdd = (model) => {\n let modeId = model.getLanguageId();\n if (modeId !== this._languageId) {\n return;\n }\n let handle;\n this._listener[model.uri.toString()] = model.onDidChangeContent(() => {\n window.clearTimeout(handle);\n handle = window.setTimeout(() => this._doValidate(model.uri, modeId), 500);\n });\n this._doValidate(model.uri, modeId);\n };\n const onModelRemoved = (model) => {\n editor.setModelMarkers(model, this._languageId, []);\n let uriStr = model.uri.toString();\n let listener = this._listener[uriStr];\n if (listener) {\n listener.dispose();\n delete this._listener[uriStr];\n }\n };\n this._disposables.push(editor.onDidCreateModel(onModelAdd));\n this._disposables.push(editor.onWillDisposeModel(onModelRemoved));\n this._disposables.push(\n editor.onDidChangeModelLanguage((event) => {\n onModelRemoved(event.model);\n onModelAdd(event.model);\n })\n );\n this._disposables.push(\n configChangeEvent((_) => {\n editor.getModels().forEach((model) => {\n if (model.getLanguageId() === this._languageId) {\n onModelRemoved(model);\n onModelAdd(model);\n }\n });\n })\n );\n this._disposables.push({\n dispose: () => {\n editor.getModels().forEach(onModelRemoved);\n for (let key in this._listener) {\n this._listener[key].dispose();\n }\n }\n });\n editor.getModels().forEach(onModelAdd);\n }\n dispose() {\n this._disposables.forEach((d) => d && d.dispose());\n this._disposables.length = 0;\n }\n _doValidate(resource, languageId) {\n this._worker(resource).then((worker) => {\n return worker.doValidation(resource.toString());\n }).then((diagnostics) => {\n const markers = diagnostics.map((d) => toDiagnostics(resource, d));\n let model = editor.getModel(resource);\n if (model && model.getLanguageId() === languageId) {\n editor.setModelMarkers(model, languageId, markers);\n }\n }).then(void 0, (err) => {\n console.error(err);\n });\n }\n}\nfunction toSeverity(lsSeverity) {\n switch (lsSeverity) {\n case DiagnosticSeverity.Error:\n return MarkerSeverity.Error;\n case DiagnosticSeverity.Warning:\n return MarkerSeverity.Warning;\n case DiagnosticSeverity.Information:\n return MarkerSeverity.Info;\n case DiagnosticSeverity.Hint:\n return MarkerSeverity.Hint;\n default:\n return MarkerSeverity.Info;\n }\n}\nfunction toDiagnostics(resource, diag) {\n let code = typeof diag.code === \"number\" ? String(diag.code) : diag.code;\n return {\n severity: toSeverity(diag.severity),\n startLineNumber: diag.range.start.line + 1,\n startColumn: diag.range.start.character + 1,\n endLineNumber: diag.range.end.line + 1,\n endColumn: diag.range.end.character + 1,\n message: diag.message,\n code,\n source: diag.source\n };\n}\nclass CompletionAdapter {\n constructor(_worker, _triggerCharacters) {\n this._worker = _worker;\n this._triggerCharacters = _triggerCharacters;\n }\n get triggerCharacters() {\n return this._triggerCharacters;\n }\n provideCompletionItems(model, position, context, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.doComplete(resource.toString(), fromPosition(position));\n }).then((info) => {\n if (!info) {\n return;\n }\n const wordInfo = model.getWordUntilPosition(position);\n const wordRange = new Range(\n position.lineNumber,\n wordInfo.startColumn,\n position.lineNumber,\n wordInfo.endColumn\n );\n const items = info.items.map((entry) => {\n const item = {\n label: entry.label,\n insertText: entry.insertText || entry.label,\n sortText: entry.sortText,\n filterText: entry.filterText,\n documentation: entry.documentation,\n detail: entry.detail,\n command: toCommand(entry.command),\n range: wordRange,\n kind: toCompletionItemKind(entry.kind)\n };\n if (entry.textEdit) {\n if (isInsertReplaceEdit(entry.textEdit)) {\n item.range = {\n insert: toRange(entry.textEdit.insert),\n replace: toRange(entry.textEdit.replace)\n };\n } else {\n item.range = toRange(entry.textEdit.range);\n }\n item.insertText = entry.textEdit.newText;\n }\n if (entry.additionalTextEdits) {\n item.additionalTextEdits = entry.additionalTextEdits.map(toTextEdit);\n }\n if (entry.insertTextFormat === InsertTextFormat.Snippet) {\n item.insertTextRules = languages.CompletionItemInsertTextRule.InsertAsSnippet;\n }\n return item;\n });\n return {\n isIncomplete: info.isIncomplete,\n suggestions: items\n };\n });\n }\n}\nfunction fromPosition(position) {\n if (!position) {\n return void 0;\n }\n return { character: position.column - 1, line: position.lineNumber - 1 };\n}\nfunction fromRange(range) {\n if (!range) {\n return void 0;\n }\n return {\n start: {\n line: range.startLineNumber - 1,\n character: range.startColumn - 1\n },\n end: { line: range.endLineNumber - 1, character: range.endColumn - 1 }\n };\n}\nfunction toRange(range) {\n if (!range) {\n return void 0;\n }\n return new Range(\n range.start.line + 1,\n range.start.character + 1,\n range.end.line + 1,\n range.end.character + 1\n );\n}\nfunction isInsertReplaceEdit(edit) {\n return typeof edit.insert !== \"undefined\" && typeof edit.replace !== \"undefined\";\n}\nfunction toCompletionItemKind(kind) {\n const mItemKind = languages.CompletionItemKind;\n switch (kind) {\n case CompletionItemKind.Text:\n return mItemKind.Text;\n case CompletionItemKind.Method:\n return mItemKind.Method;\n case CompletionItemKind.Function:\n return mItemKind.Function;\n case CompletionItemKind.Constructor:\n return mItemKind.Constructor;\n case CompletionItemKind.Field:\n return mItemKind.Field;\n case CompletionItemKind.Variable:\n return mItemKind.Variable;\n case CompletionItemKind.Class:\n return mItemKind.Class;\n case CompletionItemKind.Interface:\n return mItemKind.Interface;\n case CompletionItemKind.Module:\n return mItemKind.Module;\n case CompletionItemKind.Property:\n return mItemKind.Property;\n case CompletionItemKind.Unit:\n return mItemKind.Unit;\n case CompletionItemKind.Value:\n return mItemKind.Value;\n case CompletionItemKind.Enum:\n return mItemKind.Enum;\n case CompletionItemKind.Keyword:\n return mItemKind.Keyword;\n case CompletionItemKind.Snippet:\n return mItemKind.Snippet;\n case CompletionItemKind.Color:\n return mItemKind.Color;\n case CompletionItemKind.File:\n return mItemKind.File;\n case CompletionItemKind.Reference:\n return mItemKind.Reference;\n }\n return mItemKind.Property;\n}\nfunction toTextEdit(textEdit) {\n if (!textEdit) {\n return void 0;\n }\n return {\n range: toRange(textEdit.range),\n text: textEdit.newText\n };\n}\nfunction toCommand(c) {\n return c && c.command === \"editor.action.triggerSuggest\" ? { id: c.command, title: c.title, arguments: c.arguments } : void 0;\n}\nclass HoverAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideHover(model, position, token) {\n let resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.doHover(resource.toString(), fromPosition(position));\n }).then((info) => {\n if (!info) {\n return;\n }\n return {\n range: toRange(info.range),\n contents: toMarkedStringArray(info.contents)\n };\n });\n }\n}\nfunction isMarkupContent(thing) {\n return thing && typeof thing === \"object\" && typeof thing.kind === \"string\";\n}\nfunction toMarkdownString(entry) {\n if (typeof entry === \"string\") {\n return {\n value: entry\n };\n }\n if (isMarkupContent(entry)) {\n if (entry.kind === \"plaintext\") {\n return {\n value: entry.value.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, \"\\\\$&\")\n };\n }\n return {\n value: entry.value\n };\n }\n return { value: \"```\" + entry.language + \"\\n\" + entry.value + \"\\n```\\n\" };\n}\nfunction toMarkedStringArray(contents) {\n if (!contents) {\n return void 0;\n }\n if (Array.isArray(contents)) {\n return contents.map(toMarkdownString);\n }\n return [toMarkdownString(contents)];\n}\nclass DocumentHighlightAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentHighlights(model, position, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentHighlights(resource.toString(), fromPosition(position))).then((entries) => {\n if (!entries) {\n return;\n }\n return entries.map((entry) => {\n return {\n range: toRange(entry.range),\n kind: toDocumentHighlightKind(entry.kind)\n };\n });\n });\n }\n}\nfunction toDocumentHighlightKind(kind) {\n switch (kind) {\n case DocumentHighlightKind.Read:\n return languages.DocumentHighlightKind.Read;\n case DocumentHighlightKind.Write:\n return languages.DocumentHighlightKind.Write;\n case DocumentHighlightKind.Text:\n return languages.DocumentHighlightKind.Text;\n }\n return languages.DocumentHighlightKind.Text;\n}\nclass DefinitionAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDefinition(model, position, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.findDefinition(resource.toString(), fromPosition(position));\n }).then((definition) => {\n if (!definition) {\n return;\n }\n return [toLocation(definition)];\n });\n }\n}\nfunction toLocation(location) {\n return {\n uri: Uri.parse(location.uri),\n range: toRange(location.range)\n };\n}\nclass ReferenceAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideReferences(model, position, context, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.findReferences(resource.toString(), fromPosition(position));\n }).then((entries) => {\n if (!entries) {\n return;\n }\n return entries.map(toLocation);\n });\n }\n}\nclass RenameAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideRenameEdits(model, position, newName, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.doRename(resource.toString(), fromPosition(position), newName);\n }).then((edit) => {\n return toWorkspaceEdit(edit);\n });\n }\n}\nfunction toWorkspaceEdit(edit) {\n if (!edit || !edit.changes) {\n return void 0;\n }\n let resourceEdits = [];\n for (let uri in edit.changes) {\n const _uri = Uri.parse(uri);\n for (let e of edit.changes[uri]) {\n resourceEdits.push({\n resource: _uri,\n versionId: void 0,\n textEdit: {\n range: toRange(e.range),\n text: e.newText\n }\n });\n }\n }\n return {\n edits: resourceEdits\n };\n}\nclass DocumentSymbolAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentSymbols(model, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentSymbols(resource.toString())).then((items) => {\n if (!items) {\n return;\n }\n return items.map((item) => {\n if (isDocumentSymbol(item)) {\n return toDocumentSymbol(item);\n }\n return {\n name: item.name,\n detail: \"\",\n containerName: item.containerName,\n kind: toSymbolKind(item.kind),\n range: toRange(item.location.range),\n selectionRange: toRange(item.location.range),\n tags: []\n };\n });\n });\n }\n}\nfunction isDocumentSymbol(symbol) {\n return \"children\" in symbol;\n}\nfunction toDocumentSymbol(symbol) {\n return {\n name: symbol.name,\n detail: symbol.detail ?? \"\",\n kind: toSymbolKind(symbol.kind),\n range: toRange(symbol.range),\n selectionRange: toRange(symbol.selectionRange),\n tags: symbol.tags ?? [],\n children: (symbol.children ?? []).map((item) => toDocumentSymbol(item))\n };\n}\nfunction toSymbolKind(kind) {\n let mKind = languages.SymbolKind;\n switch (kind) {\n case SymbolKind.File:\n return mKind.File;\n case SymbolKind.Module:\n return mKind.Module;\n case SymbolKind.Namespace:\n return mKind.Namespace;\n case SymbolKind.Package:\n return mKind.Package;\n case SymbolKind.Class:\n return mKind.Class;\n case SymbolKind.Method:\n return mKind.Method;\n case SymbolKind.Property:\n return mKind.Property;\n case SymbolKind.Field:\n return mKind.Field;\n case SymbolKind.Constructor:\n return mKind.Constructor;\n case SymbolKind.Enum:\n return mKind.Enum;\n case SymbolKind.Interface:\n return mKind.Interface;\n case SymbolKind.Function:\n return mKind.Function;\n case SymbolKind.Variable:\n return mKind.Variable;\n case SymbolKind.Constant:\n return mKind.Constant;\n case SymbolKind.String:\n return mKind.String;\n case SymbolKind.Number:\n return mKind.Number;\n case SymbolKind.Boolean:\n return mKind.Boolean;\n case SymbolKind.Array:\n return mKind.Array;\n }\n return mKind.Function;\n}\nclass DocumentLinkAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideLinks(model, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentLinks(resource.toString())).then((items) => {\n if (!items) {\n return;\n }\n return {\n links: items.map((item) => ({\n range: toRange(item.range),\n url: item.target\n }))\n };\n });\n }\n}\nclass DocumentFormattingEditProvider {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentFormattingEdits(model, options, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.format(resource.toString(), null, fromFormattingOptions(options)).then((edits) => {\n if (!edits || edits.length === 0) {\n return;\n }\n return edits.map(toTextEdit);\n });\n });\n }\n}\nclass DocumentRangeFormattingEditProvider {\n constructor(_worker) {\n this._worker = _worker;\n this.canFormatMultipleRanges = false;\n }\n provideDocumentRangeFormattingEdits(model, range, options, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => {\n return worker.format(resource.toString(), fromRange(range), fromFormattingOptions(options)).then((edits) => {\n if (!edits || edits.length === 0) {\n return;\n }\n return edits.map(toTextEdit);\n });\n });\n }\n}\nfunction fromFormattingOptions(options) {\n return {\n tabSize: options.tabSize,\n insertSpaces: options.insertSpaces\n };\n}\nclass DocumentColorAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideDocumentColors(model, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.findDocumentColors(resource.toString())).then((infos) => {\n if (!infos) {\n return;\n }\n return infos.map((item) => ({\n color: item.color,\n range: toRange(item.range)\n }));\n });\n }\n provideColorPresentations(model, info, token) {\n const resource = model.uri;\n return this._worker(resource).then(\n (worker) => worker.getColorPresentations(resource.toString(), info.color, fromRange(info.range))\n ).then((presentations) => {\n if (!presentations) {\n return;\n }\n return presentations.map((presentation) => {\n let item = {\n label: presentation.label\n };\n if (presentation.textEdit) {\n item.textEdit = toTextEdit(presentation.textEdit);\n }\n if (presentation.additionalTextEdits) {\n item.additionalTextEdits = presentation.additionalTextEdits.map(toTextEdit);\n }\n return item;\n });\n });\n }\n}\nclass FoldingRangeAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideFoldingRanges(model, context, token) {\n const resource = model.uri;\n return this._worker(resource).then((worker) => worker.getFoldingRanges(resource.toString(), context)).then((ranges) => {\n if (!ranges) {\n return;\n }\n return ranges.map((range) => {\n const result = {\n start: range.startLine + 1,\n end: range.endLine + 1\n };\n if (typeof range.kind !== \"undefined\") {\n result.kind = toFoldingRangeKind(range.kind);\n }\n return result;\n });\n });\n }\n}\nfunction toFoldingRangeKind(kind) {\n switch (kind) {\n case FoldingRangeKind.Comment:\n return languages.FoldingRangeKind.Comment;\n case FoldingRangeKind.Imports:\n return languages.FoldingRangeKind.Imports;\n case FoldingRangeKind.Region:\n return languages.FoldingRangeKind.Region;\n }\n return void 0;\n}\nclass SelectionRangeAdapter {\n constructor(_worker) {\n this._worker = _worker;\n }\n provideSelectionRanges(model, positions, token) {\n const resource = model.uri;\n return this._worker(resource).then(\n (worker) => worker.getSelectionRanges(\n resource.toString(),\n positions.map(fromPosition)\n )\n ).then((selectionRanges) => {\n if (!selectionRanges) {\n return;\n }\n return selectionRanges.map((selectionRange) => {\n const result = [];\n while (selectionRange) {\n result.push({ range: toRange(selectionRange.range) });\n selectionRange = selectionRange.parent;\n }\n return result;\n });\n });\n }\n}\n\nexport { CompletionAdapter, DefinitionAdapter, DiagnosticsAdapter, DocumentColorAdapter, DocumentFormattingEditProvider, DocumentHighlightAdapter, DocumentLinkAdapter, DocumentRangeFormattingEditProvider, DocumentSymbolAdapter, FoldingRangeAdapter, HoverAdapter, ReferenceAdapter, RenameAdapter, SelectionRangeAdapter, fromPosition, fromRange, toRange, toTextEdit };\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/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nfunction createScanner(text, ignoreTrivia = false) {\n const len = text.length;\n let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;\n function scanHexDigits(count, exact) {\n let digits = 0;\n let value = 0;\n while (digits < count || false) {\n let ch = text.charCodeAt(pos);\n if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {\n value = value * 16 + ch - 48 /* CharacterCodes._0 */;\n }\n else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {\n value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;\n }\n else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {\n value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;\n }\n else {\n break;\n }\n pos++;\n digits++;\n }\n if (digits < count) {\n value = -1;\n }\n return value;\n }\n function setPosition(newPosition) {\n pos = newPosition;\n value = '';\n tokenOffset = 0;\n token = 16 /* SyntaxKind.Unknown */;\n scanError = 0 /* ScanError.None */;\n }\n function scanNumber() {\n let start = pos;\n if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {\n pos++;\n }\n else {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {\n pos++;\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n return text.substring(start, pos);\n }\n }\n let end = pos;\n if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {\n pos++;\n if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {\n pos++;\n }\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n end = pos;\n }\n else {\n scanError = 3 /* ScanError.UnexpectedEndOfNumber */;\n }\n }\n return text.substring(start, end);\n }\n function scanString() {\n let result = '', start = pos;\n while (true) {\n if (pos >= len) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch = text.charCodeAt(pos);\n if (ch === 34 /* CharacterCodes.doubleQuote */) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n if (ch === 92 /* CharacterCodes.backslash */) {\n result += text.substring(start, pos);\n pos++;\n if (pos >= len) {\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n const ch2 = text.charCodeAt(pos++);\n switch (ch2) {\n case 34 /* CharacterCodes.doubleQuote */:\n result += '\\\"';\n break;\n case 92 /* CharacterCodes.backslash */:\n result += '\\\\';\n break;\n case 47 /* CharacterCodes.slash */:\n result += '/';\n break;\n case 98 /* CharacterCodes.b */:\n result += '\\b';\n break;\n case 102 /* CharacterCodes.f */:\n result += '\\f';\n break;\n case 110 /* CharacterCodes.n */:\n result += '\\n';\n break;\n case 114 /* CharacterCodes.r */:\n result += '\\r';\n break;\n case 116 /* CharacterCodes.t */:\n result += '\\t';\n break;\n case 117 /* CharacterCodes.u */:\n const ch3 = scanHexDigits(4);\n if (ch3 >= 0) {\n result += String.fromCharCode(ch3);\n }\n else {\n scanError = 4 /* ScanError.InvalidUnicode */;\n }\n break;\n default:\n scanError = 5 /* ScanError.InvalidEscapeCharacter */;\n }\n start = pos;\n continue;\n }\n if (ch >= 0 && ch <= 0x1f) {\n if (isLineBreak(ch)) {\n result += text.substring(start, pos);\n scanError = 2 /* ScanError.UnexpectedEndOfString */;\n break;\n }\n else {\n scanError = 6 /* ScanError.InvalidCharacter */;\n // mark as error but continue with string\n }\n }\n pos++;\n }\n return result;\n }\n function scanNext() {\n value = '';\n scanError = 0 /* ScanError.None */;\n tokenOffset = pos;\n lineStartOffset = lineNumber;\n prevTokenLineStartOffset = tokenLineStartOffset;\n if (pos >= len) {\n // at the end\n tokenOffset = len;\n return token = 17 /* SyntaxKind.EOF */;\n }\n let code = text.charCodeAt(pos);\n // trivia: whitespace\n if (isWhiteSpace(code)) {\n do {\n pos++;\n value += String.fromCharCode(code);\n code = text.charCodeAt(pos);\n } while (isWhiteSpace(code));\n return token = 15 /* SyntaxKind.Trivia */;\n }\n // trivia: newlines\n if (isLineBreak(code)) {\n pos++;\n value += String.fromCharCode(code);\n if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n value += '\\n';\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n return token = 14 /* SyntaxKind.LineBreakTrivia */;\n }\n switch (code) {\n // tokens: []{}:,\n case 123 /* CharacterCodes.openBrace */:\n pos++;\n return token = 1 /* SyntaxKind.OpenBraceToken */;\n case 125 /* CharacterCodes.closeBrace */:\n pos++;\n return token = 2 /* SyntaxKind.CloseBraceToken */;\n case 91 /* CharacterCodes.openBracket */:\n pos++;\n return token = 3 /* SyntaxKind.OpenBracketToken */;\n case 93 /* CharacterCodes.closeBracket */:\n pos++;\n return token = 4 /* SyntaxKind.CloseBracketToken */;\n case 58 /* CharacterCodes.colon */:\n pos++;\n return token = 6 /* SyntaxKind.ColonToken */;\n case 44 /* CharacterCodes.comma */:\n pos++;\n return token = 5 /* SyntaxKind.CommaToken */;\n // strings\n case 34 /* CharacterCodes.doubleQuote */:\n pos++;\n value = scanString();\n return token = 10 /* SyntaxKind.StringLiteral */;\n // comments\n case 47 /* CharacterCodes.slash */:\n const start = pos - 1;\n // Single-line comment\n if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n while (pos < len) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n }\n value = text.substring(start, pos);\n return token = 12 /* SyntaxKind.LineCommentTrivia */;\n }\n // Multi-line comment\n if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {\n pos += 2;\n const safeLength = len - 1; // For lookahead.\n let commentClosed = false;\n while (pos < safeLength) {\n const ch = text.charCodeAt(pos);\n if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {\n pos += 2;\n commentClosed = true;\n break;\n }\n pos++;\n if (isLineBreak(ch)) {\n if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {\n pos++;\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n }\n }\n if (!commentClosed) {\n pos++;\n scanError = 1 /* ScanError.UnexpectedEndOfComment */;\n }\n value = text.substring(start, pos);\n return token = 13 /* SyntaxKind.BlockCommentTrivia */;\n }\n // just a single slash\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n // numbers\n case 45 /* CharacterCodes.minus */:\n value += String.fromCharCode(code);\n pos++;\n if (pos === len || !isDigit(text.charCodeAt(pos))) {\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // found a minus, followed by a number so\n // we fall through to proceed with scanning\n // numbers\n case 48 /* CharacterCodes._0 */:\n case 49 /* CharacterCodes._1 */:\n case 50 /* CharacterCodes._2 */:\n case 51 /* CharacterCodes._3 */:\n case 52 /* CharacterCodes._4 */:\n case 53 /* CharacterCodes._5 */:\n case 54 /* CharacterCodes._6 */:\n case 55 /* CharacterCodes._7 */:\n case 56 /* CharacterCodes._8 */:\n case 57 /* CharacterCodes._9 */:\n value += scanNumber();\n return token = 11 /* SyntaxKind.NumericLiteral */;\n // literals and unknown symbols\n default:\n // is a literal? Read the full word.\n while (pos < len && isUnknownContentCharacter(code)) {\n pos++;\n code = text.charCodeAt(pos);\n }\n if (tokenOffset !== pos) {\n value = text.substring(tokenOffset, pos);\n // keywords: true, false, null\n switch (value) {\n case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;\n case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;\n case 'null': return token = 7 /* SyntaxKind.NullKeyword */;\n }\n return token = 16 /* SyntaxKind.Unknown */;\n }\n // some\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* SyntaxKind.Unknown */;\n }\n }\n function isUnknownContentCharacter(code) {\n if (isWhiteSpace(code) || isLineBreak(code)) {\n return false;\n }\n switch (code) {\n case 125 /* CharacterCodes.closeBrace */:\n case 93 /* CharacterCodes.closeBracket */:\n case 123 /* CharacterCodes.openBrace */:\n case 91 /* CharacterCodes.openBracket */:\n case 34 /* CharacterCodes.doubleQuote */:\n case 58 /* CharacterCodes.colon */:\n case 44 /* CharacterCodes.comma */:\n case 47 /* CharacterCodes.slash */:\n return false;\n }\n return true;\n }\n function scanNextNonTrivia() {\n let result;\n do {\n result = scanNext();\n } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);\n return result;\n }\n return {\n setPosition: setPosition,\n getPosition: () => pos,\n scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n getToken: () => token,\n getTokenValue: () => value,\n getTokenOffset: () => tokenOffset,\n getTokenLength: () => pos - tokenOffset,\n getTokenStartLine: () => lineStartOffset,\n getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,\n getTokenError: () => scanError,\n };\n}\nfunction isWhiteSpace(ch) {\n return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;\n}\nfunction isLineBreak(ch) {\n return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;\n}\nfunction isDigit(ch) {\n return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;\n}\nvar CharacterCodes;\n(function (CharacterCodes) {\n CharacterCodes[CharacterCodes[\"lineFeed\"] = 10] = \"lineFeed\";\n CharacterCodes[CharacterCodes[\"carriageReturn\"] = 13] = \"carriageReturn\";\n CharacterCodes[CharacterCodes[\"space\"] = 32] = \"space\";\n CharacterCodes[CharacterCodes[\"_0\"] = 48] = \"_0\";\n CharacterCodes[CharacterCodes[\"_1\"] = 49] = \"_1\";\n CharacterCodes[CharacterCodes[\"_2\"] = 50] = \"_2\";\n CharacterCodes[CharacterCodes[\"_3\"] = 51] = \"_3\";\n CharacterCodes[CharacterCodes[\"_4\"] = 52] = \"_4\";\n CharacterCodes[CharacterCodes[\"_5\"] = 53] = \"_5\";\n CharacterCodes[CharacterCodes[\"_6\"] = 54] = \"_6\";\n CharacterCodes[CharacterCodes[\"_7\"] = 55] = \"_7\";\n CharacterCodes[CharacterCodes[\"_8\"] = 56] = \"_8\";\n CharacterCodes[CharacterCodes[\"_9\"] = 57] = \"_9\";\n CharacterCodes[CharacterCodes[\"a\"] = 97] = \"a\";\n CharacterCodes[CharacterCodes[\"b\"] = 98] = \"b\";\n CharacterCodes[CharacterCodes[\"c\"] = 99] = \"c\";\n CharacterCodes[CharacterCodes[\"d\"] = 100] = \"d\";\n CharacterCodes[CharacterCodes[\"e\"] = 101] = \"e\";\n CharacterCodes[CharacterCodes[\"f\"] = 102] = \"f\";\n CharacterCodes[CharacterCodes[\"g\"] = 103] = \"g\";\n CharacterCodes[CharacterCodes[\"h\"] = 104] = \"h\";\n CharacterCodes[CharacterCodes[\"i\"] = 105] = \"i\";\n CharacterCodes[CharacterCodes[\"j\"] = 106] = \"j\";\n CharacterCodes[CharacterCodes[\"k\"] = 107] = \"k\";\n CharacterCodes[CharacterCodes[\"l\"] = 108] = \"l\";\n CharacterCodes[CharacterCodes[\"m\"] = 109] = \"m\";\n CharacterCodes[CharacterCodes[\"n\"] = 110] = \"n\";\n CharacterCodes[CharacterCodes[\"o\"] = 111] = \"o\";\n CharacterCodes[CharacterCodes[\"p\"] = 112] = \"p\";\n CharacterCodes[CharacterCodes[\"q\"] = 113] = \"q\";\n CharacterCodes[CharacterCodes[\"r\"] = 114] = \"r\";\n CharacterCodes[CharacterCodes[\"s\"] = 115] = \"s\";\n CharacterCodes[CharacterCodes[\"t\"] = 116] = \"t\";\n CharacterCodes[CharacterCodes[\"u\"] = 117] = \"u\";\n CharacterCodes[CharacterCodes[\"v\"] = 118] = \"v\";\n CharacterCodes[CharacterCodes[\"w\"] = 119] = \"w\";\n CharacterCodes[CharacterCodes[\"x\"] = 120] = \"x\";\n CharacterCodes[CharacterCodes[\"y\"] = 121] = \"y\";\n CharacterCodes[CharacterCodes[\"z\"] = 122] = \"z\";\n CharacterCodes[CharacterCodes[\"A\"] = 65] = \"A\";\n CharacterCodes[CharacterCodes[\"B\"] = 66] = \"B\";\n CharacterCodes[CharacterCodes[\"C\"] = 67] = \"C\";\n CharacterCodes[CharacterCodes[\"D\"] = 68] = \"D\";\n CharacterCodes[CharacterCodes[\"E\"] = 69] = \"E\";\n CharacterCodes[CharacterCodes[\"F\"] = 70] = \"F\";\n CharacterCodes[CharacterCodes[\"G\"] = 71] = \"G\";\n CharacterCodes[CharacterCodes[\"H\"] = 72] = \"H\";\n CharacterCodes[CharacterCodes[\"I\"] = 73] = \"I\";\n CharacterCodes[CharacterCodes[\"J\"] = 74] = \"J\";\n CharacterCodes[CharacterCodes[\"K\"] = 75] = \"K\";\n CharacterCodes[CharacterCodes[\"L\"] = 76] = \"L\";\n CharacterCodes[CharacterCodes[\"M\"] = 77] = \"M\";\n CharacterCodes[CharacterCodes[\"N\"] = 78] = \"N\";\n CharacterCodes[CharacterCodes[\"O\"] = 79] = \"O\";\n CharacterCodes[CharacterCodes[\"P\"] = 80] = \"P\";\n CharacterCodes[CharacterCodes[\"Q\"] = 81] = \"Q\";\n CharacterCodes[CharacterCodes[\"R\"] = 82] = \"R\";\n CharacterCodes[CharacterCodes[\"S\"] = 83] = \"S\";\n CharacterCodes[CharacterCodes[\"T\"] = 84] = \"T\";\n CharacterCodes[CharacterCodes[\"U\"] = 85] = \"U\";\n CharacterCodes[CharacterCodes[\"V\"] = 86] = \"V\";\n CharacterCodes[CharacterCodes[\"W\"] = 87] = \"W\";\n CharacterCodes[CharacterCodes[\"X\"] = 88] = \"X\";\n CharacterCodes[CharacterCodes[\"Y\"] = 89] = \"Y\";\n CharacterCodes[CharacterCodes[\"Z\"] = 90] = \"Z\";\n CharacterCodes[CharacterCodes[\"asterisk\"] = 42] = \"asterisk\";\n CharacterCodes[CharacterCodes[\"backslash\"] = 92] = \"backslash\";\n CharacterCodes[CharacterCodes[\"closeBrace\"] = 125] = \"closeBrace\";\n CharacterCodes[CharacterCodes[\"closeBracket\"] = 93] = \"closeBracket\";\n CharacterCodes[CharacterCodes[\"colon\"] = 58] = \"colon\";\n CharacterCodes[CharacterCodes[\"comma\"] = 44] = \"comma\";\n CharacterCodes[CharacterCodes[\"dot\"] = 46] = \"dot\";\n CharacterCodes[CharacterCodes[\"doubleQuote\"] = 34] = \"doubleQuote\";\n CharacterCodes[CharacterCodes[\"minus\"] = 45] = \"minus\";\n CharacterCodes[CharacterCodes[\"openBrace\"] = 123] = \"openBrace\";\n CharacterCodes[CharacterCodes[\"openBracket\"] = 91] = \"openBracket\";\n CharacterCodes[CharacterCodes[\"plus\"] = 43] = \"plus\";\n CharacterCodes[CharacterCodes[\"slash\"] = 47] = \"slash\";\n CharacterCodes[CharacterCodes[\"formFeed\"] = 12] = \"formFeed\";\n CharacterCodes[CharacterCodes[\"tab\"] = 9] = \"tab\";\n})(CharacterCodes || (CharacterCodes = {}));\n\nexport { createScanner };\n","const cachedSpaces = new Array(20).fill(0).map((_, index) => {\n return ' '.repeat(index);\n});\nconst maxCachedValues = 200;\nconst cachedBreakLinesWithSpaces = {\n ' ': {\n '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\n' + ' '.repeat(index);\n }),\n '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r' + ' '.repeat(index);\n }),\n '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r\\n' + ' '.repeat(index);\n }),\n },\n '\\t': {\n '\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\n' + '\\t'.repeat(index);\n }),\n '\\r': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r' + '\\t'.repeat(index);\n }),\n '\\r\\n': new Array(maxCachedValues).fill(0).map((_, index) => {\n return '\\r\\n' + '\\t'.repeat(index);\n }),\n }\n};\nconst supportedEols = ['\\n', '\\r', '\\r\\n'];\n\nexport { cachedBreakLinesWithSpaces, cachedSpaces, supportedEols };\n","import { createScanner } from './scanner.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar ParseOptions;\n(function (ParseOptions) {\n ParseOptions.DEFAULT = {\n allowTrailingComma: false\n };\n})(ParseOptions || (ParseOptions = {}));\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore always check the errors list to find out if the input was valid.\n */\nfunction parse(text, errors = [], options = ParseOptions.DEFAULT) {\n let currentProperty = null;\n let currentParent = [];\n const previousParents = [];\n function onValue(value) {\n if (Array.isArray(currentParent)) {\n currentParent.push(value);\n }\n else if (currentProperty !== null) {\n currentParent[currentProperty] = value;\n }\n }\n const visitor = {\n onObjectBegin: () => {\n const object = {};\n onValue(object);\n previousParents.push(currentParent);\n currentParent = object;\n currentProperty = null;\n },\n onObjectProperty: (name) => {\n currentProperty = name;\n },\n onObjectEnd: () => {\n currentParent = previousParents.pop();\n },\n onArrayBegin: () => {\n const array = [];\n onValue(array);\n previousParents.push(currentParent);\n currentParent = array;\n currentProperty = null;\n },\n onArrayEnd: () => {\n currentParent = previousParents.pop();\n },\n onLiteralValue: onValue,\n onError: (error, offset, length) => {\n errors.push({ error, offset, length });\n }\n };\n visit(text, visitor, options);\n return currentParent[0];\n}\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nfunction getNodePath(node) {\n if (!node.parent || !node.parent.children) {\n return [];\n }\n const path = getNodePath(node.parent);\n if (node.parent.type === 'property') {\n const key = node.parent.children[0].value;\n path.push(key);\n }\n else if (node.parent.type === 'array') {\n const index = node.parent.children.indexOf(node);\n if (index !== -1) {\n path.push(index);\n }\n }\n return path;\n}\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nfunction getNodeValue(node) {\n switch (node.type) {\n case 'array':\n return node.children.map(getNodeValue);\n case 'object':\n const obj = Object.create(null);\n for (let prop of node.children) {\n const valueNode = prop.children[1];\n if (valueNode) {\n obj[prop.children[0].value] = getNodeValue(valueNode);\n }\n }\n return obj;\n case 'null':\n case 'string':\n case 'number':\n case 'boolean':\n return node.value;\n default:\n return undefined;\n }\n}\nfunction contains(node, offset, includeRightBound = false) {\n return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));\n}\n/**\n * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nfunction findNodeAtOffset(node, offset, includeRightBound = false) {\n if (contains(node, offset, includeRightBound)) {\n const children = node.children;\n if (Array.isArray(children)) {\n for (let i = 0; i < children.length && children[i].offset <= offset; i++) {\n const item = findNodeAtOffset(children[i], offset, includeRightBound);\n if (item) {\n return item;\n }\n }\n }\n return node;\n }\n return undefined;\n}\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nfunction visit(text, visitor, options = ParseOptions.DEFAULT) {\n const _scanner = createScanner(text, false);\n // Important: Only pass copies of this to visitor functions to prevent accidental modification, and\n // to not affect visitor functions which stored a reference to a previous JSONPath\n const _jsonPath = [];\n function toNoArgVisit(visitFunction) {\n return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toNoArgVisitWithPath(visitFunction) {\n return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;\n }\n function toOneArgVisit(visitFunction) {\n return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;\n }\n function toOneArgVisitWithPath(visitFunction) {\n return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;\n }\n const onObjectBegin = toNoArgVisitWithPath(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisitWithPath(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);\n const disallowComments = options && options.disallowComments;\n const allowTrailingComma = options && options.allowTrailingComma;\n function scanNext() {\n while (true) {\n const token = _scanner.scan();\n switch (_scanner.getTokenError()) {\n case 4 /* ScanError.InvalidUnicode */:\n handleError(14 /* ParseErrorCode.InvalidUnicode */);\n break;\n case 5 /* ScanError.InvalidEscapeCharacter */:\n handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);\n break;\n case 3 /* ScanError.UnexpectedEndOfNumber */:\n handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);\n break;\n case 1 /* ScanError.UnexpectedEndOfComment */:\n if (!disallowComments) {\n handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);\n }\n break;\n case 2 /* ScanError.UnexpectedEndOfString */:\n handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);\n break;\n case 6 /* ScanError.InvalidCharacter */:\n handleError(16 /* ParseErrorCode.InvalidCharacter */);\n break;\n }\n switch (token) {\n case 12 /* SyntaxKind.LineCommentTrivia */:\n case 13 /* SyntaxKind.BlockCommentTrivia */:\n if (disallowComments) {\n handleError(10 /* ParseErrorCode.InvalidCommentToken */);\n }\n else {\n onComment();\n }\n break;\n case 16 /* SyntaxKind.Unknown */:\n handleError(1 /* ParseErrorCode.InvalidSymbol */);\n break;\n case 15 /* SyntaxKind.Trivia */:\n case 14 /* SyntaxKind.LineBreakTrivia */:\n break;\n default:\n return token;\n }\n }\n }\n function handleError(error, skipUntilAfter = [], skipUntil = []) {\n onError(error);\n if (skipUntilAfter.length + skipUntil.length > 0) {\n let token = _scanner.getToken();\n while (token !== 17 /* SyntaxKind.EOF */) {\n if (skipUntilAfter.indexOf(token) !== -1) {\n scanNext();\n break;\n }\n else if (skipUntil.indexOf(token) !== -1) {\n break;\n }\n token = scanNext();\n }\n }\n }\n function parseString(isValue) {\n const value = _scanner.getTokenValue();\n if (isValue) {\n onLiteralValue(value);\n }\n else {\n onObjectProperty(value);\n // add property name afterwards\n _jsonPath.push(value);\n }\n scanNext();\n return true;\n }\n function parseLiteral() {\n switch (_scanner.getToken()) {\n case 11 /* SyntaxKind.NumericLiteral */:\n const tokenValue = _scanner.getTokenValue();\n let value = Number(tokenValue);\n if (isNaN(value)) {\n handleError(2 /* ParseErrorCode.InvalidNumberFormat */);\n value = 0;\n }\n onLiteralValue(value);\n break;\n case 7 /* SyntaxKind.NullKeyword */:\n onLiteralValue(null);\n break;\n case 8 /* SyntaxKind.TrueKeyword */:\n onLiteralValue(true);\n break;\n case 9 /* SyntaxKind.FalseKeyword */:\n onLiteralValue(false);\n break;\n default:\n return false;\n }\n scanNext();\n return true;\n }\n function parseProperty() {\n if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {\n handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n return false;\n }\n parseString(false);\n if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {\n onSeparator(':');\n scanNext(); // consume colon\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n }\n else {\n handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n _jsonPath.pop(); // remove processed property name\n return true;\n }\n function parseObject() {\n onObjectBegin();\n scanNext(); // consume open brace\n let needsComma = false;\n while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (!parseProperty()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onObjectEnd();\n if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {\n handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);\n }\n else {\n scanNext(); // consume close brace\n }\n return true;\n }\n function parseArray() {\n onArrayBegin();\n scanNext(); // consume open bracket\n let isFirstElement = true;\n let needsComma = false;\n while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* ParseErrorCode.CommaExpected */, [], []);\n }\n if (isFirstElement) {\n _jsonPath.push(0);\n isFirstElement = false;\n }\n else {\n _jsonPath[_jsonPath.length - 1]++;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);\n }\n needsComma = true;\n }\n onArrayEnd();\n if (!isFirstElement) {\n _jsonPath.pop(); // remove array index\n }\n if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {\n handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);\n }\n else {\n scanNext(); // consume close bracket\n }\n return true;\n }\n function parseValue() {\n switch (_scanner.getToken()) {\n case 3 /* SyntaxKind.OpenBracketToken */:\n return parseArray();\n case 1 /* SyntaxKind.OpenBraceToken */:\n return parseObject();\n case 10 /* SyntaxKind.StringLiteral */:\n return parseString(true);\n default:\n return parseLiteral();\n }\n }\n scanNext();\n if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {\n if (options.allowEmptyContent) {\n return true;\n }\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (!parseValue()) {\n handleError(4 /* ParseErrorCode.ValueExpected */, [], []);\n return false;\n }\n if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {\n handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);\n }\n return true;\n}\n\nexport { contains, findNodeAtOffset, getNodePath, getNodeValue, parse, visit };\n","import { format as format$1 } from './impl/format.js';\nimport { parse as parse$1, getNodePath as getNodePath$1, getNodeValue as getNodeValue$1, findNodeAtOffset as findNodeAtOffset$1 } from './impl/parser.js';\nimport { createScanner as createScanner$1 } from './impl/scanner.js';\n\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nconst createScanner = createScanner$1;\nvar ScanError;\n(function (ScanError) {\n ScanError[ScanError[\"None\"] = 0] = \"None\";\n ScanError[ScanError[\"UnexpectedEndOfComment\"] = 1] = \"UnexpectedEndOfComment\";\n ScanError[ScanError[\"UnexpectedEndOfString\"] = 2] = \"UnexpectedEndOfString\";\n ScanError[ScanError[\"UnexpectedEndOfNumber\"] = 3] = \"UnexpectedEndOfNumber\";\n ScanError[ScanError[\"InvalidUnicode\"] = 4] = \"InvalidUnicode\";\n ScanError[ScanError[\"InvalidEscapeCharacter\"] = 5] = \"InvalidEscapeCharacter\";\n ScanError[ScanError[\"InvalidCharacter\"] = 6] = \"InvalidCharacter\";\n})(ScanError || (ScanError = {}));\nvar SyntaxKind;\n(function (SyntaxKind) {\n SyntaxKind[SyntaxKind[\"OpenBraceToken\"] = 1] = \"OpenBraceToken\";\n SyntaxKind[SyntaxKind[\"CloseBraceToken\"] = 2] = \"CloseBraceToken\";\n SyntaxKind[SyntaxKind[\"OpenBracketToken\"] = 3] = \"OpenBracketToken\";\n SyntaxKind[SyntaxKind[\"CloseBracketToken\"] = 4] = \"CloseBracketToken\";\n SyntaxKind[SyntaxKind[\"CommaToken\"] = 5] = \"CommaToken\";\n SyntaxKind[SyntaxKind[\"ColonToken\"] = 6] = \"ColonToken\";\n SyntaxKind[SyntaxKind[\"NullKeyword\"] = 7] = \"NullKeyword\";\n SyntaxKind[SyntaxKind[\"TrueKeyword\"] = 8] = \"TrueKeyword\";\n SyntaxKind[SyntaxKind[\"FalseKeyword\"] = 9] = \"FalseKeyword\";\n SyntaxKind[SyntaxKind[\"StringLiteral\"] = 10] = \"StringLiteral\";\n SyntaxKind[SyntaxKind[\"NumericLiteral\"] = 11] = \"NumericLiteral\";\n SyntaxKind[SyntaxKind[\"LineCommentTrivia\"] = 12] = \"LineCommentTrivia\";\n SyntaxKind[SyntaxKind[\"BlockCommentTrivia\"] = 13] = \"BlockCommentTrivia\";\n SyntaxKind[SyntaxKind[\"LineBreakTrivia\"] = 14] = \"LineBreakTrivia\";\n SyntaxKind[SyntaxKind[\"Trivia\"] = 15] = \"Trivia\";\n SyntaxKind[SyntaxKind[\"Unknown\"] = 16] = \"Unknown\";\n SyntaxKind[SyntaxKind[\"EOF\"] = 17] = \"EOF\";\n})(SyntaxKind || (SyntaxKind = {}));\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore, always check the errors list to find out if the input was valid.\n */\nconst parse = parse$1;\n/**\n * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nconst findNodeAtOffset = findNodeAtOffset$1;\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nconst getNodePath = getNodePath$1;\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nconst getNodeValue = getNodeValue$1;\nvar ParseErrorCode;\n(function (ParseErrorCode) {\n ParseErrorCode[ParseErrorCode[\"InvalidSymbol\"] = 1] = \"InvalidSymbol\";\n ParseErrorCode[ParseErrorCode[\"InvalidNumberFormat\"] = 2] = \"InvalidNumberFormat\";\n ParseErrorCode[ParseErrorCode[\"PropertyNameExpected\"] = 3] = \"PropertyNameExpected\";\n ParseErrorCode[ParseErrorCode[\"ValueExpected\"] = 4] = \"ValueExpected\";\n ParseErrorCode[ParseErrorCode[\"ColonExpected\"] = 5] = \"ColonExpected\";\n ParseErrorCode[ParseErrorCode[\"CommaExpected\"] = 6] = \"CommaExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBraceExpected\"] = 7] = \"CloseBraceExpected\";\n ParseErrorCode[ParseErrorCode[\"CloseBracketExpected\"] = 8] = \"CloseBracketExpected\";\n ParseErrorCode[ParseErrorCode[\"EndOfFileExpected\"] = 9] = \"EndOfFileExpected\";\n ParseErrorCode[ParseErrorCode[\"InvalidCommentToken\"] = 10] = \"InvalidCommentToken\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfComment\"] = 11] = \"UnexpectedEndOfComment\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfString\"] = 12] = \"UnexpectedEndOfString\";\n ParseErrorCode[ParseErrorCode[\"UnexpectedEndOfNumber\"] = 13] = \"UnexpectedEndOfNumber\";\n ParseErrorCode[ParseErrorCode[\"InvalidUnicode\"] = 14] = \"InvalidUnicode\";\n ParseErrorCode[ParseErrorCode[\"InvalidEscapeCharacter\"] = 15] = \"InvalidEscapeCharacter\";\n ParseErrorCode[ParseErrorCode[\"InvalidCharacter\"] = 16] = \"InvalidCharacter\";\n})(ParseErrorCode || (ParseErrorCode = {}));\n/**\n * Computes the edit operations needed to format a JSON document.\n *\n * @param documentText The input text\n * @param range The range to format or `undefined` to format the full content\n * @param options The formatting options\n * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.\n * To apply the edit operations to the input, use {@linkcode applyEdits}.\n */\nfunction format(documentText, range, options) {\n return format$1(documentText, range, options);\n}\n\nexport { ParseErrorCode, ScanError, SyntaxKind, createScanner, findNodeAtOffset, format, getNodePath, getNodeValue, parse };\n","import { createScanner } from '../../../external/jsonc-parser/lib/esm/main.js';\n\nfunction createTokenizationSupport(supportComments) {\n return {\n getInitialState: () => new JSONState(null, null, false, null),\n tokenize: (line, state) => tokenize(supportComments, line, state)\n };\n}\nconst TOKEN_DELIM_OBJECT = \"delimiter.bracket.json\";\nconst TOKEN_DELIM_ARRAY = \"delimiter.array.json\";\nconst TOKEN_DELIM_COLON = \"delimiter.colon.json\";\nconst TOKEN_DELIM_COMMA = \"delimiter.comma.json\";\nconst TOKEN_VALUE_BOOLEAN = \"keyword.json\";\nconst TOKEN_VALUE_NULL = \"keyword.json\";\nconst TOKEN_VALUE_STRING = \"string.value.json\";\nconst TOKEN_VALUE_NUMBER = \"number.json\";\nconst TOKEN_PROPERTY_NAME = \"string.key.json\";\nconst TOKEN_COMMENT_BLOCK = \"comment.block.json\";\nconst TOKEN_COMMENT_LINE = \"comment.line.json\";\nclass ParentsStack {\n constructor(parent, type) {\n this.parent = parent;\n this.type = type;\n }\n static pop(parents) {\n if (parents) {\n return parents.parent;\n }\n return null;\n }\n static push(parents, type) {\n return new ParentsStack(parents, type);\n }\n static equals(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n while (a && b) {\n if (a === b) {\n return true;\n }\n if (a.type !== b.type) {\n return false;\n }\n a = a.parent;\n b = b.parent;\n }\n return true;\n }\n}\nclass JSONState {\n constructor(state, scanError, lastWasColon, parents) {\n this._state = state;\n this.scanError = scanError;\n this.lastWasColon = lastWasColon;\n this.parents = parents;\n }\n clone() {\n return new JSONState(this._state, this.scanError, this.lastWasColon, this.parents);\n }\n equals(other) {\n if (other === this) {\n return true;\n }\n if (!other || !(other instanceof JSONState)) {\n return false;\n }\n return this.scanError === other.scanError && this.lastWasColon === other.lastWasColon && ParentsStack.equals(this.parents, other.parents);\n }\n getStateData() {\n return this._state;\n }\n setStateData(state) {\n this._state = state;\n }\n}\nfunction tokenize(comments, line, state, offsetDelta = 0) {\n let numberOfInsertedCharacters = 0;\n let adjustOffset = false;\n switch (state.scanError) {\n case 2 /* UnexpectedEndOfString */:\n line = '\"' + line;\n numberOfInsertedCharacters = 1;\n break;\n case 1 /* UnexpectedEndOfComment */:\n line = \"/*\" + line;\n numberOfInsertedCharacters = 2;\n break;\n }\n const scanner = createScanner(line);\n let lastWasColon = state.lastWasColon;\n let parents = state.parents;\n const ret = {\n tokens: [],\n endState: state.clone()\n };\n while (true) {\n let offset = offsetDelta + scanner.getPosition();\n let type = \"\";\n const kind = scanner.scan();\n if (kind === 17 /* EOF */) {\n break;\n }\n if (offset === offsetDelta + scanner.getPosition()) {\n throw new Error(\n \"Scanner did not advance, next 3 characters are: \" + line.substr(scanner.getPosition(), 3)\n );\n }\n if (adjustOffset) {\n offset -= numberOfInsertedCharacters;\n }\n adjustOffset = numberOfInsertedCharacters > 0;\n switch (kind) {\n case 1 /* OpenBraceToken */:\n parents = ParentsStack.push(parents, 0 /* Object */);\n type = TOKEN_DELIM_OBJECT;\n lastWasColon = false;\n break;\n case 2 /* CloseBraceToken */:\n parents = ParentsStack.pop(parents);\n type = TOKEN_DELIM_OBJECT;\n lastWasColon = false;\n break;\n case 3 /* OpenBracketToken */:\n parents = ParentsStack.push(parents, 1 /* Array */);\n type = TOKEN_DELIM_ARRAY;\n lastWasColon = false;\n break;\n case 4 /* CloseBracketToken */:\n parents = ParentsStack.pop(parents);\n type = TOKEN_DELIM_ARRAY;\n lastWasColon = false;\n break;\n case 6 /* ColonToken */:\n type = TOKEN_DELIM_COLON;\n lastWasColon = true;\n break;\n case 5 /* CommaToken */:\n type = TOKEN_DELIM_COMMA;\n lastWasColon = false;\n break;\n case 8 /* TrueKeyword */:\n case 9 /* FalseKeyword */:\n type = TOKEN_VALUE_BOOLEAN;\n lastWasColon = false;\n break;\n case 7 /* NullKeyword */:\n type = TOKEN_VALUE_NULL;\n lastWasColon = false;\n break;\n case 10 /* StringLiteral */:\n const currentParent = parents ? parents.type : 0 /* Object */;\n const inArray = currentParent === 1 /* Array */;\n type = lastWasColon || inArray ? TOKEN_VALUE_STRING : TOKEN_PROPERTY_NAME;\n lastWasColon = false;\n break;\n case 11 /* NumericLiteral */:\n type = TOKEN_VALUE_NUMBER;\n lastWasColon = false;\n break;\n }\n {\n switch (kind) {\n case 12 /* LineCommentTrivia */:\n type = TOKEN_COMMENT_LINE;\n break;\n case 13 /* BlockCommentTrivia */:\n type = TOKEN_COMMENT_BLOCK;\n break;\n }\n }\n ret.endState = new JSONState(\n state.getStateData(),\n scanner.getTokenError(),\n lastWasColon,\n parents\n );\n ret.tokens.push({\n startIndex: offset,\n scopes: type\n });\n }\n return ret;\n}\n\nexport { TOKEN_COMMENT_BLOCK, TOKEN_COMMENT_LINE, TOKEN_DELIM_ARRAY, TOKEN_DELIM_COLON, TOKEN_DELIM_COMMA, TOKEN_DELIM_OBJECT, TOKEN_PROPERTY_NAME, TOKEN_VALUE_BOOLEAN, TOKEN_VALUE_NULL, TOKEN_VALUE_NUMBER, TOKEN_VALUE_STRING, createTokenizationSupport };\n","import { WorkerManager } from './workerManager.js';\nimport { DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, CompletionAdapter, HoverAdapter, DocumentSymbolAdapter, DocumentColorAdapter, FoldingRangeAdapter, SelectionRangeAdapter, DiagnosticsAdapter } from '../common/lspLanguageFeatures.js';\nexport { DefinitionAdapter, DocumentHighlightAdapter, DocumentLinkAdapter, ReferenceAdapter, RenameAdapter, fromPosition, fromRange, toRange, toTextEdit } from '../common/lspLanguageFeatures.js';\nimport { createTokenizationSupport } from './tokenization.js';\nimport '../../editor/browser/coreCommands.js';\nimport '../../editor/browser/widget/codeEditor/codeEditorWidget.js';\nimport '../../editor/browser/widget/diffEditor/diffEditor.contribution.js';\nimport '../../editor/contrib/anchorSelect/browser/anchorSelect.js';\nimport '../../editor/contrib/bracketMatching/browser/bracketMatching.js';\nimport '../../editor/contrib/caretOperations/browser/caretOperations.js';\nimport '../../editor/contrib/caretOperations/browser/transpose.js';\nimport '../../editor/contrib/clipboard/browser/clipboard.js';\nimport '../../editor/contrib/codeAction/browser/codeActionContributions.js';\nimport '../../editor/contrib/codelens/browser/codelensController.js';\nimport '../../editor/contrib/colorPicker/browser/colorPickerContribution.js';\nimport '../../editor/contrib/comment/browser/comment.js';\nimport '../../editor/contrib/contextmenu/browser/contextmenu.js';\nimport '../../editor/contrib/cursorUndo/browser/cursorUndo.js';\nimport '../../editor/contrib/dnd/browser/dnd.js';\nimport '../../editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js';\nimport '../../editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js';\nimport '../../editor/contrib/find/browser/findController.js';\nimport '../../editor/contrib/folding/browser/folding.js';\nimport '../../editor/contrib/fontZoom/browser/fontZoom.js';\nimport '../../editor/contrib/format/browser/formatActions.js';\nimport '../../editor/contrib/documentSymbols/browser/documentSymbols.js';\nimport '../../editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js';\nimport '../../editor/contrib/inlineProgress/browser/inlineProgress.js';\nimport '../../editor/contrib/gotoSymbol/browser/goToCommands.js';\nimport '../../editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js';\nimport '../../editor/contrib/gotoError/browser/gotoError.js';\nimport '../../editor/contrib/gpu/browser/gpuActions.js';\nimport '../../editor/contrib/hover/browser/hoverContribution.js';\nimport '../../editor/contrib/indentation/browser/indentation.js';\nimport '../../editor/contrib/inlayHints/browser/inlayHintsContribution.js';\nimport '../../editor/contrib/inPlaceReplace/browser/inPlaceReplace.js';\nimport '../../editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js';\nimport '../../editor/contrib/lineSelection/browser/lineSelection.js';\nimport '../../editor/contrib/linesOperations/browser/linesOperations.js';\nimport '../../editor/contrib/linkedEditing/browser/linkedEditing.js';\nimport '../../editor/contrib/links/browser/links.js';\nimport '../../editor/contrib/longLinesHelper/browser/longLinesHelper.js';\nimport '../../editor/contrib/middleScroll/browser/middleScroll.contribution.js';\nimport '../../editor/contrib/multicursor/browser/multicursor.js';\nimport '../../editor/contrib/parameterHints/browser/parameterHints.js';\nimport '../../editor/contrib/placeholderText/browser/placeholderText.contribution.js';\nimport '../../editor/contrib/rename/browser/rename.js';\nimport '../../editor/contrib/sectionHeaders/browser/sectionHeaders.js';\nimport '../../editor/contrib/semanticTokens/browser/documentSemanticTokens.js';\nimport '../../editor/contrib/semanticTokens/browser/viewportSemanticTokens.js';\nimport '../../editor/contrib/smartSelect/browser/smartSelect.js';\nimport '../../editor/contrib/snippet/browser/snippetController2.js';\nimport '../../editor/contrib/stickyScroll/browser/stickyScrollContribution.js';\nimport '../../editor/contrib/suggest/browser/suggestController.js';\nimport '../../editor/contrib/suggest/browser/suggestInlineCompletions.js';\nimport '../../editor/contrib/tokenization/browser/tokenization.js';\nimport '../../editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js';\nimport '../../editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js';\nimport '../../editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js';\nimport '../../editor/contrib/wordHighlighter/browser/wordHighlighter.js';\nimport '../../editor/contrib/wordOperations/browser/wordOperations.js';\nimport '../../editor/contrib/wordPartOperations/browser/wordPartOperations.js';\nimport '../../editor/contrib/readOnlyMessage/browser/contribution.js';\nimport '../../editor/contrib/diffEditorBreadcrumbs/browser/contribution.js';\nimport '../../editor/contrib/floatingMenu/browser/floatingMenu.contribution.js';\nimport '../../editor/common/standaloneStrings.js';\nimport '../../base/browser/ui/codicons/codicon/codicon.css';\nimport '../../base/browser/ui/codicons/codicon/codicon-modifiers.css';\nimport '../../editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\nimport '../../editor/standalone/browser/inspectTokens/inspectTokens.js';\nimport '../../editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\nimport '../../editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\nimport '../../editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\nimport '../../editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\nimport '../../editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js';\nimport '../../editor/standalone/browser/toggleHighContrast/toggleHighContrast.js';\nimport { languages, editor } from '../../editor/editor.api2.js';\n\nlet worker;\nfunction getWorker() {\n return new Promise((resolve, reject) => {\n if (!worker) {\n return reject(\"JSON not registered!\");\n }\n resolve(worker);\n });\n}\nclass JSONDiagnosticsAdapter extends DiagnosticsAdapter {\n constructor(languageId, worker2, defaults) {\n super(languageId, worker2, defaults.onDidChange);\n this._disposables.push(\n editor.onWillDisposeModel((model) => {\n this._resetSchema(model.uri);\n })\n );\n this._disposables.push(\n editor.onDidChangeModelLanguage((event) => {\n this._resetSchema(event.model.uri);\n })\n );\n }\n _resetSchema(resource) {\n this._worker().then((worker2) => {\n worker2.resetSchema(resource.toString());\n });\n }\n}\nfunction setupMode(defaults) {\n const disposables = [];\n const providers = [];\n const client = new WorkerManager(defaults);\n disposables.push(client);\n worker = (...uris) => {\n return client.getLanguageServiceWorker(...uris);\n };\n function registerProviders() {\n const { languageId, modeConfiguration: modeConfiguration2 } = defaults;\n disposeAll(providers);\n if (modeConfiguration2.documentFormattingEdits) {\n providers.push(\n languages.registerDocumentFormattingEditProvider(\n languageId,\n new DocumentFormattingEditProvider(worker)\n )\n );\n }\n if (modeConfiguration2.documentRangeFormattingEdits) {\n providers.push(\n languages.registerDocumentRangeFormattingEditProvider(\n languageId,\n new DocumentRangeFormattingEditProvider(worker)\n )\n );\n }\n if (modeConfiguration2.completionItems) {\n providers.push(\n languages.registerCompletionItemProvider(\n languageId,\n new CompletionAdapter(worker, [\" \", \":\", '\"'])\n )\n );\n }\n if (modeConfiguration2.hovers) {\n providers.push(\n languages.registerHoverProvider(languageId, new HoverAdapter(worker))\n );\n }\n if (modeConfiguration2.documentSymbols) {\n providers.push(\n languages.registerDocumentSymbolProvider(\n languageId,\n new DocumentSymbolAdapter(worker)\n )\n );\n }\n if (modeConfiguration2.tokens) {\n providers.push(languages.setTokensProvider(languageId, createTokenizationSupport(true)));\n }\n if (modeConfiguration2.colors) {\n providers.push(\n languages.registerColorProvider(\n languageId,\n new DocumentColorAdapter(worker)\n )\n );\n }\n if (modeConfiguration2.foldingRanges) {\n providers.push(\n languages.registerFoldingRangeProvider(\n languageId,\n new FoldingRangeAdapter(worker)\n )\n );\n }\n if (modeConfiguration2.diagnostics) {\n providers.push(new JSONDiagnosticsAdapter(languageId, worker, defaults));\n }\n if (modeConfiguration2.selectionRanges) {\n providers.push(\n languages.registerSelectionRangeProvider(\n languageId,\n new SelectionRangeAdapter(worker)\n )\n );\n }\n }\n registerProviders();\n disposables.push(languages.setLanguageConfiguration(defaults.languageId, richEditConfiguration));\n let modeConfiguration = defaults.modeConfiguration;\n defaults.onDidChange((newDefaults) => {\n if (newDefaults.modeConfiguration !== modeConfiguration) {\n modeConfiguration = newDefaults.modeConfiguration;\n registerProviders();\n }\n });\n disposables.push(asDisposable(providers));\n return asDisposable(disposables);\n}\nfunction asDisposable(disposables) {\n return { dispose: () => disposeAll(disposables) };\n}\nfunction disposeAll(disposables) {\n while (disposables.length) {\n disposables.pop().dispose();\n }\n}\nconst richEditConfiguration = {\n wordPattern: /(-?\\d*\\.\\d\\w*)|([^\\[\\{\\]\\}\\:\\\"\\,\\s]+)/g,\n comments: {\n lineComment: \"//\",\n blockComment: [\"/*\", \"*/\"]\n },\n brackets: [\n [\"{\", \"}\"],\n [\"[\", \"]\"]\n ],\n autoClosingPairs: [\n { open: \"{\", close: \"}\", notIn: [\"string\"] },\n { open: \"[\", close: \"]\", notIn: [\"string\"] },\n { open: '\"', close: '\"', notIn: [\"string\"] }\n ]\n};\n\nexport { CompletionAdapter, DiagnosticsAdapter, DocumentColorAdapter, DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, DocumentSymbolAdapter, FoldingRangeAdapter, HoverAdapter, SelectionRangeAdapter, WorkerManager, getWorker, setupMode };\n"],"names":["createTrustedTypesPolicy","policyName","policyOptions","monacoEnvironment","err","ttPolicy","value","getWorker","descriptor","label","workerUrl","createWebWorker","opts","worker","w","editor","STOP_WHEN_IDLE_FOR","WorkerManager","defaults","resources","_client","client","_","DocumentUri","is","URI","integer","uinteger","Position","create","line","character","candidate","Is","Range","one","two","three","four","Location","uri","range","LocationLink","targetUri","targetRange","targetSelectionRange","originSelectionRange","Color","red","green","blue","alpha","ColorInformation","color","ColorPresentation","textEdit","additionalTextEdits","TextEdit","FoldingRangeKind","FoldingRange","startLine","endLine","startCharacter","endCharacter","kind","collapsedText","result","DiagnosticRelatedInformation","location","message","DiagnosticSeverity","DiagnosticTag","CodeDescription","Diagnostic","severity","code","source","relatedInformation","_a","Command","title","command","args","replace","newText","insert","position","del","ChangeAnnotation","needsConfirmation","description","ChangeAnnotationIdentifier","AnnotatedTextEdit","annotation","TextDocumentEdit","textDocument","edits","OptionalVersionedTextDocumentIdentifier","CreateFile","options","RenameFile","oldUri","newUri","DeleteFile","WorkspaceEdit","change","TextDocumentIdentifier","VersionedTextDocumentIdentifier","version","TextDocumentItem","languageId","text","MarkupKind","MarkupContent","CompletionItemKind","InsertTextFormat","CompletionItemTag","InsertReplaceEdit","InsertTextMode","CompletionItemLabelDetails","CompletionItem","CompletionList","items","isIncomplete","MarkedString","fromPlainText","plainText","Hover","ParameterInformation","documentation","SignatureInformation","parameters","DocumentHighlightKind","DocumentHighlight","SymbolKind","SymbolTag","SymbolInformation","name","containerName","WorkspaceSymbol","DocumentSymbol","detail","selectionRange","children","CodeActionKind","CodeActionTriggerKind","CodeActionContext","diagnostics","only","triggerKind","CodeAction","kindOrCommandOrEdit","checkKind","CodeLens","data","FormattingOptions","tabSize","insertSpaces","DocumentLink","target","SelectionRange","parent","SemanticTokenTypes","SemanticTokenModifiers","SemanticTokens","InlineValueText","InlineValueVariableLookup","variableName","caseSensitiveLookup","InlineValueEvaluatableExpression","expression","InlineValueContext","frameId","stoppedLocation","InlayHintKind","InlayHintLabelPart","InlayHint","StringValue","createSnippet","InlineCompletionItem","insertText","filterText","InlineCompletionList","InlineCompletionTriggerKind","SelectedCompletionInfo","InlineCompletionContext","selectedCompletionInfo","WorkspaceFolder","TextDocument","content","FullTextDocument","applyEdits","document","sortedEdits","mergeSort","a","b","diff","lastModifiedOffset","i","e","startOffset","endOffset","compare","p","left","right","leftIdx","rightIdx","start","end","event","lineOffsets","isLineStart","ch","offset","low","high","mid","lineOffset","nextLineOffset","toString","defined","undefined$1","boolean","string","number","numberRange","min","max","func","objectLiteral","typedArray","check","DiagnosticsAdapter","_languageId","_worker","configChangeEvent","onModelAdd","model","modeId","handle","onModelRemoved","uriStr","listener","key","d","resource","markers","toDiagnostics","toSeverity","lsSeverity","MarkerSeverity","diag","CompletionAdapter","_triggerCharacters","context","token","fromPosition","info","wordInfo","wordRange","entry","item","toCommand","toCompletionItemKind","isInsertReplaceEdit","toRange","toTextEdit","languages","fromRange","edit","mItemKind","c","HoverAdapter","toMarkedStringArray","isMarkupContent","thing","toMarkdownString","contents","DocumentHighlightAdapter","entries","toDocumentHighlightKind","DefinitionAdapter","definition","toLocation","Uri","ReferenceAdapter","RenameAdapter","newName","toWorkspaceEdit","resourceEdits","_uri","DocumentSymbolAdapter","isDocumentSymbol","toDocumentSymbol","toSymbolKind","symbol","mKind","DocumentLinkAdapter","DocumentFormattingEditProvider","fromFormattingOptions","DocumentRangeFormattingEditProvider","DocumentColorAdapter","infos","presentations","presentation","FoldingRangeAdapter","ranges","toFoldingRangeKind","SelectionRangeAdapter","positions","selectionRanges","createScanner","ignoreTrivia","len","pos","tokenOffset","lineNumber","lineStartOffset","tokenLineStartOffset","prevTokenLineStartOffset","scanError","scanHexDigits","count","exact","digits","setPosition","newPosition","scanNumber","isDigit","scanString","ch3","isLineBreak","scanNext","isWhiteSpace","safeLength","commentClosed","isUnknownContentCharacter","scanNextNonTrivia","CharacterCodes","index","maxCachedValues","ParseOptions","createScanner$1","ScanError","SyntaxKind","ParseErrorCode","createTokenizationSupport","supportComments","JSONState","state","tokenize","TOKEN_DELIM_OBJECT","TOKEN_DELIM_ARRAY","TOKEN_DELIM_COLON","TOKEN_DELIM_COMMA","TOKEN_VALUE_BOOLEAN","TOKEN_VALUE_NULL","TOKEN_VALUE_STRING","TOKEN_VALUE_NUMBER","TOKEN_PROPERTY_NAME","TOKEN_COMMENT_BLOCK","TOKEN_COMMENT_LINE","ParentsStack","type","parents","lastWasColon","other","comments","offsetDelta","numberOfInsertedCharacters","adjustOffset","scanner","ret","inArray","resolve","reject","JSONDiagnosticsAdapter","worker2","setupMode","disposables","providers","uris","registerProviders","modeConfiguration2","disposeAll","richEditConfiguration","modeConfiguration","newDefaults","asDisposable"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}