UNPKG

@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
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 };