UNPKG

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

Version:

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

309 lines (305 loc) 23.6 kB
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6'; import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service'; import { ILifecycleService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service'; import { ExtensionHostStartup } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions'; import { IExtensionService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service'; import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service'; import '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions'; import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service'; import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation'; import { INotificationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service'; import { DeltaExtensionsQueueItem } from './vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js'; import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service'; import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service'; import { IRemoteAuthorityResolverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/remote/common/remoteAuthorityResolver.service'; import { IRemoteExtensionsScannerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/remote/common/remoteExtensionsScanner.service'; import { IRemoteAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/remote/common/remoteAgentService.service'; import { IWorkbenchExtensionEnablementService, IWorkbenchExtensionManagementService, IWebExtensionsScannerService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensionManagement/common/extensionManagement.service'; import { ExtensionManifestPropertiesService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService'; import { IExtensionManifestPropertiesService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService.service'; import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service'; import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service'; import { IBrowserWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/browser/environmentService.service'; import { SyncDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/descriptors'; import { IUserDataInitializationService } from '@codingame/monaco-vscode-api/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'; import { ExtensionHostKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionHostKind'; export { ExtensionHostKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionHostKind'; import './vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js'; import '@codingame/monaco-vscode-api/vscode/vs/base/common/charCode'; import '@codingame/monaco-vscode-api/vscode/vs/base/common/marshallingIds'; import '@codingame/monaco-vscode-api/vscode/vs/base/common/path'; import { language } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform'; import { WebWorkerExtensionHost } from './vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js'; import { IUserDataProfileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/userDataProfile/common/userDataProfile.service'; import { IWorkspaceTrustManagementService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspaceTrust.service'; import { IRemoteExplorerService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/remote/common/remoteExplorerService.service'; import '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensionDescriptionRegistry'; import { ExtensionResourceLoaderService } from './vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js'; import { IExtensionResourceLoaderService } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionResourceLoader/common/extensionResourceLoader.service'; import { ExtensionBisectService } from './vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js'; import { IExtensionBisectService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensionManagement/browser/extensionBisect.service'; import { changeUrlDomain } from '@codingame/monaco-vscode-api/service-override/tools/url'; import { CustomSchemas } from '@codingame/monaco-vscode-files-service-override'; import { registerAssets } from '@codingame/monaco-vscode-api/assets'; import { getForcedExtensionHostKind, getBuiltinExtensions } from '@codingame/monaco-vscode-api/extensions'; import { WebExtensionsScannerService } from './vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js'; import { IBuiltinExtensionsScannerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions.service'; import { ExtensionManifestTranslator } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionsScannerService'; import { getBuiltInExtensionTranslationsUris } from '@codingame/monaco-vscode-api/l10n'; import '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/jsonValidationExtensionPoint'; import '@codingame/monaco-vscode-api/vscode/vs/workbench/services/themes/common/colorExtensionPoint'; import '@codingame/monaco-vscode-api/vscode/vs/workbench/services/themes/common/iconExtensionPoint'; import '@codingame/monaco-vscode-api/vscode/vs/workbench/services/themes/common/tokenClassificationExtensionPoint'; import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/codeEditor/common/languageConfigurationExtensionPoint'; import '@codingame/monaco-vscode-api/vscode/vs/workbench/api/browser/statusBarExtensionPoint'; import './vscode/src/vs/workbench/services/themes/browser/cssExtensionPoint.js'; 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/mainThreadChatCodeMapper.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 '@codingame/monaco-vscode-api/vscode/vs/base/common/event'; import '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle'; import '@codingame/monaco-vscode-api/vscode/vs/editor/common/config/editorOptions'; import '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/selection'; import '@codingame/monaco-vscode-api/vscode/vs/editor/common/editorCommon'; import '@codingame/monaco-vscode-api/vscode/vs/editor/contrib/snippet/browser/snippetController2'; import '@codingame/monaco-vscode-api/vscode/vs/workbench/api/common/extHost.protocol'; import '@codingame/monaco-vscode-api/vscode/vs/base/common/arrays'; import '@codingame/monaco-vscode-api/vscode/vs/editor/contrib/editorState/browser/editorState'; import '@codingame/monaco-vscode-api/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/mainThreadDocumentDiff.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/mainThreadPower.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'; import './vscode/src/vs/workbench/api/browser/mainThreadAiSettingsSearch.js'; import './vscode/src/vs/workbench/api/browser/mainThreadMcp.js'; import './vscode/src/vs/workbench/api/browser/mainThreadChatContext.js'; import './vscode/src/vs/workbench/api/browser/mainThreadChatDebug.js'; import './vscode/src/vs/workbench/api/browser/mainThreadChatStatus.js'; import './vscode/src/vs/workbench/api/browser/mainThreadChatInputNotification.js'; import './vscode/src/vs/workbench/api/browser/mainThreadChatOutputRenderer.js'; import './vscode/src/vs/workbench/api/browser/mainThreadChatSessions.js'; import './vscode/src/vs/workbench/api/browser/mainThreadDataChannels.js'; import './vscode/src/vs/workbench/api/browser/mainThreadMeteredConnection.js'; import './vscode/src/vs/workbench/api/browser/mainThreadGitExtensionService.js'; import './vscode/src/vs/workbench/api/browser/mainThreadBrowsers.js'; let localExtensionHost; function setLocalExtensionHost(_localExtensionHost) { localExtensionHost = _localExtensionHost; } let BrowserExtensionHostFactoryOverride = class BrowserExtensionHostFactoryOverride extends BrowserExtensionHostFactory { constructor(enableWorkerExtensionHost, _extensionsProposedApi, _scanWebExtensions, _getExtensionRegistrySnapshotWhenReady, _instantiationService, _remoteAgentService, _remoteAuthorityResolverService, _extensionEnablementService, _logService) { super(_extensionsProposedApi, _scanWebExtensions, _getExtensionRegistrySnapshotWhenReady, _instantiationService, _remoteAgentService, _remoteAuthorityResolverService, _extensionEnablementService, _logService); this.enableWorkerExtensionHost = enableWorkerExtensionHost; } createExtensionHost(runningLocations, runningLocation, isInitialStart) { switch (runningLocation.kind) { case ExtensionHostKind.LocalProcess: { if (localExtensionHost == null) { return null; } return this._instantiationService.createInstance(localExtensionHost, runningLocation, ExtensionHostStartup.EagerAutoStart, this._createLocalExtensionHostDataProvider(runningLocations, runningLocation, isInitialStart)); } case ExtensionHostKind.LocalWebWorker: { if (!this.enableWorkerExtensionHost) { return null; } const startup = isInitialStart ? ExtensionHostStartup.EagerManualStart : ExtensionHostStartup.EagerAutoStart; return this._instantiationService.createInstance(WebWorkerExtensionHost, runningLocation, startup, this._createLocalExtensionHostDataProvider(runningLocations, runningLocation, isInitialStart)); } case ExtensionHostKind.Remote: { 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(enableWorkerExtensionHost, 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(enableWorkerExtensionHost, extensionsProposedApi, async () => await this._scanWebExtensions(), () => this._getExtensionRegistrySnapshotWhenReady(), instantiationService, remoteAgentService, remoteAuthorityResolverService, extensionEnablementService, logService); super({ hasLocalProcess: true, allowRemoteExtensionsInLocalWebWorker: true }, extensionsProposedApi, extensionHostFactory, new LocalBrowserExtensionHostKindPicker(enableWorkerExtensionHost ? [ ExtensionHostKind.LocalWebWorker, ExtensionHostKind.LocalProcess, ExtensionHostKind.Remote ] : [ExtensionHostKind.LocalProcess, ExtensionHostKind.Remote], 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 await super.readExtensionResource(uri); } } let CustomBuiltinExtensionsScannerService = class CustomBuiltinExtensionsScannerService extends ExtensionManifestTranslator { constructor(fileService, extensionResourceLoaderService, logService) { super(extensionResourceLoaderService, fileService, logService); this.builtinExtensionsPromises = []; const nlsConfiguration = { devMode: false, language: language, pseudo: language === 'pseudo', translations: getBuiltInExtensionTranslationsUris(language) ?? {} }; this.builtinExtensionsPromises = getBuiltinExtensions().map(async (e) => { return { ...e, manifest: await this.translateManifest(e.location, e.manifest, nlsConfiguration) }; }); } async scanBuiltinExtensions() { return [...(await Promise.all(this.builtinExtensionsPromises))]; } }; CustomBuiltinExtensionsScannerService = __decorate([ __param(0, IFileService), __param(1, IExtensionResourceLoaderService), __param(2, ILogService) ], CustomBuiltinExtensionsScannerService); let iframeAlternateDomain; registerAssets({ 'vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html': () => changeUrlDomain(new URL('./vscode/src/vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html', import.meta.url).href, iframeAlternateDomain) }); function getServiceOverride({ enableWorkerExtensionHost, iframeAlternateDomain: _iframeAlternateDomain } = {}) { if (_iframeAlternateDomain != null) { iframeAlternateDomain = _iframeAlternateDomain; } return { [IExtensionService.toString()]: new SyncDescriptor(ExtensionServiceOverride, [enableWorkerExtensionHost], false), [IExtensionManifestPropertiesService.toString()]: new SyncDescriptor(ExtensionManifestPropertiesService, [], true), [IExtensionResourceLoaderService.toString()]: new SyncDescriptor(ExtensionResourceLoaderServiceOverride, [], true), [IExtensionBisectService.toString()]: new SyncDescriptor(ExtensionBisectService, [], true), [IWebExtensionsScannerService.toString()]: new SyncDescriptor(WebExtensionsScannerService, [], true), [IBuiltinExtensionsScannerService.toString()]: new SyncDescriptor(CustomBuiltinExtensionsScannerService, [], true) }; } export { CustomBuiltinExtensionsScannerService, ExtensionServiceOverride, getServiceOverride as default, setLocalExtensionHost };