@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,110 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { Action } from 'monaco-editor/esm/vs/base/common/actions.js';
3
+ import { isCancellationError } from 'monaco-editor/esm/vs/base/common/errors.js';
4
+ import { Disposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
5
+ import { Schemas } from 'monaco-editor/esm/vs/base/common/network.js';
6
+ import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
7
+ import { INotificationService, Severity } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
8
+ import { IOpenerService } from 'monaco-editor/esm/vs/platform/opener/common/opener.js';
9
+ import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
10
+ import { MainContext, ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
11
+ import { defaultExternalUriOpenerId } from 'vscode/vscode/vs/workbench/contrib/externalUriOpener/common/configuration';
12
+ import { ContributedExternalUriOpenersStore } from '../../contrib/externalUriOpener/common/contributedOpeners.js';
13
+ import { IExternalUriOpenerService } from 'vscode/vscode/vs/workbench/contrib/externalUriOpener/common/externalUriOpenerService';
14
+ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
15
+ import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
16
+
17
+ let MainThreadUriOpeners = class MainThreadUriOpeners extends Disposable {
18
+ constructor(context, storageService, externalUriOpenerService, extensionService, openerService, notificationService) {
19
+ super();
20
+ this.extensionService = extensionService;
21
+ this.openerService = openerService;
22
+ this.notificationService = notificationService;
23
+ this._registeredOpeners = ( new Map());
24
+ this.proxy = ( context.getProxy(ExtHostContext.ExtHostUriOpeners));
25
+ this._register(externalUriOpenerService.registerExternalOpenerProvider(this));
26
+ this._contributedExternalUriOpenersStore = this._register(( new ContributedExternalUriOpenersStore(storageService, extensionService)));
27
+ }
28
+ async *getOpeners(targetUri) {
29
+ if (targetUri.scheme !== Schemas.http && targetUri.scheme !== Schemas.https) {
30
+ return;
31
+ }
32
+ await this.extensionService.activateByEvent(`onOpenExternalUri:${targetUri.scheme}`);
33
+ for (const [id, openerMetadata] of this._registeredOpeners) {
34
+ if (( openerMetadata.schemes.has(targetUri.scheme))) {
35
+ yield this.createOpener(id, openerMetadata);
36
+ }
37
+ }
38
+ }
39
+ createOpener(id, metadata) {
40
+ return {
41
+ id: id,
42
+ label: metadata.label,
43
+ canOpen: (uri, token) => {
44
+ return this.proxy.$canOpenUri(id, uri, token);
45
+ },
46
+ openExternalUri: async (uri, ctx, token) => {
47
+ try {
48
+ await this.proxy.$openUri(id, { resolvedUri: uri, sourceUri: ctx.sourceUri }, token);
49
+ }
50
+ catch (e) {
51
+ if (!isCancellationError(e)) {
52
+ const openDefaultAction = ( new Action('default', ( localizeWithPath(
53
+ 'vs/workbench/api/browser/mainThreadUriOpeners',
54
+ 'openerFailedUseDefault',
55
+ "Open using default opener"
56
+ )), undefined, undefined, async () => {
57
+ await this.openerService.open(uri, {
58
+ allowTunneling: false,
59
+ allowContributedOpeners: defaultExternalUriOpenerId,
60
+ });
61
+ }));
62
+ openDefaultAction.tooltip = ( uri.toString());
63
+ this.notificationService.notify({
64
+ severity: Severity.Error,
65
+ message: ( localizeWithPath('vs/workbench/api/browser/mainThreadUriOpeners', {
66
+ key: 'openerFailedMessage',
67
+ comment: ['{0} is the id of the opener. {1} is the url being opened.'],
68
+ }, 'Could not open uri with \'{0}\': {1}', id, ( e.toString()))),
69
+ actions: {
70
+ primary: [
71
+ openDefaultAction
72
+ ]
73
+ }
74
+ });
75
+ }
76
+ }
77
+ return true;
78
+ },
79
+ };
80
+ }
81
+ async $registerUriOpener(id, schemes, extensionId, label) {
82
+ if (( this._registeredOpeners.has(id))) {
83
+ throw new Error(`Opener with id '${id}' already registered`);
84
+ }
85
+ this._registeredOpeners.set(id, {
86
+ schemes: ( new Set(schemes)),
87
+ label,
88
+ extensionId,
89
+ });
90
+ this._contributedExternalUriOpenersStore.didRegisterOpener(id, extensionId.value);
91
+ }
92
+ async $unregisterUriOpener(id) {
93
+ this._registeredOpeners.delete(id);
94
+ this._contributedExternalUriOpenersStore.delete(id);
95
+ }
96
+ dispose() {
97
+ super.dispose();
98
+ this._registeredOpeners.clear();
99
+ }
100
+ };
101
+ MainThreadUriOpeners = __decorate([
102
+ extHostNamedCustomer(MainContext.MainThreadUriOpeners),
103
+ ( __param(1, IStorageService)),
104
+ ( __param(2, IExternalUriOpenerService)),
105
+ ( __param(3, IExtensionService)),
106
+ ( __param(4, IOpenerService)),
107
+ ( __param(5, INotificationService))
108
+ ], MainThreadUriOpeners);
109
+
110
+ export { MainThreadUriOpeners };
@@ -0,0 +1,61 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { MainContext, ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
3
+ import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
4
+ import { IURLService } from 'vscode/vscode/vs/platform/url/common/url';
5
+ import { IExtensionUrlHandler } from 'vscode/vscode/vs/workbench/services/extensions/browser/extensionUrlHandler';
6
+ import { ExtensionIdentifier } from 'monaco-editor/esm/vs/platform/extensions/common/extensions.js';
7
+
8
+ class ExtensionUrlHandler {
9
+ constructor(proxy, handle, extensionId, extensionDisplayName) {
10
+ this.proxy = proxy;
11
+ this.handle = handle;
12
+ this.extensionId = extensionId;
13
+ this.extensionDisplayName = extensionDisplayName;
14
+ }
15
+ handleURL(uri, options) {
16
+ if (!ExtensionIdentifier.equals(this.extensionId, uri.authority)) {
17
+ return Promise.resolve(false);
18
+ }
19
+ return Promise.resolve(this.proxy.$handleExternalUri(this.handle, uri)).then(() => true);
20
+ }
21
+ }
22
+ let MainThreadUrls = class MainThreadUrls {
23
+ constructor(context, urlService, extensionUrlHandler) {
24
+ this.urlService = urlService;
25
+ this.extensionUrlHandler = extensionUrlHandler;
26
+ this.handlers = ( new Map());
27
+ this.proxy = ( context.getProxy(ExtHostContext.ExtHostUrls));
28
+ }
29
+ $registerUriHandler(handle, extensionId, extensionDisplayName) {
30
+ const handler = ( new ExtensionUrlHandler(this.proxy, handle, extensionId, extensionDisplayName));
31
+ const disposable = this.urlService.registerHandler(handler);
32
+ this.handlers.set(handle, { extensionId, disposable });
33
+ this.extensionUrlHandler.registerExtensionHandler(extensionId, handler);
34
+ return Promise.resolve(undefined);
35
+ }
36
+ $unregisterUriHandler(handle) {
37
+ const tuple = this.handlers.get(handle);
38
+ if (!tuple) {
39
+ return Promise.resolve(undefined);
40
+ }
41
+ const { extensionId, disposable } = tuple;
42
+ this.extensionUrlHandler.unregisterExtensionHandler(extensionId);
43
+ this.handlers.delete(handle);
44
+ disposable.dispose();
45
+ return Promise.resolve(undefined);
46
+ }
47
+ async $createAppUri(uri) {
48
+ return this.urlService.create(uri);
49
+ }
50
+ dispose() {
51
+ this.handlers.forEach(({ disposable }) => disposable.dispose());
52
+ this.handlers.clear();
53
+ }
54
+ };
55
+ MainThreadUrls = __decorate([
56
+ extHostNamedCustomer(MainContext.MainThreadUrls),
57
+ ( __param(1, IURLService)),
58
+ ( __param(2, IExtensionUrlHandler))
59
+ ], MainThreadUrls);
60
+
61
+ export { MainThreadUrls };
@@ -0,0 +1,29 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { Disposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
3
+ import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
4
+ import { MainThreadCustomEditors } from './mainThreadCustomEditors.js';
5
+ import { MainThreadWebviewPanels } from './mainThreadWebviewPanels.js';
6
+ import { MainThreadWebviews } from './mainThreadWebviews.js';
7
+ import { MainThreadWebviewsViews } from './mainThreadWebviewViews.js';
8
+ import { MainContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
9
+ import { extHostCustomer } from '../../services/extensions/common/extHostCustomers.js';
10
+
11
+ let MainThreadWebviewManager = class MainThreadWebviewManager extends Disposable {
12
+ constructor(context, instantiationService) {
13
+ super();
14
+ const webviews = this._register(instantiationService.createInstance(MainThreadWebviews, context));
15
+ context.set(MainContext.MainThreadWebviews, webviews);
16
+ const webviewPanels = this._register(instantiationService.createInstance(MainThreadWebviewPanels, context, webviews));
17
+ context.set(MainContext.MainThreadWebviewPanels, webviewPanels);
18
+ const customEditors = this._register(instantiationService.createInstance(MainThreadCustomEditors, context, webviews, webviewPanels));
19
+ context.set(MainContext.MainThreadCustomEditors, customEditors);
20
+ const webviewViews = this._register(instantiationService.createInstance(MainThreadWebviewsViews, context, webviews));
21
+ context.set(MainContext.MainThreadWebviewViews, webviewViews);
22
+ }
23
+ };
24
+ MainThreadWebviewManager = __decorate([
25
+ extHostCustomer,
26
+ ( __param(1, IInstantiationService))
27
+ ], MainThreadWebviewManager);
28
+
29
+ export { MainThreadWebviewManager };
@@ -0,0 +1,283 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { onUnexpectedError } from 'monaco-editor/esm/vs/base/common/errors.js';
3
+ import { Event } from 'monaco-editor/esm/vs/base/common/event.js';
4
+ import { Disposable, DisposableMap } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
5
+ import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
6
+ import { generateUuid } from 'monaco-editor/esm/vs/base/common/uuid.js';
7
+ import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
8
+ import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
9
+ import { ITelemetryService } from 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
10
+ import { reviveWebviewExtension, reviveWebviewContentOptions } from './mainThreadWebviews.js';
11
+ import { ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
12
+ import { DiffEditorInput } from 'vscode/vscode/vs/workbench/common/editor/diffEditorInput';
13
+ import { ExtensionKeyedWebviewOriginStore } from 'vscode/vscode/vs/workbench/contrib/webview/browser/webview';
14
+ import { WebviewInput } from 'vscode/vscode/vs/workbench/contrib/webviewPanel/browser/webviewEditorInput';
15
+ import { IWebviewWorkbenchService } from 'vscode/vscode/vs/workbench/contrib/webviewPanel/browser/webviewWorkbenchService';
16
+ import { editorGroupToColumn } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupColumn';
17
+ import { IEditorGroupsService, preferredSideBySideGroupDirection } from 'vscode/vscode/vs/workbench/services/editor/common/editorGroupsService';
18
+ import { IEditorService, ACTIVE_GROUP, SIDE_GROUP } from 'vscode/vscode/vs/workbench/services/editor/common/editorService';
19
+ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
20
+
21
+ class WebviewInputStore {
22
+ constructor() {
23
+ this._handlesToInputs = ( new Map());
24
+ this._inputsToHandles = ( new Map());
25
+ }
26
+ add(handle, input) {
27
+ this._handlesToInputs.set(handle, input);
28
+ this._inputsToHandles.set(input, handle);
29
+ }
30
+ getHandleForInput(input) {
31
+ return this._inputsToHandles.get(input);
32
+ }
33
+ getInputForHandle(handle) {
34
+ return this._handlesToInputs.get(handle);
35
+ }
36
+ delete(handle) {
37
+ const input = this.getInputForHandle(handle);
38
+ this._handlesToInputs.delete(handle);
39
+ if (input) {
40
+ this._inputsToHandles.delete(input);
41
+ }
42
+ }
43
+ get size() {
44
+ return this._handlesToInputs.size;
45
+ }
46
+ [Symbol.iterator]() {
47
+ return ( this._handlesToInputs.values());
48
+ }
49
+ }
50
+ class WebviewViewTypeTransformer {
51
+ constructor(prefix) {
52
+ this.prefix = prefix;
53
+ }
54
+ fromExternal(viewType) {
55
+ return this.prefix + viewType;
56
+ }
57
+ toExternal(viewType) {
58
+ return viewType.startsWith(this.prefix)
59
+ ? viewType.substr(this.prefix.length)
60
+ : undefined;
61
+ }
62
+ }
63
+ let MainThreadWebviewPanels = class MainThreadWebviewPanels extends Disposable {
64
+ constructor(context, _mainThreadWebviews, _configurationService, _editorGroupService, _editorService, extensionService, storageService, _telemetryService, _webviewWorkbenchService) {
65
+ super();
66
+ this._mainThreadWebviews = _mainThreadWebviews;
67
+ this._configurationService = _configurationService;
68
+ this._editorGroupService = _editorGroupService;
69
+ this._editorService = _editorService;
70
+ this._telemetryService = _telemetryService;
71
+ this._webviewWorkbenchService = _webviewWorkbenchService;
72
+ this.webviewPanelViewType = ( new WebviewViewTypeTransformer('mainThreadWebview-'));
73
+ this._webviewInputs = ( new WebviewInputStore());
74
+ this._revivers = this._register(( new DisposableMap()));
75
+ this.webviewOriginStore = ( new ExtensionKeyedWebviewOriginStore('mainThreadWebviewPanel.origins', storageService));
76
+ this._proxy = ( context.getProxy(ExtHostContext.ExtHostWebviewPanels));
77
+ this._register(Event.any(_editorService.onDidActiveEditorChange, _editorService.onDidVisibleEditorsChange, _editorGroupService.onDidAddGroup, _editorGroupService.onDidRemoveGroup, _editorGroupService.onDidMoveGroup)(() => {
78
+ this.updateWebviewViewStates(this._editorService.activeEditor);
79
+ }));
80
+ this._register(_webviewWorkbenchService.onDidChangeActiveWebviewEditor(input => {
81
+ this.updateWebviewViewStates(input);
82
+ }));
83
+ this._register(_webviewWorkbenchService.registerResolver({
84
+ canResolve: (webview) => {
85
+ const viewType = this.webviewPanelViewType.toExternal(webview.viewType);
86
+ if (typeof viewType === 'string') {
87
+ extensionService.activateByEvent(`onWebviewPanel:${viewType}`);
88
+ }
89
+ return false;
90
+ },
91
+ resolveWebview: () => { throw new Error('not implemented'); }
92
+ }));
93
+ }
94
+ get webviewInputs() { return this._webviewInputs; }
95
+ addWebviewInput(handle, input, options) {
96
+ this._webviewInputs.add(handle, input);
97
+ this._mainThreadWebviews.addWebview(handle, input.webview, options);
98
+ input.webview.onDidDispose(() => {
99
+ this._proxy.$onDidDisposeWebviewPanel(handle).finally(() => {
100
+ this._webviewInputs.delete(handle);
101
+ });
102
+ });
103
+ }
104
+ $createWebviewPanel(extensionData, handle, viewType, initData, showOptions) {
105
+ const targetGroup = this.getTargetGroupFromShowOptions(showOptions);
106
+ const mainThreadShowOptions = showOptions ? {
107
+ preserveFocus: !!showOptions.preserveFocus,
108
+ group: targetGroup
109
+ } : {};
110
+ const extension = reviveWebviewExtension(extensionData);
111
+ const origin = this.webviewOriginStore.getOrigin(viewType, extension.id);
112
+ const webview = this._webviewWorkbenchService.openWebview({
113
+ origin,
114
+ providedViewType: viewType,
115
+ title: initData.title,
116
+ options: reviveWebviewOptions(initData.panelOptions),
117
+ contentOptions: reviveWebviewContentOptions(initData.webviewOptions),
118
+ extension
119
+ }, this.webviewPanelViewType.fromExternal(viewType), initData.title, mainThreadShowOptions);
120
+ this.addWebviewInput(handle, webview, { serializeBuffersForPostMessage: initData.serializeBuffersForPostMessage });
121
+ const payload = {
122
+ extensionId: extension.id.value,
123
+ viewType
124
+ };
125
+ this._telemetryService.publicLog2('webviews:createWebviewPanel', payload);
126
+ }
127
+ $disposeWebview(handle) {
128
+ const webview = this.tryGetWebviewInput(handle);
129
+ if (!webview) {
130
+ return;
131
+ }
132
+ webview.dispose();
133
+ }
134
+ $setTitle(handle, value) {
135
+ this.tryGetWebviewInput(handle)?.setName(value);
136
+ }
137
+ $setIconPath(handle, value) {
138
+ const webview = this.tryGetWebviewInput(handle);
139
+ if (webview) {
140
+ webview.iconPath = reviveWebviewIcon(value);
141
+ }
142
+ }
143
+ $reveal(handle, showOptions) {
144
+ const webview = this.tryGetWebviewInput(handle);
145
+ if (!webview || webview.isDisposed()) {
146
+ return;
147
+ }
148
+ const targetGroup = this.getTargetGroupFromShowOptions(showOptions);
149
+ this._webviewWorkbenchService.revealWebview(webview, targetGroup, !!showOptions.preserveFocus);
150
+ }
151
+ getTargetGroupFromShowOptions(showOptions) {
152
+ if (typeof showOptions.viewColumn === 'undefined'
153
+ || showOptions.viewColumn === ACTIVE_GROUP
154
+ || (this._editorGroupService.count === 1 && this._editorGroupService.activeGroup.isEmpty)) {
155
+ return ACTIVE_GROUP;
156
+ }
157
+ if (showOptions.viewColumn === SIDE_GROUP) {
158
+ return SIDE_GROUP;
159
+ }
160
+ if (showOptions.viewColumn >= 0) {
161
+ const groupInColumn = this._editorGroupService.getGroups(2 )[showOptions.viewColumn];
162
+ if (groupInColumn) {
163
+ return groupInColumn.id;
164
+ }
165
+ const newGroup = this._editorGroupService.findGroup({ location: 1 });
166
+ if (newGroup) {
167
+ const direction = preferredSideBySideGroupDirection(this._configurationService);
168
+ return this._editorGroupService.addGroup(newGroup, direction);
169
+ }
170
+ }
171
+ return ACTIVE_GROUP;
172
+ }
173
+ $registerSerializer(viewType, options) {
174
+ if (( this._revivers.has(viewType))) {
175
+ throw new Error(`Reviver for ${viewType} already registered`);
176
+ }
177
+ this._revivers.set(viewType, this._webviewWorkbenchService.registerResolver({
178
+ canResolve: (webviewInput) => {
179
+ return webviewInput.viewType === this.webviewPanelViewType.fromExternal(viewType);
180
+ },
181
+ resolveWebview: async (webviewInput) => {
182
+ const viewType = this.webviewPanelViewType.toExternal(webviewInput.viewType);
183
+ if (!viewType) {
184
+ webviewInput.webview.setHtml(this._mainThreadWebviews.getWebviewResolvedFailedContent(webviewInput.viewType));
185
+ return;
186
+ }
187
+ const handle = generateUuid();
188
+ this.addWebviewInput(handle, webviewInput, options);
189
+ let state = undefined;
190
+ if (webviewInput.webview.state) {
191
+ try {
192
+ state = JSON.parse(webviewInput.webview.state);
193
+ }
194
+ catch (e) {
195
+ console.error('Could not load webview state', e, webviewInput.webview.state);
196
+ }
197
+ }
198
+ try {
199
+ await this._proxy.$deserializeWebviewPanel(handle, viewType, {
200
+ title: webviewInput.getTitle(),
201
+ state,
202
+ panelOptions: webviewInput.webview.options,
203
+ webviewOptions: webviewInput.webview.contentOptions,
204
+ active: webviewInput === this._editorService.activeEditor,
205
+ }, editorGroupToColumn(this._editorGroupService, webviewInput.group || 0));
206
+ }
207
+ catch (error) {
208
+ onUnexpectedError(error);
209
+ webviewInput.webview.setHtml(this._mainThreadWebviews.getWebviewResolvedFailedContent(viewType));
210
+ }
211
+ }
212
+ }));
213
+ }
214
+ $unregisterSerializer(viewType) {
215
+ if (!( this._revivers.has(viewType))) {
216
+ throw new Error(`No reviver for ${viewType} registered`);
217
+ }
218
+ this._revivers.deleteAndDispose(viewType);
219
+ }
220
+ updateWebviewViewStates(activeEditorInput) {
221
+ if (!this._webviewInputs.size) {
222
+ return;
223
+ }
224
+ const viewStates = {};
225
+ const updateViewStatesForInput = (group, topLevelInput, editorInput) => {
226
+ if (!(editorInput instanceof WebviewInput)) {
227
+ return;
228
+ }
229
+ editorInput.updateGroup(group.id);
230
+ const handle = this._webviewInputs.getHandleForInput(editorInput);
231
+ if (handle) {
232
+ viewStates[handle] = {
233
+ visible: topLevelInput === group.activeEditor,
234
+ active: editorInput === activeEditorInput,
235
+ position: editorGroupToColumn(this._editorGroupService, group.id),
236
+ };
237
+ }
238
+ };
239
+ for (const group of this._editorGroupService.groups) {
240
+ for (const input of group.editors) {
241
+ if (input instanceof DiffEditorInput) {
242
+ updateViewStatesForInput(group, input, input.primary);
243
+ updateViewStatesForInput(group, input, input.secondary);
244
+ }
245
+ else {
246
+ updateViewStatesForInput(group, input, input);
247
+ }
248
+ }
249
+ }
250
+ if (( Object.keys(viewStates)).length) {
251
+ this._proxy.$onDidChangeWebviewPanelViewStates(viewStates);
252
+ }
253
+ }
254
+ tryGetWebviewInput(handle) {
255
+ return this._webviewInputs.getInputForHandle(handle);
256
+ }
257
+ };
258
+ MainThreadWebviewPanels = ( __decorate([
259
+ ( __param(2, IConfigurationService)),
260
+ ( __param(3, IEditorGroupsService)),
261
+ ( __param(4, IEditorService)),
262
+ ( __param(5, IExtensionService)),
263
+ ( __param(6, IStorageService)),
264
+ ( __param(7, ITelemetryService)),
265
+ ( __param(8, IWebviewWorkbenchService))
266
+ ], MainThreadWebviewPanels));
267
+ function reviveWebviewIcon(value) {
268
+ if (!value) {
269
+ return undefined;
270
+ }
271
+ return {
272
+ light: URI.revive(value.light),
273
+ dark: URI.revive(value.dark),
274
+ };
275
+ }
276
+ function reviveWebviewOptions(panelOptions) {
277
+ return {
278
+ enableFindWidget: panelOptions.enableFindWidget,
279
+ retainContextWhenHidden: panelOptions.retainContextWhenHidden,
280
+ };
281
+ }
282
+
283
+ export { MainThreadWebviewPanels };
@@ -0,0 +1,100 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { onUnexpectedError } from 'monaco-editor/esm/vs/base/common/errors.js';
3
+ import { Disposable, DisposableMap } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
4
+ import { generateUuid } from 'monaco-editor/esm/vs/base/common/uuid.js';
5
+ import { reviveWebviewExtension } from './mainThreadWebviews.js';
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 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
9
+
10
+ let MainThreadWebviewsViews = class MainThreadWebviewsViews extends Disposable {
11
+ constructor(context, mainThreadWebviews, _telemetryService, _webviewViewService) {
12
+ super();
13
+ this.mainThreadWebviews = mainThreadWebviews;
14
+ this._telemetryService = _telemetryService;
15
+ this._webviewViewService = _webviewViewService;
16
+ this._webviewViews = this._register(( new DisposableMap()));
17
+ this._webviewViewProviders = this._register(( new DisposableMap()));
18
+ this._proxy = ( context.getProxy(ExtHostContext.ExtHostWebviewViews));
19
+ }
20
+ $setWebviewViewTitle(handle, value) {
21
+ const webviewView = this.getWebviewView(handle);
22
+ webviewView.title = value;
23
+ }
24
+ $setWebviewViewDescription(handle, value) {
25
+ const webviewView = this.getWebviewView(handle);
26
+ webviewView.description = value;
27
+ }
28
+ $setWebviewViewBadge(handle, badge) {
29
+ const webviewView = this.getWebviewView(handle);
30
+ webviewView.badge = badge;
31
+ }
32
+ $show(handle, preserveFocus) {
33
+ const webviewView = this.getWebviewView(handle);
34
+ webviewView.show(preserveFocus);
35
+ }
36
+ $registerWebviewViewProvider(extensionData, viewType, options) {
37
+ if (( this._webviewViewProviders.has(viewType))) {
38
+ throw new Error(`View provider for ${viewType} already registered`);
39
+ }
40
+ const extension = reviveWebviewExtension(extensionData);
41
+ const registration = this._webviewViewService.register(viewType, {
42
+ resolve: async (webviewView, cancellation) => {
43
+ const handle = generateUuid();
44
+ this._webviewViews.set(handle, webviewView);
45
+ this.mainThreadWebviews.addWebview(handle, webviewView.webview, { serializeBuffersForPostMessage: options.serializeBuffersForPostMessage });
46
+ let state = undefined;
47
+ if (webviewView.webview.state) {
48
+ try {
49
+ state = JSON.parse(webviewView.webview.state);
50
+ }
51
+ catch (e) {
52
+ console.error('Could not load webview state', e, webviewView.webview.state);
53
+ }
54
+ }
55
+ webviewView.webview.extension = extension;
56
+ if (options) {
57
+ webviewView.webview.options = options;
58
+ }
59
+ webviewView.onDidChangeVisibility(visible => {
60
+ this._proxy.$onDidChangeWebviewViewVisibility(handle, visible);
61
+ });
62
+ webviewView.onDispose(() => {
63
+ this._proxy.$disposeWebviewView(handle);
64
+ this._webviewViews.deleteAndDispose(handle);
65
+ });
66
+ this._telemetryService.publicLog2('webviews:createWebviewView', {
67
+ extensionId: extension.id.value,
68
+ id: viewType,
69
+ });
70
+ try {
71
+ await this._proxy.$resolveWebviewView(handle, viewType, webviewView.title, state, cancellation);
72
+ }
73
+ catch (error) {
74
+ onUnexpectedError(error);
75
+ webviewView.webview.setHtml(this.mainThreadWebviews.getWebviewResolvedFailedContent(viewType));
76
+ }
77
+ }
78
+ });
79
+ this._webviewViewProviders.set(viewType, registration);
80
+ }
81
+ $unregisterWebviewViewProvider(viewType) {
82
+ if (!( this._webviewViewProviders.has(viewType))) {
83
+ throw new Error(`No view provider for ${viewType} registered`);
84
+ }
85
+ this._webviewViewProviders.deleteAndDispose(viewType);
86
+ }
87
+ getWebviewView(handle) {
88
+ const webviewView = this._webviewViews.get(handle);
89
+ if (!webviewView) {
90
+ throw new Error('unknown webview view');
91
+ }
92
+ return webviewView;
93
+ }
94
+ };
95
+ MainThreadWebviewsViews = ( __decorate([
96
+ ( __param(2, ITelemetryService)),
97
+ ( __param(3, IWebviewViewService))
98
+ ], MainThreadWebviewsViews));
99
+
100
+ export { MainThreadWebviewsViews };