@codingame/monaco-vscode-extensions-service-override 4.4.1 → 4.5.0-improve-code-splitting.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 (117) hide show
  1. package/extensions.d.ts +21 -21
  2. package/extensions.js +29 -27
  3. package/localExtensionHost.d.ts +8 -8
  4. package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +4 -1
  5. package/package.json +11 -3
  6. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +2 -1
  7. package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +7 -6
  8. package/vscode/src/vs/platform/remote/common/managedSocket.js +1 -1
  9. package/vscode/src/vs/platform/remote/common/remoteExtensionsScanner.service.d.ts +13 -0
  10. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +2 -2
  11. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +2 -2
  12. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +9 -10
  13. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +2 -2
  14. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +8 -7
  15. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +4 -4
  16. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +5 -4
  17. package/vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js +2 -2
  18. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +1 -1
  19. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +2 -2
  20. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +4 -3
  21. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +5 -4
  22. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +4 -4
  23. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +2 -2
  24. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +14 -15
  25. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +4 -3
  26. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +2 -2
  27. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +3 -3
  28. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +1 -2
  29. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +1 -1
  30. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +7 -7
  31. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +11 -11
  32. package/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js +1 -1
  33. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +1 -1
  34. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +1 -1
  35. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +7 -5
  36. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +5 -5
  37. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +9 -9
  38. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +3 -2
  39. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +10 -11
  40. package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +3 -3
  41. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +2 -2
  42. package/vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js +2 -2
  43. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +1 -1
  44. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +2 -2
  45. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +9 -7
  46. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +2 -2
  47. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +2 -2
  48. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +4 -3
  49. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +2 -2
  50. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +4 -5
  51. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +5 -4
  52. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +2 -2
  53. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +5 -5
  54. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +4 -4
  55. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +6 -5
  56. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js +2 -2
  57. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +1 -1
  58. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +3 -2
  59. package/vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js +2 -2
  60. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +3 -3
  61. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +2 -2
  62. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +2 -2
  63. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +2 -2
  64. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +5 -5
  65. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +1 -1
  66. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +5 -5
  67. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +4 -4
  68. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +2 -2
  69. package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +3 -3
  70. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +1 -1
  71. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +4 -4
  72. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +4 -4
  73. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +5 -4
  74. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +9 -8
  75. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +3 -3
  76. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +5 -5
  77. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +2 -2
  78. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +3 -3
  79. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +5 -5
  80. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +14 -10
  81. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +9 -7
  82. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +3 -3
  83. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +9 -7
  84. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +2 -2
  85. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +2 -2
  86. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +4 -4
  87. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +14 -13
  88. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +1 -1
  89. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +2 -2
  90. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionBisect.js +399 -0
  91. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement.d.ts +53 -0
  92. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagement.service.d.ts +106 -0
  93. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.d.ts +45 -0
  94. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +20 -20
  95. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.d.ts +10 -0
  96. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +10 -10
  97. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.d.ts +162 -0
  98. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +25 -23
  99. package/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.d.ts +18 -0
  100. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +5 -5
  101. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManagers.d.ts +39 -0
  102. package/vscode/src/vs/workbench/services/extensions/common/extensionHostProxy.d.ts +17 -0
  103. package/vscode/src/vs/workbench/services/extensions/common/extensionManifestPropertiesService.service.d.ts +20 -0
  104. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.d.ts +45 -0
  105. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +4 -4
  106. package/vscode/src/vs/workbench/services/extensions/common/extensionStorageMigration.js +9 -8
  107. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.d.ts +17 -0
  108. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +3 -3
  109. package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +1 -1
  110. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +10 -10
  111. package/vscode/src/vs/workbench/services/extensions/common/rpcProtocol.d.ts +6 -0
  112. package/vscode/src/vs/workbench/services/remote/common/remoteExplorerService.d.ts +49 -0
  113. package/vscode/src/vs/workbench/services/remote/common/remoteExplorerService.service.d.ts +40 -0
  114. package/vscode/src/vs/workbench/services/remote/common/tunnelModel.d.ts +185 -0
  115. package/vscode/src/vs/workbench/services/userData/browser/userDataInit.d.ts +11 -0
  116. package/vscode/src/vs/workbench/services/userData/browser/userDataInit.service.d.ts +9 -0
  117. package/override/vs/platform/dialogs/common/dialogs.js +0 -10
@@ -4,8 +4,8 @@ import { Disposable, DisposableMap } from 'vscode/vscode/vs/base/common/lifecycl
4
4
  import { generateUuid } from 'vscode/vscode/vs/base/common/uuid';
5
5
  import { reviveWebviewExtension } from './mainThreadWebviews.js';
6
6
  import { ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
7
- import { IWebviewViewService } from 'vscode/vscode/vs/workbench/contrib/webviewView/browser/webviewViewService';
8
- import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
7
+ import { IWebviewViewService } from 'vscode/vscode/vs/workbench/contrib/webviewView/browser/webviewViewService.service';
8
+ import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry.service';
9
9
 
10
10
  let MainThreadWebviewsViews = class MainThreadWebviewsViews extends Disposable {
11
11
  constructor(context, mainThreadWebviews, _telemetryService, _webviewViewService) {
@@ -5,8 +5,8 @@ import { isWeb } from 'vscode/vscode/vs/base/common/platform';
5
5
  import { escape } from 'vscode/vscode/vs/base/common/strings';
6
6
  import { URI } from 'vscode/vscode/vs/base/common/uri';
7
7
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
8
- import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
9
- import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
8
+ import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener.service';
9
+ import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService.service';
10
10
  import { ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
11
11
  import { deserializeWebviewMessage, serializeWebviewMessage } from 'vscode/vscode/vs/workbench/api/common/extHostWebviewMessaging';
12
12
  import { SerializableObjectWithBuffers } from 'vscode/vscode/vs/workbench/services/extensions/common/proxyIdentifier';
@@ -2,11 +2,11 @@ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
2
  import { Event } from 'vscode/vscode/vs/base/common/event';
3
3
  import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
4
4
  import { URI } from 'vscode/vscode/vs/base/common/uri';
5
- import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
5
+ import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener.service';
6
6
  import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
7
- import { MainContext, ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
8
- import { IHostService } from 'vscode/vscode/vs/workbench/services/host/browser/host';
9
- import { IUserActivityService } from 'vscode/vscode/vs/workbench/services/userActivity/common/userActivityService';
7
+ import { ExtHostContext, MainContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
8
+ import { IHostService } from 'vscode/vscode/vs/workbench/services/host/browser/host.service';
9
+ import { IUserActivityService } from 'vscode/vscode/vs/workbench/services/userActivity/common/userActivityService.service';
10
10
 
11
11
  let MainThreadWindow = class MainThreadWindow {
12
12
  constructor(extHostContext, hostService, openerService, userActivityService) {
@@ -4,25 +4,26 @@ import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
4
4
  import { isNative } from 'vscode/vscode/vs/base/common/platform';
5
5
  import { URI } from 'vscode/vscode/vs/base/common/uri';
6
6
  import { localizeWithPath } from 'vscode/vscode/vs/nls';
7
- import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/common/environment';
8
- import { IFileService } from 'vscode/vscode/vs/platform/files/common/files';
7
+ import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/common/environment.service';
8
+ import { IFileService } from 'vscode/vscode/vs/platform/files/common/files.service';
9
9
  import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
10
- import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label';
11
- import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification';
12
- import { IRequestService } from 'vscode/vscode/vs/platform/request/common/request';
13
- import { IWorkspaceTrustManagementService, IWorkspaceTrustRequestService } from 'vscode/vscode/vs/platform/workspace/common/workspaceTrust';
14
- import { IWorkspaceContextService, isUntitledWorkspace } from 'vscode/vscode/vs/platform/workspace/common/workspace';
10
+ import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label.service';
11
+ import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification.service';
12
+ import { IRequestService } from 'vscode/vscode/vs/platform/request/common/request.service';
13
+ import { IWorkspaceTrustManagementService, IWorkspaceTrustRequestService } from 'vscode/vscode/vs/platform/workspace/common/workspaceTrust.service';
14
+ import { isUntitledWorkspace } from 'vscode/vscode/vs/platform/workspace/common/workspace';
15
+ import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace.service';
15
16
  import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
16
17
  import { checkGlobFileExists } from 'vscode/vscode/vs/workbench/services/extensions/common/workspaceContains';
17
18
  import { QueryBuilder } from 'vscode/vscode/vs/workbench/services/search/common/queryBuilder';
18
- import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
19
- import { ISearchService } from 'vscode/vscode/vs/workbench/services/search/common/search';
20
- import { IWorkspaceEditingService } from 'vscode/vscode/vs/workbench/services/workspaces/common/workspaceEditing';
21
- import { MainContext, ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
22
- import { IEditSessionIdentityService } from 'vscode/vscode/vs/platform/workspace/common/editSessions';
19
+ import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService.service';
20
+ import { ISearchService } from 'vscode/vscode/vs/workbench/services/search/common/search.service';
21
+ import { IWorkspaceEditingService } from 'vscode/vscode/vs/workbench/services/workspaces/common/workspaceEditing.service';
22
+ import { ExtHostContext, MainContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
23
+ import { IEditSessionIdentityService } from 'vscode/vscode/vs/platform/workspace/common/editSessions.service';
23
24
  import { SideBySideEditor, EditorResourceAccessor } from 'vscode/vscode/vs/workbench/common/editor';
24
25
  import { firstOrDefault, coalesce } from 'vscode/vscode/vs/base/common/arrays';
25
- import { ICanonicalUriService } from 'vscode/vscode/vs/platform/workspace/common/canonicalUri';
26
+ import { ICanonicalUriService } from 'vscode/vscode/vs/platform/workspace/common/canonicalUri.service';
26
27
 
27
28
  let MainThreadWorkspace = class MainThreadWorkspace {
28
29
  constructor(extHostContext, _searchService, _contextService, _editSessionIdentityService, _canonicalUriService, _editorService, _workspaceEditingService, _notificationService, _requestService, _instantiationService, _labelService, _environmentService, fileService, _workspaceTrustManagementService, _workspaceTrustRequestService) {
@@ -3,7 +3,7 @@ import { Emitter } from 'vscode/vscode/vs/base/common/event';
3
3
  import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
4
4
  import { isEqual } from 'vscode/vscode/vs/base/common/resources';
5
5
  import { ITextModelService } from 'vscode/vscode/vs/editor/common/services/resolverService';
6
- import { ITextFileService } from 'vscode/vscode/vs/workbench/services/textfile/common/textfiles';
6
+ import { ITextFileService } from 'vscode/vscode/vs/workbench/services/textfile/common/textfiles.service';
7
7
 
8
8
  var CustomTextEditorModel_1;
9
9
  let CustomTextEditorModel = CustomTextEditorModel_1 = class CustomTextEditorModel extends Disposable {
@@ -1,9 +1,9 @@
1
1
  import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
2
  import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
3
- import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
3
+ import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
4
4
  import { Memento } from 'vscode/vscode/vs/workbench/common/memento';
5
5
  import { updateContributedOpeners } from 'vscode/vscode/vs/workbench/contrib/externalUriOpener/common/configuration';
6
- import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
6
+ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions.service';
7
7
 
8
8
  var ContributedExternalUriOpenersStore_1;
9
9
  let ContributedExternalUriOpenersStore = class ContributedExternalUriOpenersStore extends Disposable {
@@ -0,0 +1,399 @@
1
+ import { __decorate, __param } from 'vscode/external/tslib/tslib.es6.js';
2
+ import { localizeWithPath, localize2WithPath } from 'vscode/vscode/vs/nls';
3
+ import { IExtensionManagementService, IGlobalExtensionEnablementService } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement.service';
4
+ import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage.service';
5
+ import { isResolverExtension } from 'vscode/vscode/vs/platform/extensions/common/extensions';
6
+ import { NotificationPriority } from 'vscode/vscode/vs/platform/notification/common/notification';
7
+ import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification.service';
8
+ import { IHostService } from 'vscode/vscode/vs/workbench/services/host/browser/host.service';
9
+ import { registerAction2, Action2, MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
10
+ import { RawContextKey, ContextKeyExpr } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
11
+ import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey.service';
12
+ import { IDialogService } from 'vscode/vscode/vs/platform/dialogs/common/dialogs.service';
13
+ import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
14
+ import { Extensions } from 'vscode/vscode/vs/workbench/common/contributions';
15
+ import { ICommandService } from 'vscode/vscode/vs/platform/commands/common/commands.service';
16
+ import { ILogService } from 'vscode/vscode/vs/platform/log/common/log.service';
17
+ import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService.service';
18
+ import { IWorkbenchIssueService } from 'vscode/vscode/vs/workbench/services/issue/common/issue.service';
19
+ import { IWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/common/environmentService.service';
20
+ import { areSameExtensions } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
21
+ import { Categories } from 'vscode/vscode/vs/platform/action/common/actionCommonCategories';
22
+ import { IWorkbenchExtensionEnablementService } from 'vscode/vscode/vs/workbench/services/extensionManagement/common/extensionManagement.service';
23
+ import { IExtensionBisectService } from 'vscode/vscode/vs/workbench/services/extensionManagement/browser/extensionBisect.service';
24
+ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
25
+
26
+ var ExtensionBisectService_1, ExtensionBisectUi_1;
27
+ class BisectState {
28
+ static fromJSON(raw) {
29
+ if (!raw) {
30
+ return undefined;
31
+ }
32
+ try {
33
+ const data = JSON.parse(raw);
34
+ return ( new BisectState(data.extensions, data.low, data.high, data.mid));
35
+ }
36
+ catch {
37
+ return undefined;
38
+ }
39
+ }
40
+ constructor(extensions, low, high, mid = ((low + high) / 2) | 0) {
41
+ this.extensions = extensions;
42
+ this.low = low;
43
+ this.high = high;
44
+ this.mid = mid;
45
+ }
46
+ }
47
+ let ExtensionBisectService = class ExtensionBisectService {
48
+ static { ExtensionBisectService_1 = this; }
49
+ static { this._storageKey = 'extensionBisectState'; }
50
+ constructor(logService, _storageService, _envService) {
51
+ this._storageService = _storageService;
52
+ this._envService = _envService;
53
+ this._disabled = ( new Map());
54
+ const raw = _storageService.get(ExtensionBisectService_1._storageKey, -1 );
55
+ this._state = BisectState.fromJSON(raw);
56
+ if (this._state) {
57
+ const { mid, high } = this._state;
58
+ for (let i = 0; i < this._state.extensions.length; i++) {
59
+ const isDisabled = i >= mid && i < high;
60
+ this._disabled.set(this._state.extensions[i], isDisabled);
61
+ }
62
+ logService.warn('extension BISECT active', [...this._disabled]);
63
+ }
64
+ }
65
+ get isActive() {
66
+ return !!this._state;
67
+ }
68
+ get disabledCount() {
69
+ return this._state ? this._state.high - this._state.mid : -1;
70
+ }
71
+ isDisabledByBisect(extension) {
72
+ if (!this._state) {
73
+ return false;
74
+ }
75
+ if (isResolverExtension(extension.manifest, this._envService.remoteAuthority)) {
76
+ return false;
77
+ }
78
+ if (this._isEnabledInEnv(extension)) {
79
+ return false;
80
+ }
81
+ const disabled = this._disabled.get(extension.identifier.id);
82
+ return disabled ?? false;
83
+ }
84
+ _isEnabledInEnv(extension) {
85
+ return Array.isArray(this._envService.enableExtensions) && ( this._envService.enableExtensions.some(id => areSameExtensions({ id }, extension.identifier)));
86
+ }
87
+ async start(extensions) {
88
+ if (this._state) {
89
+ throw new Error('invalid state');
90
+ }
91
+ const extensionIds = ( extensions.map(ext => ext.identifier.id));
92
+ const newState = ( new BisectState(extensionIds, 0, extensionIds.length, 0));
93
+ this._storageService.store(ExtensionBisectService_1._storageKey, JSON.stringify(newState), -1 , 1 );
94
+ await this._storageService.flush();
95
+ }
96
+ async next(seeingBad) {
97
+ if (!this._state) {
98
+ throw new Error('invalid state');
99
+ }
100
+ if (seeingBad && this._state.mid === 0 && this._state.high === this._state.extensions.length) {
101
+ return { bad: true, id: '' };
102
+ }
103
+ if (this._state.low === this._state.high - 1) {
104
+ await this.reset();
105
+ return { id: this._state.extensions[this._state.low], bad: seeingBad };
106
+ }
107
+ const nextState = ( new BisectState(
108
+ this._state.extensions,
109
+ seeingBad ? this._state.low : this._state.mid,
110
+ seeingBad ? this._state.mid : this._state.high
111
+ ));
112
+ this._storageService.store(ExtensionBisectService_1._storageKey, JSON.stringify(nextState), -1 , 1 );
113
+ await this._storageService.flush();
114
+ return undefined;
115
+ }
116
+ async reset() {
117
+ this._storageService.remove(ExtensionBisectService_1._storageKey, -1 );
118
+ await this._storageService.flush();
119
+ }
120
+ };
121
+ ExtensionBisectService = ExtensionBisectService_1 = ( __decorate([
122
+ ( __param(0, ILogService)),
123
+ ( __param(1, IStorageService)),
124
+ ( __param(2, IWorkbenchEnvironmentService))
125
+ ], ExtensionBisectService));
126
+ let ExtensionBisectUi = class ExtensionBisectUi {
127
+ static { ExtensionBisectUi_1 = this; }
128
+ static { this.ctxIsBisectActive = ( new RawContextKey('isExtensionBisectActive', false)); }
129
+ constructor(contextKeyService, _extensionBisectService, _notificationService, _commandService) {
130
+ this._extensionBisectService = _extensionBisectService;
131
+ this._notificationService = _notificationService;
132
+ this._commandService = _commandService;
133
+ if (_extensionBisectService.isActive) {
134
+ ExtensionBisectUi_1.ctxIsBisectActive.bindTo(contextKeyService).set(true);
135
+ this._showBisectPrompt();
136
+ }
137
+ }
138
+ _showBisectPrompt() {
139
+ const goodPrompt = {
140
+ label: ( localizeWithPath(
141
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
142
+ 'I cannot reproduce',
143
+ "I can't reproduce"
144
+ )),
145
+ run: () => this._commandService.executeCommand('extension.bisect.next', false)
146
+ };
147
+ const badPrompt = {
148
+ label: ( localizeWithPath(
149
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
150
+ 'This is Bad',
151
+ "I can reproduce"
152
+ )),
153
+ run: () => this._commandService.executeCommand('extension.bisect.next', true)
154
+ };
155
+ const stop = {
156
+ label: 'Stop Bisect',
157
+ run: () => this._commandService.executeCommand('extension.bisect.stop')
158
+ };
159
+ const message = this._extensionBisectService.disabledCount === 1
160
+ ? ( localizeWithPath(
161
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
162
+ 'bisect.singular',
163
+ "Extension Bisect is active and has disabled 1 extension. Check if you can still reproduce the problem and proceed by selecting from these options."
164
+ ))
165
+ : ( localizeWithPath(
166
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
167
+ 'bisect.plural',
168
+ "Extension Bisect is active and has disabled {0} extensions. Check if you can still reproduce the problem and proceed by selecting from these options.",
169
+ this._extensionBisectService.disabledCount
170
+ ));
171
+ this._notificationService.prompt(Severity$1.Info, message, [goodPrompt, badPrompt, stop], { sticky: true, priority: NotificationPriority.URGENT });
172
+ }
173
+ };
174
+ ExtensionBisectUi = ExtensionBisectUi_1 = ( __decorate([
175
+ ( __param(0, IContextKeyService)),
176
+ ( __param(1, IExtensionBisectService)),
177
+ ( __param(2, INotificationService)),
178
+ ( __param(3, ICommandService))
179
+ ], ExtensionBisectUi));
180
+ ( Registry.as(Extensions.Workbench)).registerWorkbenchContribution(ExtensionBisectUi, 3 );
181
+ registerAction2(class extends Action2 {
182
+ constructor() {
183
+ super({
184
+ id: 'extension.bisect.start',
185
+ title: ( localize2WithPath(
186
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
187
+ 'title.start',
188
+ 'Start Extension Bisect'
189
+ )),
190
+ category: Categories.Help,
191
+ f1: true,
192
+ precondition: ( ExtensionBisectUi.ctxIsBisectActive.negate()),
193
+ menu: {
194
+ id: MenuId.ViewContainerTitle,
195
+ when: ( ContextKeyExpr.equals('viewContainer', 'workbench.view.extensions')),
196
+ group: '2_enablement',
197
+ order: 4
198
+ }
199
+ });
200
+ }
201
+ async run(accessor) {
202
+ const dialogService = accessor.get(IDialogService);
203
+ const hostService = accessor.get(IHostService);
204
+ const extensionManagement = accessor.get(IExtensionManagementService);
205
+ const extensionEnablementService = accessor.get(IWorkbenchExtensionEnablementService);
206
+ const extensionsBisect = accessor.get(IExtensionBisectService);
207
+ const extensions = (await extensionManagement.getInstalled(1 )).filter(ext => extensionEnablementService.isEnabled(ext));
208
+ const res = await dialogService.confirm({
209
+ message: ( localizeWithPath(
210
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
211
+ 'msg.start',
212
+ "Extension Bisect"
213
+ )),
214
+ detail: ( localizeWithPath(
215
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
216
+ 'detail.start',
217
+ "Extension Bisect will use binary search to find an extension that causes a problem. During the process the window reloads repeatedly (~{0} times). Each time you must confirm if you are still seeing problems.",
218
+ 2 + Math.log2(extensions.length) | 0
219
+ )),
220
+ primaryButton: ( localizeWithPath(
221
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
222
+ { key: 'msg2', comment: ['&& denotes a mnemonic'] },
223
+ "&&Start Extension Bisect"
224
+ ))
225
+ });
226
+ if (res.confirmed) {
227
+ await extensionsBisect.start(extensions);
228
+ hostService.reload();
229
+ }
230
+ }
231
+ });
232
+ registerAction2(class extends Action2 {
233
+ constructor() {
234
+ super({
235
+ id: 'extension.bisect.next',
236
+ title: ( localize2WithPath(
237
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
238
+ 'title.isBad',
239
+ 'Continue Extension Bisect'
240
+ )),
241
+ category: Categories.Help,
242
+ f1: true,
243
+ precondition: ExtensionBisectUi.ctxIsBisectActive
244
+ });
245
+ }
246
+ async run(accessor, seeingBad) {
247
+ const dialogService = accessor.get(IDialogService);
248
+ const hostService = accessor.get(IHostService);
249
+ const bisectService = accessor.get(IExtensionBisectService);
250
+ const productService = accessor.get(IProductService);
251
+ const extensionEnablementService = accessor.get(IGlobalExtensionEnablementService);
252
+ const issueService = accessor.get(IWorkbenchIssueService);
253
+ if (!bisectService.isActive) {
254
+ return;
255
+ }
256
+ if (seeingBad === undefined) {
257
+ const goodBadStopCancel = await this._checkForBad(dialogService, bisectService);
258
+ if (goodBadStopCancel === null) {
259
+ return;
260
+ }
261
+ seeingBad = goodBadStopCancel;
262
+ }
263
+ if (seeingBad === undefined) {
264
+ await bisectService.reset();
265
+ hostService.reload();
266
+ return;
267
+ }
268
+ const done = await bisectService.next(seeingBad);
269
+ if (!done) {
270
+ hostService.reload();
271
+ return;
272
+ }
273
+ if (done.bad) {
274
+ await dialogService.info(( localizeWithPath(
275
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
276
+ 'done.msg',
277
+ "Extension Bisect"
278
+ )), ( localizeWithPath(
279
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
280
+ 'done.detail2',
281
+ "Extension Bisect is done but no extension has been identified. This might be a problem with {0}.",
282
+ productService.nameShort
283
+ )));
284
+ }
285
+ else {
286
+ const res = await dialogService.confirm({
287
+ type: Severity$1.Info,
288
+ message: ( localizeWithPath(
289
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
290
+ 'done.msg',
291
+ "Extension Bisect"
292
+ )),
293
+ primaryButton: ( localizeWithPath(
294
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
295
+ { key: 'report', comment: ['&& denotes a mnemonic'] },
296
+ "&&Report Issue & Continue"
297
+ )),
298
+ cancelButton: ( localizeWithPath(
299
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
300
+ 'continue',
301
+ "Continue"
302
+ )),
303
+ detail: ( localizeWithPath(
304
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
305
+ 'done.detail',
306
+ "Extension Bisect is done and has identified {0} as the extension causing the problem.",
307
+ done.id
308
+ )),
309
+ checkbox: { label: ( localizeWithPath(
310
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
311
+ 'done.disbale',
312
+ "Keep this extension disabled"
313
+ )), checked: true }
314
+ });
315
+ if (res.checkboxChecked) {
316
+ await extensionEnablementService.disableExtension({ id: done.id }, undefined);
317
+ }
318
+ if (res.confirmed) {
319
+ await issueService.openReporter({ extensionId: done.id });
320
+ }
321
+ }
322
+ await bisectService.reset();
323
+ hostService.reload();
324
+ }
325
+ async _checkForBad(dialogService, bisectService) {
326
+ const { result } = await dialogService.prompt({
327
+ type: Severity$1.Info,
328
+ message: ( localizeWithPath(
329
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
330
+ 'msg.next',
331
+ "Extension Bisect"
332
+ )),
333
+ detail: ( localizeWithPath(
334
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
335
+ 'bisect',
336
+ "Extension Bisect is active and has disabled {0} extensions. Check if you can still reproduce the problem and proceed by selecting from these options.",
337
+ bisectService.disabledCount
338
+ )),
339
+ buttons: [
340
+ {
341
+ label: ( localizeWithPath(
342
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
343
+ { key: 'next.good', comment: ['&& denotes a mnemonic'] },
344
+ "I ca&&n't reproduce"
345
+ )),
346
+ run: () => false
347
+ },
348
+ {
349
+ label: ( localizeWithPath(
350
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
351
+ { key: 'next.bad', comment: ['&& denotes a mnemonic'] },
352
+ "I can &&reproduce"
353
+ )),
354
+ run: () => true
355
+ },
356
+ {
357
+ label: ( localizeWithPath(
358
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
359
+ { key: 'next.stop', comment: ['&& denotes a mnemonic'] },
360
+ "&&Stop Bisect"
361
+ )),
362
+ run: () => undefined
363
+ }
364
+ ],
365
+ cancelButton: {
366
+ label: ( localizeWithPath(
367
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
368
+ { key: 'next.cancel', comment: ['&& denotes a mnemonic'] },
369
+ "&&Cancel Bisect"
370
+ )),
371
+ run: () => null
372
+ }
373
+ });
374
+ return result;
375
+ }
376
+ });
377
+ registerAction2(class extends Action2 {
378
+ constructor() {
379
+ super({
380
+ id: 'extension.bisect.stop',
381
+ title: ( localize2WithPath(
382
+ 'vs/workbench/services/extensionManagement/browser/extensionBisect',
383
+ 'title.stop',
384
+ 'Stop Extension Bisect'
385
+ )),
386
+ category: Categories.Help,
387
+ f1: true,
388
+ precondition: ExtensionBisectUi.ctxIsBisectActive
389
+ });
390
+ }
391
+ async run(accessor) {
392
+ const extensionsBisect = accessor.get(IExtensionBisectService);
393
+ const hostService = accessor.get(IHostService);
394
+ await extensionsBisect.reset();
395
+ hostService.reload();
396
+ }
397
+ });
398
+
399
+ export { ExtensionBisectService };
@@ -0,0 +1,53 @@
1
+ import { IExtensionIdentifier, IExtensionManifest, IExtension } from 'vscode/vscode/vs/platform/extensions/common/extensions';
2
+ import { InstallExtensionEvent, UninstallExtensionEvent, DidUninstallExtensionEvent, Metadata, ILocalExtension } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
3
+ import { URI } from 'vscode/vscode/vs/base/common/uri';
4
+ import { IProfileAwareExtensionManagementService } from './extensionManagement.service.js';
5
+
6
+ type DidChangeProfileEvent = {
7
+ readonly added: ILocalExtension[];
8
+ readonly removed: ILocalExtension[];
9
+ };
10
+ interface IExtensionManagementServer {
11
+ readonly id: string;
12
+ readonly label: string;
13
+ readonly extensionManagementService: IProfileAwareExtensionManagementService;
14
+ }
15
+ interface IResourceExtension {
16
+ readonly identifier: IExtensionIdentifier;
17
+ readonly location: URI;
18
+ readonly manifest: IExtensionManifest;
19
+ readonly readmeUri?: URI;
20
+ readonly changelogUri?: URI;
21
+ }
22
+ type InstallExtensionOnServerEvent = InstallExtensionEvent & {
23
+ server: IExtensionManagementServer;
24
+ };
25
+ type UninstallExtensionOnServerEvent = UninstallExtensionEvent & {
26
+ server: IExtensionManagementServer;
27
+ };
28
+ type DidUninstallExtensionOnServerEvent = DidUninstallExtensionEvent & {
29
+ server: IExtensionManagementServer;
30
+ };
31
+ type DidChangeProfileForServerEvent = DidChangeProfileEvent & {
32
+ server: IExtensionManagementServer;
33
+ };
34
+ declare const enum EnablementState {
35
+ DisabledByTrustRequirement = 0,
36
+ DisabledByExtensionKind = 1,
37
+ DisabledByEnvironment = 2,
38
+ EnabledByEnvironment = 3,
39
+ DisabledByVirtualWorkspace = 4,
40
+ DisabledByExtensionDependency = 5,
41
+ DisabledGlobally = 6,
42
+ DisabledWorkspace = 7,
43
+ EnabledGlobally = 8,
44
+ EnabledWorkspace = 9
45
+ }
46
+ interface IScannedExtension extends IExtension {
47
+ readonly metadata?: Metadata;
48
+ }
49
+ type ScanOptions = {
50
+ readonly skipInvalidExtensions?: boolean;
51
+ };
52
+
53
+ export { type DidChangeProfileEvent, type DidChangeProfileForServerEvent, type DidUninstallExtensionOnServerEvent, EnablementState, type IExtensionManagementServer, type IResourceExtension, type IScannedExtension, type InstallExtensionOnServerEvent, type ScanOptions, type UninstallExtensionOnServerEvent };