@codingame/monaco-vscode-extensions-service-override 1.83.7 → 1.83.9

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 (183) hide show
  1. package/assets/webWorkerExtensionHostIframe.html +123 -0
  2. package/extensions.d.ts +12 -13
  3. package/extensions.js +456 -0
  4. package/external/rollup-plugin-styles/dist/runtime/inject-css.js +3 -0
  5. package/external/tslib/tslib.es6.js +11 -0
  6. package/index.d.ts +1 -1
  7. package/index.js +2 -2
  8. package/override/vs/platform/dialogs/common/dialogs.js +8 -0
  9. package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +8 -0
  10. package/override/vs/workbench/contrib/notebook/common/notebookEditorInput.js +3 -0
  11. package/package.json +5 -3
  12. package/tools/url.js +10 -0
  13. package/tools.js +5 -0
  14. package/vscode/src/vs/base/common/console.js +59 -0
  15. package/vscode/src/vs/base/common/prefixTree.js +131 -0
  16. package/vscode/src/vs/platform/files/common/watcher.js +71 -0
  17. package/vscode/src/vs/platform/lifecycle/common/lifecycle.js +27 -0
  18. package/vscode/src/vs/platform/log/browser/log.js +26 -0
  19. package/vscode/src/vs/platform/remote/common/managedSocket.js +98 -0
  20. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +31 -0
  21. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +35 -0
  22. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +330 -0
  23. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +68 -0
  24. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +174 -0
  25. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents.js +52 -0
  26. package/vscode/src/vs/workbench/api/browser/mainThreadChatProvider.js +61 -0
  27. package/vscode/src/vs/workbench/api/browser/mainThreadChatSlashCommands.js +49 -0
  28. package/vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js +31 -0
  29. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +24 -0
  30. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +107 -0
  31. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +94 -0
  32. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +541 -0
  33. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +80 -0
  34. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +35 -0
  35. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +578 -0
  36. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +387 -0
  37. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +102 -0
  38. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +69 -0
  39. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +68 -0
  40. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +75 -0
  41. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +249 -0
  42. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +370 -0
  43. package/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js +22 -0
  44. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +41 -0
  45. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +411 -0
  46. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +475 -0
  47. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +227 -0
  48. package/vscode/src/vs/workbench/api/browser/mainThreadErrors.js +24 -0
  49. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +317 -0
  50. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +280 -0
  51. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +283 -0
  52. package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +68 -0
  53. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +28 -0
  54. package/vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js +33 -0
  55. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +27 -0
  56. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +947 -0
  57. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +78 -0
  58. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +35 -0
  59. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +78 -0
  60. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +93 -0
  61. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +118 -0
  62. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +158 -0
  63. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +123 -0
  64. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +188 -0
  65. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +129 -0
  66. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +131 -0
  67. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +341 -0
  68. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js +25 -0
  69. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +48 -0
  70. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +76 -0
  71. package/vscode/src/vs/workbench/api/browser/mainThreadProfilContentHandlers.js +38 -0
  72. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +68 -0
  73. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +49 -0
  74. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +185 -0
  75. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +30 -0
  76. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +463 -0
  77. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +49 -0
  78. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +148 -0
  79. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +70 -0
  80. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +50 -0
  81. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +53 -0
  82. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +72 -0
  83. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +731 -0
  84. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +53 -0
  85. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +412 -0
  86. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +182 -0
  87. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +24 -0
  88. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +55 -0
  89. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +313 -0
  90. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +223 -0
  91. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +110 -0
  92. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +61 -0
  93. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +29 -0
  94. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +283 -0
  95. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +100 -0
  96. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +135 -0
  97. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +57 -0
  98. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +273 -0
  99. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHost.api.impl.d.ts +2 -2
  100. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostConfiguration.d.ts +3 -3
  101. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostExtensionService.d.ts +3 -4
  102. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostManagedSockets.d.ts +2 -2
  103. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostTerminalService.d.ts +19 -20
  104. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostTunnelService.d.ts +7 -8
  105. package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostWorkspace.d.ts +25 -26
  106. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +35 -0
  107. package/vscode/src/vs/workbench/contrib/chat/common/chatModel.js +217 -0
  108. package/vscode/src/vs/workbench/contrib/comments/browser/commentColors.js +57 -0
  109. package/vscode/src/vs/workbench/contrib/comments/browser/commentFormActions.js +51 -0
  110. package/vscode/src/vs/workbench/contrib/comments/browser/commentGlyphWidget.js +92 -0
  111. package/vscode/src/vs/workbench/contrib/comments/browser/commentNode.js +648 -0
  112. package/vscode/src/vs/workbench/contrib/comments/browser/commentReply.js +297 -0
  113. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadAdditionalActions.js +62 -0
  114. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadBody.js +249 -0
  115. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadHeader.js +109 -0
  116. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadRangeDecorator.js +109 -0
  117. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadWidget.js +331 -0
  118. package/vscode/src/vs/workbench/contrib/comments/browser/commentThreadZoneWidget.js +380 -0
  119. package/vscode/src/vs/workbench/contrib/comments/browser/comments.js +5 -0
  120. package/vscode/src/vs/workbench/contrib/comments/browser/commentsController.js +1196 -0
  121. package/vscode/src/vs/workbench/contrib/comments/browser/commentsFilterOptions.js +19 -0
  122. package/vscode/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.js +334 -0
  123. package/vscode/src/vs/workbench/contrib/comments/browser/commentsView.js +543 -0
  124. package/vscode/src/vs/workbench/contrib/comments/browser/commentsViewActions.js +178 -0
  125. package/vscode/src/vs/workbench/contrib/comments/browser/media/panel.css.js +6 -0
  126. package/vscode/src/vs/workbench/contrib/comments/browser/media/review.css.js +6 -0
  127. package/vscode/src/vs/workbench/contrib/comments/browser/reactionsAction.js +101 -0
  128. package/vscode/src/vs/workbench/contrib/comments/browser/timestamp.js +57 -0
  129. package/vscode/src/vs/workbench/contrib/comments/common/commentModel.js +145 -0
  130. package/vscode/src/vs/workbench/contrib/comments/common/commentsConfiguration.js +3 -0
  131. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +73 -0
  132. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +83 -0
  133. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveEditorInput.js +179 -0
  134. package/vscode/src/vs/workbench/contrib/interactive/browser/interactiveHistoryService.js +5 -0
  135. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInput.js +144 -0
  136. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeEditorInputModel.js +482 -0
  137. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/mergeMarkers/mergeMarkersController.js +6 -0
  138. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/diffComputer.js +85 -0
  139. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/editing.js +56 -0
  140. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/lineRange.js +110 -0
  141. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mapping.js +260 -0
  142. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/mergeEditorModel.js +616 -0
  143. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/modifiedBaseRange.js +309 -0
  144. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/rangeUtils.js +38 -0
  145. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/model/textModelDiffs.js +167 -0
  146. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/telemetry.js +80 -0
  147. package/vscode/src/vs/workbench/contrib/mergeEditor/browser/utils.js +70 -0
  148. package/vscode/src/vs/workbench/contrib/mergeEditor/common/mergeEditor.js +3 -0
  149. package/vscode/src/vs/workbench/contrib/notebook/common/notebookEditorModel.js +108 -0
  150. package/vscode/src/vs/workbench/contrib/tasks/common/tasks.js +506 -0
  151. package/vscode/src/vs/workbench/contrib/terminal/browser/terminalProcessExtHostProxy.js +132 -0
  152. package/vscode/src/vs/workbench/contrib/testing/common/getComputedState.js +103 -0
  153. package/vscode/src/vs/workbench/contrib/testing/common/observableValue.js +28 -0
  154. package/vscode/src/vs/workbench/contrib/testing/common/testCoverage.js +25 -0
  155. package/vscode/src/vs/workbench/contrib/testing/common/testResult.js +336 -0
  156. package/vscode/src/vs/workbench/contrib/testing/common/testingStates.js +46 -0
  157. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +283 -0
  158. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +273 -0
  159. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +52 -0
  160. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +1093 -0
  161. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +41 -0
  162. package/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.js +25 -0
  163. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +643 -0
  164. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +274 -0
  165. package/vscode/src/vs/workbench/services/extensions/common/extensionStorageMigration.js +58 -0
  166. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +80 -0
  167. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +64 -0
  168. package/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.js +49 -0
  169. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +220 -0
  170. package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +5 -0
  171. package/vscode/src/vs/workbench/services/workingCopy/common/resourceWorkingCopy.js +79 -0
  172. package/vscode-proposed.d.ts +0 -3872
  173. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHost.protocol.d.ts +0 -0
  174. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostExtensionActivator.d.ts +0 -0
  175. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostFileSystemInfo.d.ts +0 -0
  176. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostInitDataService.d.ts +0 -0
  177. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostLocalizationService.d.ts +0 -0
  178. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostRpcService.d.ts +0 -0
  179. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostStoragePaths.d.ts +0 -0
  180. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostTypes.d.ts +0 -0
  181. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/common/extHostUriTransformerService.d.ts +0 -0
  182. /package/{dist/main/vscode → vscode}/src/vs/workbench/api/worker/extHostExtensionService.d.ts +0 -0
  183. /package/{dist/main/vscode → vscode}/src/vs/workbench/services/search/common/queryBuilder.d.ts +0 -0
@@ -0,0 +1,643 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { IntervalTimer, Barrier } from 'monaco-editor/esm/vs/base/common/async.js';
3
+ import { VSBuffer } from 'monaco-editor/esm/vs/base/common/buffer.js';
4
+ import * as errors from 'monaco-editor/esm/vs/base/common/errors.js';
5
+ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
6
+ import { Disposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
7
+ import { StopWatch } from 'monaco-editor/esm/vs/base/common/stopwatch.js';
8
+ import * as nls from 'monaco-editor/esm/vs/nls.js';
9
+ import { Categories } from 'monaco-editor/esm/vs/platform/action/common/actionCommonCategories.js';
10
+ import { registerAction2, Action2 } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
11
+ import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
12
+ import { ILogService } from 'monaco-editor/esm/vs/platform/log/common/log.js';
13
+ import { RemoteAuthorityResolverErrorCode, getRemoteAuthorityPrefix } from 'vscode/vscode/vs/platform/remote/common/remoteAuthorityResolver';
14
+ import { ITelemetryService } from 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
15
+ import { IEditorService } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
16
+ import { IWorkbenchEnvironmentService } from 'vscode/vscode/vs/workbench/services/environment/common/environmentService';
17
+ import { ExtHostCustomersRegistry } from './extHostCustomers.js';
18
+ import { extensionHostKindToString } from 'vscode/vscode/vs/workbench/services/extensions/common/extensionHostKind';
19
+ import { ExtensionHostExtensions } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
20
+ import { RPCProtocol } from 'vscode/vscode/vs/workbench/services/extensions/common/rpcProtocol';
21
+
22
+ var ExtensionHostManager_1;
23
+ function createExtensionHostManager(instantiationService, extensionHost, initialActivationEvents, internalExtensionService) {
24
+ if (extensionHost.startup === 3 && initialActivationEvents.length === 0) {
25
+ return instantiationService.createInstance(LazyCreateExtensionHostManager, extensionHost, internalExtensionService);
26
+ }
27
+ return instantiationService.createInstance(ExtensionHostManager, extensionHost, initialActivationEvents, internalExtensionService);
28
+ }
29
+ let ExtensionHostManager = ExtensionHostManager_1 = class ExtensionHostManager extends Disposable {
30
+ get kind() {
31
+ return this._extensionHost.runningLocation.kind;
32
+ }
33
+ get startup() {
34
+ return this._extensionHost.startup;
35
+ }
36
+ constructor(extensionHost, initialActivationEvents, _internalExtensionService, _instantiationService, _environmentService, _telemetryService, _logService) {
37
+ super();
38
+ this._internalExtensionService = _internalExtensionService;
39
+ this._instantiationService = _instantiationService;
40
+ this._environmentService = _environmentService;
41
+ this._telemetryService = _telemetryService;
42
+ this._logService = _logService;
43
+ this._onDidChangeResponsiveState = this._register(( new Emitter()));
44
+ this.onDidChangeResponsiveState = this._onDidChangeResponsiveState.event;
45
+ this._hasStarted = false;
46
+ this._cachedActivationEvents = ( new Map());
47
+ this._resolvedActivationEvents = ( new Set());
48
+ this._rpcProtocol = null;
49
+ this._customers = [];
50
+ this._extensionHost = extensionHost;
51
+ this.onDidExit = this._extensionHost.onExit;
52
+ const startingTelemetryEvent = {
53
+ time: Date.now(),
54
+ action: 'starting',
55
+ kind: extensionHostKindToString(this.kind)
56
+ };
57
+ this._telemetryService.publicLog2('extensionHostStartup', startingTelemetryEvent);
58
+ this._proxy = this._extensionHost.start().then((protocol) => {
59
+ this._hasStarted = true;
60
+ const successTelemetryEvent = {
61
+ time: Date.now(),
62
+ action: 'success',
63
+ kind: extensionHostKindToString(this.kind)
64
+ };
65
+ this._telemetryService.publicLog2('extensionHostStartup', successTelemetryEvent);
66
+ return this._createExtensionHostCustomers(this.kind, protocol);
67
+ }, (err) => {
68
+ this._logService.error(`Error received from starting extension host (kind: ${extensionHostKindToString(this.kind)})`);
69
+ this._logService.error(err);
70
+ const failureTelemetryEvent = {
71
+ time: Date.now(),
72
+ action: 'error',
73
+ kind: extensionHostKindToString(this.kind)
74
+ };
75
+ if (err && err.name) {
76
+ failureTelemetryEvent.errorName = err.name;
77
+ }
78
+ if (err && err.message) {
79
+ failureTelemetryEvent.errorMessage = err.message;
80
+ }
81
+ if (err && err.stack) {
82
+ failureTelemetryEvent.errorStack = err.stack;
83
+ }
84
+ this._telemetryService.publicLog2('extensionHostStartup', failureTelemetryEvent);
85
+ return null;
86
+ });
87
+ this._proxy.then(() => {
88
+ initialActivationEvents.forEach((activationEvent) => this.activateByEvent(activationEvent, 0 ));
89
+ this._register(registerLatencyTestProvider({
90
+ measure: () => this.measure()
91
+ }));
92
+ });
93
+ }
94
+ dispose() {
95
+ if (this._extensionHost) {
96
+ this._extensionHost.dispose();
97
+ }
98
+ if (this._rpcProtocol) {
99
+ this._rpcProtocol.dispose();
100
+ }
101
+ for (let i = 0, len = this._customers.length; i < len; i++) {
102
+ const customer = this._customers[i];
103
+ try {
104
+ customer.dispose();
105
+ }
106
+ catch (err) {
107
+ errors.onUnexpectedError(err);
108
+ }
109
+ }
110
+ this._proxy = null;
111
+ super.dispose();
112
+ }
113
+ async measure() {
114
+ const proxy = await this._proxy;
115
+ if (!proxy) {
116
+ return null;
117
+ }
118
+ const latency = await this._measureLatency(proxy);
119
+ const down = await this._measureDown(proxy);
120
+ const up = await this._measureUp(proxy);
121
+ return {
122
+ remoteAuthority: this._extensionHost.remoteAuthority,
123
+ latency,
124
+ down,
125
+ up
126
+ };
127
+ }
128
+ async ready() {
129
+ await this._proxy;
130
+ }
131
+ async _measureLatency(proxy) {
132
+ const COUNT = 10;
133
+ let sum = 0;
134
+ for (let i = 0; i < COUNT; i++) {
135
+ const sw = StopWatch.create();
136
+ await proxy.test_latency(i);
137
+ sw.stop();
138
+ sum += sw.elapsed();
139
+ }
140
+ return (sum / COUNT);
141
+ }
142
+ static _convert(byteCount, elapsedMillis) {
143
+ return (byteCount * 1000 * 8) / elapsedMillis;
144
+ }
145
+ async _measureUp(proxy) {
146
+ const SIZE = 10 * 1024 * 1024;
147
+ const buff = VSBuffer.alloc(SIZE);
148
+ const value = Math.ceil(Math.random() * 256);
149
+ for (let i = 0; i < buff.byteLength; i++) {
150
+ buff.writeUInt8(i, value);
151
+ }
152
+ const sw = StopWatch.create();
153
+ await proxy.test_up(buff);
154
+ sw.stop();
155
+ return ExtensionHostManager_1._convert(SIZE, sw.elapsed());
156
+ }
157
+ async _measureDown(proxy) {
158
+ const SIZE = 10 * 1024 * 1024;
159
+ const sw = StopWatch.create();
160
+ await proxy.test_down(SIZE);
161
+ sw.stop();
162
+ return ExtensionHostManager_1._convert(SIZE, sw.elapsed());
163
+ }
164
+ _createExtensionHostCustomers(kind, protocol) {
165
+ let logger = null;
166
+ if (this._environmentService.logExtensionHostCommunication) {
167
+ logger = ( new RPCLogger(kind));
168
+ }
169
+ else if (TelemetryRPCLogger.isEnabled()) {
170
+ logger = ( new TelemetryRPCLogger(this._telemetryService));
171
+ }
172
+ this._rpcProtocol = ( new RPCProtocol(protocol, logger));
173
+ this._register(this._rpcProtocol.onDidChangeResponsiveState((responsiveState) => this._onDidChangeResponsiveState.fire(responsiveState)));
174
+ let extensionHostProxy = null;
175
+ const extHostContext = {
176
+ remoteAuthority: this._extensionHost.remoteAuthority,
177
+ extensionHostKind: this.kind,
178
+ getProxy: (identifier) => ( this._rpcProtocol.getProxy(identifier)),
179
+ set: (identifier, instance) => this._rpcProtocol.set(identifier, instance),
180
+ dispose: () => this._rpcProtocol.dispose(),
181
+ assertRegistered: (identifiers) => ( this._rpcProtocol.assertRegistered(identifiers)),
182
+ drain: () => this._rpcProtocol.drain(),
183
+ internalExtensionService: this._internalExtensionService,
184
+ _setExtensionHostProxy: (value) => {
185
+ extensionHostProxy = value;
186
+ },
187
+ _setAllMainProxyIdentifiers: (value) => {
188
+ },
189
+ };
190
+ const namedCustomers = ExtHostCustomersRegistry.getNamedCustomers();
191
+ for (let i = 0, len = namedCustomers.length; i < len; i++) {
192
+ const [id, ctor] = namedCustomers[i];
193
+ try {
194
+ const instance = this._instantiationService.createInstance(ctor, extHostContext);
195
+ this._customers.push(instance);
196
+ this._rpcProtocol.set(id, instance);
197
+ }
198
+ catch (err) {
199
+ this._logService.error(`Cannot instantiate named customer: '${id.sid}'`);
200
+ this._logService.error(err);
201
+ errors.onUnexpectedError(err);
202
+ }
203
+ }
204
+ const customers = ExtHostCustomersRegistry.getCustomers();
205
+ for (const ctor of customers) {
206
+ try {
207
+ const instance = this._instantiationService.createInstance(ctor, extHostContext);
208
+ this._customers.push(instance);
209
+ }
210
+ catch (err) {
211
+ this._logService.error(err);
212
+ errors.onUnexpectedError(err);
213
+ }
214
+ }
215
+ if (!extensionHostProxy) {
216
+ throw new Error(`Missing IExtensionHostProxy!`);
217
+ }
218
+ return extensionHostProxy;
219
+ }
220
+ async activate(extension, reason) {
221
+ const proxy = await this._proxy;
222
+ if (!proxy) {
223
+ return false;
224
+ }
225
+ return proxy.activate(extension, reason);
226
+ }
227
+ activateByEvent(activationEvent, activationKind) {
228
+ if (activationKind === 1 && !this._hasStarted) {
229
+ return Promise.resolve();
230
+ }
231
+ if (!( this._cachedActivationEvents.has(activationEvent))) {
232
+ this._cachedActivationEvents.set(activationEvent, this._activateByEvent(activationEvent, activationKind));
233
+ }
234
+ return this._cachedActivationEvents.get(activationEvent);
235
+ }
236
+ activationEventIsDone(activationEvent) {
237
+ return ( this._resolvedActivationEvents.has(activationEvent));
238
+ }
239
+ async _activateByEvent(activationEvent, activationKind) {
240
+ if (!this._proxy) {
241
+ return;
242
+ }
243
+ const proxy = await this._proxy;
244
+ if (!proxy) {
245
+ return;
246
+ }
247
+ await proxy.activateByEvent(activationEvent, activationKind);
248
+ this._resolvedActivationEvents.add(activationEvent);
249
+ }
250
+ async getInspectPort(tryEnableInspector) {
251
+ if (this._extensionHost) {
252
+ if (tryEnableInspector) {
253
+ await this._extensionHost.enableInspectPort();
254
+ }
255
+ const port = this._extensionHost.getInspectPort();
256
+ if (port) {
257
+ return port;
258
+ }
259
+ }
260
+ return 0;
261
+ }
262
+ async resolveAuthority(remoteAuthority, resolveAttempt) {
263
+ const sw = StopWatch.create(false);
264
+ const prefix = () => `[${extensionHostKindToString(this._extensionHost.runningLocation.kind)}${this._extensionHost.runningLocation.affinity}][resolveAuthority(${getRemoteAuthorityPrefix(remoteAuthority)},${resolveAttempt})][${sw.elapsed()}ms] `;
265
+ const logInfo = (msg) => this._logService.info(`${prefix()}${msg}`);
266
+ const logError = (msg, err = undefined) => this._logService.error(`${prefix()}${msg}`, err);
267
+ logInfo(`obtaining proxy...`);
268
+ const proxy = await this._proxy;
269
+ if (!proxy) {
270
+ logError(`no proxy`);
271
+ return {
272
+ type: 'error',
273
+ error: {
274
+ message: `Cannot resolve authority`,
275
+ code: RemoteAuthorityResolverErrorCode.Unknown,
276
+ detail: undefined
277
+ }
278
+ };
279
+ }
280
+ logInfo(`invoking...`);
281
+ const intervalLogger = ( new IntervalTimer());
282
+ try {
283
+ intervalLogger.cancelAndSet(() => logInfo('waiting...'), 1000);
284
+ const resolverResult = await proxy.resolveAuthority(remoteAuthority, resolveAttempt);
285
+ intervalLogger.dispose();
286
+ if (resolverResult.type === 'ok') {
287
+ logInfo(`returned ${resolverResult.value.authority.connectTo}`);
288
+ }
289
+ else {
290
+ logError(`returned an error`, resolverResult.error);
291
+ }
292
+ return resolverResult;
293
+ }
294
+ catch (err) {
295
+ intervalLogger.dispose();
296
+ logError(`returned an error`, err);
297
+ return {
298
+ type: 'error',
299
+ error: {
300
+ message: err.message,
301
+ code: RemoteAuthorityResolverErrorCode.Unknown,
302
+ detail: err
303
+ }
304
+ };
305
+ }
306
+ }
307
+ async getCanonicalURI(remoteAuthority, uri) {
308
+ const proxy = await this._proxy;
309
+ if (!proxy) {
310
+ throw new Error(`Cannot resolve canonical URI`);
311
+ }
312
+ return proxy.getCanonicalURI(remoteAuthority, uri);
313
+ }
314
+ async start(extensionRegistryVersionId, allExtensions, myExtensions) {
315
+ const proxy = await this._proxy;
316
+ if (!proxy) {
317
+ return;
318
+ }
319
+ const deltaExtensions = this._extensionHost.extensions.set(extensionRegistryVersionId, allExtensions, myExtensions);
320
+ return proxy.startExtensionHost(deltaExtensions);
321
+ }
322
+ async extensionTestsExecute() {
323
+ const proxy = await this._proxy;
324
+ if (!proxy) {
325
+ throw new Error('Could not obtain Extension Host Proxy');
326
+ }
327
+ return proxy.extensionTestsExecute();
328
+ }
329
+ representsRunningLocation(runningLocation) {
330
+ return this._extensionHost.runningLocation.equals(runningLocation);
331
+ }
332
+ async deltaExtensions(incomingExtensionsDelta) {
333
+ const proxy = await this._proxy;
334
+ if (!proxy) {
335
+ return;
336
+ }
337
+ const outgoingExtensionsDelta = this._extensionHost.extensions.delta(incomingExtensionsDelta);
338
+ if (!outgoingExtensionsDelta) {
339
+ return;
340
+ }
341
+ return proxy.deltaExtensions(outgoingExtensionsDelta);
342
+ }
343
+ containsExtension(extensionId) {
344
+ return this._extensionHost.extensions?.containsExtension(extensionId) ?? false;
345
+ }
346
+ async setRemoteEnvironment(env) {
347
+ const proxy = await this._proxy;
348
+ if (!proxy) {
349
+ return;
350
+ }
351
+ return proxy.setRemoteEnvironment(env);
352
+ }
353
+ };
354
+ ExtensionHostManager = ExtensionHostManager_1 = ( __decorate([
355
+ ( __param(3, IInstantiationService)),
356
+ ( __param(4, IWorkbenchEnvironmentService)),
357
+ ( __param(5, ITelemetryService)),
358
+ ( __param(6, ILogService))
359
+ ], ExtensionHostManager));
360
+ let LazyCreateExtensionHostManager = class LazyCreateExtensionHostManager extends Disposable {
361
+ get kind() {
362
+ return this._extensionHost.runningLocation.kind;
363
+ }
364
+ get startup() {
365
+ return this._extensionHost.startup;
366
+ }
367
+ constructor(extensionHost, _internalExtensionService, _instantiationService, _logService) {
368
+ super();
369
+ this._internalExtensionService = _internalExtensionService;
370
+ this._instantiationService = _instantiationService;
371
+ this._logService = _logService;
372
+ this._onDidChangeResponsiveState = this._register(( new Emitter()));
373
+ this.onDidChangeResponsiveState = this._onDidChangeResponsiveState.event;
374
+ this._extensionHost = extensionHost;
375
+ this.onDidExit = extensionHost.onExit;
376
+ this._startCalled = ( new Barrier());
377
+ this._actual = null;
378
+ this._lazyStartExtensions = null;
379
+ }
380
+ _createActual(reason) {
381
+ this._logService.info(`Creating lazy extension host: ${reason}`);
382
+ this._actual = this._register(this._instantiationService.createInstance(ExtensionHostManager, this._extensionHost, [], this._internalExtensionService));
383
+ this._register(this._actual.onDidChangeResponsiveState((e) => this._onDidChangeResponsiveState.fire(e)));
384
+ return this._actual;
385
+ }
386
+ async _getOrCreateActualAndStart(reason) {
387
+ if (this._actual) {
388
+ return this._actual;
389
+ }
390
+ const actual = this._createActual(reason);
391
+ await actual.start(this._lazyStartExtensions.versionId, this._lazyStartExtensions.allExtensions, this._lazyStartExtensions.myExtensions);
392
+ return actual;
393
+ }
394
+ async ready() {
395
+ await this._startCalled.wait();
396
+ if (this._actual) {
397
+ await this._actual.ready();
398
+ }
399
+ }
400
+ representsRunningLocation(runningLocation) {
401
+ return this._extensionHost.runningLocation.equals(runningLocation);
402
+ }
403
+ async deltaExtensions(extensionsDelta) {
404
+ await this._startCalled.wait();
405
+ if (this._actual) {
406
+ return this._actual.deltaExtensions(extensionsDelta);
407
+ }
408
+ this._lazyStartExtensions.delta(extensionsDelta);
409
+ if (extensionsDelta.myToAdd.length > 0) {
410
+ const actual = this._createActual(`contains ${extensionsDelta.myToAdd.length} new extension(s) (installed or enabled): ${( extensionsDelta.myToAdd.map(extId => extId.value))}`);
411
+ await actual.start(this._lazyStartExtensions.versionId, this._lazyStartExtensions.allExtensions, this._lazyStartExtensions.myExtensions);
412
+ return;
413
+ }
414
+ }
415
+ containsExtension(extensionId) {
416
+ return this._extensionHost.extensions?.containsExtension(extensionId) ?? false;
417
+ }
418
+ async activate(extension, reason) {
419
+ await this._startCalled.wait();
420
+ if (this._actual) {
421
+ return this._actual.activate(extension, reason);
422
+ }
423
+ return false;
424
+ }
425
+ async activateByEvent(activationEvent, activationKind) {
426
+ if (activationKind === 1 ) {
427
+ if (this._actual) {
428
+ return this._actual.activateByEvent(activationEvent, activationKind);
429
+ }
430
+ return;
431
+ }
432
+ await this._startCalled.wait();
433
+ if (this._actual) {
434
+ return this._actual.activateByEvent(activationEvent, activationKind);
435
+ }
436
+ }
437
+ activationEventIsDone(activationEvent) {
438
+ if (!this._startCalled.isOpen()) {
439
+ return false;
440
+ }
441
+ if (this._actual) {
442
+ return this._actual.activationEventIsDone(activationEvent);
443
+ }
444
+ return true;
445
+ }
446
+ async getInspectPort(tryEnableInspector) {
447
+ await this._startCalled.wait();
448
+ if (this._actual) {
449
+ return this._actual.getInspectPort(tryEnableInspector);
450
+ }
451
+ return 0;
452
+ }
453
+ async resolveAuthority(remoteAuthority, resolveAttempt) {
454
+ await this._startCalled.wait();
455
+ if (this._actual) {
456
+ return this._actual.resolveAuthority(remoteAuthority, resolveAttempt);
457
+ }
458
+ return {
459
+ type: 'error',
460
+ error: {
461
+ message: `Cannot resolve authority`,
462
+ code: RemoteAuthorityResolverErrorCode.Unknown,
463
+ detail: undefined
464
+ }
465
+ };
466
+ }
467
+ async getCanonicalURI(remoteAuthority, uri) {
468
+ await this._startCalled.wait();
469
+ if (this._actual) {
470
+ return this._actual.getCanonicalURI(remoteAuthority, uri);
471
+ }
472
+ throw new Error(`Cannot resolve canonical URI`);
473
+ }
474
+ async start(extensionRegistryVersionId, allExtensions, myExtensions) {
475
+ if (myExtensions.length > 0) {
476
+ const actual = this._createActual(`contains ${myExtensions.length} extension(s): ${( myExtensions.map(extId => extId.value))}.`);
477
+ const result = actual.start(extensionRegistryVersionId, allExtensions, myExtensions);
478
+ this._startCalled.open();
479
+ return result;
480
+ }
481
+ this._lazyStartExtensions = ( new ExtensionHostExtensions(extensionRegistryVersionId, allExtensions, myExtensions));
482
+ this._startCalled.open();
483
+ }
484
+ async extensionTestsExecute() {
485
+ await this._startCalled.wait();
486
+ const actual = await this._getOrCreateActualAndStart(`execute tests.`);
487
+ return actual.extensionTestsExecute();
488
+ }
489
+ async setRemoteEnvironment(env) {
490
+ await this._startCalled.wait();
491
+ if (this._actual) {
492
+ return this._actual.setRemoteEnvironment(env);
493
+ }
494
+ }
495
+ };
496
+ LazyCreateExtensionHostManager = ( __decorate([
497
+ ( __param(2, IInstantiationService)),
498
+ ( __param(3, ILogService))
499
+ ], LazyCreateExtensionHostManager));
500
+ const colorTables = [
501
+ ['#2977B1', '#FC802D', '#34A13A', '#D3282F', '#9366BA'],
502
+ ['#8B564C', '#E177C0', '#7F7F7F', '#BBBE3D', '#2EBECD']
503
+ ];
504
+ function prettyWithoutArrays(data) {
505
+ if (Array.isArray(data)) {
506
+ return data;
507
+ }
508
+ if (data && typeof data === 'object' && typeof data.toString === 'function') {
509
+ const result = ( data.toString());
510
+ if (result !== '[object Object]') {
511
+ return result;
512
+ }
513
+ }
514
+ return data;
515
+ }
516
+ function pretty(data) {
517
+ if (Array.isArray(data)) {
518
+ return ( data.map(prettyWithoutArrays));
519
+ }
520
+ return prettyWithoutArrays(data);
521
+ }
522
+ class RPCLogger {
523
+ constructor(_kind) {
524
+ this._kind = _kind;
525
+ this._totalIncoming = 0;
526
+ this._totalOutgoing = 0;
527
+ }
528
+ _log(direction, totalLength, msgLength, req, initiator, str, data) {
529
+ data = pretty(data);
530
+ const colorTable = colorTables[initiator];
531
+ const color = colorTable[req % colorTable.length] ;
532
+ let args = [`%c[${extensionHostKindToString(this._kind)}][${direction}]%c[${String(totalLength).padStart(7)}]%c[len: ${String(msgLength).padStart(5)}]%c${String(req).padStart(5)} - ${str}`, 'color: darkgreen', 'color: grey', 'color: grey', `color: ${color}`];
533
+ if (/\($/.test(str)) {
534
+ args = args.concat(data);
535
+ args.push(')');
536
+ }
537
+ else {
538
+ args.push(data);
539
+ }
540
+ console.log.apply(console, args);
541
+ }
542
+ logIncoming(msgLength, req, initiator, str, data) {
543
+ this._totalIncoming += msgLength;
544
+ this._log('Ext \u2192 Win', this._totalIncoming, msgLength, req, initiator, str, data);
545
+ }
546
+ logOutgoing(msgLength, req, initiator, str, data) {
547
+ this._totalOutgoing += msgLength;
548
+ this._log('Win \u2192 Ext', this._totalOutgoing, msgLength, req, initiator, str, data);
549
+ }
550
+ }
551
+ let TelemetryRPCLogger = class TelemetryRPCLogger {
552
+ static isEnabled() {
553
+ return Math.trunc(Math.random() * 1000) < 0.5;
554
+ }
555
+ constructor(_telemetryService) {
556
+ this._telemetryService = _telemetryService;
557
+ this._pendingRequests = ( new Map());
558
+ }
559
+ logIncoming(msgLength, req, initiator, str) {
560
+ if (initiator === 0 && /^receiveReply(Err)?:/.test(str)) {
561
+ const requestStr = this._pendingRequests.get(req) ?? 'unknown_reply';
562
+ this._pendingRequests.delete(req);
563
+ this._telemetryService.publicLog2('extensionhost.incoming', {
564
+ type: `${str} ${requestStr}`,
565
+ length: msgLength
566
+ });
567
+ }
568
+ if (initiator === 1 && /^receiveRequest /.test(str)) {
569
+ this._telemetryService.publicLog2('extensionhost.incoming', {
570
+ type: `${str}`,
571
+ length: msgLength
572
+ });
573
+ }
574
+ }
575
+ logOutgoing(msgLength, req, initiator, str) {
576
+ if (initiator === 0 && str.startsWith('request: ')) {
577
+ this._pendingRequests.set(req, str);
578
+ this._telemetryService.publicLog2('extensionhost.outgoing', {
579
+ type: str,
580
+ length: msgLength
581
+ });
582
+ }
583
+ }
584
+ };
585
+ TelemetryRPCLogger = ( __decorate([
586
+ ( __param(0, ITelemetryService))
587
+ ], TelemetryRPCLogger));
588
+ const providers = [];
589
+ function registerLatencyTestProvider(provider) {
590
+ providers.push(provider);
591
+ return {
592
+ dispose: () => {
593
+ for (let i = 0; i < providers.length; i++) {
594
+ if (providers[i] === provider) {
595
+ providers.splice(i, 1);
596
+ return;
597
+ }
598
+ }
599
+ }
600
+ };
601
+ }
602
+ function getLatencyTestProviders() {
603
+ return providers.slice(0);
604
+ }
605
+ registerAction2(class MeasureExtHostLatencyAction extends Action2 {
606
+ constructor() {
607
+ super({
608
+ id: 'editor.action.measureExtHostLatency',
609
+ title: {
610
+ value: ( nls.localizeWithPath(
611
+ 'vs/workbench/services/extensions/common/extensionHostManager',
612
+ 'measureExtHostLatency',
613
+ "Measure Extension Host Latency"
614
+ )),
615
+ original: 'Measure Extension Host Latency'
616
+ },
617
+ category: Categories.Developer,
618
+ f1: true
619
+ });
620
+ }
621
+ async run(accessor) {
622
+ const editorService = accessor.get(IEditorService);
623
+ const measurements = await Promise.all(( getLatencyTestProviders().map(provider => provider.measure())));
624
+ editorService.openEditor({ resource: undefined, contents: ( measurements.map(MeasureExtHostLatencyAction._print)).join('\n\n'), options: { pinned: true } });
625
+ }
626
+ static _print(m) {
627
+ if (!m) {
628
+ return '';
629
+ }
630
+ return `${m.remoteAuthority ? `Authority: ${m.remoteAuthority}\n` : ``}Roundtrip latency: ${m.latency.toFixed(3)}ms\nUp: ${MeasureExtHostLatencyAction._printSpeed(m.up)}\nDown: ${MeasureExtHostLatencyAction._printSpeed(m.down)}\n`;
631
+ }
632
+ static _printSpeed(n) {
633
+ if (n <= 1024) {
634
+ return `${n} bps`;
635
+ }
636
+ if (n < 1024 * 1024) {
637
+ return `${(n / 1024).toFixed(1)} kbps`;
638
+ }
639
+ return `${(n / 1024 / 1024).toFixed(1)} Mbps`;
640
+ }
641
+ });
642
+
643
+ export { createExtensionHostManager };