@codingame/monaco-vscode-extensions-service-override 4.1.0 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/_virtual/semver.js +3 -0
  2. package/extensions.js +6 -6
  3. package/external/vscode-semver/semver.js +985 -0
  4. package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +8 -0
  5. package/package.json +9 -9
  6. package/vscode/src/vs/base/common/console.js +62 -0
  7. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +497 -0
  8. package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +44 -0
  9. package/vscode/src/vs/platform/lifecycle/common/lifecycle.js +27 -0
  10. package/vscode/src/vs/platform/remote/common/managedSocket.js +98 -0
  11. package/vscode/src/vs/workbench/api/browser/extensionHost.contribution.js +104 -0
  12. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +31 -0
  13. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +35 -0
  14. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +254 -0
  15. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +68 -0
  16. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +103 -0
  17. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +70 -0
  18. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +207 -0
  19. package/vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js +41 -0
  20. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +24 -0
  21. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +108 -0
  22. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +98 -0
  23. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +560 -0
  24. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +80 -0
  25. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +35 -0
  26. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +579 -0
  27. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +435 -0
  28. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +102 -0
  29. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +69 -0
  30. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +68 -0
  31. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +79 -0
  32. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +253 -0
  33. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +370 -0
  34. package/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js +22 -0
  35. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +41 -0
  36. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +414 -0
  37. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +501 -0
  38. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +227 -0
  39. package/vscode/src/vs/workbench/api/browser/mainThreadErrors.js +24 -0
  40. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +317 -0
  41. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +208 -0
  42. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +369 -0
  43. package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +72 -0
  44. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +28 -0
  45. package/vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js +50 -0
  46. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +27 -0
  47. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +1016 -0
  48. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +185 -0
  49. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +78 -0
  50. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +35 -0
  51. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +78 -0
  52. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +93 -0
  53. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +137 -0
  54. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +194 -0
  55. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +123 -0
  56. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +188 -0
  57. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +129 -0
  58. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +131 -0
  59. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +374 -0
  60. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js +25 -0
  61. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +48 -0
  62. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +76 -0
  63. package/vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js +38 -0
  64. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +68 -0
  65. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +42 -0
  66. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +185 -0
  67. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +30 -0
  68. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +493 -0
  69. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +49 -0
  70. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +168 -0
  71. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +70 -0
  72. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +50 -0
  73. package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +99 -0
  74. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +53 -0
  75. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +72 -0
  76. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +731 -0
  77. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +53 -0
  78. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +409 -0
  79. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +51 -0
  80. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +219 -0
  81. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +24 -0
  82. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +55 -0
  83. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +312 -0
  84. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +223 -0
  85. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +110 -0
  86. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +61 -0
  87. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +29 -0
  88. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +283 -0
  89. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +100 -0
  90. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +135 -0
  91. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +57 -0
  92. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +268 -0
  93. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +35 -0
  94. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +76 -0
  95. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +83 -0
  96. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +285 -0
  97. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +276 -0
  98. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +52 -0
  99. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +1149 -0
  100. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +41 -0
  101. package/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.js +25 -0
  102. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +512 -0
  103. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +274 -0
  104. package/vscode/src/vs/workbench/services/extensions/common/extensionStorageMigration.js +58 -0
  105. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +80 -0
  106. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +64 -0
  107. package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +161 -0
  108. package/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.js +49 -0
  109. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +222 -0
@@ -0,0 +1,285 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { mainWindow } from 'vscode/vscode/vs/base/browser/window';
3
+ import { Schemas } from 'vscode/vscode/vs/base/common/network';
4
+ import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
5
+ import '../../../../../../../override/vs/platform/dialogs/common/dialogs.js';
6
+ import { IFileService } from 'vscode/vscode/vs/platform/files/common/files';
7
+ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
8
+ import { getLogs } from 'vscode/vscode/vs/platform/log/browser/log';
9
+ import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
10
+ import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification';
11
+ import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
12
+ import { IRemoteAuthorityResolverService, RemoteAuthorityResolverError } from 'vscode/vscode/vs/platform/remote/common/remoteAuthorityResolver';
13
+ import { IRemoteExtensionsScannerService } from 'vscode/vscode/vs/platform/remote/common/remoteExtensionsScanner';
14
+ import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
15
+ import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace';
16
+ import { IWorkspaceTrustManagementService } from 'vscode/vscode/vs/platform/workspace/common/workspaceTrust';
17
+ import { IBrowserWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/browser/environmentService';
18
+ import { IWorkbenchExtensionEnablementService, IWorkbenchExtensionManagementService, IWebExtensionsScannerService } from 'vscode/vscode/vs/workbench/services/extensionManagement/common/extensionManagement';
19
+ import { WebWorkerExtensionHost } from './webWorkerExtensionHost.js';
20
+ import { FetchFileSystemProvider } from './webWorkerFileSystemProvider.js';
21
+ import { AbstractExtensionService, ResolvedExtensions, checkEnabledAndProposedAPI } from '../common/abstractExtensionService.js';
22
+ import { extensionRunningPreferenceToString, extensionHostKindToString } from 'vscode/vscode/vs/workbench/services/extensions/common/extensionHostKind';
23
+ import { IExtensionManifestPropertiesService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService';
24
+ import { filterExtensionDescriptions } from '../common/extensionRunningLocationTracker.js';
25
+ import { toExtensionDescription, ExtensionHostExtensions } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
26
+ import '../common/extensionsProposedApi.js';
27
+ import { dedupExtensions } from '../common/extensionsUtil.js';
28
+ import { RemoteExtensionHost } from '../common/remoteExtensionHost.js';
29
+ import { ILifecycleService } from 'vscode/vscode/vs/workbench/services/lifecycle/common/lifecycle';
30
+ import { IRemoteAgentService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteAgentService';
31
+ import { IRemoteExplorerService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteExplorerService';
32
+ import { IUserDataInitializationService } from 'vscode/vscode/vs/workbench/services/userData/browser/userDataInit';
33
+ import { IUserDataProfileService } from 'vscode/vscode/vs/workbench/services/userDataProfile/common/userDataProfile';
34
+ import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs';
35
+
36
+ var BrowserExtensionHostKindPicker_1;
37
+ let ExtensionService = class ExtensionService extends AbstractExtensionService {
38
+ constructor(extensionsProposedApi, extensionHostFactory, extensionHostKindPicker, instantiationService, notificationService, _browserEnvironmentService, telemetryService, extensionEnablementService, fileService, productService, extensionManagementService, contextService, configurationService, extensionManifestPropertiesService, _webExtensionsScannerService, logService, remoteAgentService, remoteExtensionsScannerService, lifecycleService, remoteAuthorityResolverService, _userDataInitializationService, _userDataProfileService, _workspaceTrustManagementService, _remoteExplorerService, dialogService) {
39
+ super(extensionsProposedApi, extensionHostFactory, extensionHostKindPicker, instantiationService, notificationService, _browserEnvironmentService, telemetryService, extensionEnablementService, fileService, productService, extensionManagementService, contextService, configurationService, extensionManifestPropertiesService, logService, remoteAgentService, remoteExtensionsScannerService, lifecycleService, remoteAuthorityResolverService, dialogService);
40
+ this._browserEnvironmentService = _browserEnvironmentService;
41
+ this._webExtensionsScannerService = _webExtensionsScannerService;
42
+ this._userDataInitializationService = _userDataInitializationService;
43
+ this._userDataProfileService = _userDataProfileService;
44
+ this._workspaceTrustManagementService = _workspaceTrustManagementService;
45
+ this._remoteExplorerService = _remoteExplorerService;
46
+ lifecycleService.when(2 ).then(async () => {
47
+ await this._userDataInitializationService.initializeInstalledExtensions(this._instantiationService);
48
+ this._initialize();
49
+ });
50
+ this._initFetchFileSystem();
51
+ }
52
+ async _scanSingleExtension(extension) {
53
+ if (extension.location.scheme === Schemas.vscodeRemote) {
54
+ return this._remoteExtensionsScannerService.scanSingleExtension(extension.location, extension.type === 0 );
55
+ }
56
+ const scannedExtension = await this._webExtensionsScannerService.scanExistingExtension(extension.location, extension.type, this._userDataProfileService.currentProfile.extensionsResource);
57
+ if (scannedExtension) {
58
+ return toExtensionDescription(scannedExtension);
59
+ }
60
+ return null;
61
+ }
62
+ _initFetchFileSystem() {
63
+ const provider = ( new FetchFileSystemProvider());
64
+ this._register(this._fileService.registerProvider(Schemas.http, provider));
65
+ this._register(this._fileService.registerProvider(Schemas.https, provider));
66
+ }
67
+ async _scanWebExtensions() {
68
+ const system = [], user = [], development = [];
69
+ try {
70
+ await Promise.all([
71
+ this._webExtensionsScannerService.scanSystemExtensions().then(extensions => system.push(...( extensions.map(e => toExtensionDescription(e))))),
72
+ this._webExtensionsScannerService.scanUserExtensions(this._userDataProfileService.currentProfile.extensionsResource, { skipInvalidExtensions: true }).then(extensions => user.push(...( extensions.map(e => toExtensionDescription(e))))),
73
+ this._webExtensionsScannerService.scanExtensionsUnderDevelopment().then(extensions => development.push(...( extensions.map(e => toExtensionDescription(e, true)))))
74
+ ]);
75
+ }
76
+ catch (error) {
77
+ this._logService.error(error);
78
+ }
79
+ return dedupExtensions(system, user, development, this._logService);
80
+ }
81
+ async _resolveExtensionsDefault() {
82
+ const [localExtensions, remoteExtensions] = await Promise.all([
83
+ this._scanWebExtensions(),
84
+ this._remoteExtensionsScannerService.scanExtensions()
85
+ ]);
86
+ return ( new ResolvedExtensions(
87
+ localExtensions,
88
+ remoteExtensions,
89
+ false,
90
+ true
91
+ ));
92
+ }
93
+ async _resolveExtensions() {
94
+ if (!this._browserEnvironmentService.expectsResolverExtension) {
95
+ return this._resolveExtensionsDefault();
96
+ }
97
+ const remoteAuthority = this._environmentService.remoteAuthority;
98
+ await this._workspaceTrustManagementService.workspaceResolved;
99
+ let resolverResult;
100
+ try {
101
+ resolverResult = await this._resolveAuthorityInitial(remoteAuthority);
102
+ }
103
+ catch (err) {
104
+ if (RemoteAuthorityResolverError.isHandled(err)) {
105
+ console.log(`Error handled: Not showing a notification for the error`);
106
+ }
107
+ this._remoteAuthorityResolverService._setResolvedAuthorityError(remoteAuthority, err);
108
+ return this._resolveExtensionsDefault();
109
+ }
110
+ this._remoteAuthorityResolverService._setResolvedAuthority(resolverResult.authority, resolverResult.options);
111
+ this._remoteExplorerService.setTunnelInformation(resolverResult.tunnelInformation);
112
+ const connection = this._remoteAgentService.getConnection();
113
+ if (connection) {
114
+ connection.onDidStateChange(async (e) => {
115
+ if (e.type === 0 ) {
116
+ this._remoteAuthorityResolverService._clearResolvedAuthority(remoteAuthority);
117
+ }
118
+ });
119
+ connection.onReconnecting(() => this._resolveAuthorityAgain());
120
+ }
121
+ return this._resolveExtensionsDefault();
122
+ }
123
+ async _onExtensionHostExit(code) {
124
+ this._doStopExtensionHosts();
125
+ const automatedWindow = mainWindow;
126
+ if (typeof automatedWindow.codeAutomationExit === 'function') {
127
+ automatedWindow.codeAutomationExit(code, await getLogs(this._fileService, this._environmentService));
128
+ }
129
+ }
130
+ async _resolveAuthority(remoteAuthority) {
131
+ return this._resolveAuthorityOnExtensionHosts(2 , remoteAuthority);
132
+ }
133
+ };
134
+ ExtensionService = ( __decorate([
135
+ ( __param(3, IInstantiationService)),
136
+ ( __param(4, INotificationService)),
137
+ ( __param(5, IBrowserWorkbenchEnvironmentService)),
138
+ ( __param(6, ITelemetryService)),
139
+ ( __param(7, IWorkbenchExtensionEnablementService)),
140
+ ( __param(8, IFileService)),
141
+ ( __param(9, IProductService)),
142
+ ( __param(10, IWorkbenchExtensionManagementService)),
143
+ ( __param(11, IWorkspaceContextService)),
144
+ ( __param(12, IConfigurationService)),
145
+ ( __param(13, IExtensionManifestPropertiesService)),
146
+ ( __param(14, IWebExtensionsScannerService)),
147
+ ( __param(15, ILogService)),
148
+ ( __param(16, IRemoteAgentService)),
149
+ ( __param(17, IRemoteExtensionsScannerService)),
150
+ ( __param(18, ILifecycleService)),
151
+ ( __param(19, IRemoteAuthorityResolverService)),
152
+ ( __param(20, IUserDataInitializationService)),
153
+ ( __param(21, IUserDataProfileService)),
154
+ ( __param(22, IWorkspaceTrustManagementService)),
155
+ ( __param(23, IRemoteExplorerService)),
156
+ ( __param(24, IDialogService))
157
+ ], ExtensionService));
158
+ let BrowserExtensionHostFactory = class BrowserExtensionHostFactory {
159
+ constructor(_extensionsProposedApi, _scanWebExtensions, _getExtensionRegistrySnapshotWhenReady, _instantiationService, _remoteAgentService, _remoteAuthorityResolverService, _extensionEnablementService, _logService) {
160
+ this._extensionsProposedApi = _extensionsProposedApi;
161
+ this._scanWebExtensions = _scanWebExtensions;
162
+ this._getExtensionRegistrySnapshotWhenReady = _getExtensionRegistrySnapshotWhenReady;
163
+ this._instantiationService = _instantiationService;
164
+ this._remoteAgentService = _remoteAgentService;
165
+ this._remoteAuthorityResolverService = _remoteAuthorityResolverService;
166
+ this._extensionEnablementService = _extensionEnablementService;
167
+ this._logService = _logService;
168
+ }
169
+ createExtensionHost(runningLocations, runningLocation, isInitialStart) {
170
+ switch (runningLocation.kind) {
171
+ case 1 : {
172
+ return null;
173
+ }
174
+ case 2 : {
175
+ const startup = ((isInitialStart ? 2 : 1) );
176
+ return this._instantiationService.createInstance(WebWorkerExtensionHost, runningLocation, startup, this._createLocalExtensionHostDataProvider(runningLocations, runningLocation, isInitialStart));
177
+ }
178
+ case 3 : {
179
+ const remoteAgentConnection = this._remoteAgentService.getConnection();
180
+ if (remoteAgentConnection) {
181
+ return this._instantiationService.createInstance(RemoteExtensionHost, runningLocation, this._createRemoteExtensionHostDataProvider(runningLocations, remoteAgentConnection.remoteAuthority));
182
+ }
183
+ return null;
184
+ }
185
+ }
186
+ }
187
+ _createLocalExtensionHostDataProvider(runningLocations, desiredRunningLocation, isInitialStart) {
188
+ return {
189
+ getInitData: async () => {
190
+ if (isInitialStart) {
191
+ const localExtensions = checkEnabledAndProposedAPI(this._logService, this._extensionEnablementService, this._extensionsProposedApi, await this._scanWebExtensions(), true);
192
+ const runningLocation = runningLocations.computeRunningLocation(localExtensions, [], false);
193
+ const myExtensions = filterExtensionDescriptions(localExtensions, runningLocation, extRunningLocation => desiredRunningLocation.equals(extRunningLocation));
194
+ const extensions = ( new ExtensionHostExtensions(0, localExtensions, ( myExtensions.map(extension => extension.identifier))));
195
+ return { extensions };
196
+ }
197
+ else {
198
+ const snapshot = await this._getExtensionRegistrySnapshotWhenReady();
199
+ const myExtensions = runningLocations.filterByRunningLocation(snapshot.extensions, desiredRunningLocation);
200
+ const extensions = ( new ExtensionHostExtensions(snapshot.versionId, snapshot.extensions, ( myExtensions.map(extension => extension.identifier))));
201
+ return { extensions };
202
+ }
203
+ }
204
+ };
205
+ }
206
+ _createRemoteExtensionHostDataProvider(runningLocations, remoteAuthority) {
207
+ return {
208
+ remoteAuthority: remoteAuthority,
209
+ getInitData: async () => {
210
+ const snapshot = await this._getExtensionRegistrySnapshotWhenReady();
211
+ const remoteEnv = await this._remoteAgentService.getEnvironment();
212
+ if (!remoteEnv) {
213
+ throw new Error('Cannot provide init data for remote extension host!');
214
+ }
215
+ const myExtensions = runningLocations.filterByExtensionHostKind(snapshot.extensions, 3 );
216
+ const extensions = ( new ExtensionHostExtensions(snapshot.versionId, snapshot.extensions, ( myExtensions.map(extension => extension.identifier))));
217
+ return {
218
+ connectionData: this._remoteAuthorityResolverService.getConnectionData(remoteAuthority),
219
+ pid: remoteEnv.pid,
220
+ appRoot: remoteEnv.appRoot,
221
+ extensionHostLogsPath: remoteEnv.extensionHostLogsPath,
222
+ globalStorageHome: remoteEnv.globalStorageHome,
223
+ workspaceStorageHome: remoteEnv.workspaceStorageHome,
224
+ extensions,
225
+ };
226
+ }
227
+ };
228
+ }
229
+ };
230
+ BrowserExtensionHostFactory = ( __decorate([
231
+ ( __param(3, IInstantiationService)),
232
+ ( __param(4, IRemoteAgentService)),
233
+ ( __param(5, IRemoteAuthorityResolverService)),
234
+ ( __param(6, IWorkbenchExtensionEnablementService)),
235
+ ( __param(7, ILogService))
236
+ ], BrowserExtensionHostFactory));
237
+ let BrowserExtensionHostKindPicker = BrowserExtensionHostKindPicker_1 = class BrowserExtensionHostKindPicker {
238
+ constructor(_logService) {
239
+ this._logService = _logService;
240
+ }
241
+ pickExtensionHostKind(extensionId, extensionKinds, isInstalledLocally, isInstalledRemotely, preference) {
242
+ const result = BrowserExtensionHostKindPicker_1.pickRunningLocation(extensionKinds, isInstalledLocally, isInstalledRemotely, preference);
243
+ this._logService.trace(`pickRunningLocation for ${extensionId.value}, extension kinds: [${extensionKinds.join(', ')}], isInstalledLocally: ${isInstalledLocally}, isInstalledRemotely: ${isInstalledRemotely}, preference: ${extensionRunningPreferenceToString(preference)} => ${extensionHostKindToString(result)}`);
244
+ return result;
245
+ }
246
+ static pickRunningLocation(extensionKinds, isInstalledLocally, isInstalledRemotely, preference) {
247
+ const result = [];
248
+ let canRunRemotely = false;
249
+ for (const extensionKind of extensionKinds) {
250
+ if (extensionKind === 'ui' && isInstalledRemotely) {
251
+ if (preference === 2 ) {
252
+ return 3 ;
253
+ }
254
+ else {
255
+ canRunRemotely = true;
256
+ }
257
+ }
258
+ if (extensionKind === 'workspace' && isInstalledRemotely) {
259
+ if (preference === 0 || preference === 2 ) {
260
+ return 3 ;
261
+ }
262
+ else {
263
+ result.push(3 );
264
+ }
265
+ }
266
+ if (extensionKind === 'web' && (isInstalledLocally || isInstalledRemotely)) {
267
+ if (preference === 0 || preference === 1 ) {
268
+ return 2 ;
269
+ }
270
+ else {
271
+ result.push(2 );
272
+ }
273
+ }
274
+ }
275
+ if (canRunRemotely) {
276
+ result.push(3 );
277
+ }
278
+ return (result.length > 0 ? result[0] : null);
279
+ }
280
+ };
281
+ BrowserExtensionHostKindPicker = BrowserExtensionHostKindPicker_1 = ( __decorate([
282
+ ( __param(0, ILogService))
283
+ ], BrowserExtensionHostKindPicker));
284
+
285
+ export { BrowserExtensionHostFactory, BrowserExtensionHostKindPicker, ExtensionService };
@@ -0,0 +1,276 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { addDisposableListener } from 'vscode/vscode/vs/base/browser/dom';
3
+ import { parentOriginHash } from 'vscode/vscode/vs/base/browser/iframe';
4
+ import { mainWindow } from 'vscode/vscode/vs/base/browser/window';
5
+ import { Barrier } from 'vscode/vscode/vs/base/common/async';
6
+ import { VSBuffer } from 'vscode/vscode/vs/base/common/buffer';
7
+ import { canceled, onUnexpectedError } from 'vscode/vscode/vs/base/common/errors';
8
+ import { Emitter, Event } from 'vscode/vscode/vs/base/common/event';
9
+ import { Disposable, toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
10
+ import { COI, FileAccess } from 'vscode/vscode/vs/base/common/network';
11
+ import { isWeb, Language, language } from 'vscode/vscode/vs/base/common/platform';
12
+ import { joinPath } from 'vscode/vscode/vs/base/common/resources';
13
+ import { URI } from 'vscode/vscode/vs/base/common/uri';
14
+ import { generateUuid } from 'vscode/vscode/vs/base/common/uuid';
15
+ import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label';
16
+ import { ILayoutService } from 'vscode/vscode/vs/platform/layout/browser/layoutService';
17
+ import { ILogService, ILoggerService } from 'vscode/vscode/vs/platform/log/common/log';
18
+ import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
19
+ import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
20
+ import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
21
+ import { isLoggingOnly } from 'vscode/vscode/vs/platform/telemetry/common/telemetryUtils';
22
+ import { IUserDataProfilesService } from 'vscode/vscode/vs/platform/userDataProfile/common/userDataProfile';
23
+ import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace';
24
+ import { IBrowserWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/browser/environmentService';
25
+ import { isMessageOfType, createMessageOfType, UIKind } from 'vscode/vscode/vs/workbench/services/extensions/common/extensionHostProtocol';
26
+
27
+ let WebWorkerExtensionHost = class WebWorkerExtensionHost extends Disposable {
28
+ constructor(runningLocation, startup, _initDataProvider, _telemetryService, _contextService, _labelService, _logService, _loggerService, _environmentService, _userDataProfilesService, _productService, _layoutService, _storageService) {
29
+ super();
30
+ this.runningLocation = runningLocation;
31
+ this.startup = startup;
32
+ this._initDataProvider = _initDataProvider;
33
+ this._telemetryService = _telemetryService;
34
+ this._contextService = _contextService;
35
+ this._labelService = _labelService;
36
+ this._logService = _logService;
37
+ this._loggerService = _loggerService;
38
+ this._environmentService = _environmentService;
39
+ this._userDataProfilesService = _userDataProfilesService;
40
+ this._productService = _productService;
41
+ this._layoutService = _layoutService;
42
+ this._storageService = _storageService;
43
+ this.pid = null;
44
+ this.remoteAuthority = null;
45
+ this.extensions = null;
46
+ this._onDidExit = this._register(( new Emitter()));
47
+ this.onExit = this._onDidExit.event;
48
+ this._isTerminating = false;
49
+ this._protocolPromise = null;
50
+ this._protocol = null;
51
+ this._extensionHostLogsLocation = joinPath(this._environmentService.extHostLogsPath, 'webWorker');
52
+ }
53
+ async _getWebWorkerExtensionHostIframeSrc() {
54
+ const suffixSearchParams = ( new URLSearchParams());
55
+ if (this._environmentService.debugExtensionHost && this._environmentService.debugRenderer) {
56
+ suffixSearchParams.set('debugged', '1');
57
+ }
58
+ COI.addSearchParam(suffixSearchParams, true, true);
59
+ const suffix = `?${( suffixSearchParams.toString())}`;
60
+ const iframeModulePath = 'vs/workbench/services/extensions/worker/webWorkerExtensionHostIframe.html';
61
+ if (isWeb) {
62
+ const webEndpointUrlTemplate = this._productService.webEndpointUrlTemplate;
63
+ const commit = this._productService.commit;
64
+ const quality = this._productService.quality;
65
+ if (webEndpointUrlTemplate && commit && quality) {
66
+ const key = 'webWorkerExtensionHostIframeStableOriginUUID';
67
+ let stableOriginUUID = this._storageService.get(key, 1 );
68
+ if (typeof stableOriginUUID === 'undefined') {
69
+ stableOriginUUID = generateUuid();
70
+ this._storageService.store(key, stableOriginUUID, 1 , 1 );
71
+ }
72
+ const hash = await parentOriginHash(mainWindow.origin, stableOriginUUID);
73
+ const baseUrl = (webEndpointUrlTemplate
74
+ .replace('{{uuid}}', `v--${hash}`)
75
+ .replace('{{commit}}', commit)
76
+ .replace('{{quality}}', quality));
77
+ const res = ( new URL(`${baseUrl}/out/${iframeModulePath}${suffix}`));
78
+ res.searchParams.set('parentOrigin', mainWindow.origin);
79
+ res.searchParams.set('salt', stableOriginUUID);
80
+ return ( res.toString());
81
+ }
82
+ }
83
+ const relativeExtensionHostIframeSrc = ( FileAccess.asBrowserUri(iframeModulePath));
84
+ return `${( relativeExtensionHostIframeSrc.toString(true))}${suffix}`;
85
+ }
86
+ async start() {
87
+ if (!this._protocolPromise) {
88
+ this._protocolPromise = this._startInsideIframe();
89
+ this._protocolPromise.then(protocol => this._protocol = protocol);
90
+ }
91
+ return this._protocolPromise;
92
+ }
93
+ async _startInsideIframe() {
94
+ const webWorkerExtensionHostIframeSrc = await this._getWebWorkerExtensionHostIframeSrc();
95
+ const emitter = this._register(( new Emitter()));
96
+ const iframe = document.createElement('iframe');
97
+ iframe.setAttribute('class', 'web-worker-ext-host-iframe');
98
+ iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin');
99
+ iframe.setAttribute('allow', 'usb; serial; hid; cross-origin-isolated;');
100
+ iframe.setAttribute('aria-hidden', 'true');
101
+ iframe.style.display = 'none';
102
+ const vscodeWebWorkerExtHostId = generateUuid();
103
+ iframe.setAttribute('src', `${webWorkerExtensionHostIframeSrc}&vscodeWebWorkerExtHostId=${vscodeWebWorkerExtHostId}`);
104
+ const barrier = ( new Barrier());
105
+ let port;
106
+ let barrierError = null;
107
+ let barrierHasError = false;
108
+ let startTimeout = null;
109
+ const rejectBarrier = (exitCode, error) => {
110
+ barrierError = error;
111
+ barrierHasError = true;
112
+ onUnexpectedError(barrierError);
113
+ clearTimeout(startTimeout);
114
+ this._onDidExit.fire([81 , barrierError.message]);
115
+ barrier.open();
116
+ };
117
+ const resolveBarrier = (messagePort) => {
118
+ port = messagePort;
119
+ clearTimeout(startTimeout);
120
+ barrier.open();
121
+ };
122
+ startTimeout = setTimeout(() => {
123
+ console.warn(`The Web Worker Extension Host did not start in 60s, that might be a problem.`);
124
+ }, 60000);
125
+ this._register(addDisposableListener(mainWindow, 'message', (event) => {
126
+ if (event.source !== iframe.contentWindow) {
127
+ return;
128
+ }
129
+ if (event.data.vscodeWebWorkerExtHostId !== vscodeWebWorkerExtHostId) {
130
+ return;
131
+ }
132
+ if (event.data.error) {
133
+ const { name, message, stack } = event.data.error;
134
+ const err = ( new Error());
135
+ err.message = message;
136
+ err.name = name;
137
+ err.stack = stack;
138
+ return rejectBarrier(81 , err);
139
+ }
140
+ const { data } = event.data;
141
+ if (barrier.isOpen() || !(data instanceof MessagePort)) {
142
+ console.warn('UNEXPECTED message', event);
143
+ const err = ( new Error('UNEXPECTED message'));
144
+ return rejectBarrier(81 , err);
145
+ }
146
+ resolveBarrier(data);
147
+ }));
148
+ this._layoutService.mainContainer.appendChild(iframe);
149
+ this._register(toDisposable(() => iframe.remove()));
150
+ await barrier.wait();
151
+ if (barrierHasError) {
152
+ throw barrierError;
153
+ }
154
+ const messagePorts = this._environmentService.options?.messagePorts ?? ( new Map());
155
+ iframe.contentWindow.postMessage({ type: 'vscode.init', data: messagePorts }, '*', [...( messagePorts.values())]);
156
+ port.onmessage = (event) => {
157
+ const { data } = event;
158
+ if (!(data instanceof ArrayBuffer)) {
159
+ console.warn('UNKNOWN data received', data);
160
+ this._onDidExit.fire([77, 'UNKNOWN data received']);
161
+ return;
162
+ }
163
+ emitter.fire(VSBuffer.wrap(( new Uint8Array(data, 0, data.byteLength))));
164
+ };
165
+ const protocol = {
166
+ onMessage: emitter.event,
167
+ send: vsbuf => {
168
+ const data = vsbuf.buffer.buffer.slice(vsbuf.buffer.byteOffset, vsbuf.buffer.byteOffset + vsbuf.buffer.byteLength);
169
+ port.postMessage(data, [data]);
170
+ }
171
+ };
172
+ return this._performHandshake(protocol);
173
+ }
174
+ async _performHandshake(protocol) {
175
+ await Event.toPromise(Event.filter(protocol.onMessage, msg => isMessageOfType(msg, 1 )));
176
+ if (this._isTerminating) {
177
+ throw canceled();
178
+ }
179
+ protocol.send(VSBuffer.fromString(JSON.stringify(await this._createExtHostInitData())));
180
+ if (this._isTerminating) {
181
+ throw canceled();
182
+ }
183
+ await Event.toPromise(Event.filter(protocol.onMessage, msg => isMessageOfType(msg, 0 )));
184
+ if (this._isTerminating) {
185
+ throw canceled();
186
+ }
187
+ return protocol;
188
+ }
189
+ dispose() {
190
+ if (this._isTerminating) {
191
+ return;
192
+ }
193
+ this._isTerminating = true;
194
+ this._protocol?.send(createMessageOfType(2 ));
195
+ super.dispose();
196
+ }
197
+ getInspectPort() {
198
+ return undefined;
199
+ }
200
+ enableInspectPort() {
201
+ return Promise.resolve(false);
202
+ }
203
+ async _createExtHostInitData() {
204
+ const initData = await this._initDataProvider.getInitData();
205
+ this.extensions = initData.extensions;
206
+ const workspace = this._contextService.getWorkspace();
207
+ const nlsBaseUrl = this._productService.extensionsGallery?.nlsBaseUrl;
208
+ let nlsUrlWithDetails = undefined;
209
+ if (nlsBaseUrl && this._productService.commit && !Language.isDefaultVariant()) {
210
+ nlsUrlWithDetails = URI.joinPath(( URI.parse(nlsBaseUrl)), this._productService.commit, this._productService.version, Language.value());
211
+ }
212
+ return {
213
+ commit: this._productService.commit,
214
+ version: this._productService.version,
215
+ quality: this._productService.quality,
216
+ parentPid: 0,
217
+ environment: {
218
+ isExtensionDevelopmentDebug: this._environmentService.debugRenderer,
219
+ appName: this._productService.nameLong,
220
+ appHost: this._productService.embedderIdentifier ?? (isWeb ? 'web' : 'desktop'),
221
+ appUriScheme: this._productService.urlProtocol,
222
+ appLanguage: language,
223
+ extensionTelemetryLogResource: this._environmentService.extHostTelemetryLogFile,
224
+ isExtensionTelemetryLoggingOnly: isLoggingOnly(this._productService, this._environmentService),
225
+ extensionDevelopmentLocationURI: this._environmentService.extensionDevelopmentLocationURI,
226
+ extensionTestsLocationURI: this._environmentService.extensionTestsLocationURI,
227
+ globalStorageHome: this._userDataProfilesService.defaultProfile.globalStorageHome,
228
+ workspaceStorageHome: this._environmentService.workspaceStorageHome,
229
+ extensionLogLevel: this._environmentService.extensionLogLevel
230
+ },
231
+ workspace: this._contextService.getWorkbenchState() === 1 ? undefined : {
232
+ configuration: workspace.configuration || undefined,
233
+ id: workspace.id,
234
+ name: this._labelService.getWorkspaceLabel(workspace),
235
+ transient: workspace.transient
236
+ },
237
+ consoleForward: {
238
+ includeStack: false,
239
+ logNative: this._environmentService.debugRenderer
240
+ },
241
+ extensions: this.extensions.toSnapshot(),
242
+ nlsBaseUrl: nlsUrlWithDetails,
243
+ telemetryInfo: {
244
+ sessionId: this._telemetryService.sessionId,
245
+ machineId: this._telemetryService.machineId,
246
+ sqmId: this._telemetryService.sqmId,
247
+ firstSessionDate: this._telemetryService.firstSessionDate,
248
+ msftInternal: this._telemetryService.msftInternal
249
+ },
250
+ logLevel: this._logService.getLevel(),
251
+ loggers: [...this._loggerService.getRegisteredLoggers()],
252
+ logsLocation: this._extensionHostLogsLocation,
253
+ autoStart: ((this.startup === 1) ),
254
+ remote: {
255
+ authority: this._environmentService.remoteAuthority,
256
+ connectionData: null,
257
+ isRemote: false
258
+ },
259
+ uiKind: isWeb ? UIKind.Web : UIKind.Desktop
260
+ };
261
+ }
262
+ };
263
+ WebWorkerExtensionHost = ( __decorate([
264
+ ( __param(3, ITelemetryService)),
265
+ ( __param(4, IWorkspaceContextService)),
266
+ ( __param(5, ILabelService)),
267
+ ( __param(6, ILogService)),
268
+ ( __param(7, ILoggerService)),
269
+ ( __param(8, IBrowserWorkbenchEnvironmentService)),
270
+ ( __param(9, IUserDataProfilesService)),
271
+ ( __param(10, IProductService)),
272
+ ( __param(11, ILayoutService)),
273
+ ( __param(12, IStorageService))
274
+ ], WebWorkerExtensionHost));
275
+
276
+ export { WebWorkerExtensionHost };
@@ -0,0 +1,52 @@
1
+ import { createFileSystemProviderError, FileSystemProviderErrorCode, FileType } from 'vscode/vscode/vs/platform/files/common/files';
2
+ import { Event } from 'vscode/vscode/vs/base/common/event';
3
+ import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
4
+ import { NotSupportedError } from 'vscode/vscode/vs/base/common/errors';
5
+
6
+ class FetchFileSystemProvider {
7
+ constructor() {
8
+ this.capabilities = 2048 + 2 + 1024 ;
9
+ this.onDidChangeCapabilities = Event.None;
10
+ this.onDidChangeFile = Event.None;
11
+ }
12
+ async readFile(resource) {
13
+ try {
14
+ const res = await fetch(( resource.toString(true)));
15
+ if (res.status === 200) {
16
+ return ( new Uint8Array(await res.arrayBuffer()));
17
+ }
18
+ throw createFileSystemProviderError(res.statusText, FileSystemProviderErrorCode.Unknown);
19
+ }
20
+ catch (err) {
21
+ throw createFileSystemProviderError(err, FileSystemProviderErrorCode.Unknown);
22
+ }
23
+ }
24
+ async stat(_resource) {
25
+ return {
26
+ type: FileType.File,
27
+ size: 0,
28
+ mtime: 0,
29
+ ctime: 0
30
+ };
31
+ }
32
+ watch() {
33
+ return Disposable.None;
34
+ }
35
+ writeFile(_resource, _content, _opts) {
36
+ throw new NotSupportedError();
37
+ }
38
+ readdir(_resource) {
39
+ throw new NotSupportedError();
40
+ }
41
+ mkdir(_resource) {
42
+ throw new NotSupportedError();
43
+ }
44
+ delete(_resource, _opts) {
45
+ throw new NotSupportedError();
46
+ }
47
+ rename(_from, _to, _opts) {
48
+ throw new NotSupportedError();
49
+ }
50
+ }
51
+
52
+ export { FetchFileSystemProvider };