astro-ghostcms/.pnpm-store/v3/files/89/25ee7be9641c8f24f1ff3b3c655...

160 lines
5.5 KiB
Plaintext

"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.attachPartialResult = exports.ProgressFeature = exports.attachWorkDone = void 0;
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
const uuid_1 = require("./utils/uuid");
class WorkDoneProgressReporterImpl {
constructor(_connection, _token) {
this._connection = _connection;
this._token = _token;
WorkDoneProgressReporterImpl.Instances.set(this._token, this);
}
begin(title, percentage, message, cancellable) {
let param = {
kind: 'begin',
title,
percentage,
message,
cancellable
};
this._connection.sendProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, param);
}
report(arg0, arg1) {
let param = {
kind: 'report'
};
if (typeof arg0 === 'number') {
param.percentage = arg0;
if (arg1 !== undefined) {
param.message = arg1;
}
}
else {
param.message = arg0;
}
this._connection.sendProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, param);
}
done() {
WorkDoneProgressReporterImpl.Instances.delete(this._token);
this._connection.sendProgress(vscode_languageserver_protocol_1.WorkDoneProgress.type, this._token, { kind: 'end' });
}
}
WorkDoneProgressReporterImpl.Instances = new Map();
class WorkDoneProgressServerReporterImpl extends WorkDoneProgressReporterImpl {
constructor(connection, token) {
super(connection, token);
this._source = new vscode_languageserver_protocol_1.CancellationTokenSource();
}
get token() {
return this._source.token;
}
done() {
this._source.dispose();
super.done();
}
cancel() {
this._source.cancel();
}
}
class NullProgressReporter {
constructor() {
}
begin() {
}
report() {
}
done() {
}
}
class NullProgressServerReporter extends NullProgressReporter {
constructor() {
super();
this._source = new vscode_languageserver_protocol_1.CancellationTokenSource();
}
get token() {
return this._source.token;
}
done() {
this._source.dispose();
}
cancel() {
this._source.cancel();
}
}
function attachWorkDone(connection, params) {
if (params === undefined || params.workDoneToken === undefined) {
return new NullProgressReporter();
}
const token = params.workDoneToken;
delete params.workDoneToken;
return new WorkDoneProgressReporterImpl(connection, token);
}
exports.attachWorkDone = attachWorkDone;
const ProgressFeature = (Base) => {
return class extends Base {
constructor() {
super();
this._progressSupported = false;
}
initialize(capabilities) {
super.initialize(capabilities);
if (capabilities?.window?.workDoneProgress === true) {
this._progressSupported = true;
this.connection.onNotification(vscode_languageserver_protocol_1.WorkDoneProgressCancelNotification.type, (params) => {
let progress = WorkDoneProgressReporterImpl.Instances.get(params.token);
if (progress instanceof WorkDoneProgressServerReporterImpl || progress instanceof NullProgressServerReporter) {
progress.cancel();
}
});
}
}
attachWorkDoneProgress(token) {
if (token === undefined) {
return new NullProgressReporter();
}
else {
return new WorkDoneProgressReporterImpl(this.connection, token);
}
}
createWorkDoneProgress() {
if (this._progressSupported) {
const token = (0, uuid_1.generateUuid)();
return this.connection.sendRequest(vscode_languageserver_protocol_1.WorkDoneProgressCreateRequest.type, { token }).then(() => {
const result = new WorkDoneProgressServerReporterImpl(this.connection, token);
return result;
});
}
else {
return Promise.resolve(new NullProgressServerReporter());
}
}
};
};
exports.ProgressFeature = ProgressFeature;
var ResultProgress;
(function (ResultProgress) {
ResultProgress.type = new vscode_languageserver_protocol_1.ProgressType();
})(ResultProgress || (ResultProgress = {}));
class ResultProgressReporterImpl {
constructor(_connection, _token) {
this._connection = _connection;
this._token = _token;
}
report(data) {
this._connection.sendProgress(ResultProgress.type, this._token, data);
}
}
function attachPartialResult(connection, params) {
if (params === undefined || params.partialResultToken === undefined) {
return undefined;
}
const token = params.partialResultToken;
delete params.partialResultToken;
return new ResultProgressReporterImpl(connection, token);
}
exports.attachPartialResult = attachPartialResult;