"use strict"; /* -------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. * ------------------------------------------------------------------------------------------ */ Object.defineProperty(exports, "__esModule", { value: true }); exports.ProgressFeature = void 0; const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol"); const progressPart_1 = require("./progressPart"); function ensure(target, key) { if (target[key] === void 0) { target[key] = Object.create(null); } return target[key]; } class ProgressFeature { constructor(_client) { this._client = _client; this.activeParts = new Set(); } fillClientCapabilities(capabilities) { ensure(capabilities, 'window').workDoneProgress = true; } initialize() { const client = this._client; const deleteHandler = (part) => { this.activeParts.delete(part); }; const createHandler = (params) => { this.activeParts.add(new progressPart_1.ProgressPart(this._client, params.token, deleteHandler)); }; client.onRequest(vscode_languageserver_protocol_1.WorkDoneProgressCreateRequest.type, createHandler); } dispose() { for (const part of this.activeParts) { part.done(); } this.activeParts.clear(); } } exports.ProgressFeature = ProgressFeature; //# sourceMappingURL=progress.js.map