UNPKG

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

Version:

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

275 lines (272 loc) 19.8 kB
import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js'; import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service'; import { ILifecycleService } from 'vscode/vscode/vs/workbench/services/lifecycle/common/lifecycle.service'; import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions.service'; import { ILogService, ILoggerService } from 'vscode/vscode/vs/platform/log/common/log.service'; import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace.service'; import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation'; import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification.service'; import { DeltaExtensionsQueueItem } from './vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js'; import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service'; import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs.service'; import { IRemoteAuthorityResolverService } from 'vscode/vscode/vs/platform/remote/common/remoteAuthorityResolver.service'; import { IRemoteExtensionsScannerService } from 'vscode/vscode/vs/platform/remote/common/remoteExtensionsScanner.service'; import { IRemoteAgentService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteAgentService.service'; import { IWorkbenchExtensionEnablementService, IWorkbenchExtensionManagementService, IWebExtensionsScannerService } from 'vscode/vscode/vs/workbench/services/extensionManagement/common/extensionManagement.service'; import { ExtensionManifestPropertiesService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService'; import { IExtensionManifestPropertiesService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService.service'; import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration.service'; import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService.service'; import { IBrowserWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/browser/environmentService.service'; import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors'; import { IUserDataInitializationService } from 'vscode/vscode/vs/workbench/services/userData/browser/userDataInit.service'; import { ExtensionsProposedApi } from './vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js'; import { BrowserExtensionHostFactory, BrowserExtensionHostKindPicker, ExtensionService } from './vscode/src/vs/workbench/services/extensions/browser/extensionService.js'; export { ExtensionHostKind } from 'vscode/vscode/vs/workbench/services/extensions/common/extensionHostKind'; import { WebWorkerExtensionHost } from './vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js'; import { IUserDataProfilesService } from 'vscode/vscode/vs/platform/userDataProfile/common/userDataProfile.service'; import { ILayoutService } from 'vscode/vscode/vs/platform/layout/browser/layoutService.service'; import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service'; import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label.service'; import { IUserDataProfileService } from 'vscode/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service'; import { IWorkspaceTrustManagementService } from 'vscode/vscode/vs/platform/workspace/common/workspaceTrust.service'; import { IRemoteExplorerService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteExplorerService.service'; import { ExtensionResourceLoaderService } from './vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js'; import { IExtensionResourceLoaderService } from 'vscode/vscode/vs/platform/extensionResourceLoader/common/extensionResourceLoader.service'; import { ExtensionBisectService } from './vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js'; import { IExtensionBisectService } from 'vscode/vscode/vs/workbench/services/extensionManagement/browser/extensionBisect.service'; import { changeUrlDomain } from './tools/url.js'; import { CustomSchemas } from '@codingame/monaco-vscode-files-service-override'; import { registerAssets } from 'vscode/assets'; import { getForcedExtensionHostKind } from 'vscode/extensions'; import './vscode/src/vs/workbench/api/browser/mainThreadLocalization.js'; import './vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js'; import './vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js'; import './vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js'; import './vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js'; import './vscode/src/vs/workbench/api/browser/mainThreadLanguageModelTools.js'; import './vscode/src/vs/workbench/api/browser/mainThreadEmbeddings.js'; import './vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js'; import './vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js'; import './vscode/src/vs/workbench/api/browser/mainThreadClipboard.js'; import './vscode/src/vs/workbench/api/browser/mainThreadCommands.js'; import './vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js'; import './vscode/src/vs/workbench/api/browser/mainThreadConsole.js'; import './vscode/src/vs/workbench/api/browser/mainThreadDebugService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadDecorations.js'; import './vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js'; import './vscode/src/vs/workbench/api/browser/mainThreadDialogs.js'; import './vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js'; import './vscode/src/vs/workbench/api/browser/mainThreadDocuments.js'; import './vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js'; import 'vscode/vscode/vs/base/common/event'; import 'vscode/vscode/vs/base/common/lifecycle'; import 'vscode/vscode/vs/editor/common/config/editorOptions'; import 'vscode/vscode/vs/editor/common/core/selection'; import 'vscode/vscode/vs/editor/common/editorCommon'; import 'vscode/vscode/vs/editor/contrib/snippet/browser/snippetController2'; import 'vscode/vscode/vs/workbench/api/common/extHost.protocol'; import 'vscode/vscode/vs/base/common/arrays'; import 'vscode/vscode/vs/editor/contrib/editorState/browser/editorState'; import 'vscode/vscode/vs/editor/contrib/snippet/browser/snippetParser'; import './vscode/src/vs/workbench/api/browser/mainThreadEditors.js'; import './vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js'; import './vscode/src/vs/workbench/api/browser/mainThreadErrors.js'; import './vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js'; import './vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js'; import './vscode/src/vs/workbench/api/browser/mainThreadLanguages.js'; import './vscode/src/vs/workbench/api/browser/mainThreadLogService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadMessageService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js'; import './vscode/src/vs/workbench/api/browser/mainThreadOutputService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadProgress.js'; import './vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js'; import './vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js'; import './vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js'; import './vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js'; import './vscode/src/vs/workbench/api/browser/mainThreadSpeech.js'; import './vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js'; import './vscode/src/vs/workbench/api/browser/mainThreadSCM.js'; import './vscode/src/vs/workbench/api/browser/mainThreadSearch.js'; import './vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js'; import './vscode/src/vs/workbench/api/browser/mainThreadStorage.js'; import './vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js'; import './vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js'; import './vscode/src/vs/workbench/api/browser/mainThreadTheming.js'; import './vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js'; import './vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadUrls.js'; import './vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js'; import './vscode/src/vs/workbench/api/browser/mainThreadWindow.js'; import './vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js'; import './vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js'; import './vscode/src/vs/workbench/api/browser/mainThreadComments.js'; import './vscode/src/vs/workbench/api/browser/mainThreadNotebook.js'; import './vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js'; import './vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js'; import './vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js'; import './vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js'; import './vscode/src/vs/workbench/api/browser/mainThreadInteractive.js'; import './vscode/src/vs/workbench/api/browser/mainThreadTask.js'; import './vscode/src/vs/workbench/api/browser/mainThreadLabelService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js'; import './vscode/src/vs/workbench/api/browser/mainThreadTimeline.js'; import './vscode/src/vs/workbench/api/browser/mainThreadTesting.js'; import './vscode/src/vs/workbench/api/browser/mainThreadSecretState.js'; import './vscode/src/vs/workbench/api/browser/mainThreadShare.js'; import './vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js'; import './vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js'; import './vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js'; let EsmWebWorkerExtensionHost = class EsmWebWorkerExtensionHost extends WebWorkerExtensionHost { constructor(workerConfig, runningLocation, startup, _initDataProvider, _telemetryService, _contextService, _labelService, _logService, _loggerService, _environmentService, _userDataProfilesService, _productService, _layoutService, _storageService) { super(runningLocation, startup, _initDataProvider, _telemetryService, _contextService, _labelService, _logService, _loggerService, _environmentService, _userDataProfilesService, _productService, _layoutService, _storageService); this.workerConfig = workerConfig; } async _getWebWorkerExtensionHostIframeSrc() { const url = new URL(await super._getWebWorkerExtensionHostIframeSrc(), window.location.href); url.searchParams.set('vscodeExtHostWorkerSrc', this.workerConfig.url); if (this.workerConfig.options != null) { url.searchParams.set('vscodeExtHostWorkerOptions', JSON.stringify(this.workerConfig.options)); } url.searchParams.set('parentOrigin', window.origin); return ( url.toString()); } }; EsmWebWorkerExtensionHost = __decorate([ ( __param(4, ITelemetryService)), ( __param(5, IWorkspaceContextService)), ( __param(6, ILabelService)), ( __param(7, ILogService)), ( __param(8, ILoggerService)), ( __param(9, IBrowserWorkbenchEnvironmentService)), ( __param(10, IUserDataProfilesService)), ( __param(11, IProductService)), ( __param(12, ILayoutService)), ( __param(13, IStorageService)) ], EsmWebWorkerExtensionHost); let localExtensionHost; function setLocalExtensionHost(_localExtensionHost) { localExtensionHost = _localExtensionHost; } let BrowserExtensionHostFactoryOverride = class BrowserExtensionHostFactoryOverride extends BrowserExtensionHostFactory { constructor(workerConfig, _extensionsProposedApi, _scanWebExtensions, _getExtensionRegistrySnapshotWhenReady, _instantiationService, _remoteAgentService, _remoteAuthorityResolverService, _extensionEnablementService, _logService) { super(_extensionsProposedApi, _scanWebExtensions, _getExtensionRegistrySnapshotWhenReady, _instantiationService, _remoteAgentService, _remoteAuthorityResolverService, _extensionEnablementService, _logService); this.workerConfig = workerConfig; } createExtensionHost(runningLocations, runningLocation, isInitialStart) { switch (runningLocation.kind) { case 1 : { if (localExtensionHost == null) { return null; } return this._instantiationService.createInstance(localExtensionHost, runningLocation, 1 , this._createLocalExtensionHostDataProvider(runningLocations, runningLocation, isInitialStart)); } case 2 : { if (this.workerConfig == null) { return null; } const startup = ((isInitialStart ? 2 : 1) ); return this._instantiationService.createInstance(EsmWebWorkerExtensionHost, this.workerConfig, runningLocation, startup, this._createLocalExtensionHostDataProvider(runningLocations, runningLocation, isInitialStart)); } case 3 : { return super.createExtensionHost(runningLocations, runningLocation, isInitialStart); } } } }; BrowserExtensionHostFactoryOverride = __decorate([ ( __param(4, IInstantiationService)), ( __param(5, IRemoteAgentService)), ( __param(6, IRemoteAuthorityResolverService)), ( __param(7, IWorkbenchExtensionEnablementService)), ( __param(8, ILogService)) ], BrowserExtensionHostFactoryOverride); let LocalBrowserExtensionHostKindPicker = class LocalBrowserExtensionHostKindPicker extends BrowserExtensionHostKindPicker { constructor(allowedExtHostKinds, _logService) { super(_logService); this.allowedExtHostKinds = allowedExtHostKinds; } pickExtensionHostKind(extensionId, extensionKinds, isInstalledLocally, isInstalledRemotely, preference) { const forcedKind = getForcedExtensionHostKind(extensionId.value); if (forcedKind != null) { return forcedKind; } const detectedKind = super.pickExtensionHostKind(extensionId, extensionKinds, isInstalledLocally, isInstalledRemotely, preference); if (detectedKind != null && !this.allowedExtHostKinds.includes(detectedKind)) { return this.allowedExtHostKinds[0] ?? null; } return detectedKind; } }; LocalBrowserExtensionHostKindPicker = __decorate([ ( __param(1, ILogService)) ], LocalBrowserExtensionHostKindPicker); let ExtensionServiceOverride = class ExtensionServiceOverride extends ExtensionService { constructor(workerConfig, instantiationService, notificationService, browserEnvironmentService, telemetryService, extensionEnablementService, fileService, productService, extensionManagementService, contextService, configurationService, extensionManifestPropertiesService, webExtensionsScannerService, logService, remoteAgentService, remoteExtensionsScannerService, lifecycleService, remoteAuthorityResolverService, userDataInitializationService, userDataProfileService, workspaceTrustManagementService, remoteExplorerService, dialogService) { const extensionsProposedApi = instantiationService.createInstance(ExtensionsProposedApi); const extensionHostFactory = new BrowserExtensionHostFactoryOverride(workerConfig, extensionsProposedApi, async () => this._scanWebExtensions(), () => this._getExtensionRegistrySnapshotWhenReady(), instantiationService, remoteAgentService, remoteAuthorityResolverService, extensionEnablementService, logService); super(extensionsProposedApi, extensionHostFactory, new LocalBrowserExtensionHostKindPicker(workerConfig != null ? [2 , 1 , 3 ] : [1 , 3 ], logService), instantiationService, notificationService, browserEnvironmentService, telemetryService, extensionEnablementService, fileService, productService, extensionManagementService, contextService, configurationService, extensionManifestPropertiesService, webExtensionsScannerService, logService, remoteAgentService, remoteExtensionsScannerService, lifecycleService, remoteAuthorityResolverService, userDataInitializationService, userDataProfileService, workspaceTrustManagementService, remoteExplorerService, dialogService); } async deltaExtensions(toAdd, toRemove) { await this._handleDeltaExtensions(new DeltaExtensionsQueueItem(toAdd, toRemove)); } }; ExtensionServiceOverride = __decorate([ ( __param(1, IInstantiationService)), ( __param(2, INotificationService)), ( __param(3, IBrowserWorkbenchEnvironmentService)), ( __param(4, ITelemetryService)), ( __param(5, IWorkbenchExtensionEnablementService)), ( __param(6, IFileService)), ( __param(7, IProductService)), ( __param(8, IWorkbenchExtensionManagementService)), ( __param(9, IWorkspaceContextService)), ( __param(10, IConfigurationService)), ( __param(11, IExtensionManifestPropertiesService)), ( __param(12, IWebExtensionsScannerService)), ( __param(13, ILogService)), ( __param(14, IRemoteAgentService)), ( __param(15, IRemoteExtensionsScannerService)), ( __param(16, ILifecycleService)), ( __param(17, IRemoteAuthorityResolverService)), ( __param(18, IUserDataInitializationService)), ( __param(19, IUserDataProfileService)), ( __param(20, IWorkspaceTrustManagementService)), ( __param(21, IRemoteExplorerService)), ( __param(22, IDialogService)) ], ExtensionServiceOverride); class ExtensionResourceLoaderServiceOverride extends ExtensionResourceLoaderService { async readExtensionResource(uri) { if (uri.scheme === CustomSchemas.extensionFile) { const result = await this._fileService.readFile(uri); return ( result.value.toString()); } return super.readExtensionResource(uri); } } let iframeAlternateDomains; registerAssets({ 'vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html': () => changeUrlDomain(new URL('./assets/webWorkerExtensionHostIframe.html', import.meta.url).href, iframeAlternateDomains) }); function getServiceOverride(workerConfig, _iframeAlternateDomains) { if (_iframeAlternateDomains != null) { iframeAlternateDomains = _iframeAlternateDomains; } const _workerConfig = workerConfig != null ? { ...workerConfig, url: changeUrlDomain(workerConfig.url, iframeAlternateDomains) } : undefined; return { [( IExtensionService.toString())]: new SyncDescriptor(ExtensionServiceOverride, [_workerConfig], false), [( IExtensionManifestPropertiesService.toString())]: new SyncDescriptor(ExtensionManifestPropertiesService, [], true), [( IExtensionResourceLoaderService.toString())]: new SyncDescriptor(ExtensionResourceLoaderServiceOverride, [], true), [( IExtensionBisectService.toString())]: new SyncDescriptor(ExtensionBisectService, [], true) }; } export { ExtensionServiceOverride, getServiceOverride as default, setLocalExtensionHost };