UNPKG

@codingame/monaco-vscode-extensions-service-override

Version:

VSCode public API plugged on the monaco editor - extensions service-override

62 lines (59 loc) 2.66 kB
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js'; import { ExtHostContext, MainContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol'; import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js'; import { IURLService } from 'vscode/vscode/vs/platform/url/common/url.service'; import { IExtensionUrlHandler } from 'vscode/vscode/vs/workbench/services/extensions/browser/extensionUrlHandler.service'; import { ExtensionIdentifier } from 'vscode/vscode/vs/platform/extensions/common/extensions'; class ExtensionUrlHandler { constructor(proxy, handle, extensionId, extensionDisplayName) { this.proxy = proxy; this.handle = handle; this.extensionId = extensionId; this.extensionDisplayName = extensionDisplayName; } handleURL(uri, options) { if (!ExtensionIdentifier.equals(this.extensionId, uri.authority)) { return Promise.resolve(false); } return Promise.resolve(this.proxy.$handleExternalUri(this.handle, uri)).then(() => true); } } let MainThreadUrls = class MainThreadUrls { constructor(context, urlService, extensionUrlHandler) { this.urlService = urlService; this.extensionUrlHandler = extensionUrlHandler; this.handlers = ( new Map()); this.proxy = ( context.getProxy(ExtHostContext.ExtHostUrls)); } $registerUriHandler(handle, extensionId, extensionDisplayName) { const handler = ( new ExtensionUrlHandler(this.proxy, handle, extensionId, extensionDisplayName)); const disposable = this.urlService.registerHandler(handler); this.handlers.set(handle, { extensionId, disposable }); this.extensionUrlHandler.registerExtensionHandler(extensionId, handler); return Promise.resolve(undefined); } $unregisterUriHandler(handle) { const tuple = this.handlers.get(handle); if (!tuple) { return Promise.resolve(undefined); } const { extensionId, disposable } = tuple; this.extensionUrlHandler.unregisterExtensionHandler(extensionId); this.handlers.delete(handle); disposable.dispose(); return Promise.resolve(undefined); } async $createAppUri(uri) { return this.urlService.create(uri); } dispose() { this.handlers.forEach(({ disposable }) => disposable.dispose()); this.handlers.clear(); } }; MainThreadUrls = __decorate([ extHostNamedCustomer(MainContext.MainThreadUrls), ( __param(1, IURLService)), ( __param(2, IExtensionUrlHandler)) ], MainThreadUrls); export { MainThreadUrls };