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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/_virtual/semver.js +3 -0
  2. package/extensions.js +6 -6
  3. package/external/vscode-semver/semver.js +985 -0
  4. package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +8 -0
  5. package/package.json +9 -9
  6. package/vscode/src/vs/base/common/console.js +62 -0
  7. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +497 -0
  8. package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +44 -0
  9. package/vscode/src/vs/platform/lifecycle/common/lifecycle.js +27 -0
  10. package/vscode/src/vs/platform/remote/common/managedSocket.js +98 -0
  11. package/vscode/src/vs/workbench/api/browser/extensionHost.contribution.js +104 -0
  12. package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +31 -0
  13. package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +35 -0
  14. package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +254 -0
  15. package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +68 -0
  16. package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +103 -0
  17. package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +70 -0
  18. package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +207 -0
  19. package/vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js +41 -0
  20. package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +24 -0
  21. package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +108 -0
  22. package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +98 -0
  23. package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +560 -0
  24. package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +80 -0
  25. package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +35 -0
  26. package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +579 -0
  27. package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +435 -0
  28. package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +102 -0
  29. package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +69 -0
  30. package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +68 -0
  31. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +79 -0
  32. package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +253 -0
  33. package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +370 -0
  34. package/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js +22 -0
  35. package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +41 -0
  36. package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +414 -0
  37. package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +501 -0
  38. package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +227 -0
  39. package/vscode/src/vs/workbench/api/browser/mainThreadErrors.js +24 -0
  40. package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +317 -0
  41. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +208 -0
  42. package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +369 -0
  43. package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +72 -0
  44. package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +28 -0
  45. package/vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js +50 -0
  46. package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +27 -0
  47. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +1016 -0
  48. package/vscode/src/vs/workbench/api/browser/mainThreadLanguageModels.js +185 -0
  49. package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +78 -0
  50. package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +35 -0
  51. package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +78 -0
  52. package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +93 -0
  53. package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +137 -0
  54. package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +194 -0
  55. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +123 -0
  56. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +188 -0
  57. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +129 -0
  58. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +131 -0
  59. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +374 -0
  60. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js +25 -0
  61. package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +48 -0
  62. package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +76 -0
  63. package/vscode/src/vs/workbench/api/browser/mainThreadProfileContentHandlers.js +38 -0
  64. package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +68 -0
  65. package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +42 -0
  66. package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +185 -0
  67. package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +30 -0
  68. package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +493 -0
  69. package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +49 -0
  70. package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +168 -0
  71. package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +70 -0
  72. package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +50 -0
  73. package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +99 -0
  74. package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +53 -0
  75. package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +72 -0
  76. package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +731 -0
  77. package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +53 -0
  78. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +409 -0
  79. package/vscode/src/vs/workbench/api/browser/mainThreadTerminalShellIntegration.js +51 -0
  80. package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +219 -0
  81. package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +24 -0
  82. package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +55 -0
  83. package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +312 -0
  84. package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +223 -0
  85. package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +110 -0
  86. package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +61 -0
  87. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +29 -0
  88. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +283 -0
  89. package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +100 -0
  90. package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +135 -0
  91. package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +57 -0
  92. package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +268 -0
  93. package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +35 -0
  94. package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +76 -0
  95. package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +83 -0
  96. package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +285 -0
  97. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +276 -0
  98. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +52 -0
  99. package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +1149 -0
  100. package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +41 -0
  101. package/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.js +25 -0
  102. package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +512 -0
  103. package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +274 -0
  104. package/vscode/src/vs/workbench/services/extensions/common/extensionStorageMigration.js +58 -0
  105. package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +80 -0
  106. package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +64 -0
  107. package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +161 -0
  108. package/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.js +49 -0
  109. package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +222 -0
@@ -0,0 +1,283 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { onUnexpectedError } from 'vscode/vscode/vs/base/common/errors';
3
+ import { Event } from 'vscode/vscode/vs/base/common/event';
4
+ import { Disposable, DisposableMap } from 'vscode/vscode/vs/base/common/lifecycle';
5
+ import { URI } from 'vscode/vscode/vs/base/common/uri';
6
+ import { generateUuid } from 'vscode/vscode/vs/base/common/uuid';
7
+ import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
8
+ import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
9
+ import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
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 'vscode/vscode/vs/base/common/errors';
3
+ import { Disposable, DisposableMap } from 'vscode/vscode/vs/base/common/lifecycle';
4
+ import { generateUuid } from 'vscode/vscode/vs/base/common/uuid';
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 'vscode/vscode/vs/platform/telemetry/common/telemetry';
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 };
@@ -0,0 +1,135 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { Disposable, DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
3
+ import { Schemas } from 'vscode/vscode/vs/base/common/network';
4
+ import { isWeb } from 'vscode/vscode/vs/base/common/platform';
5
+ import { escape } from 'vscode/vscode/vs/base/common/strings';
6
+ import { URI } from 'vscode/vscode/vs/base/common/uri';
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';
10
+ import { ExtHostContext } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
11
+ import { deserializeWebviewMessage, serializeWebviewMessage } from 'vscode/vscode/vs/workbench/api/common/extHostWebviewMessaging';
12
+ import { SerializableObjectWithBuffers } from 'vscode/vscode/vs/workbench/services/extensions/common/proxyIdentifier';
13
+
14
+ var MainThreadWebviews_1;
15
+ let MainThreadWebviews = class MainThreadWebviews extends Disposable {
16
+ static { MainThreadWebviews_1 = this; }
17
+ static { this.standardSupportedLinkSchemes = ( new Set([
18
+ Schemas.http,
19
+ Schemas.https,
20
+ Schemas.mailto,
21
+ Schemas.vscode,
22
+ 'vscode-insider',
23
+ ])); }
24
+ constructor(context, _openerService, _productService) {
25
+ super();
26
+ this._openerService = _openerService;
27
+ this._productService = _productService;
28
+ this._webviews = ( new Map());
29
+ this._proxy = ( context.getProxy(ExtHostContext.ExtHostWebviews));
30
+ }
31
+ addWebview(handle, webview, options) {
32
+ if (( this._webviews.has(handle))) {
33
+ throw new Error('Webview already registered');
34
+ }
35
+ this._webviews.set(handle, webview);
36
+ this.hookupWebviewEventDelegate(handle, webview, options);
37
+ }
38
+ $setHtml(handle, value) {
39
+ this.tryGetWebview(handle)?.setHtml(value);
40
+ }
41
+ $setOptions(handle, options) {
42
+ const webview = this.tryGetWebview(handle);
43
+ if (webview) {
44
+ webview.contentOptions = reviveWebviewContentOptions(options);
45
+ }
46
+ }
47
+ async $postMessage(handle, jsonMessage, ...buffers) {
48
+ const webview = this.tryGetWebview(handle);
49
+ if (!webview) {
50
+ return false;
51
+ }
52
+ const { message, arrayBuffers } = deserializeWebviewMessage(jsonMessage, buffers);
53
+ return webview.postMessage(message, arrayBuffers);
54
+ }
55
+ hookupWebviewEventDelegate(handle, webview, options) {
56
+ const disposables = ( new DisposableStore());
57
+ disposables.add(webview.onDidClickLink((uri) => this.onDidClickLink(handle, uri)));
58
+ disposables.add(webview.onMessage((message) => {
59
+ const serialized = serializeWebviewMessage(message.message, options);
60
+ this._proxy.$onMessage(handle, serialized.message, ( new SerializableObjectWithBuffers(serialized.buffers)));
61
+ }));
62
+ disposables.add(webview.onMissingCsp((extension) => this._proxy.$onMissingCsp(handle, extension.value)));
63
+ disposables.add(webview.onDidDispose(() => {
64
+ disposables.dispose();
65
+ this._webviews.delete(handle);
66
+ }));
67
+ }
68
+ onDidClickLink(handle, link) {
69
+ const webview = this.getWebview(handle);
70
+ if (this.isSupportedLink(webview, ( URI.parse(link)))) {
71
+ this._openerService.open(link, { fromUserGesture: true, allowContributedOpeners: true, allowCommands: Array.isArray(webview.contentOptions.enableCommandUris) || webview.contentOptions.enableCommandUris === true, fromWorkspace: true });
72
+ }
73
+ }
74
+ isSupportedLink(webview, link) {
75
+ if (( MainThreadWebviews_1.standardSupportedLinkSchemes.has(link.scheme))) {
76
+ return true;
77
+ }
78
+ if (!isWeb && this._productService.urlProtocol === link.scheme) {
79
+ return true;
80
+ }
81
+ if (link.scheme === Schemas.command) {
82
+ if (Array.isArray(webview.contentOptions.enableCommandUris)) {
83
+ return webview.contentOptions.enableCommandUris.includes(link.path);
84
+ }
85
+ return webview.contentOptions.enableCommandUris === true;
86
+ }
87
+ return false;
88
+ }
89
+ tryGetWebview(handle) {
90
+ return this._webviews.get(handle);
91
+ }
92
+ getWebview(handle) {
93
+ const webview = this.tryGetWebview(handle);
94
+ if (!webview) {
95
+ throw new Error(`Unknown webview handle:${handle}`);
96
+ }
97
+ return webview;
98
+ }
99
+ getWebviewResolvedFailedContent(viewType) {
100
+ return `<!DOCTYPE html>
101
+ <html>
102
+ <head>
103
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
104
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none';">
105
+ </head>
106
+ <body>${( localizeWithPath(
107
+ 'vs/workbench/api/browser/mainThreadWebviews',
108
+ 'errorMessage',
109
+ "An error occurred while loading view: {0}",
110
+ escape(viewType)
111
+ ))}</body>
112
+ </html>`;
113
+ }
114
+ };
115
+ MainThreadWebviews = MainThreadWebviews_1 = ( __decorate([
116
+ ( __param(1, IOpenerService)),
117
+ ( __param(2, IProductService))
118
+ ], MainThreadWebviews));
119
+ function reviveWebviewExtension(extensionData) {
120
+ return {
121
+ id: extensionData.id,
122
+ location: URI.revive(extensionData.location),
123
+ };
124
+ }
125
+ function reviveWebviewContentOptions(webviewOptions) {
126
+ return {
127
+ allowScripts: webviewOptions.enableScripts,
128
+ allowForms: webviewOptions.enableForms,
129
+ enableCommandUris: webviewOptions.enableCommandUris,
130
+ localResourceRoots: Array.isArray(webviewOptions.localResourceRoots) ? ( webviewOptions.localResourceRoots.map(r => URI.revive(r))) : undefined,
131
+ portMapping: webviewOptions.portMapping,
132
+ };
133
+ }
134
+
135
+ export { MainThreadWebviews, reviveWebviewContentOptions, reviveWebviewExtension };
@@ -0,0 +1,57 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { Event } from 'vscode/vscode/vs/base/common/event';
3
+ import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
4
+ import { URI } from 'vscode/vscode/vs/base/common/uri';
5
+ import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
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';
10
+
11
+ let MainThreadWindow = class MainThreadWindow {
12
+ constructor(extHostContext, hostService, openerService, userActivityService) {
13
+ this.hostService = hostService;
14
+ this.openerService = openerService;
15
+ this.userActivityService = userActivityService;
16
+ this.disposables = ( new DisposableStore());
17
+ this.proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostWindow));
18
+ Event.latch(hostService.onDidChangeFocus)(this.proxy.$onDidChangeWindowFocus, this.proxy, this.disposables);
19
+ userActivityService.onDidChangeIsActive(this.proxy.$onDidChangeWindowActive, this.proxy, this.disposables);
20
+ }
21
+ dispose() {
22
+ this.disposables.dispose();
23
+ }
24
+ $getInitialState() {
25
+ return Promise.resolve({
26
+ isFocused: this.hostService.hasFocus,
27
+ isActive: this.userActivityService.isActive,
28
+ });
29
+ }
30
+ async $openUri(uriComponents, uriString, options) {
31
+ const uri = ( URI.from(uriComponents));
32
+ let target;
33
+ if (uriString && ( ( URI.parse(uriString)).toString()) === ( uri.toString())) {
34
+ target = uriString;
35
+ }
36
+ else {
37
+ target = uri;
38
+ }
39
+ return this.openerService.open(target, {
40
+ openExternal: true,
41
+ allowTunneling: options.allowTunneling,
42
+ allowContributedOpeners: options.allowContributedOpeners,
43
+ });
44
+ }
45
+ async $asExternalUri(uriComponents, options) {
46
+ const result = await this.openerService.resolveExternalUri(URI.revive(uriComponents), options);
47
+ return result.resolved;
48
+ }
49
+ };
50
+ MainThreadWindow = __decorate([
51
+ extHostNamedCustomer(MainContext.MainThreadWindow),
52
+ ( __param(1, IHostService)),
53
+ ( __param(2, IOpenerService)),
54
+ ( __param(3, IUserActivityService))
55
+ ], MainThreadWindow);
56
+
57
+ export { MainThreadWindow };