diff --git a/build/azure-pipelines/web/product-build-web.yml b/build/azure-pipelines/web/product-build-web.yml index 71932745be7..1d5dd9798e7 100644 --- a/build/azure-pipelines/web/product-build-web.yml +++ b/build/azure-pipelines/web/product-build-web.yml @@ -150,6 +150,15 @@ jobs: node build/azure-pipelines/upload-cdn.ts displayName: Upload to CDN + - 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.js.map + displayName: Upload sourcemaps (Web Main) + - script: | set -e AZURE_STORAGE_ACCOUNT="vscodeweb" \ @@ -157,7 +166,7 @@ jobs: 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) + displayName: Upload sourcemaps (Web Internal) - script: | set -e diff --git a/build/buildfile.ts b/build/buildfile.ts index 168539f4cae..99a9832f404 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.internal'); +export const workbenchWeb = createModuleDescription('vs/workbench/workbench.web.main'); 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 3f1cc1fdc51..55606d0ff1d 100644 --- a/build/gulpfile.vscode.web.ts +++ b/build/gulpfile.vscode.web.ts @@ -19,6 +19,7 @@ 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'; @@ -81,6 +82,7 @@ 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(); /** @@ -141,8 +143,21 @@ 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 })); + 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) + .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') { + this.emit('data', new VinylFile({ + contents: file.contents, + path: file.path.replace('workbench.web.main.internal.css', 'workbench.web.main.css'), + base: file.base + })); + } + this.emit('data', file); + })); const name = product.nameShort; const packageJsonStream = gulp.src(['remote/web/package.json'], { base: 'remote/web' }) diff --git a/build/lib/optimize.ts b/build/lib/optimize.ts index f5e812e2890..58b8e07fdb3 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, + banner: entryPoint.name === 'vs/workbench/workbench.web.main' ? undefined : banner, // TODO@esm remove line when we stop supporting web-amd-esm-bridge entryPoints: [ { in: path.join(REPO_ROOT_PATH, opts.src, `${entryPoint.name}.js`), diff --git a/eslint.config.js b/eslint.config.js index 52eb95c5ff0..e9809e60dc0 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -771,6 +771,8 @@ 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', 'src/vs/server/node/remoteExtensionHostAgentServer.ts', @@ -1858,7 +1860,7 @@ export default tseslint.config( 'vs/workbench/api/~', 'vs/workbench/services/*/~', 'vs/workbench/contrib/*/~', - 'vs/workbench/workbench.web.main.js' + 'vs/workbench/workbench.common.main.js' ] }, { @@ -1885,7 +1887,7 @@ export default tseslint.config( ] }, { - 'target': 'src/vs/{monaco.d.ts,nls.ts}', + 'target': 'src/vs/{loader.d.ts,monaco.d.ts,nls.ts,nls.messages.ts}', 'restrictions': [] }, { diff --git a/src/vs/nls.messages.ts b/src/vs/nls.messages.ts new file mode 100644 index 00000000000..41f15f247d6 --- /dev/null +++ b/src/vs/nls.messages.ts @@ -0,0 +1,19 @@ +/*--------------------------------------------------------------------------------------------- + * 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 51644b01193..e9183ad7d32 100644 --- a/src/vs/nls.ts +++ b/src/vs/nls.ts @@ -3,13 +3,10 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -export function getNLSMessages(): string[] { - return globalThis._VSCODE_NLS_MESSAGES; -} - -export function getNLSLanguage(): string | undefined { - return globalThis._VSCODE_NLS_LANGUAGE; -} +// 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'; 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 f465335f45e..fe94a56a87e 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 b5a0cff14c6..40dcb51abe6 100644 --- a/src/vs/workbench/workbench.web.main.internal.ts +++ b/src/vs/workbench/workbench.web.main.internal.ts @@ -3,6 +3,180 @@ * 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 @@ -11,15 +185,46 @@ // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -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'; + +// 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 { @@ -44,3 +249,5 @@ export { logger, Menu }; + +//#endregion diff --git a/src/vs/workbench/workbench.web.main.ts b/src/vs/workbench/workbench.web.main.ts index 342ad97659b..93752573d4c 100644 --- a/src/vs/workbench/workbench.web.main.ts +++ b/src/vs/workbench/workbench.web.main.ts @@ -4,172 +4,104 @@ *--------------------------------------------------------------------------------------------*/ -// ####################################################################### -// ### ### -// ### !!! PLEASE ADD COMMON IMPORTS INTO WORKBENCH.COMMON.MAIN.TS !!! ### -// ### ### -// ####################################################################### +// #################################### +// ### ### +// ### !!! PLEASE DO NOT MODIFY !!! ### +// ### ### +// #################################### +// TODO@esm remove me once we stop supporting our web-esm-bridge -//#region --- workbench common +(function () { -import './workbench.common.main.js'; + // #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; + }; -//#endregion + 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 -//#region --- workbench parts + // 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; -import './browser/parts/dialogs/dialog.web.contribution.js'; + 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!'); + } -//#endregion + 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; + } -//#region --- workbench (web main) + const promise = new Promise(resolve => { + // eslint-disable-next-line local/code-no-any-casts + (globalThis as any).__VSCODE_WEB_ESM_PROMISE = resolve; + }); -import './browser/web.main.js'; + 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); -//#endregion + return promise.then(mod => _load(mod)); + } + }; + }); - -//#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 + define( + 'vs/workbench/workbench.web.main', + ['require', 'exports', 'vs/web-api!'], + function (_require, exports, webApi) { + Object.assign(exports, webApi); + } + ); +})();