From a8a66753cb9ed55adb86fd1761870d4c94fd1d4d Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Sun, 28 Dec 2025 09:09:00 +0100 Subject: [PATCH 1/6] debt - remove AMD support of VSCode for web --- .vscode/settings.json | 1 + build/gulpfile.vscode.web.ts | 15 +- build/lib/optimize.ts | 2 +- eslint.config.js | 15 +- src/vs/code/browser/workbench/workbench.ts | 2 +- src/vs/nls.messages.ts | 19 -- src/vs/nls.ts | 11 +- .../browser/chatStatus/chatStatusEntry.ts | 2 +- .../workbench/workbench.web.main.internal.ts | 241 +------------ src/vs/workbench/workbench.web.main.ts | 316 ++++++++++++------ 10 files changed, 236 insertions(+), 388 deletions(-) delete mode 100644 src/vs/nls.messages.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 9ac42bf24a4b9..d644b47677281 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -107,6 +107,7 @@ "@xterm/headless", "node-pty", "vscode-notebook-renderer", + "src/vs/workbench/workbench.web.main.ts", "src/vs/workbench/workbench.web.main.internal.ts" ], diff --git a/build/gulpfile.vscode.web.ts b/build/gulpfile.vscode.web.ts index 55606d0ff1dcb..5eacc9d1fdeb1 100644 --- a/build/gulpfile.vscode.web.ts +++ b/build/gulpfile.vscode.web.ts @@ -82,7 +82,6 @@ const vscodeWebEntryPoints = [ buildfile.workerBackgroundTokenization, buildfile.keyboardMaps, buildfile.workbenchWeb, - buildfile.entrypoint('vs/workbench/workbench.web.main.internal') // TODO@esm remove line when we stop supporting web-amd-esm-bridge ].flat(); /** @@ -143,20 +142,20 @@ function packageTask(sourceFolderName: string, destinationFolderName: string) { const extensions = gulp.src('.build/web/extensions/**', { base: '.build/web', dot: true }); - const loader = gulp.src('build/loader.min', { base: 'build', dot: true }).pipe(rename('out/vs/loader.js')); // TODO@esm remove line when we stop supporting web-amd-esm-bridge - - const sources = es.merge(src, extensions, loader) + const sources = es.merge(src, extensions) .pipe(filter(['**', '!**/*.{js,css}.map'], { dot: true })) - // TODO@esm remove me once we stop supporting our web-esm-bridge .pipe(es.through(function (file) { - if (file.relative === 'out/vs/workbench/workbench.web.main.internal.css') { + // Our embedders expect a copy of `workbench.web.main.js` named `workbench.web.main.internal.js` + // so we provide it here and remove the original file from the stream because it is not needed. + if (file.relative === 'out/vs/workbench/workbench.web.main.js') { this.emit('data', new VinylFile({ contents: file.contents, - path: file.path.replace('workbench.web.main.internal.css', 'workbench.web.main.css'), + path: file.path.replace('workbench.web.main.js', 'workbench.web.main.internal.js'), base: file.base })); + } else { + this.emit('data', file); } - this.emit('data', file); })); const name = product.nameShort; diff --git a/build/lib/optimize.ts b/build/lib/optimize.ts index 58b8e07fdb328..f5e812e289079 100644 --- a/build/lib/optimize.ts +++ b/build/lib/optimize.ts @@ -152,7 +152,7 @@ function bundleESMTask(opts: IBundleESMTaskOpts): NodeJS.ReadWriteStream { '.sh': 'file', }, assetNames: 'media/[name]', // moves media assets into a sub-folder "media" - banner: entryPoint.name === 'vs/workbench/workbench.web.main' ? undefined : banner, // TODO@esm remove line when we stop supporting web-amd-esm-bridge + banner, entryPoints: [ { in: path.join(REPO_ROOT_PATH, opts.src, `${entryPoint.name}.js`), diff --git a/eslint.config.js b/eslint.config.js index 0a205b5febcc0..b9ef870eb99a7 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -771,7 +771,6 @@ export default tseslint.config( 'src/vs/workbench/test/browser/workbenchTestServices.ts', 'src/vs/workbench/test/common/workbenchTestServices.ts', 'src/vs/workbench/test/electron-browser/workbenchTestServices.ts', - 'src/vs/workbench/workbench.web.main.internal.ts', 'src/vs/workbench/workbench.web.main.ts', // Server 'src/vs/server/node/remoteAgentEnvironmentImpl.ts', @@ -1850,17 +1849,7 @@ export default tseslint.config( 'target': 'src/vs/workbench/workbench.web.main.internal.ts', 'layer': 'browser', 'restrictions': [ - 'vs/base/~', - 'vs/base/parts/*/~', - 'vs/platform/*/~', - 'vs/editor/~', - 'vs/editor/contrib/*/~', - 'vs/editor/editor.all.js', - 'vs/workbench/~', - 'vs/workbench/api/~', - 'vs/workbench/services/*/~', - 'vs/workbench/contrib/*/~', - 'vs/workbench/workbench.common.main.js' + 'vs/workbench/workbench.web.main.js' ] }, { @@ -1887,7 +1876,7 @@ export default tseslint.config( ] }, { - 'target': 'src/vs/{loader.d.ts,monaco.d.ts,nls.ts,nls.messages.ts}', + 'target': 'src/vs/{loader.d.ts,monaco.d.ts,nls.ts}', 'restrictions': [] }, { diff --git a/src/vs/code/browser/workbench/workbench.ts b/src/vs/code/browser/workbench/workbench.ts index 533cb26ae8e5c..5df8685e43539 100644 --- a/src/vs/code/browser/workbench/workbench.ts +++ b/src/vs/code/browser/workbench/workbench.ts @@ -21,7 +21,7 @@ import { isFolderToOpen, isWorkspaceToOpen } from '../../../platform/window/comm import type { IWorkbenchConstructionOptions, IWorkspace, IWorkspaceProvider } from '../../../workbench/browser/web.api.js'; import { AuthenticationSessionInfo } from '../../../workbench/services/authentication/browser/authenticationService.js'; import type { IURLCallbackProvider } from '../../../workbench/services/url/browser/urlService.js'; -import { create } from '../../../workbench/workbench.web.main.internal.js'; +import { create } from '../../../workbench/workbench.web.main.js'; interface ISecretStorageCrypto { seal(data: string): Promise; diff --git a/src/vs/nls.messages.ts b/src/vs/nls.messages.ts deleted file mode 100644 index 41f15f247d6e4..0000000000000 --- a/src/vs/nls.messages.ts +++ /dev/null @@ -1,19 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* - * This module exists so that the AMD build of the monaco editor can replace this with an async loader plugin. - * If you add new functions to this module make sure that they are also provided in the AMD build of the monaco editor. - * - * TODO@esm remove me once we no longer ship an AMD build. - */ - -export function getNLSMessages(): string[] { - return globalThis._VSCODE_NLS_MESSAGES; -} - -export function getNLSLanguage(): string | undefined { - return globalThis._VSCODE_NLS_LANGUAGE; -} diff --git a/src/vs/nls.ts b/src/vs/nls.ts index e9183ad7d32d2..51644b01193f7 100644 --- a/src/vs/nls.ts +++ b/src/vs/nls.ts @@ -3,10 +3,13 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -// eslint-disable-next-line local/code-import-patterns -import { getNLSLanguage, getNLSMessages } from './nls.messages.js'; -// eslint-disable-next-line local/code-import-patterns -export { getNLSLanguage, getNLSMessages } from './nls.messages.js'; +export function getNLSMessages(): string[] { + return globalThis._VSCODE_NLS_MESSAGES; +} + +export function getNLSLanguage(): string | undefined { + return globalThis._VSCODE_NLS_LANGUAGE; +} declare const document: { location?: { hash?: string } } | undefined; const isPseudo = getNLSLanguage() === 'pseudo' || (typeof document !== 'undefined' && document.location && typeof document.location.hash === 'string' && document.location.hash.indexOf('pseudo=true') >= 0); diff --git a/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.ts b/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.ts index fe94a56a87ed4..f465335f45e2a 100644 --- a/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.ts +++ b/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.ts @@ -83,7 +83,7 @@ export class ChatStatusBarEntry extends Disposable implements IWorkbenchContribu this._register(this.editorService.onDidActiveEditorChange(() => this.onDidActiveEditorChange())); this._register(this.configurationService.onDidChangeConfiguration(e => { - if (e.affectsConfiguration(product.defaultChatAgent.completionsEnablementSetting)) { + if (e.affectsConfiguration(product.defaultChatAgent?.completionsEnablementSetting)) { this.update(); } })); diff --git a/src/vs/workbench/workbench.web.main.internal.ts b/src/vs/workbench/workbench.web.main.internal.ts index 40dcb51abe697..28bf917429951 100644 --- a/src/vs/workbench/workbench.web.main.internal.ts +++ b/src/vs/workbench/workbench.web.main.internal.ts @@ -3,180 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ - -// ####################################################################### -// ### ### -// ### !!! PLEASE ADD COMMON IMPORTS INTO WORKBENCH.COMMON.MAIN.TS !!! ### -// ### ### -// ####################################################################### - - -//#region --- workbench common - -import './workbench.common.main.js'; - -//#endregion - - -//#region --- workbench parts - -import './browser/parts/dialogs/dialog.web.contribution.js'; - -//#endregion - - -//#region --- workbench (web main) - -import './browser/web.main.js'; - -//#endregion - - -//#region --- workbench services - -import './services/integrity/browser/integrityService.js'; -import './services/search/browser/searchService.js'; -import './services/textfile/browser/browserTextFileService.js'; -import './services/keybinding/browser/keyboardLayoutService.js'; -import './services/extensions/browser/extensionService.js'; -import './services/extensionManagement/browser/extensionsProfileScannerService.js'; -import './services/extensions/browser/extensionsScannerService.js'; -import './services/extensionManagement/browser/webExtensionsScannerService.js'; -import './services/extensionManagement/common/extensionManagementServerService.js'; -import './services/mcp/browser/mcpWorkbenchManagementService.js'; -import './services/extensionManagement/browser/extensionGalleryManifestService.js'; -import './services/telemetry/browser/telemetryService.js'; -import './services/url/browser/urlService.js'; -import './services/update/browser/updateService.js'; -import './services/workspaces/browser/workspacesService.js'; -import './services/workspaces/browser/workspaceEditingService.js'; -import './services/dialogs/browser/fileDialogService.js'; -import './services/host/browser/browserHostService.js'; -import './services/lifecycle/browser/lifecycleService.js'; -import './services/clipboard/browser/clipboardService.js'; -import './services/localization/browser/localeService.js'; -import './services/path/browser/pathService.js'; -import './services/themes/browser/browserHostColorSchemeService.js'; -import './services/encryption/browser/encryptionService.js'; -import './services/imageResize/browser/imageResizeService.js'; -import './services/secrets/browser/secretStorageService.js'; -import './services/workingCopy/browser/workingCopyBackupService.js'; -import './services/tunnel/browser/tunnelService.js'; -import './services/files/browser/elevatedFileService.js'; -import './services/workingCopy/browser/workingCopyHistoryService.js'; -import './services/userDataSync/browser/webUserDataSyncEnablementService.js'; -import './services/userDataProfile/browser/userDataProfileStorageService.js'; -import './services/configurationResolver/browser/configurationResolverService.js'; -import '../platform/extensionResourceLoader/browser/extensionResourceLoaderService.js'; -import './services/auxiliaryWindow/browser/auxiliaryWindowService.js'; -import './services/browserElements/browser/webBrowserElementsService.js'; - -import { InstantiationType, registerSingleton } from '../platform/instantiation/common/extensions.js'; -import { IAccessibilityService } from '../platform/accessibility/common/accessibility.js'; -import { IContextMenuService } from '../platform/contextview/browser/contextView.js'; -import { ContextMenuService } from '../platform/contextview/browser/contextMenuService.js'; -import { IExtensionTipsService } from '../platform/extensionManagement/common/extensionManagement.js'; -import { ExtensionTipsService } from '../platform/extensionManagement/common/extensionTipsService.js'; -import { IWorkbenchExtensionManagementService } from './services/extensionManagement/common/extensionManagement.js'; -import { ExtensionManagementService } from './services/extensionManagement/common/extensionManagementService.js'; -import { LogLevel } from '../platform/log/common/log.js'; -import { UserDataSyncMachinesService, IUserDataSyncMachinesService } from '../platform/userDataSync/common/userDataSyncMachines.js'; -import { IUserDataSyncStoreService, IUserDataSyncService, IUserDataAutoSyncService, IUserDataSyncLocalStoreService, IUserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSync.js'; -import { UserDataSyncStoreService } from '../platform/userDataSync/common/userDataSyncStoreService.js'; -import { UserDataSyncLocalStoreService } from '../platform/userDataSync/common/userDataSyncLocalStoreService.js'; -import { UserDataSyncService } from '../platform/userDataSync/common/userDataSyncService.js'; -import { IUserDataSyncAccountService, UserDataSyncAccountService } from '../platform/userDataSync/common/userDataSyncAccount.js'; -import { UserDataAutoSyncService } from '../platform/userDataSync/common/userDataAutoSyncService.js'; -import { AccessibilityService } from '../platform/accessibility/browser/accessibilityService.js'; -import { ICustomEndpointTelemetryService } from '../platform/telemetry/common/telemetry.js'; -import { NullEndpointTelemetryService } from '../platform/telemetry/common/telemetryUtils.js'; -import { ITitleService } from './services/title/browser/titleService.js'; -import { BrowserTitleService } from './browser/parts/titlebar/titlebarPart.js'; -import { ITimerService, TimerService } from './services/timer/browser/timerService.js'; -import { IDiagnosticsService, NullDiagnosticsService } from '../platform/diagnostics/common/diagnostics.js'; -import { ILanguagePackService } from '../platform/languagePacks/common/languagePacks.js'; -import { WebLanguagePacksService } from '../platform/languagePacks/browser/languagePacks.js'; -import { IWebContentExtractorService, NullWebContentExtractorService, ISharedWebContentExtractorService, NullSharedWebContentExtractorService } from '../platform/webContentExtractor/common/webContentExtractor.js'; -import { IMcpGalleryManifestService } from '../platform/mcp/common/mcpGalleryManifest.js'; -import { WorkbenchMcpGalleryManifestService } from './services/mcp/browser/mcpGalleryManifestService.js'; - -registerSingleton(IWorkbenchExtensionManagementService, ExtensionManagementService, InstantiationType.Delayed); -registerSingleton(IAccessibilityService, AccessibilityService, InstantiationType.Delayed); -registerSingleton(IContextMenuService, ContextMenuService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncStoreService, UserDataSyncStoreService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncMachinesService, UserDataSyncMachinesService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncLocalStoreService, UserDataSyncLocalStoreService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncAccountService, UserDataSyncAccountService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncService, UserDataSyncService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncResourceProviderService, UserDataSyncResourceProviderService, InstantiationType.Delayed); -registerSingleton(IUserDataAutoSyncService, UserDataAutoSyncService, InstantiationType.Eager /* Eager to start auto sync */); -registerSingleton(ITitleService, BrowserTitleService, InstantiationType.Eager); -registerSingleton(IExtensionTipsService, ExtensionTipsService, InstantiationType.Delayed); -registerSingleton(ITimerService, TimerService, InstantiationType.Delayed); -registerSingleton(ICustomEndpointTelemetryService, NullEndpointTelemetryService, InstantiationType.Delayed); -registerSingleton(IDiagnosticsService, NullDiagnosticsService, InstantiationType.Delayed); -registerSingleton(ILanguagePackService, WebLanguagePacksService, InstantiationType.Delayed); -registerSingleton(IWebContentExtractorService, NullWebContentExtractorService, InstantiationType.Delayed); -registerSingleton(ISharedWebContentExtractorService, NullSharedWebContentExtractorService, InstantiationType.Delayed); -registerSingleton(IMcpGalleryManifestService, WorkbenchMcpGalleryManifestService, InstantiationType.Delayed); - -//#endregion - - -//#region --- workbench contributions - -// Logs -import './contrib/logs/browser/logs.contribution.js'; - -// Localization -import './contrib/localization/browser/localization.contribution.js'; - -// Performance -import './contrib/performance/browser/performance.web.contribution.js'; - -// Preferences -import './contrib/preferences/browser/keyboardLayoutPicker.js'; - -// Debug -import './contrib/debug/browser/extensionHostDebugService.js'; - -// Welcome Banner -import './contrib/welcomeBanner/browser/welcomeBanner.contribution.js'; - -// Webview -import './contrib/webview/browser/webview.web.contribution.js'; - -// Extensions Management -import './contrib/extensions/browser/extensions.web.contribution.js'; - -// Terminal -import './contrib/terminal/browser/terminal.web.contribution.js'; -import './contrib/externalTerminal/browser/externalTerminal.contribution.js'; -import './contrib/terminal/browser/terminalInstanceService.js'; - -// Tasks -import './contrib/tasks/browser/taskService.js'; - -// Tags -import './contrib/tags/browser/workspaceTagsService.js'; - -// Issues -import './contrib/issue/browser/issue.contribution.js'; - -// Splash -import './contrib/splash/browser/splash.contribution.js'; - -// Remote Start Entry for the Web -import './contrib/remote/browser/remoteStartEntry.contribution.js'; - -// Process Explorer -import './contrib/processExplorer/browser/processExplorer.web.contribution.js'; - -//#endregion - - -//#region --- export workbench factory - // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // // Do NOT change these exports in a way that something is removed unless @@ -185,69 +11,4 @@ import './contrib/processExplorer/browser/processExplorer.web.contribution.js'; // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -import { create, commands, env, window, workspace, logger } from './browser/web.factory.js'; -import { Menu } from './browser/web.api.js'; -import { URI } from '../base/common/uri.js'; -import { Event, Emitter } from '../base/common/event.js'; -import { Disposable } from '../base/common/lifecycle.js'; -import { GroupOrientation } from './services/editor/common/editorGroupsService.js'; -import { UserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSyncResourceProvider.js'; -import { RemoteAuthorityResolverError, RemoteAuthorityResolverErrorCode } from '../platform/remote/common/remoteAuthorityResolver.js'; - -// TODO@esm remove me once we stop supporting our web-esm-bridge -// eslint-disable-next-line local/code-no-any-casts -if ((globalThis as any).__VSCODE_WEB_ESM_PROMISE) { - const exports = { - - // Factory - create: create, - - // Basic Types - URI: URI, - Event: Event, - Emitter: Emitter, - Disposable: Disposable, - // GroupOrientation, - LogLevel: LogLevel, - RemoteAuthorityResolverError: RemoteAuthorityResolverError, - RemoteAuthorityResolverErrorCode: RemoteAuthorityResolverErrorCode, - - // Facade API - env: env, - window: window, - workspace: workspace, - commands: commands, - logger: logger, - Menu: Menu - }; - // eslint-disable-next-line local/code-no-any-casts - (globalThis as any).__VSCODE_WEB_ESM_PROMISE(exports); - // eslint-disable-next-line local/code-no-any-casts - delete (globalThis as any).__VSCODE_WEB_ESM_PROMISE; -} - -export { - - // Factory - create, - - // Basic Types - URI, - Event, - Emitter, - Disposable, - GroupOrientation, - LogLevel, - RemoteAuthorityResolverError, - RemoteAuthorityResolverErrorCode, - - // Facade API - env, - window, - workspace, - commands, - logger, - Menu -}; - -//#endregion +export * from './workbench.web.main.js'; diff --git a/src/vs/workbench/workbench.web.main.ts b/src/vs/workbench/workbench.web.main.ts index 93752573d4c95..bc86bfd1f53cd 100644 --- a/src/vs/workbench/workbench.web.main.ts +++ b/src/vs/workbench/workbench.web.main.ts @@ -4,104 +4,218 @@ *--------------------------------------------------------------------------------------------*/ -// #################################### -// ### ### -// ### !!! PLEASE DO NOT MODIFY !!! ### -// ### ### -// #################################### - -// TODO@esm remove me once we stop supporting our web-esm-bridge - -(function () { - - // #region Types - type IGlobalDefine = { - (moduleName: string, dependencies: string[], callback: (...args: any[]) => any): any; - (moduleName: string, dependencies: string[], definition: any): any; - (moduleName: string, callback: (...args: any[]) => any): any; - (moduleName: string, definition: any): any; - (dependencies: string[], callback: (...args: any[]) => any): any; - (dependencies: string[], definition: any): any; - }; - - interface ILoaderPlugin { - load: (pluginParam: string, parentRequire: IRelativeRequire, loadCallback: IPluginLoadCallback, options: IConfigurationOptions) => void; - write?: (pluginName: string, moduleName: string, write: IPluginWriteCallback) => void; - writeFile?: (pluginName: string, moduleName: string, req: IRelativeRequire, write: IPluginWriteFileCallback, config: IConfigurationOptions) => void; - finishBuild?: (write: (filename: string, contents: string) => void) => void; - } - interface IRelativeRequire { - (dependencies: string[], callback: Function, errorback?: (error: Error) => void): void; - toUrl(id: string): string; - } - interface IPluginLoadCallback { - (value: any): void; - error(err: any): void; - } - interface IConfigurationOptions { - isBuild: boolean | undefined; - [key: string]: any; - } - interface IPluginWriteCallback { - (contents: string): void; - getEntryPoint(): string; - asModule(moduleId: string, contents: string): void; - } - interface IPluginWriteFileCallback { - (filename: string, contents: string): void; - getEntryPoint(): string; - asModule(moduleId: string, contents: string): void; - } - - //#endregion - - // eslint-disable-next-line local/code-no-any-casts - const define: IGlobalDefine = (globalThis as any).define; - // eslint-disable-next-line local/code-no-any-casts - const require: { getConfig?(): any } | undefined = (globalThis as any).require; - - if (!define || !require || typeof require.getConfig !== 'function') { - throw new Error('Expected global define() and require() functions. Please only load this module in an AMD context!'); - } - - let baseUrl = require?.getConfig().baseUrl; - if (!baseUrl) { - throw new Error('Failed to determine baseUrl for loading AMD modules (tried require.getConfig().baseUrl)'); - } - if (!baseUrl.endsWith('/')) { - baseUrl = baseUrl + '/'; - } - globalThis._VSCODE_FILE_ROOT = baseUrl; - - const trustedTypesPolicy: Pick, 'name' | 'createScriptURL'> | undefined = require.getConfig().trustedTypesPolicy; - if (trustedTypesPolicy) { - globalThis._VSCODE_WEB_PACKAGE_TTP = trustedTypesPolicy; - } - - const promise = new Promise(resolve => { - // eslint-disable-next-line local/code-no-any-casts - (globalThis as any).__VSCODE_WEB_ESM_PROMISE = resolve; - }); - - define('vs/web-api', [], (): ILoaderPlugin => { - return { - load: (_name, _req, _load, _config) => { - const script: any = document.createElement('script'); - script.type = 'module'; - // eslint-disable-next-line local/code-no-any-casts - script.src = trustedTypesPolicy ? trustedTypesPolicy.createScriptURL(`${baseUrl}vs/workbench/workbench.web.main.internal.js`) as any as string : `${baseUrl}vs/workbench/workbench.web.main.internal.js`; - document.head.appendChild(script); - - return promise.then(mod => _load(mod)); - } - }; - }); - - define( - 'vs/workbench/workbench.web.main', - ['require', 'exports', 'vs/web-api!'], - function (_require, exports, webApi) { - Object.assign(exports, webApi); - } - ); -})(); +// ####################################################################### +// ### ### +// ### !!! PLEASE ADD COMMON IMPORTS INTO WORKBENCH.COMMON.MAIN.TS !!! ### +// ### ### +// ####################################################################### + + +//#region --- workbench common + +import './workbench.common.main.js'; + +//#endregion + + +//#region --- workbench parts + +import './browser/parts/dialogs/dialog.web.contribution.js'; + +//#endregion + + +//#region --- workbench (web main) + +import './browser/web.main.js'; + +//#endregion + + +//#region --- workbench services + +import './services/integrity/browser/integrityService.js'; +import './services/search/browser/searchService.js'; +import './services/textfile/browser/browserTextFileService.js'; +import './services/keybinding/browser/keyboardLayoutService.js'; +import './services/extensions/browser/extensionService.js'; +import './services/extensionManagement/browser/extensionsProfileScannerService.js'; +import './services/extensions/browser/extensionsScannerService.js'; +import './services/extensionManagement/browser/webExtensionsScannerService.js'; +import './services/extensionManagement/common/extensionManagementServerService.js'; +import './services/mcp/browser/mcpWorkbenchManagementService.js'; +import './services/extensionManagement/browser/extensionGalleryManifestService.js'; +import './services/telemetry/browser/telemetryService.js'; +import './services/url/browser/urlService.js'; +import './services/update/browser/updateService.js'; +import './services/workspaces/browser/workspacesService.js'; +import './services/workspaces/browser/workspaceEditingService.js'; +import './services/dialogs/browser/fileDialogService.js'; +import './services/host/browser/browserHostService.js'; +import './services/lifecycle/browser/lifecycleService.js'; +import './services/clipboard/browser/clipboardService.js'; +import './services/localization/browser/localeService.js'; +import './services/path/browser/pathService.js'; +import './services/themes/browser/browserHostColorSchemeService.js'; +import './services/encryption/browser/encryptionService.js'; +import './services/imageResize/browser/imageResizeService.js'; +import './services/secrets/browser/secretStorageService.js'; +import './services/workingCopy/browser/workingCopyBackupService.js'; +import './services/tunnel/browser/tunnelService.js'; +import './services/files/browser/elevatedFileService.js'; +import './services/workingCopy/browser/workingCopyHistoryService.js'; +import './services/userDataSync/browser/webUserDataSyncEnablementService.js'; +import './services/userDataProfile/browser/userDataProfileStorageService.js'; +import './services/configurationResolver/browser/configurationResolverService.js'; +import '../platform/extensionResourceLoader/browser/extensionResourceLoaderService.js'; +import './services/auxiliaryWindow/browser/auxiliaryWindowService.js'; +import './services/browserElements/browser/webBrowserElementsService.js'; + +import { InstantiationType, registerSingleton } from '../platform/instantiation/common/extensions.js'; +import { IAccessibilityService } from '../platform/accessibility/common/accessibility.js'; +import { IContextMenuService } from '../platform/contextview/browser/contextView.js'; +import { ContextMenuService } from '../platform/contextview/browser/contextMenuService.js'; +import { IExtensionTipsService } from '../platform/extensionManagement/common/extensionManagement.js'; +import { ExtensionTipsService } from '../platform/extensionManagement/common/extensionTipsService.js'; +import { IWorkbenchExtensionManagementService } from './services/extensionManagement/common/extensionManagement.js'; +import { ExtensionManagementService } from './services/extensionManagement/common/extensionManagementService.js'; +import { LogLevel } from '../platform/log/common/log.js'; +import { UserDataSyncMachinesService, IUserDataSyncMachinesService } from '../platform/userDataSync/common/userDataSyncMachines.js'; +import { IUserDataSyncStoreService, IUserDataSyncService, IUserDataAutoSyncService, IUserDataSyncLocalStoreService, IUserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSync.js'; +import { UserDataSyncStoreService } from '../platform/userDataSync/common/userDataSyncStoreService.js'; +import { UserDataSyncLocalStoreService } from '../platform/userDataSync/common/userDataSyncLocalStoreService.js'; +import { UserDataSyncService } from '../platform/userDataSync/common/userDataSyncService.js'; +import { IUserDataSyncAccountService, UserDataSyncAccountService } from '../platform/userDataSync/common/userDataSyncAccount.js'; +import { UserDataAutoSyncService } from '../platform/userDataSync/common/userDataAutoSyncService.js'; +import { AccessibilityService } from '../platform/accessibility/browser/accessibilityService.js'; +import { ICustomEndpointTelemetryService } from '../platform/telemetry/common/telemetry.js'; +import { NullEndpointTelemetryService } from '../platform/telemetry/common/telemetryUtils.js'; +import { ITitleService } from './services/title/browser/titleService.js'; +import { BrowserTitleService } from './browser/parts/titlebar/titlebarPart.js'; +import { ITimerService, TimerService } from './services/timer/browser/timerService.js'; +import { IDiagnosticsService, NullDiagnosticsService } from '../platform/diagnostics/common/diagnostics.js'; +import { ILanguagePackService } from '../platform/languagePacks/common/languagePacks.js'; +import { WebLanguagePacksService } from '../platform/languagePacks/browser/languagePacks.js'; +import { IWebContentExtractorService, NullWebContentExtractorService, ISharedWebContentExtractorService, NullSharedWebContentExtractorService } from '../platform/webContentExtractor/common/webContentExtractor.js'; +import { IMcpGalleryManifestService } from '../platform/mcp/common/mcpGalleryManifest.js'; +import { WorkbenchMcpGalleryManifestService } from './services/mcp/browser/mcpGalleryManifestService.js'; + +registerSingleton(IWorkbenchExtensionManagementService, ExtensionManagementService, InstantiationType.Delayed); +registerSingleton(IAccessibilityService, AccessibilityService, InstantiationType.Delayed); +registerSingleton(IContextMenuService, ContextMenuService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncStoreService, UserDataSyncStoreService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncMachinesService, UserDataSyncMachinesService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncLocalStoreService, UserDataSyncLocalStoreService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncAccountService, UserDataSyncAccountService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncService, UserDataSyncService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncResourceProviderService, UserDataSyncResourceProviderService, InstantiationType.Delayed); +registerSingleton(IUserDataAutoSyncService, UserDataAutoSyncService, InstantiationType.Eager /* Eager to start auto sync */); +registerSingleton(ITitleService, BrowserTitleService, InstantiationType.Eager); +registerSingleton(IExtensionTipsService, ExtensionTipsService, InstantiationType.Delayed); +registerSingleton(ITimerService, TimerService, InstantiationType.Delayed); +registerSingleton(ICustomEndpointTelemetryService, NullEndpointTelemetryService, InstantiationType.Delayed); +registerSingleton(IDiagnosticsService, NullDiagnosticsService, InstantiationType.Delayed); +registerSingleton(ILanguagePackService, WebLanguagePacksService, InstantiationType.Delayed); +registerSingleton(IWebContentExtractorService, NullWebContentExtractorService, InstantiationType.Delayed); +registerSingleton(ISharedWebContentExtractorService, NullSharedWebContentExtractorService, InstantiationType.Delayed); +registerSingleton(IMcpGalleryManifestService, WorkbenchMcpGalleryManifestService, InstantiationType.Delayed); + +//#endregion + + +//#region --- workbench contributions + +// Logs +import './contrib/logs/browser/logs.contribution.js'; + +// Localization +import './contrib/localization/browser/localization.contribution.js'; + +// Performance +import './contrib/performance/browser/performance.web.contribution.js'; + +// Preferences +import './contrib/preferences/browser/keyboardLayoutPicker.js'; + +// Debug +import './contrib/debug/browser/extensionHostDebugService.js'; + +// Welcome Banner +import './contrib/welcomeBanner/browser/welcomeBanner.contribution.js'; + +// Webview +import './contrib/webview/browser/webview.web.contribution.js'; + +// Extensions Management +import './contrib/extensions/browser/extensions.web.contribution.js'; + +// Terminal +import './contrib/terminal/browser/terminal.web.contribution.js'; +import './contrib/externalTerminal/browser/externalTerminal.contribution.js'; +import './contrib/terminal/browser/terminalInstanceService.js'; + +// Tasks +import './contrib/tasks/browser/taskService.js'; + +// Tags +import './contrib/tags/browser/workspaceTagsService.js'; + +// Issues +import './contrib/issue/browser/issue.contribution.js'; + +// Splash +import './contrib/splash/browser/splash.contribution.js'; + +// Remote Start Entry for the Web +import './contrib/remote/browser/remoteStartEntry.contribution.js'; + +// Process Explorer +import './contrib/processExplorer/browser/processExplorer.web.contribution.js'; + +//#endregion + + +//#region --- export workbench factory + +// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +// +// Do NOT change these exports in a way that something is removed unless +// intentional. These exports are used by web embedders and thus require +// an adoption when something changes. +// +// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +import { create, commands, env, window, workspace, logger } from './browser/web.factory.js'; +import { Menu } from './browser/web.api.js'; +import { URI } from '../base/common/uri.js'; +import { Event, Emitter } from '../base/common/event.js'; +import { Disposable } from '../base/common/lifecycle.js'; +import { GroupOrientation } from './services/editor/common/editorGroupsService.js'; +import { UserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSyncResourceProvider.js'; +import { RemoteAuthorityResolverError, RemoteAuthorityResolverErrorCode } from '../platform/remote/common/remoteAuthorityResolver.js'; + +export { + + // Factory + create, + + // Basic Types + URI, + Event, + Emitter, + Disposable, + GroupOrientation, + LogLevel, + RemoteAuthorityResolverError, + RemoteAuthorityResolverErrorCode, + + // Facade API + env, + window, + workspace, + commands, + logger, + Menu +}; + +//#endregion From 31e300eed4404a42472e1cee9f2eef7fda88410f Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Sun, 28 Dec 2025 09:50:20 +0100 Subject: [PATCH 2/6] . --- build/azure-pipelines/web/product-build-web.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/build/azure-pipelines/web/product-build-web.yml b/build/azure-pipelines/web/product-build-web.yml index 1d5dd9798e7ee..acb93995dc5ec 100644 --- a/build/azure-pipelines/web/product-build-web.yml +++ b/build/azure-pipelines/web/product-build-web.yml @@ -159,14 +159,14 @@ jobs: node build/azure-pipelines/upload-sourcemaps.ts out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.main.js.map displayName: Upload sourcemaps (Web Main) - - script: | - set -e - AZURE_STORAGE_ACCOUNT="vscodeweb" \ - AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \ - AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \ - AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \ - node build/azure-pipelines/upload-sourcemaps.ts out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.main.internal.js.map - displayName: Upload sourcemaps (Web Internal) + # - script: | + # set -e + # AZURE_STORAGE_ACCOUNT="vscodeweb" \ + # AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \ + # AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \ + # AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \ + # node build/azure-pipelines/upload-sourcemaps.ts out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.main.internal.js.map + # displayName: Upload sourcemaps (Web Internal) - script: | set -e From 6b27a326a2cdf85d3e644247154d9edd4b7a3e3b Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Sun, 28 Dec 2025 13:52:14 +0100 Subject: [PATCH 3/6] . --- .vscode/settings.json | 1 + eslint.config.js | 1 - src/vs/workbench/workbench.web.main.internal.ts | 4 ++++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index d644b47677281..41b6e4efe5f45 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -62,6 +62,7 @@ "**/yarn.lock": true, "**/package-lock.json": true, "**/Cargo.lock": true, + "src/vs/workbench/workbench.web.main.internal.ts": true, "out/**": true, "out-build/**": true, "out-vscode/**": true, diff --git a/eslint.config.js b/eslint.config.js index b9ef870eb99a7..c9fe2fd1be158 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -771,7 +771,6 @@ export default tseslint.config( 'src/vs/workbench/test/browser/workbenchTestServices.ts', 'src/vs/workbench/test/common/workbenchTestServices.ts', 'src/vs/workbench/test/electron-browser/workbenchTestServices.ts', - 'src/vs/workbench/workbench.web.main.ts', // Server 'src/vs/server/node/remoteAgentEnvironmentImpl.ts', 'src/vs/server/node/remoteExtensionHostAgentServer.ts', diff --git a/src/vs/workbench/workbench.web.main.internal.ts b/src/vs/workbench/workbench.web.main.internal.ts index 28bf917429951..1a56bac8097d0 100644 --- a/src/vs/workbench/workbench.web.main.internal.ts +++ b/src/vs/workbench/workbench.web.main.internal.ts @@ -9,6 +9,10 @@ // intentional. These exports are used by web embedders and thus require // an adoption when something changes. // +// Specifically we provide this module for legacy reasons because it used +// to be the main entry point for web as long as we supported both ESM and +// AMD loading. +// // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! export * from './workbench.web.main.js'; From bb14cfcf40cadfd24cb13c2d956e6b7915116e67 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Sun, 28 Dec 2025 13:56:51 +0100 Subject: [PATCH 4/6] go back to internal module --- .vscode/settings.json | 2 - .../azure-pipelines/web/product-build-web.yml | 13 +- build/buildfile.ts | 2 +- build/gulpfile.vscode.web.ts | 16 +- eslint.config.js | 13 +- src/vs/code/browser/workbench/workbench.ts | 2 +- src/vs/workbench/browser/web.main.ts | 8 +- .../workbench/workbench.web.main.internal.ts | 213 ++++++++++++++++- src/vs/workbench/workbench.web.main.ts | 221 ------------------ 9 files changed, 218 insertions(+), 272 deletions(-) delete mode 100644 src/vs/workbench/workbench.web.main.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 41b6e4efe5f45..9ac42bf24a4b9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -62,7 +62,6 @@ "**/yarn.lock": true, "**/package-lock.json": true, "**/Cargo.lock": true, - "src/vs/workbench/workbench.web.main.internal.ts": true, "out/**": true, "out-build/**": true, "out-vscode/**": true, @@ -108,7 +107,6 @@ "@xterm/headless", "node-pty", "vscode-notebook-renderer", - "src/vs/workbench/workbench.web.main.ts", "src/vs/workbench/workbench.web.main.internal.ts" ], diff --git a/build/azure-pipelines/web/product-build-web.yml b/build/azure-pipelines/web/product-build-web.yml index acb93995dc5ec..71932745be7fb 100644 --- a/build/azure-pipelines/web/product-build-web.yml +++ b/build/azure-pipelines/web/product-build-web.yml @@ -156,17 +156,8 @@ jobs: AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \ AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \ AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \ - node build/azure-pipelines/upload-sourcemaps.ts out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.main.js.map - displayName: Upload sourcemaps (Web Main) - - # - script: | - # set -e - # AZURE_STORAGE_ACCOUNT="vscodeweb" \ - # AZURE_TENANT_ID="$(AZURE_TENANT_ID)" \ - # AZURE_CLIENT_ID="$(AZURE_CLIENT_ID)" \ - # AZURE_ID_TOKEN="$(AZURE_ID_TOKEN)" \ - # node build/azure-pipelines/upload-sourcemaps.ts out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.main.internal.js.map - # displayName: Upload sourcemaps (Web Internal) + node build/azure-pipelines/upload-sourcemaps.ts out-vscode-web-min out-vscode-web-min/vs/workbench/workbench.web.main.internal.js.map + displayName: Upload sourcemaps (Web) - script: | set -e diff --git a/build/buildfile.ts b/build/buildfile.ts index 99a9832f404d3..168539f4cae5f 100644 --- a/build/buildfile.ts +++ b/build/buildfile.ts @@ -28,7 +28,7 @@ export const workbenchDesktop = [ createModuleDescription('vs/workbench/workbench.desktop.main') ]; -export const workbenchWeb = createModuleDescription('vs/workbench/workbench.web.main'); +export const workbenchWeb = createModuleDescription('vs/workbench/workbench.web.main.internal'); export const keyboardMaps = [ createModuleDescription('vs/workbench/services/keybinding/browser/keyboardLayouts/layout.contribution.linux'), diff --git a/build/gulpfile.vscode.web.ts b/build/gulpfile.vscode.web.ts index 5eacc9d1fdeb1..3f1cc1fdc51f0 100644 --- a/build/gulpfile.vscode.web.ts +++ b/build/gulpfile.vscode.web.ts @@ -19,7 +19,6 @@ import vfs from 'vinyl-fs'; import packageJson from '../package.json' with { type: 'json' }; import { compileBuildWithManglingTask } from './gulpfile.compile.ts'; import * as extensions from './lib/extensions.ts'; -import VinylFile from 'vinyl'; import jsonEditor from 'gulp-json-editor'; import buildfile from './buildfile.ts'; @@ -143,20 +142,7 @@ function packageTask(sourceFolderName: string, destinationFolderName: string) { const extensions = gulp.src('.build/web/extensions/**', { base: '.build/web', dot: true }); const sources = es.merge(src, extensions) - .pipe(filter(['**', '!**/*.{js,css}.map'], { dot: true })) - .pipe(es.through(function (file) { - // Our embedders expect a copy of `workbench.web.main.js` named `workbench.web.main.internal.js` - // so we provide it here and remove the original file from the stream because it is not needed. - if (file.relative === 'out/vs/workbench/workbench.web.main.js') { - this.emit('data', new VinylFile({ - contents: file.contents, - path: file.path.replace('workbench.web.main.js', 'workbench.web.main.internal.js'), - base: file.base - })); - } else { - this.emit('data', file); - } - })); + .pipe(filter(['**', '!**/*.{js,css}.map'], { dot: true })); const name = product.nameShort; const packageJsonStream = gulp.src(['remote/web/package.json'], { base: 'remote/web' }) diff --git a/eslint.config.js b/eslint.config.js index c9fe2fd1be158..53345a7a3a98c 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1757,10 +1757,6 @@ export default tseslint.config( 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/code/~', - { - 'when': 'hasBrowser', - 'pattern': 'vs/workbench/workbench.web.main.js' - }, { 'when': 'hasBrowser', 'pattern': 'vs/workbench/workbench.web.main.internal.js' @@ -1828,7 +1824,7 @@ export default tseslint.config( ] }, { - 'target': 'src/vs/workbench/workbench.web.main.ts', + 'target': 'src/vs/workbench/workbench.web.main.internal.ts', 'layer': 'browser', 'restrictions': [ 'vs/base/~', @@ -1844,13 +1840,6 @@ export default tseslint.config( 'vs/workbench/workbench.common.main.js' ] }, - { - 'target': 'src/vs/workbench/workbench.web.main.internal.ts', - 'layer': 'browser', - 'restrictions': [ - 'vs/workbench/workbench.web.main.js' - ] - }, { 'target': 'src/vs/workbench/workbench.desktop.main.ts', 'layer': 'electron-browser', diff --git a/src/vs/code/browser/workbench/workbench.ts b/src/vs/code/browser/workbench/workbench.ts index 5df8685e43539..533cb26ae8e5c 100644 --- a/src/vs/code/browser/workbench/workbench.ts +++ b/src/vs/code/browser/workbench/workbench.ts @@ -21,7 +21,7 @@ import { isFolderToOpen, isWorkspaceToOpen } from '../../../platform/window/comm import type { IWorkbenchConstructionOptions, IWorkspace, IWorkspaceProvider } from '../../../workbench/browser/web.api.js'; import { AuthenticationSessionInfo } from '../../../workbench/services/authentication/browser/authenticationService.js'; import type { IURLCallbackProvider } from '../../../workbench/services/url/browser/urlService.js'; -import { create } from '../../../workbench/workbench.web.main.js'; +import { create } from '../../../workbench/workbench.web.main.internal.js'; interface ISecretStorageCrypto { seal(data: string): Promise; diff --git a/src/vs/workbench/browser/web.main.ts b/src/vs/workbench/browser/web.main.ts index 55929182a6bc5..1846f9757e693 100644 --- a/src/vs/workbench/browser/web.main.ts +++ b/src/vs/workbench/browser/web.main.ts @@ -262,7 +262,7 @@ export class BrowserMain extends Disposable { // // NOTE: Please do NOT register services here. Use `registerSingleton()` // from `workbench.common.main.ts` if the service is shared between - // desktop and web or `workbench.web.main.ts` if the service + // desktop and web or `workbench.web.main.internal.ts` if the service // is web only. // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -321,7 +321,7 @@ export class BrowserMain extends Disposable { // // NOTE: Please do NOT register services here. Use `registerSingleton()` // from `workbench.common.main.ts` if the service is shared between - // desktop and web or `workbench.web.main.ts` if the service + // desktop and web or `workbench.web.main.internal.ts` if the service // is web only. // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -382,7 +382,7 @@ export class BrowserMain extends Disposable { // // NOTE: Please do NOT register services here. Use `registerSingleton()` // from `workbench.common.main.ts` if the service is shared between - // desktop and web or `workbench.web.main.ts` if the service + // desktop and web or `workbench.web.main.internal.ts` if the service // is web only. // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -412,7 +412,7 @@ export class BrowserMain extends Disposable { // // NOTE: Please do NOT register services here. Use `registerSingleton()` // from `workbench.common.main.ts` if the service is shared between - // desktop and web or `workbench.web.main.ts` if the service + // desktop and web or `workbench.web.main.internal.ts` if the service // is web only. // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/src/vs/workbench/workbench.web.main.internal.ts b/src/vs/workbench/workbench.web.main.internal.ts index 1a56bac8097d0..bc86bfd1f53cd 100644 --- a/src/vs/workbench/workbench.web.main.internal.ts +++ b/src/vs/workbench/workbench.web.main.internal.ts @@ -3,16 +3,219 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ + +// ####################################################################### +// ### ### +// ### !!! PLEASE ADD COMMON IMPORTS INTO WORKBENCH.COMMON.MAIN.TS !!! ### +// ### ### +// ####################################################################### + + +//#region --- workbench common + +import './workbench.common.main.js'; + +//#endregion + + +//#region --- workbench parts + +import './browser/parts/dialogs/dialog.web.contribution.js'; + +//#endregion + + +//#region --- workbench (web main) + +import './browser/web.main.js'; + +//#endregion + + +//#region --- workbench services + +import './services/integrity/browser/integrityService.js'; +import './services/search/browser/searchService.js'; +import './services/textfile/browser/browserTextFileService.js'; +import './services/keybinding/browser/keyboardLayoutService.js'; +import './services/extensions/browser/extensionService.js'; +import './services/extensionManagement/browser/extensionsProfileScannerService.js'; +import './services/extensions/browser/extensionsScannerService.js'; +import './services/extensionManagement/browser/webExtensionsScannerService.js'; +import './services/extensionManagement/common/extensionManagementServerService.js'; +import './services/mcp/browser/mcpWorkbenchManagementService.js'; +import './services/extensionManagement/browser/extensionGalleryManifestService.js'; +import './services/telemetry/browser/telemetryService.js'; +import './services/url/browser/urlService.js'; +import './services/update/browser/updateService.js'; +import './services/workspaces/browser/workspacesService.js'; +import './services/workspaces/browser/workspaceEditingService.js'; +import './services/dialogs/browser/fileDialogService.js'; +import './services/host/browser/browserHostService.js'; +import './services/lifecycle/browser/lifecycleService.js'; +import './services/clipboard/browser/clipboardService.js'; +import './services/localization/browser/localeService.js'; +import './services/path/browser/pathService.js'; +import './services/themes/browser/browserHostColorSchemeService.js'; +import './services/encryption/browser/encryptionService.js'; +import './services/imageResize/browser/imageResizeService.js'; +import './services/secrets/browser/secretStorageService.js'; +import './services/workingCopy/browser/workingCopyBackupService.js'; +import './services/tunnel/browser/tunnelService.js'; +import './services/files/browser/elevatedFileService.js'; +import './services/workingCopy/browser/workingCopyHistoryService.js'; +import './services/userDataSync/browser/webUserDataSyncEnablementService.js'; +import './services/userDataProfile/browser/userDataProfileStorageService.js'; +import './services/configurationResolver/browser/configurationResolverService.js'; +import '../platform/extensionResourceLoader/browser/extensionResourceLoaderService.js'; +import './services/auxiliaryWindow/browser/auxiliaryWindowService.js'; +import './services/browserElements/browser/webBrowserElementsService.js'; + +import { InstantiationType, registerSingleton } from '../platform/instantiation/common/extensions.js'; +import { IAccessibilityService } from '../platform/accessibility/common/accessibility.js'; +import { IContextMenuService } from '../platform/contextview/browser/contextView.js'; +import { ContextMenuService } from '../platform/contextview/browser/contextMenuService.js'; +import { IExtensionTipsService } from '../platform/extensionManagement/common/extensionManagement.js'; +import { ExtensionTipsService } from '../platform/extensionManagement/common/extensionTipsService.js'; +import { IWorkbenchExtensionManagementService } from './services/extensionManagement/common/extensionManagement.js'; +import { ExtensionManagementService } from './services/extensionManagement/common/extensionManagementService.js'; +import { LogLevel } from '../platform/log/common/log.js'; +import { UserDataSyncMachinesService, IUserDataSyncMachinesService } from '../platform/userDataSync/common/userDataSyncMachines.js'; +import { IUserDataSyncStoreService, IUserDataSyncService, IUserDataAutoSyncService, IUserDataSyncLocalStoreService, IUserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSync.js'; +import { UserDataSyncStoreService } from '../platform/userDataSync/common/userDataSyncStoreService.js'; +import { UserDataSyncLocalStoreService } from '../platform/userDataSync/common/userDataSyncLocalStoreService.js'; +import { UserDataSyncService } from '../platform/userDataSync/common/userDataSyncService.js'; +import { IUserDataSyncAccountService, UserDataSyncAccountService } from '../platform/userDataSync/common/userDataSyncAccount.js'; +import { UserDataAutoSyncService } from '../platform/userDataSync/common/userDataAutoSyncService.js'; +import { AccessibilityService } from '../platform/accessibility/browser/accessibilityService.js'; +import { ICustomEndpointTelemetryService } from '../platform/telemetry/common/telemetry.js'; +import { NullEndpointTelemetryService } from '../platform/telemetry/common/telemetryUtils.js'; +import { ITitleService } from './services/title/browser/titleService.js'; +import { BrowserTitleService } from './browser/parts/titlebar/titlebarPart.js'; +import { ITimerService, TimerService } from './services/timer/browser/timerService.js'; +import { IDiagnosticsService, NullDiagnosticsService } from '../platform/diagnostics/common/diagnostics.js'; +import { ILanguagePackService } from '../platform/languagePacks/common/languagePacks.js'; +import { WebLanguagePacksService } from '../platform/languagePacks/browser/languagePacks.js'; +import { IWebContentExtractorService, NullWebContentExtractorService, ISharedWebContentExtractorService, NullSharedWebContentExtractorService } from '../platform/webContentExtractor/common/webContentExtractor.js'; +import { IMcpGalleryManifestService } from '../platform/mcp/common/mcpGalleryManifest.js'; +import { WorkbenchMcpGalleryManifestService } from './services/mcp/browser/mcpGalleryManifestService.js'; + +registerSingleton(IWorkbenchExtensionManagementService, ExtensionManagementService, InstantiationType.Delayed); +registerSingleton(IAccessibilityService, AccessibilityService, InstantiationType.Delayed); +registerSingleton(IContextMenuService, ContextMenuService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncStoreService, UserDataSyncStoreService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncMachinesService, UserDataSyncMachinesService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncLocalStoreService, UserDataSyncLocalStoreService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncAccountService, UserDataSyncAccountService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncService, UserDataSyncService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncResourceProviderService, UserDataSyncResourceProviderService, InstantiationType.Delayed); +registerSingleton(IUserDataAutoSyncService, UserDataAutoSyncService, InstantiationType.Eager /* Eager to start auto sync */); +registerSingleton(ITitleService, BrowserTitleService, InstantiationType.Eager); +registerSingleton(IExtensionTipsService, ExtensionTipsService, InstantiationType.Delayed); +registerSingleton(ITimerService, TimerService, InstantiationType.Delayed); +registerSingleton(ICustomEndpointTelemetryService, NullEndpointTelemetryService, InstantiationType.Delayed); +registerSingleton(IDiagnosticsService, NullDiagnosticsService, InstantiationType.Delayed); +registerSingleton(ILanguagePackService, WebLanguagePacksService, InstantiationType.Delayed); +registerSingleton(IWebContentExtractorService, NullWebContentExtractorService, InstantiationType.Delayed); +registerSingleton(ISharedWebContentExtractorService, NullSharedWebContentExtractorService, InstantiationType.Delayed); +registerSingleton(IMcpGalleryManifestService, WorkbenchMcpGalleryManifestService, InstantiationType.Delayed); + +//#endregion + + +//#region --- workbench contributions + +// Logs +import './contrib/logs/browser/logs.contribution.js'; + +// Localization +import './contrib/localization/browser/localization.contribution.js'; + +// Performance +import './contrib/performance/browser/performance.web.contribution.js'; + +// Preferences +import './contrib/preferences/browser/keyboardLayoutPicker.js'; + +// Debug +import './contrib/debug/browser/extensionHostDebugService.js'; + +// Welcome Banner +import './contrib/welcomeBanner/browser/welcomeBanner.contribution.js'; + +// Webview +import './contrib/webview/browser/webview.web.contribution.js'; + +// Extensions Management +import './contrib/extensions/browser/extensions.web.contribution.js'; + +// Terminal +import './contrib/terminal/browser/terminal.web.contribution.js'; +import './contrib/externalTerminal/browser/externalTerminal.contribution.js'; +import './contrib/terminal/browser/terminalInstanceService.js'; + +// Tasks +import './contrib/tasks/browser/taskService.js'; + +// Tags +import './contrib/tags/browser/workspaceTagsService.js'; + +// Issues +import './contrib/issue/browser/issue.contribution.js'; + +// Splash +import './contrib/splash/browser/splash.contribution.js'; + +// Remote Start Entry for the Web +import './contrib/remote/browser/remoteStartEntry.contribution.js'; + +// Process Explorer +import './contrib/processExplorer/browser/processExplorer.web.contribution.js'; + +//#endregion + + +//#region --- export workbench factory + // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // // Do NOT change these exports in a way that something is removed unless // intentional. These exports are used by web embedders and thus require // an adoption when something changes. // -// Specifically we provide this module for legacy reasons because it used -// to be the main entry point for web as long as we supported both ESM and -// AMD loading. -// // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -export * from './workbench.web.main.js'; +import { create, commands, env, window, workspace, logger } from './browser/web.factory.js'; +import { Menu } from './browser/web.api.js'; +import { URI } from '../base/common/uri.js'; +import { Event, Emitter } from '../base/common/event.js'; +import { Disposable } from '../base/common/lifecycle.js'; +import { GroupOrientation } from './services/editor/common/editorGroupsService.js'; +import { UserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSyncResourceProvider.js'; +import { RemoteAuthorityResolverError, RemoteAuthorityResolverErrorCode } from '../platform/remote/common/remoteAuthorityResolver.js'; + +export { + + // Factory + create, + + // Basic Types + URI, + Event, + Emitter, + Disposable, + GroupOrientation, + LogLevel, + RemoteAuthorityResolverError, + RemoteAuthorityResolverErrorCode, + + // Facade API + env, + window, + workspace, + commands, + logger, + Menu +}; + +//#endregion diff --git a/src/vs/workbench/workbench.web.main.ts b/src/vs/workbench/workbench.web.main.ts deleted file mode 100644 index bc86bfd1f53cd..0000000000000 --- a/src/vs/workbench/workbench.web.main.ts +++ /dev/null @@ -1,221 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - - -// ####################################################################### -// ### ### -// ### !!! PLEASE ADD COMMON IMPORTS INTO WORKBENCH.COMMON.MAIN.TS !!! ### -// ### ### -// ####################################################################### - - -//#region --- workbench common - -import './workbench.common.main.js'; - -//#endregion - - -//#region --- workbench parts - -import './browser/parts/dialogs/dialog.web.contribution.js'; - -//#endregion - - -//#region --- workbench (web main) - -import './browser/web.main.js'; - -//#endregion - - -//#region --- workbench services - -import './services/integrity/browser/integrityService.js'; -import './services/search/browser/searchService.js'; -import './services/textfile/browser/browserTextFileService.js'; -import './services/keybinding/browser/keyboardLayoutService.js'; -import './services/extensions/browser/extensionService.js'; -import './services/extensionManagement/browser/extensionsProfileScannerService.js'; -import './services/extensions/browser/extensionsScannerService.js'; -import './services/extensionManagement/browser/webExtensionsScannerService.js'; -import './services/extensionManagement/common/extensionManagementServerService.js'; -import './services/mcp/browser/mcpWorkbenchManagementService.js'; -import './services/extensionManagement/browser/extensionGalleryManifestService.js'; -import './services/telemetry/browser/telemetryService.js'; -import './services/url/browser/urlService.js'; -import './services/update/browser/updateService.js'; -import './services/workspaces/browser/workspacesService.js'; -import './services/workspaces/browser/workspaceEditingService.js'; -import './services/dialogs/browser/fileDialogService.js'; -import './services/host/browser/browserHostService.js'; -import './services/lifecycle/browser/lifecycleService.js'; -import './services/clipboard/browser/clipboardService.js'; -import './services/localization/browser/localeService.js'; -import './services/path/browser/pathService.js'; -import './services/themes/browser/browserHostColorSchemeService.js'; -import './services/encryption/browser/encryptionService.js'; -import './services/imageResize/browser/imageResizeService.js'; -import './services/secrets/browser/secretStorageService.js'; -import './services/workingCopy/browser/workingCopyBackupService.js'; -import './services/tunnel/browser/tunnelService.js'; -import './services/files/browser/elevatedFileService.js'; -import './services/workingCopy/browser/workingCopyHistoryService.js'; -import './services/userDataSync/browser/webUserDataSyncEnablementService.js'; -import './services/userDataProfile/browser/userDataProfileStorageService.js'; -import './services/configurationResolver/browser/configurationResolverService.js'; -import '../platform/extensionResourceLoader/browser/extensionResourceLoaderService.js'; -import './services/auxiliaryWindow/browser/auxiliaryWindowService.js'; -import './services/browserElements/browser/webBrowserElementsService.js'; - -import { InstantiationType, registerSingleton } from '../platform/instantiation/common/extensions.js'; -import { IAccessibilityService } from '../platform/accessibility/common/accessibility.js'; -import { IContextMenuService } from '../platform/contextview/browser/contextView.js'; -import { ContextMenuService } from '../platform/contextview/browser/contextMenuService.js'; -import { IExtensionTipsService } from '../platform/extensionManagement/common/extensionManagement.js'; -import { ExtensionTipsService } from '../platform/extensionManagement/common/extensionTipsService.js'; -import { IWorkbenchExtensionManagementService } from './services/extensionManagement/common/extensionManagement.js'; -import { ExtensionManagementService } from './services/extensionManagement/common/extensionManagementService.js'; -import { LogLevel } from '../platform/log/common/log.js'; -import { UserDataSyncMachinesService, IUserDataSyncMachinesService } from '../platform/userDataSync/common/userDataSyncMachines.js'; -import { IUserDataSyncStoreService, IUserDataSyncService, IUserDataAutoSyncService, IUserDataSyncLocalStoreService, IUserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSync.js'; -import { UserDataSyncStoreService } from '../platform/userDataSync/common/userDataSyncStoreService.js'; -import { UserDataSyncLocalStoreService } from '../platform/userDataSync/common/userDataSyncLocalStoreService.js'; -import { UserDataSyncService } from '../platform/userDataSync/common/userDataSyncService.js'; -import { IUserDataSyncAccountService, UserDataSyncAccountService } from '../platform/userDataSync/common/userDataSyncAccount.js'; -import { UserDataAutoSyncService } from '../platform/userDataSync/common/userDataAutoSyncService.js'; -import { AccessibilityService } from '../platform/accessibility/browser/accessibilityService.js'; -import { ICustomEndpointTelemetryService } from '../platform/telemetry/common/telemetry.js'; -import { NullEndpointTelemetryService } from '../platform/telemetry/common/telemetryUtils.js'; -import { ITitleService } from './services/title/browser/titleService.js'; -import { BrowserTitleService } from './browser/parts/titlebar/titlebarPart.js'; -import { ITimerService, TimerService } from './services/timer/browser/timerService.js'; -import { IDiagnosticsService, NullDiagnosticsService } from '../platform/diagnostics/common/diagnostics.js'; -import { ILanguagePackService } from '../platform/languagePacks/common/languagePacks.js'; -import { WebLanguagePacksService } from '../platform/languagePacks/browser/languagePacks.js'; -import { IWebContentExtractorService, NullWebContentExtractorService, ISharedWebContentExtractorService, NullSharedWebContentExtractorService } from '../platform/webContentExtractor/common/webContentExtractor.js'; -import { IMcpGalleryManifestService } from '../platform/mcp/common/mcpGalleryManifest.js'; -import { WorkbenchMcpGalleryManifestService } from './services/mcp/browser/mcpGalleryManifestService.js'; - -registerSingleton(IWorkbenchExtensionManagementService, ExtensionManagementService, InstantiationType.Delayed); -registerSingleton(IAccessibilityService, AccessibilityService, InstantiationType.Delayed); -registerSingleton(IContextMenuService, ContextMenuService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncStoreService, UserDataSyncStoreService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncMachinesService, UserDataSyncMachinesService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncLocalStoreService, UserDataSyncLocalStoreService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncAccountService, UserDataSyncAccountService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncService, UserDataSyncService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncResourceProviderService, UserDataSyncResourceProviderService, InstantiationType.Delayed); -registerSingleton(IUserDataAutoSyncService, UserDataAutoSyncService, InstantiationType.Eager /* Eager to start auto sync */); -registerSingleton(ITitleService, BrowserTitleService, InstantiationType.Eager); -registerSingleton(IExtensionTipsService, ExtensionTipsService, InstantiationType.Delayed); -registerSingleton(ITimerService, TimerService, InstantiationType.Delayed); -registerSingleton(ICustomEndpointTelemetryService, NullEndpointTelemetryService, InstantiationType.Delayed); -registerSingleton(IDiagnosticsService, NullDiagnosticsService, InstantiationType.Delayed); -registerSingleton(ILanguagePackService, WebLanguagePacksService, InstantiationType.Delayed); -registerSingleton(IWebContentExtractorService, NullWebContentExtractorService, InstantiationType.Delayed); -registerSingleton(ISharedWebContentExtractorService, NullSharedWebContentExtractorService, InstantiationType.Delayed); -registerSingleton(IMcpGalleryManifestService, WorkbenchMcpGalleryManifestService, InstantiationType.Delayed); - -//#endregion - - -//#region --- workbench contributions - -// Logs -import './contrib/logs/browser/logs.contribution.js'; - -// Localization -import './contrib/localization/browser/localization.contribution.js'; - -// Performance -import './contrib/performance/browser/performance.web.contribution.js'; - -// Preferences -import './contrib/preferences/browser/keyboardLayoutPicker.js'; - -// Debug -import './contrib/debug/browser/extensionHostDebugService.js'; - -// Welcome Banner -import './contrib/welcomeBanner/browser/welcomeBanner.contribution.js'; - -// Webview -import './contrib/webview/browser/webview.web.contribution.js'; - -// Extensions Management -import './contrib/extensions/browser/extensions.web.contribution.js'; - -// Terminal -import './contrib/terminal/browser/terminal.web.contribution.js'; -import './contrib/externalTerminal/browser/externalTerminal.contribution.js'; -import './contrib/terminal/browser/terminalInstanceService.js'; - -// Tasks -import './contrib/tasks/browser/taskService.js'; - -// Tags -import './contrib/tags/browser/workspaceTagsService.js'; - -// Issues -import './contrib/issue/browser/issue.contribution.js'; - -// Splash -import './contrib/splash/browser/splash.contribution.js'; - -// Remote Start Entry for the Web -import './contrib/remote/browser/remoteStartEntry.contribution.js'; - -// Process Explorer -import './contrib/processExplorer/browser/processExplorer.web.contribution.js'; - -//#endregion - - -//#region --- export workbench factory - -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -// -// Do NOT change these exports in a way that something is removed unless -// intentional. These exports are used by web embedders and thus require -// an adoption when something changes. -// -// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -import { create, commands, env, window, workspace, logger } from './browser/web.factory.js'; -import { Menu } from './browser/web.api.js'; -import { URI } from '../base/common/uri.js'; -import { Event, Emitter } from '../base/common/event.js'; -import { Disposable } from '../base/common/lifecycle.js'; -import { GroupOrientation } from './services/editor/common/editorGroupsService.js'; -import { UserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSyncResourceProvider.js'; -import { RemoteAuthorityResolverError, RemoteAuthorityResolverErrorCode } from '../platform/remote/common/remoteAuthorityResolver.js'; - -export { - - // Factory - create, - - // Basic Types - URI, - Event, - Emitter, - Disposable, - GroupOrientation, - LogLevel, - RemoteAuthorityResolverError, - RemoteAuthorityResolverErrorCode, - - // Facade API - env, - window, - workspace, - commands, - logger, - Menu -}; - -//#endregion From 130df986a66e50c2c24b697c1a298219dac41e31 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Sun, 28 Dec 2025 13:58:52 +0100 Subject: [PATCH 5/6] . --- eslint.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint.config.js b/eslint.config.js index 53345a7a3a98c..9fa3bd5d7cd1e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1864,7 +1864,7 @@ export default tseslint.config( ] }, { - 'target': 'src/vs/{loader.d.ts,monaco.d.ts,nls.ts}', + 'target': 'src/vs/{monaco.d.ts,nls.ts}', 'restrictions': [] }, { From edc0d9a573bd13d1d953f4284273720a9e955359 Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Sun, 28 Dec 2025 17:44:15 +0100 Subject: [PATCH 6/6] back to 2 modules --- eslint.config.js | 23 ++- src/vs/workbench/browser/web.main.ts | 8 +- .../workbench/workbench.web.main.internal.ts | 179 +----------------- src/vs/workbench/workbench.web.main.ts | 175 +++++++++++++++++ 4 files changed, 203 insertions(+), 182 deletions(-) create mode 100644 src/vs/workbench/workbench.web.main.ts diff --git a/eslint.config.js b/eslint.config.js index 9fa3bd5d7cd1e..10a2fa9ee0b32 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1757,6 +1757,10 @@ export default tseslint.config( 'vs/editor/~', 'vs/editor/contrib/*/~', 'vs/code/~', + { + 'when': 'hasBrowser', + 'pattern': 'vs/workbench/workbench.web.main.js' + }, { 'when': 'hasBrowser', 'pattern': 'vs/workbench/workbench.web.main.internal.js' @@ -1824,7 +1828,7 @@ export default tseslint.config( ] }, { - 'target': 'src/vs/workbench/workbench.web.main.internal.ts', + 'target': 'src/vs/workbench/workbench.web.main.ts', 'layer': 'browser', 'restrictions': [ 'vs/base/~', @@ -1840,6 +1844,23 @@ export default tseslint.config( 'vs/workbench/workbench.common.main.js' ] }, + { + 'target': 'src/vs/workbench/workbench.web.main.internal.ts', + 'layer': 'browser', + 'restrictions': [ + 'vs/base/~', + 'vs/base/parts/*/~', + 'vs/platform/*/~', + 'vs/editor/~', + 'vs/editor/contrib/*/~', + 'vs/editor/editor.all.js', + 'vs/workbench/~', + 'vs/workbench/api/~', + 'vs/workbench/services/*/~', + 'vs/workbench/contrib/*/~', + 'vs/workbench/workbench.web.main.js' + ] + }, { 'target': 'src/vs/workbench/workbench.desktop.main.ts', 'layer': 'electron-browser', diff --git a/src/vs/workbench/browser/web.main.ts b/src/vs/workbench/browser/web.main.ts index 1846f9757e693..55929182a6bc5 100644 --- a/src/vs/workbench/browser/web.main.ts +++ b/src/vs/workbench/browser/web.main.ts @@ -262,7 +262,7 @@ export class BrowserMain extends Disposable { // // NOTE: Please do NOT register services here. Use `registerSingleton()` // from `workbench.common.main.ts` if the service is shared between - // desktop and web or `workbench.web.main.internal.ts` if the service + // desktop and web or `workbench.web.main.ts` if the service // is web only. // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -321,7 +321,7 @@ export class BrowserMain extends Disposable { // // NOTE: Please do NOT register services here. Use `registerSingleton()` // from `workbench.common.main.ts` if the service is shared between - // desktop and web or `workbench.web.main.internal.ts` if the service + // desktop and web or `workbench.web.main.ts` if the service // is web only. // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -382,7 +382,7 @@ export class BrowserMain extends Disposable { // // NOTE: Please do NOT register services here. Use `registerSingleton()` // from `workbench.common.main.ts` if the service is shared between - // desktop and web or `workbench.web.main.internal.ts` if the service + // desktop and web or `workbench.web.main.ts` if the service // is web only. // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -412,7 +412,7 @@ export class BrowserMain extends Disposable { // // NOTE: Please do NOT register services here. Use `registerSingleton()` // from `workbench.common.main.ts` if the service is shared between - // desktop and web or `workbench.web.main.internal.ts` if the service + // desktop and web or `workbench.web.main.ts` if the service // is web only. // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! diff --git a/src/vs/workbench/workbench.web.main.internal.ts b/src/vs/workbench/workbench.web.main.internal.ts index bc86bfd1f53cd..b5a0cff14c68a 100644 --- a/src/vs/workbench/workbench.web.main.internal.ts +++ b/src/vs/workbench/workbench.web.main.internal.ts @@ -3,180 +3,6 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ - -// ####################################################################### -// ### ### -// ### !!! PLEASE ADD COMMON IMPORTS INTO WORKBENCH.COMMON.MAIN.TS !!! ### -// ### ### -// ####################################################################### - - -//#region --- workbench common - -import './workbench.common.main.js'; - -//#endregion - - -//#region --- workbench parts - -import './browser/parts/dialogs/dialog.web.contribution.js'; - -//#endregion - - -//#region --- workbench (web main) - -import './browser/web.main.js'; - -//#endregion - - -//#region --- workbench services - -import './services/integrity/browser/integrityService.js'; -import './services/search/browser/searchService.js'; -import './services/textfile/browser/browserTextFileService.js'; -import './services/keybinding/browser/keyboardLayoutService.js'; -import './services/extensions/browser/extensionService.js'; -import './services/extensionManagement/browser/extensionsProfileScannerService.js'; -import './services/extensions/browser/extensionsScannerService.js'; -import './services/extensionManagement/browser/webExtensionsScannerService.js'; -import './services/extensionManagement/common/extensionManagementServerService.js'; -import './services/mcp/browser/mcpWorkbenchManagementService.js'; -import './services/extensionManagement/browser/extensionGalleryManifestService.js'; -import './services/telemetry/browser/telemetryService.js'; -import './services/url/browser/urlService.js'; -import './services/update/browser/updateService.js'; -import './services/workspaces/browser/workspacesService.js'; -import './services/workspaces/browser/workspaceEditingService.js'; -import './services/dialogs/browser/fileDialogService.js'; -import './services/host/browser/browserHostService.js'; -import './services/lifecycle/browser/lifecycleService.js'; -import './services/clipboard/browser/clipboardService.js'; -import './services/localization/browser/localeService.js'; -import './services/path/browser/pathService.js'; -import './services/themes/browser/browserHostColorSchemeService.js'; -import './services/encryption/browser/encryptionService.js'; -import './services/imageResize/browser/imageResizeService.js'; -import './services/secrets/browser/secretStorageService.js'; -import './services/workingCopy/browser/workingCopyBackupService.js'; -import './services/tunnel/browser/tunnelService.js'; -import './services/files/browser/elevatedFileService.js'; -import './services/workingCopy/browser/workingCopyHistoryService.js'; -import './services/userDataSync/browser/webUserDataSyncEnablementService.js'; -import './services/userDataProfile/browser/userDataProfileStorageService.js'; -import './services/configurationResolver/browser/configurationResolverService.js'; -import '../platform/extensionResourceLoader/browser/extensionResourceLoaderService.js'; -import './services/auxiliaryWindow/browser/auxiliaryWindowService.js'; -import './services/browserElements/browser/webBrowserElementsService.js'; - -import { InstantiationType, registerSingleton } from '../platform/instantiation/common/extensions.js'; -import { IAccessibilityService } from '../platform/accessibility/common/accessibility.js'; -import { IContextMenuService } from '../platform/contextview/browser/contextView.js'; -import { ContextMenuService } from '../platform/contextview/browser/contextMenuService.js'; -import { IExtensionTipsService } from '../platform/extensionManagement/common/extensionManagement.js'; -import { ExtensionTipsService } from '../platform/extensionManagement/common/extensionTipsService.js'; -import { IWorkbenchExtensionManagementService } from './services/extensionManagement/common/extensionManagement.js'; -import { ExtensionManagementService } from './services/extensionManagement/common/extensionManagementService.js'; -import { LogLevel } from '../platform/log/common/log.js'; -import { UserDataSyncMachinesService, IUserDataSyncMachinesService } from '../platform/userDataSync/common/userDataSyncMachines.js'; -import { IUserDataSyncStoreService, IUserDataSyncService, IUserDataAutoSyncService, IUserDataSyncLocalStoreService, IUserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSync.js'; -import { UserDataSyncStoreService } from '../platform/userDataSync/common/userDataSyncStoreService.js'; -import { UserDataSyncLocalStoreService } from '../platform/userDataSync/common/userDataSyncLocalStoreService.js'; -import { UserDataSyncService } from '../platform/userDataSync/common/userDataSyncService.js'; -import { IUserDataSyncAccountService, UserDataSyncAccountService } from '../platform/userDataSync/common/userDataSyncAccount.js'; -import { UserDataAutoSyncService } from '../platform/userDataSync/common/userDataAutoSyncService.js'; -import { AccessibilityService } from '../platform/accessibility/browser/accessibilityService.js'; -import { ICustomEndpointTelemetryService } from '../platform/telemetry/common/telemetry.js'; -import { NullEndpointTelemetryService } from '../platform/telemetry/common/telemetryUtils.js'; -import { ITitleService } from './services/title/browser/titleService.js'; -import { BrowserTitleService } from './browser/parts/titlebar/titlebarPart.js'; -import { ITimerService, TimerService } from './services/timer/browser/timerService.js'; -import { IDiagnosticsService, NullDiagnosticsService } from '../platform/diagnostics/common/diagnostics.js'; -import { ILanguagePackService } from '../platform/languagePacks/common/languagePacks.js'; -import { WebLanguagePacksService } from '../platform/languagePacks/browser/languagePacks.js'; -import { IWebContentExtractorService, NullWebContentExtractorService, ISharedWebContentExtractorService, NullSharedWebContentExtractorService } from '../platform/webContentExtractor/common/webContentExtractor.js'; -import { IMcpGalleryManifestService } from '../platform/mcp/common/mcpGalleryManifest.js'; -import { WorkbenchMcpGalleryManifestService } from './services/mcp/browser/mcpGalleryManifestService.js'; - -registerSingleton(IWorkbenchExtensionManagementService, ExtensionManagementService, InstantiationType.Delayed); -registerSingleton(IAccessibilityService, AccessibilityService, InstantiationType.Delayed); -registerSingleton(IContextMenuService, ContextMenuService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncStoreService, UserDataSyncStoreService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncMachinesService, UserDataSyncMachinesService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncLocalStoreService, UserDataSyncLocalStoreService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncAccountService, UserDataSyncAccountService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncService, UserDataSyncService, InstantiationType.Delayed); -registerSingleton(IUserDataSyncResourceProviderService, UserDataSyncResourceProviderService, InstantiationType.Delayed); -registerSingleton(IUserDataAutoSyncService, UserDataAutoSyncService, InstantiationType.Eager /* Eager to start auto sync */); -registerSingleton(ITitleService, BrowserTitleService, InstantiationType.Eager); -registerSingleton(IExtensionTipsService, ExtensionTipsService, InstantiationType.Delayed); -registerSingleton(ITimerService, TimerService, InstantiationType.Delayed); -registerSingleton(ICustomEndpointTelemetryService, NullEndpointTelemetryService, InstantiationType.Delayed); -registerSingleton(IDiagnosticsService, NullDiagnosticsService, InstantiationType.Delayed); -registerSingleton(ILanguagePackService, WebLanguagePacksService, InstantiationType.Delayed); -registerSingleton(IWebContentExtractorService, NullWebContentExtractorService, InstantiationType.Delayed); -registerSingleton(ISharedWebContentExtractorService, NullSharedWebContentExtractorService, InstantiationType.Delayed); -registerSingleton(IMcpGalleryManifestService, WorkbenchMcpGalleryManifestService, InstantiationType.Delayed); - -//#endregion - - -//#region --- workbench contributions - -// Logs -import './contrib/logs/browser/logs.contribution.js'; - -// Localization -import './contrib/localization/browser/localization.contribution.js'; - -// Performance -import './contrib/performance/browser/performance.web.contribution.js'; - -// Preferences -import './contrib/preferences/browser/keyboardLayoutPicker.js'; - -// Debug -import './contrib/debug/browser/extensionHostDebugService.js'; - -// Welcome Banner -import './contrib/welcomeBanner/browser/welcomeBanner.contribution.js'; - -// Webview -import './contrib/webview/browser/webview.web.contribution.js'; - -// Extensions Management -import './contrib/extensions/browser/extensions.web.contribution.js'; - -// Terminal -import './contrib/terminal/browser/terminal.web.contribution.js'; -import './contrib/externalTerminal/browser/externalTerminal.contribution.js'; -import './contrib/terminal/browser/terminalInstanceService.js'; - -// Tasks -import './contrib/tasks/browser/taskService.js'; - -// Tags -import './contrib/tags/browser/workspaceTagsService.js'; - -// Issues -import './contrib/issue/browser/issue.contribution.js'; - -// Splash -import './contrib/splash/browser/splash.contribution.js'; - -// Remote Start Entry for the Web -import './contrib/remote/browser/remoteStartEntry.contribution.js'; - -// Process Explorer -import './contrib/processExplorer/browser/processExplorer.web.contribution.js'; - -//#endregion - - -//#region --- export workbench factory - // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // // Do NOT change these exports in a way that something is removed unless @@ -185,14 +11,15 @@ import './contrib/processExplorer/browser/processExplorer.web.contribution.js'; // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +import './workbench.web.main.js'; import { create, commands, env, window, workspace, logger } from './browser/web.factory.js'; import { Menu } from './browser/web.api.js'; import { URI } from '../base/common/uri.js'; import { Event, Emitter } from '../base/common/event.js'; import { Disposable } from '../base/common/lifecycle.js'; import { GroupOrientation } from './services/editor/common/editorGroupsService.js'; -import { UserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSyncResourceProvider.js'; import { RemoteAuthorityResolverError, RemoteAuthorityResolverErrorCode } from '../platform/remote/common/remoteAuthorityResolver.js'; +import { LogLevel } from '../platform/log/common/log.js'; export { @@ -217,5 +44,3 @@ export { logger, Menu }; - -//#endregion diff --git a/src/vs/workbench/workbench.web.main.ts b/src/vs/workbench/workbench.web.main.ts new file mode 100644 index 0000000000000..342ad97659b8a --- /dev/null +++ b/src/vs/workbench/workbench.web.main.ts @@ -0,0 +1,175 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + + +// ####################################################################### +// ### ### +// ### !!! PLEASE ADD COMMON IMPORTS INTO WORKBENCH.COMMON.MAIN.TS !!! ### +// ### ### +// ####################################################################### + + +//#region --- workbench common + +import './workbench.common.main.js'; + +//#endregion + + +//#region --- workbench parts + +import './browser/parts/dialogs/dialog.web.contribution.js'; + +//#endregion + + +//#region --- workbench (web main) + +import './browser/web.main.js'; + +//#endregion + + +//#region --- workbench services + +import './services/integrity/browser/integrityService.js'; +import './services/search/browser/searchService.js'; +import './services/textfile/browser/browserTextFileService.js'; +import './services/keybinding/browser/keyboardLayoutService.js'; +import './services/extensions/browser/extensionService.js'; +import './services/extensionManagement/browser/extensionsProfileScannerService.js'; +import './services/extensions/browser/extensionsScannerService.js'; +import './services/extensionManagement/browser/webExtensionsScannerService.js'; +import './services/extensionManagement/common/extensionManagementServerService.js'; +import './services/mcp/browser/mcpWorkbenchManagementService.js'; +import './services/extensionManagement/browser/extensionGalleryManifestService.js'; +import './services/telemetry/browser/telemetryService.js'; +import './services/url/browser/urlService.js'; +import './services/update/browser/updateService.js'; +import './services/workspaces/browser/workspacesService.js'; +import './services/workspaces/browser/workspaceEditingService.js'; +import './services/dialogs/browser/fileDialogService.js'; +import './services/host/browser/browserHostService.js'; +import './services/lifecycle/browser/lifecycleService.js'; +import './services/clipboard/browser/clipboardService.js'; +import './services/localization/browser/localeService.js'; +import './services/path/browser/pathService.js'; +import './services/themes/browser/browserHostColorSchemeService.js'; +import './services/encryption/browser/encryptionService.js'; +import './services/imageResize/browser/imageResizeService.js'; +import './services/secrets/browser/secretStorageService.js'; +import './services/workingCopy/browser/workingCopyBackupService.js'; +import './services/tunnel/browser/tunnelService.js'; +import './services/files/browser/elevatedFileService.js'; +import './services/workingCopy/browser/workingCopyHistoryService.js'; +import './services/userDataSync/browser/webUserDataSyncEnablementService.js'; +import './services/userDataProfile/browser/userDataProfileStorageService.js'; +import './services/configurationResolver/browser/configurationResolverService.js'; +import '../platform/extensionResourceLoader/browser/extensionResourceLoaderService.js'; +import './services/auxiliaryWindow/browser/auxiliaryWindowService.js'; +import './services/browserElements/browser/webBrowserElementsService.js'; + +import { InstantiationType, registerSingleton } from '../platform/instantiation/common/extensions.js'; +import { IAccessibilityService } from '../platform/accessibility/common/accessibility.js'; +import { IContextMenuService } from '../platform/contextview/browser/contextView.js'; +import { ContextMenuService } from '../platform/contextview/browser/contextMenuService.js'; +import { IExtensionTipsService } from '../platform/extensionManagement/common/extensionManagement.js'; +import { ExtensionTipsService } from '../platform/extensionManagement/common/extensionTipsService.js'; +import { IWorkbenchExtensionManagementService } from './services/extensionManagement/common/extensionManagement.js'; +import { ExtensionManagementService } from './services/extensionManagement/common/extensionManagementService.js'; +import { UserDataSyncMachinesService, IUserDataSyncMachinesService } from '../platform/userDataSync/common/userDataSyncMachines.js'; +import { IUserDataSyncStoreService, IUserDataSyncService, IUserDataAutoSyncService, IUserDataSyncLocalStoreService, IUserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSync.js'; +import { UserDataSyncStoreService } from '../platform/userDataSync/common/userDataSyncStoreService.js'; +import { UserDataSyncLocalStoreService } from '../platform/userDataSync/common/userDataSyncLocalStoreService.js'; +import { UserDataSyncService } from '../platform/userDataSync/common/userDataSyncService.js'; +import { IUserDataSyncAccountService, UserDataSyncAccountService } from '../platform/userDataSync/common/userDataSyncAccount.js'; +import { UserDataAutoSyncService } from '../platform/userDataSync/common/userDataAutoSyncService.js'; +import { AccessibilityService } from '../platform/accessibility/browser/accessibilityService.js'; +import { ICustomEndpointTelemetryService } from '../platform/telemetry/common/telemetry.js'; +import { NullEndpointTelemetryService } from '../platform/telemetry/common/telemetryUtils.js'; +import { ITitleService } from './services/title/browser/titleService.js'; +import { BrowserTitleService } from './browser/parts/titlebar/titlebarPart.js'; +import { ITimerService, TimerService } from './services/timer/browser/timerService.js'; +import { IDiagnosticsService, NullDiagnosticsService } from '../platform/diagnostics/common/diagnostics.js'; +import { ILanguagePackService } from '../platform/languagePacks/common/languagePacks.js'; +import { WebLanguagePacksService } from '../platform/languagePacks/browser/languagePacks.js'; +import { IWebContentExtractorService, NullWebContentExtractorService, ISharedWebContentExtractorService, NullSharedWebContentExtractorService } from '../platform/webContentExtractor/common/webContentExtractor.js'; +import { IMcpGalleryManifestService } from '../platform/mcp/common/mcpGalleryManifest.js'; +import { WorkbenchMcpGalleryManifestService } from './services/mcp/browser/mcpGalleryManifestService.js'; +import { UserDataSyncResourceProviderService } from '../platform/userDataSync/common/userDataSyncResourceProvider.js'; + +registerSingleton(IWorkbenchExtensionManagementService, ExtensionManagementService, InstantiationType.Delayed); +registerSingleton(IAccessibilityService, AccessibilityService, InstantiationType.Delayed); +registerSingleton(IContextMenuService, ContextMenuService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncStoreService, UserDataSyncStoreService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncMachinesService, UserDataSyncMachinesService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncLocalStoreService, UserDataSyncLocalStoreService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncAccountService, UserDataSyncAccountService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncService, UserDataSyncService, InstantiationType.Delayed); +registerSingleton(IUserDataSyncResourceProviderService, UserDataSyncResourceProviderService, InstantiationType.Delayed); +registerSingleton(IUserDataAutoSyncService, UserDataAutoSyncService, InstantiationType.Eager /* Eager to start auto sync */); +registerSingleton(ITitleService, BrowserTitleService, InstantiationType.Eager); +registerSingleton(IExtensionTipsService, ExtensionTipsService, InstantiationType.Delayed); +registerSingleton(ITimerService, TimerService, InstantiationType.Delayed); +registerSingleton(ICustomEndpointTelemetryService, NullEndpointTelemetryService, InstantiationType.Delayed); +registerSingleton(IDiagnosticsService, NullDiagnosticsService, InstantiationType.Delayed); +registerSingleton(ILanguagePackService, WebLanguagePacksService, InstantiationType.Delayed); +registerSingleton(IWebContentExtractorService, NullWebContentExtractorService, InstantiationType.Delayed); +registerSingleton(ISharedWebContentExtractorService, NullSharedWebContentExtractorService, InstantiationType.Delayed); +registerSingleton(IMcpGalleryManifestService, WorkbenchMcpGalleryManifestService, InstantiationType.Delayed); + +//#endregion + + +//#region --- workbench contributions + +// Logs +import './contrib/logs/browser/logs.contribution.js'; + +// Localization +import './contrib/localization/browser/localization.contribution.js'; + +// Performance +import './contrib/performance/browser/performance.web.contribution.js'; + +// Preferences +import './contrib/preferences/browser/keyboardLayoutPicker.js'; + +// Debug +import './contrib/debug/browser/extensionHostDebugService.js'; + +// Welcome Banner +import './contrib/welcomeBanner/browser/welcomeBanner.contribution.js'; + +// Webview +import './contrib/webview/browser/webview.web.contribution.js'; + +// Extensions Management +import './contrib/extensions/browser/extensions.web.contribution.js'; + +// Terminal +import './contrib/terminal/browser/terminal.web.contribution.js'; +import './contrib/externalTerminal/browser/externalTerminal.contribution.js'; +import './contrib/terminal/browser/terminalInstanceService.js'; + +// Tasks +import './contrib/tasks/browser/taskService.js'; + +// Tags +import './contrib/tags/browser/workspaceTagsService.js'; + +// Issues +import './contrib/issue/browser/issue.contribution.js'; + +// Splash +import './contrib/splash/browser/splash.contribution.js'; + +// Remote Start Entry for the Web +import './contrib/remote/browser/remoteStartEntry.contribution.js'; + +// Process Explorer +import './contrib/processExplorer/browser/processExplorer.web.contribution.js'; + +//#endregion