massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-json / node_modules / vscode-languageserver / lib / common / progress.js
1 "use strict";
2 /* --------------------------------------------------------------------------------------------
3  * Copyright (c) Microsoft Corporation. All rights reserved.
4  * Licensed under the MIT License. See License.txt in the project root for license information.
5  * ------------------------------------------------------------------------------------------ */
6 Object.defineProperty(exports, "__esModule", { value: true });
7 exports.attachPartialResult = exports.ProgressFeature = exports.attachWorkDone = void 0;
8 const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
9 const uuid_1 = require("./utils/uuid");
10 class WorkDoneProgressReporterImpl {
11     constructor(_connection, _token) {
12         this._connection = _connection;
13         this._token = _token;
14         WorkDoneProgressReporterImpl.Instances.set(this._token, this);
15     }
16     begin(title, percentage, message, cancellable) {
17         let param = {
18             kind: 'begin',
19             title,
20             percentage,
21             message,
22             cancellable
23         };
24         this._connection.sendProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, param);
25     }
26     report(arg0, arg1) {
27         let param = {
28             kind: 'report'
29         };
30         if (typeof arg0 === 'number') {
31             param.percentage = arg0;
32             if (arg1 !== undefined) {
33                 param.message = arg1;
34             }
35         }
36         else {
37             param.message = arg0;
38         }
39         this._connection.sendProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, param);
40     }
41     done() {
42         WorkDoneProgressReporterImpl.Instances.delete(this._token);
43         this._connection.sendProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, { kind: 'end' });
44     }
45 }
46 WorkDoneProgressReporterImpl.Instances = new Map();
47 class WorkDoneProgressServerReporterImpl extends WorkDoneProgressReporterImpl {
48     constructor(connection, token) {
49         super(connection, token);
50         this._source = new vscode_languageserver_protocol_1.CancellationTokenSource();
51     }
52     get token() {
53         return this._source.token;
54     }
55     done() {
56         this._source.dispose();
57         super.done();
58     }
59     cancel() {
60         this._source.cancel();
61     }
62 }
63 class NullProgressReporter {
64     constructor() {
65     }
66     begin() {
67     }
68     report() {
69     }
70     done() {
71     }
72 }
73 class NullProgressServerReporter extends NullProgressReporter {
74     constructor() {
75         super();
76         this._source = new vscode_languageserver_protocol_1.CancellationTokenSource();
77     }
78     get token() {
79         return this._source.token;
80     }
81     done() {
82         this._source.dispose();
83     }
84     cancel() {
85         this._source.cancel();
86     }
87 }
88 function attachWorkDone(connection, params) {
89     if (params === undefined || params.workDoneToken === undefined) {
90         return new NullProgressReporter();
91     }
92     const token = params.workDoneToken;
93     delete params.workDoneToken;
94     return new WorkDoneProgressReporterImpl(connection, token);
95 }
96 exports.attachWorkDone = attachWorkDone;
97 const ProgressFeature = (Base) => {
98     return class extends Base {
99         constructor() {
100             super();
101             this._progressSupported = false;
102         }
103         initialize(capabilities) {
104             var _a;
105             if (((_a = capabilities === null || capabilities === void 0 ? void 0 : capabilities.window) === null || _a === void 0 ? void 0 : _a.workDoneProgress) === true) {
106                 this._progressSupported = true;
107                 this.connection.onNotification(vscode_languageserver_protocol_1.WorkDoneProgressCancelNotification.type, (params) => {
108                     let progress = WorkDoneProgressReporterImpl.Instances.get(params.token);
109                     if (progress instanceof WorkDoneProgressServerReporterImpl || progress instanceof NullProgressServerReporter) {
110                         progress.cancel();
111                     }
112                 });
113             }
114         }
115         attachWorkDoneProgress(token) {
116             if (token === undefined) {
117                 return new NullProgressReporter();
118             }
119             else {
120                 return new WorkDoneProgressReporterImpl(this.connection, token);
121             }
122         }
123         createWorkDoneProgress() {
124             if (this._progressSupported) {
125                 const token = uuid_1.generateUuid();
126                 return this.connection.sendRequest(vscode_languageserver_protocol_1.WorkDoneProgressCreateRequest.type, { token }).then(() => {
127                     const result = new WorkDoneProgressServerReporterImpl(this.connection, token);
128                     return result;
129                 });
130             }
131             else {
132                 return Promise.resolve(new NullProgressServerReporter());
133             }
134         }
135     };
136 };
137 exports.ProgressFeature = ProgressFeature;
138 var ResultProgress;
139 (function (ResultProgress) {
140     ResultProgress.type = new vscode_languageserver_protocol_1.ProgressType();
141 })(ResultProgress || (ResultProgress = {}));
142 class ResultProgressReporterImpl {
143     constructor(_connection, _token) {
144         this._connection = _connection;
145         this._token = _token;
146     }
147     report(data) {
148         this._connection.sendProgress(ResultProgress.type, this._token, data);
149     }
150 }
151 function attachPartialResult(connection, params) {
152     if (params === undefined || params.partialResultToken === undefined) {
153         return undefined;
154     }
155     const token = params.partialResultToken;
156     delete params.partialResultToken;
157     return new ResultProgressReporterImpl(connection, token);
158 }
159 exports.attachPartialResult = attachPartialResult;
160 //# sourceMappingURL=progress.js.map