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

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,223 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
3
+ import { MainContext, ExtHostContext, CandidatePortSource } from 'vscode/vscode/vs/workbench/api/common/extHost.protocol';
4
+ import { TunnelDtoConverter } from 'vscode/vscode/vs/workbench/api/common/extHostTunnelService';
5
+ import { extHostNamedCustomer } from '../../services/extensions/common/extHostCustomers.js';
6
+ import { IRemoteExplorerService, PORT_AUTO_FORWARD_SETTING, PORT_AUTO_SOURCE_SETTING, PORT_AUTO_SOURCE_SETTING_OUTPUT } from 'vscode/vscode/vs/workbench/services/remote/common/remoteExplorerService';
7
+ import { ITunnelService, TunnelProtocol } from 'vscode/vscode/vs/platform/tunnel/common/tunnel';
8
+ import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
9
+ import { INotificationService, Severity } from 'vscode/vscode/vs/platform/notification/common/notification';
10
+ import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
11
+ import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
12
+ import { IRemoteAgentService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteAgentService';
13
+ import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
14
+ import { Extensions } from 'vscode/vscode/vs/platform/configuration/common/configurationRegistry';
15
+ import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
16
+ import { TunnelSource, TunnelCloseReason, forwardedPortsViewEnabled, makeAddress } from 'vscode/vscode/vs/workbench/services/remote/common/tunnelModel';
17
+
18
+ let MainThreadTunnelService = class MainThreadTunnelService extends Disposable {
19
+ constructor(extHostContext, remoteExplorerService, tunnelService, notificationService, configurationService, logService, remoteAgentService, contextKeyService) {
20
+ super();
21
+ this.remoteExplorerService = remoteExplorerService;
22
+ this.tunnelService = tunnelService;
23
+ this.notificationService = notificationService;
24
+ this.configurationService = configurationService;
25
+ this.logService = logService;
26
+ this.remoteAgentService = remoteAgentService;
27
+ this.contextKeyService = contextKeyService;
28
+ this.elevateionRetry = false;
29
+ this.portsAttributesProviders = ( new Map());
30
+ this._alreadyRegistered = false;
31
+ this._proxy = ( extHostContext.getProxy(ExtHostContext.ExtHostTunnelService));
32
+ this._register(tunnelService.onTunnelOpened(() => this._proxy.$onDidTunnelsChange()));
33
+ this._register(tunnelService.onTunnelClosed(() => this._proxy.$onDidTunnelsChange()));
34
+ }
35
+ processFindingEnabled() {
36
+ return (!!this.configurationService.getValue(PORT_AUTO_FORWARD_SETTING) || this.tunnelService.hasTunnelProvider)
37
+ && (this.configurationService.getValue(PORT_AUTO_SOURCE_SETTING) !== PORT_AUTO_SOURCE_SETTING_OUTPUT);
38
+ }
39
+ async $setRemoteTunnelService(processId) {
40
+ this.remoteExplorerService.namedProcesses.set(processId, 'Code Extension Host');
41
+ if (this.remoteExplorerService.portsFeaturesEnabled) {
42
+ this._proxy.$registerCandidateFinder(this.processFindingEnabled());
43
+ }
44
+ else {
45
+ this._register(this.remoteExplorerService.onEnabledPortsFeatures(() => this._proxy.$registerCandidateFinder(this.processFindingEnabled())));
46
+ }
47
+ this._register(this.configurationService.onDidChangeConfiguration(async (e) => {
48
+ if (e.affectsConfiguration(PORT_AUTO_FORWARD_SETTING) || e.affectsConfiguration(PORT_AUTO_SOURCE_SETTING)) {
49
+ return this._proxy.$registerCandidateFinder(this.processFindingEnabled());
50
+ }
51
+ }));
52
+ this._register(this.tunnelService.onAddedTunnelProvider(() => {
53
+ return this._proxy.$registerCandidateFinder(this.processFindingEnabled());
54
+ }));
55
+ }
56
+ async $registerPortsAttributesProvider(selector, providerHandle) {
57
+ this.portsAttributesProviders.set(providerHandle, selector);
58
+ if (!this._alreadyRegistered) {
59
+ this.remoteExplorerService.tunnelModel.addAttributesProvider(this);
60
+ this._alreadyRegistered = true;
61
+ }
62
+ }
63
+ async $unregisterPortsAttributesProvider(providerHandle) {
64
+ this.portsAttributesProviders.delete(providerHandle);
65
+ }
66
+ async providePortAttributes(ports, pid, commandLine, token) {
67
+ if (this.portsAttributesProviders.size === 0) {
68
+ return [];
69
+ }
70
+ const appropriateHandles = ( Array.from(this.portsAttributesProviders.entries()).filter(entry => {
71
+ const selector = entry[1];
72
+ const portRange = (typeof selector.portRange === 'number') ? [selector.portRange, selector.portRange + 1] : selector.portRange;
73
+ const portInRange = portRange ? ( ports.some(port => portRange[0] <= port && port < portRange[1])) : true;
74
+ const commandMatches = !selector.commandPattern || (commandLine && (commandLine.match(selector.commandPattern)));
75
+ return portInRange && commandMatches;
76
+ }).map(entry => entry[0]));
77
+ if (appropriateHandles.length === 0) {
78
+ return [];
79
+ }
80
+ return this._proxy.$providePortAttributes(appropriateHandles, ports, pid, commandLine, token);
81
+ }
82
+ async $openTunnel(tunnelOptions, source) {
83
+ const tunnel = await this.remoteExplorerService.forward({
84
+ remote: tunnelOptions.remoteAddress,
85
+ local: tunnelOptions.localAddressPort,
86
+ name: tunnelOptions.label,
87
+ source: {
88
+ source: TunnelSource.Extension,
89
+ description: source
90
+ },
91
+ elevateIfNeeded: false
92
+ });
93
+ if (!tunnel || (typeof tunnel === 'string')) {
94
+ return undefined;
95
+ }
96
+ if (!this.elevateionRetry
97
+ && (tunnelOptions.localAddressPort !== undefined)
98
+ && (tunnel.tunnelLocalPort !== undefined)
99
+ && this.tunnelService.isPortPrivileged(tunnelOptions.localAddressPort)
100
+ && (tunnel.tunnelLocalPort !== tunnelOptions.localAddressPort)
101
+ && this.tunnelService.canElevate) {
102
+ this.elevationPrompt(tunnelOptions, tunnel, source);
103
+ }
104
+ return TunnelDtoConverter.fromServiceTunnel(tunnel);
105
+ }
106
+ async elevationPrompt(tunnelOptions, tunnel, source) {
107
+ return this.notificationService.prompt(Severity.Info, ( localizeWithPath(
108
+ 'vs/workbench/api/browser/mainThreadTunnelService',
109
+ 'remote.tunnel.openTunnel',
110
+ "The extension {0} has forwarded port {1}. You'll need to run as superuser to use port {2} locally.",
111
+ source,
112
+ tunnelOptions.remoteAddress.port,
113
+ tunnelOptions.localAddressPort
114
+ )), [{
115
+ label: ( localizeWithPath(
116
+ 'vs/workbench/api/browser/mainThreadTunnelService',
117
+ 'remote.tunnelsView.elevationButton',
118
+ "Use Port {0} as Sudo...",
119
+ tunnel.tunnelRemotePort
120
+ )),
121
+ run: async () => {
122
+ this.elevateionRetry = true;
123
+ await this.remoteExplorerService.close({ host: tunnel.tunnelRemoteHost, port: tunnel.tunnelRemotePort }, TunnelCloseReason.Other);
124
+ await this.remoteExplorerService.forward({
125
+ remote: tunnelOptions.remoteAddress,
126
+ local: tunnelOptions.localAddressPort,
127
+ name: tunnelOptions.label,
128
+ source: {
129
+ source: TunnelSource.Extension,
130
+ description: source
131
+ },
132
+ elevateIfNeeded: true
133
+ });
134
+ this.elevateionRetry = false;
135
+ }
136
+ }]);
137
+ }
138
+ async $closeTunnel(remote) {
139
+ return this.remoteExplorerService.close(remote, TunnelCloseReason.Other);
140
+ }
141
+ async $getTunnels() {
142
+ return ( (await this.tunnelService.tunnels).map(tunnel => {
143
+ return {
144
+ remoteAddress: { port: tunnel.tunnelRemotePort, host: tunnel.tunnelRemoteHost },
145
+ localAddress: tunnel.localAddress,
146
+ privacy: tunnel.privacy,
147
+ protocol: tunnel.protocol
148
+ };
149
+ }));
150
+ }
151
+ async $onFoundNewCandidates(candidates) {
152
+ this.remoteExplorerService.onFoundNewCandidates(candidates);
153
+ }
154
+ async $setTunnelProvider(features) {
155
+ const tunnelProvider = {
156
+ forwardPort: (tunnelOptions, tunnelCreationOptions) => {
157
+ const forward = this._proxy.$forwardPort(tunnelOptions, tunnelCreationOptions);
158
+ return forward.then(tunnelOrError => {
159
+ if (!tunnelOrError) {
160
+ return undefined;
161
+ }
162
+ else if (typeof tunnelOrError === 'string') {
163
+ return tunnelOrError;
164
+ }
165
+ const tunnel = tunnelOrError;
166
+ this.logService.trace(`ForwardedPorts: (MainThreadTunnelService) New tunnel established by tunnel provider: ${tunnel?.remoteAddress.host}:${tunnel?.remoteAddress.port}`);
167
+ return {
168
+ tunnelRemotePort: tunnel.remoteAddress.port,
169
+ tunnelRemoteHost: tunnel.remoteAddress.host,
170
+ localAddress: typeof tunnel.localAddress === 'string' ? tunnel.localAddress : makeAddress(tunnel.localAddress.host, tunnel.localAddress.port),
171
+ tunnelLocalPort: typeof tunnel.localAddress !== 'string' ? tunnel.localAddress.port : undefined,
172
+ public: tunnel.public,
173
+ privacy: tunnel.privacy,
174
+ protocol: tunnel.protocol ?? TunnelProtocol.Http,
175
+ dispose: async (silent) => {
176
+ this.logService.trace(`ForwardedPorts: (MainThreadTunnelService) Closing tunnel from tunnel provider: ${tunnel?.remoteAddress.host}:${tunnel?.remoteAddress.port}`);
177
+ return this._proxy.$closeTunnel({ host: tunnel.remoteAddress.host, port: tunnel.remoteAddress.port }, silent);
178
+ }
179
+ };
180
+ });
181
+ }
182
+ };
183
+ if (features) {
184
+ this.tunnelService.setTunnelFeatures(features);
185
+ }
186
+ this.tunnelService.setTunnelProvider(tunnelProvider);
187
+ this.contextKeyService.createKey(forwardedPortsViewEnabled.key, true);
188
+ }
189
+ async $setCandidateFilter() {
190
+ this.remoteExplorerService.setCandidateFilter((candidates) => {
191
+ return this._proxy.$applyCandidateFilter(candidates);
192
+ });
193
+ }
194
+ async $setCandidatePortSource(source) {
195
+ this.remoteAgentService.getEnvironment().then(() => {
196
+ switch (source) {
197
+ case CandidatePortSource.None: {
198
+ ( Registry.as(Extensions.Configuration))
199
+ .registerDefaultConfigurations([{ overrides: { 'remote.autoForwardPorts': false } }]);
200
+ break;
201
+ }
202
+ case CandidatePortSource.Output: {
203
+ ( Registry.as(Extensions.Configuration))
204
+ .registerDefaultConfigurations([{ overrides: { 'remote.autoForwardPortsSource': PORT_AUTO_SOURCE_SETTING_OUTPUT } }]);
205
+ break;
206
+ }
207
+ }
208
+ }).catch(() => {
209
+ });
210
+ }
211
+ };
212
+ MainThreadTunnelService = __decorate([
213
+ extHostNamedCustomer(MainContext.MainThreadTunnelService),
214
+ ( __param(1, IRemoteExplorerService)),
215
+ ( __param(2, ITunnelService)),
216
+ ( __param(3, INotificationService)),
217
+ ( __param(4, IConfigurationService)),
218
+ ( __param(5, ILogService)),
219
+ ( __param(6, IRemoteAgentService)),
220
+ ( __param(7, IContextKeyService))
221
+ ], MainThreadTunnelService);
222
+
223
+ export { MainThreadTunnelService };
@@ -0,0 +1,110 @@
1
+ import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
2
+ import { Action } from 'vscode/vscode/vs/base/common/actions';
3
+ import { isCancellationError } from 'vscode/vscode/vs/base/common/errors';
4
+ import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
5
+ import { Schemas } from 'vscode/vscode/vs/base/common/network';
6
+ import { localizeWithPath } from 'vscode/vscode/vs/nls';
7
+ import { INotificationService, Severity } from 'vscode/vscode/vs/platform/notification/common/notification';
8
+ import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
9
+ import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
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 'vscode/vscode/vs/platform/extensions/common/extensions';
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 'vscode/vscode/vs/base/common/lifecycle';
3
+ import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
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 };