@codingame/monaco-vscode-extensions-service-override
Version:
VSCode public API plugged on the monaco editor - extensions service-override
71 lines (68 loc) • 3.56 kB
JavaScript
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
import { ExtHostContext, MainContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
import { ILogService } from 'vscode/vscode/vs/platform/log/common/log.service';
import { SequencerByKey } from 'vscode/vscode/vs/base/common/async';
import { ISecretStorageService } from 'vscode/vscode/vs/platform/secrets/common/secrets.service';
import { IBrowserWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/browser/environmentService.service';
let MainThreadSecretState = class MainThreadSecretState extends Disposable {
constructor(extHostContext, secretStorageService, logService, environmentService) {
super();
this.secretStorageService = secretStorageService;
this.logService = logService;
this._sequencer = ( new SequencerByKey());
this._proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostSecretState));
this._register(this.secretStorageService.onDidChangeSecret((e) => {
try {
const { extensionId, key } = this.parseKey(e);
if (extensionId && key) {
this._proxy.$onDidChangePassword({ extensionId, key });
}
}
catch (e) {
}
}));
}
$getPassword(extensionId, key) {
this.logService.trace(`[mainThreadSecretState] Getting password for ${extensionId} extension: `, key);
return this._sequencer.queue(extensionId, () => this.doGetPassword(extensionId, key));
}
async doGetPassword(extensionId, key) {
const fullKey = this.getKey(extensionId, key);
const password = await this.secretStorageService.get(fullKey);
this.logService.trace(`[mainThreadSecretState] ${password ? 'P' : 'No p'}assword found for: `, extensionId, key);
return password;
}
$setPassword(extensionId, key, value) {
this.logService.trace(`[mainThreadSecretState] Setting password for ${extensionId} extension: `, key);
return this._sequencer.queue(extensionId, () => this.doSetPassword(extensionId, key, value));
}
async doSetPassword(extensionId, key, value) {
const fullKey = this.getKey(extensionId, key);
await this.secretStorageService.set(fullKey, value);
this.logService.trace('[mainThreadSecretState] Password set for: ', extensionId, key);
}
$deletePassword(extensionId, key) {
this.logService.trace(`[mainThreadSecretState] Deleting password for ${extensionId} extension: `, key);
return this._sequencer.queue(extensionId, () => this.doDeletePassword(extensionId, key));
}
async doDeletePassword(extensionId, key) {
const fullKey = this.getKey(extensionId, key);
await this.secretStorageService.delete(fullKey);
this.logService.trace('[mainThreadSecretState] Password deleted for: ', extensionId, key);
}
getKey(extensionId, key) {
return JSON.stringify({ extensionId, key });
}
parseKey(key) {
return JSON.parse(key);
}
};
MainThreadSecretState = __decorate([
extHostNamedCustomer(MainContext.MainThreadSecretState),
( __param(1, ISecretStorageService)),
( __param(2, ILogService)),
( __param(3, IBrowserWorkbenchEnvironmentService))
], MainThreadSecretState);
export { MainThreadSecretState };