@codingame/monaco-vscode-api 1.83.14 → 1.83.15

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 (130) hide show
  1. package/api.js +1 -1
  2. package/contributions.js +36 -0
  3. package/extensions.d.ts +83 -4
  4. package/extensions.js +9 -14
  5. package/lifecycle.js +4 -1
  6. package/localExtensionHost.js +207 -0
  7. package/missing-services.js +15 -3
  8. package/monaco-editor-treemending.patch +966 -955
  9. package/monaco.js +4 -36
  10. package/package.json +10 -6
  11. package/service-override/tools/editor.d.ts +6 -6
  12. package/services.d.ts +18 -18
  13. package/services.js +1 -0
  14. package/vscode/src/vs/base/common/errors.d.ts +1 -8
  15. package/vscode/src/vs/base/common/uri.d.ts +1 -7
  16. package/vscode/src/vs/platform/terminal/common/terminal.d.ts +2 -27
  17. package/vscode/src/vs/platform/userDataProfile/common/userDataProfile.d.ts +39 -1
  18. package/vscode/src/vs/platform/workspace/common/workspace.d.ts +1 -44
  19. package/vscode/src/vs/workbench/api/browser/statusBarExtensionPoint.js +160 -2
  20. package/vscode/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.js +564 -11
  21. package/vscode/src/vs/workbench/contrib/scm/common/scm.js +9 -1
  22. package/vscode/src/vs/workbench/contrib/search/browser/searchModel.js +1 -0
  23. package/vscode/src/vs/workbench/services/authentication/browser/authenticationService.js +594 -2
  24. package/vscode/src/vs/workbench/services/extensions/browser/extensionUrlHandler.js +307 -1
  25. package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.d.ts +10 -0
  26. package/vscode/src/vs/workbench/services/extensions/common/extensionDescriptionRegistry.d.ts +2 -37
  27. package/vscode/src/vs/workbench/services/extensions/common/extensionHostProtocol.d.ts +2 -73
  28. package/vscode/src/vs/workbench/services/extensions/common/extensions.d.ts +1 -5
  29. package/vscode/src/vs/workbench/services/textfile/common/textfiles.js +6 -2
  30. package/vscode/src/vs/workbench/services/themes/common/iconExtensionPoint.js +174 -0
  31. package/vscode-dts/vscode.proposed.aiRelatedInformation.d.ts +49 -0
  32. package/vscode-dts/vscode.proposed.authGetSessions.d.ts +62 -0
  33. package/vscode-dts/vscode.proposed.authSession.d.ts +13 -0
  34. package/vscode-dts/vscode.proposed.canonicalUriProvider.d.ts +47 -0
  35. package/vscode-dts/vscode.proposed.chat.d.ts +25 -0
  36. package/vscode-dts/vscode.proposed.chatAgents.d.ts +39 -0
  37. package/vscode-dts/vscode.proposed.chatProvider.d.ts +38 -0
  38. package/vscode-dts/vscode.proposed.chatRequestAccess.d.ts +47 -0
  39. package/vscode-dts/vscode.proposed.chatSlashCommands.d.ts +47 -0
  40. package/vscode-dts/vscode.proposed.chatVariables.d.ts +35 -0
  41. package/vscode-dts/vscode.proposed.codiconDecoration.d.ts +48 -0
  42. package/vscode-dts/vscode.proposed.commentsDraftState.d.ts +18 -0
  43. package/vscode-dts/vscode.proposed.contribCommentEditorActionsMenu.d.ts +6 -0
  44. package/vscode-dts/vscode.proposed.contribCommentPeekContext.d.ts +10 -0
  45. package/vscode-dts/vscode.proposed.contribCommentThreadAdditionalMenu.d.ts +8 -0
  46. package/vscode-dts/vscode.proposed.contribEditSessions.d.ts +8 -0
  47. package/vscode-dts/vscode.proposed.contribEditorContentMenu.d.ts +6 -0
  48. package/vscode-dts/vscode.proposed.contribLabelFormatterWorkspaceTooltip.d.ts +6 -0
  49. package/vscode-dts/vscode.proposed.contribMenuBarHome.d.ts +6 -0
  50. package/vscode-dts/vscode.proposed.contribMergeEditorMenus.d.ts +6 -0
  51. package/vscode-dts/vscode.proposed.contribNotebookStaticPreloads.d.ts +6 -0
  52. package/vscode-dts/vscode.proposed.contribRemoteHelp.d.ts +6 -0
  53. package/vscode-dts/vscode.proposed.contribShareMenu.d.ts +7 -0
  54. package/vscode-dts/vscode.proposed.contribStatusBarItems.d.ts +8 -0
  55. package/vscode-dts/vscode.proposed.contribViewsRemote.d.ts +6 -0
  56. package/vscode-dts/vscode.proposed.contribViewsWelcome.d.ts +6 -0
  57. package/vscode-dts/vscode.proposed.customEditorMove.d.ts +29 -0
  58. package/vscode-dts/vscode.proposed.debugFocus.d.ts +74 -0
  59. package/vscode-dts/vscode.proposed.diffCommand.d.ts +38 -0
  60. package/vscode-dts/vscode.proposed.diffContentOptions.d.ts +16 -0
  61. package/vscode-dts/vscode.proposed.documentFiltersExclusive.d.ts +13 -0
  62. package/vscode-dts/vscode.proposed.documentPaste.d.ts +111 -0
  63. package/vscode-dts/vscode.proposed.dropMetadata.d.ts +60 -0
  64. package/vscode-dts/vscode.proposed.editSessionIdentityProvider.d.ts +71 -0
  65. package/vscode-dts/vscode.proposed.editorInsets.d.ts +22 -0
  66. package/vscode-dts/vscode.proposed.extensionRuntime.d.ts +24 -0
  67. package/vscode-dts/vscode.proposed.extensionsAny.d.ts +40 -0
  68. package/vscode-dts/vscode.proposed.externalUriOpener.d.ts +163 -0
  69. package/vscode-dts/vscode.proposed.fileComments.d.ts +85 -0
  70. package/vscode-dts/vscode.proposed.fileSearchProvider.d.ts +67 -0
  71. package/vscode-dts/vscode.proposed.findTextInFiles.d.ts +104 -0
  72. package/vscode-dts/vscode.proposed.fsChunks.d.ts +16 -0
  73. package/vscode-dts/vscode.proposed.handleIssueUri.d.ts +31 -0
  74. package/vscode-dts/vscode.proposed.idToken.d.ts +16 -0
  75. package/vscode-dts/vscode.proposed.inlineCompletionsAdditions.d.ts +71 -0
  76. package/vscode-dts/vscode.proposed.interactive.d.ts +227 -0
  77. package/vscode-dts/vscode.proposed.interactiveUserActions.d.ts +70 -0
  78. package/vscode-dts/vscode.proposed.interactiveWindow.d.ts +25 -0
  79. package/vscode-dts/vscode.proposed.ipc.d.ts +37 -0
  80. package/vscode-dts/vscode.proposed.mappedEditsProvider.d.ts +42 -0
  81. package/vscode-dts/vscode.proposed.notebookCellExecutionState.d.ts +52 -0
  82. package/vscode-dts/vscode.proposed.notebookControllerAffinityHidden.d.ts +17 -0
  83. package/vscode-dts/vscode.proposed.notebookDeprecated.d.ts +16 -0
  84. package/vscode-dts/vscode.proposed.notebookExecution.d.ts +39 -0
  85. package/vscode-dts/vscode.proposed.notebookKernelSource.d.ts +46 -0
  86. package/vscode-dts/vscode.proposed.notebookLiveShare.d.ts +21 -0
  87. package/vscode-dts/vscode.proposed.notebookMessaging.d.ts +68 -0
  88. package/vscode-dts/vscode.proposed.notebookMime.d.ts +33 -0
  89. package/vscode-dts/vscode.proposed.portsAttributes.d.ts +100 -0
  90. package/vscode-dts/vscode.proposed.profileContentHandlers.d.ts +19 -0
  91. package/vscode-dts/vscode.proposed.quickDiffProvider.d.ts +17 -0
  92. package/vscode-dts/vscode.proposed.quickPickItemTooltip.d.ts +16 -0
  93. package/vscode-dts/vscode.proposed.quickPickSortByLabel.d.ts +16 -0
  94. package/vscode-dts/vscode.proposed.readonlyMessage.d.ts +14 -0
  95. package/vscode-dts/vscode.proposed.resolvers.d.ts +371 -0
  96. package/vscode-dts/vscode.proposed.saveEditor.d.ts +35 -0
  97. package/vscode-dts/vscode.proposed.scmActionButton.d.ts +19 -0
  98. package/vscode-dts/vscode.proposed.scmHistoryProvider.d.ts +77 -0
  99. package/vscode-dts/vscode.proposed.scmSelectedProvider.d.ts +22 -0
  100. package/vscode-dts/vscode.proposed.scmTextDocument.d.ts +19 -0
  101. package/vscode-dts/vscode.proposed.scmValidation.d.ts +60 -0
  102. package/vscode-dts/vscode.proposed.shareProvider.d.ts +74 -0
  103. package/vscode-dts/vscode.proposed.showLocal.d.ts +19 -0
  104. package/vscode-dts/vscode.proposed.tabInputTextMerge.d.ts +25 -0
  105. package/vscode-dts/vscode.proposed.taskPresentationGroup.d.ts +16 -0
  106. package/vscode-dts/vscode.proposed.telemetry.d.ts +36 -0
  107. package/vscode-dts/vscode.proposed.terminalDataWriteEvent.d.ts +32 -0
  108. package/vscode-dts/vscode.proposed.terminalDimensions.d.ts +39 -0
  109. package/vscode-dts/vscode.proposed.terminalExecuteCommandEvent.d.ts +46 -0
  110. package/vscode-dts/vscode.proposed.terminalQuickFixProvider.d.ts +83 -0
  111. package/vscode-dts/vscode.proposed.terminalSelection.d.ts +16 -0
  112. package/vscode-dts/vscode.proposed.testCoverage.d.ts +198 -0
  113. package/vscode-dts/vscode.proposed.testMessageContextValue.d.ts +45 -0
  114. package/vscode-dts/vscode.proposed.testObserver.d.ts +184 -0
  115. package/vscode-dts/vscode.proposed.textSearchProvider.d.ts +281 -0
  116. package/vscode-dts/vscode.proposed.timeline.d.ts +163 -0
  117. package/vscode-dts/vscode.proposed.tokenInformation.d.ts +26 -0
  118. package/vscode-dts/vscode.proposed.treeViewActiveItem.d.ts +30 -0
  119. package/vscode-dts/vscode.proposed.treeViewMarkdownMessage.d.ts +28 -0
  120. package/vscode-dts/vscode.proposed.treeViewReveal.d.ts +13 -0
  121. package/vscode-dts/vscode.proposed.tunnelFactory.d.ts +44 -0
  122. package/vscode-dts/vscode.proposed.tunnels.d.ts +64 -0
  123. package/vscode-dts/vscode.proposed.windowActivity.d.ts +17 -0
  124. package/vscode-dts/vscode.proposed.workspaceTrust.d.ts +30 -0
  125. package/vscode/src/vs/base/common/ternarySearchTree.d.ts +0 -46
  126. package/vscode/src/vs/base/common/uriIpc.d.ts +0 -10
  127. package/vscode/src/vs/platform/workspace/common/editSessions.d.ts +0 -7
  128. package/vscode/src/vs/workbench/services/extensions/common/proxyIdentifier.d.ts +0 -44
  129. package/vscode/src/vs/workbench/services/search/common/search.d.ts +0 -52
  130. package/vscode.proposed.d.ts +0 -4787
@@ -1,15 +1,34 @@
1
1
  import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
2
  import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
3
+ import { combinedDisposable, toDisposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
4
+ import { URI } from 'monaco-editor/esm/vs/base/common/uri.js';
5
+ import { IConfigurationService } from 'monaco-editor/esm/vs/platform/configuration/common/configuration.js';
3
6
  import '../../../../../../../override/vs/platform/dialogs/common/dialogs.js';
7
+ import { IExtensionManagementService, IExtensionGalleryService } from '../../../../platform/extensionManagement/common/extensionManagement.js';
8
+ import { IWorkbenchExtensionEnablementService } from '../../extensionManagement/common/extensionManagement.js';
9
+ import { areSameExtensions } from '../../../../platform/extensionManagement/common/extensionManagementUtil.js';
4
10
  import { createDecorator } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
11
+ import { INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
5
12
  import { IStorageService } from 'monaco-editor/esm/vs/platform/storage/common/storage.js';
6
13
  import { IURLService } from '../../../../platform/url/common/url.js';
14
+ import { IHostService } from '../../host/browser/host.js';
15
+ import { toExtensionDescription, IExtensionService } from '../common/extensions.js';
16
+ import { ExtensionIdentifier } from 'monaco-editor/esm/vs/platform/extensions/common/extensions.js';
7
17
  import { Registry } from 'monaco-editor/esm/vs/platform/registry/common/platform.js';
8
18
  import { Extensions } from '../../../common/contributions.js';
9
19
  import { registerAction2, Action2, MenuId } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
10
20
  import { IQuickInputService } from 'monaco-editor/esm/vs/platform/quickinput/common/quickInput.js';
21
+ import { IProgressService } from 'monaco-editor/esm/vs/platform/progress/common/progress.js';
11
22
  import { IsWebContext } from 'monaco-editor/esm/vs/platform/contextkey/common/contextkeys.js';
23
+ import { CancellationToken } from 'monaco-editor/esm/vs/base/common/cancellation.js';
24
+ import { ITelemetryService } from 'monaco-editor/esm/vs/platform/telemetry/common/telemetry.js';
25
+ import { IProductService } from 'monaco-editor/esm/vs/platform/product/common/productService.js';
26
+ import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
12
27
  var ExtensionUrlBootstrapHandler_1;
28
+ const FIVE_MINUTES = 5 * 60 * 1000;
29
+ const THIRTY_SECONDS = 30 * 1000;
30
+ const URL_TO_HANDLE = 'extensionUrlHandler.urlToHandle';
31
+ const USER_TRUSTED_EXTENSIONS_CONFIGURATION_KEY = 'extensions.confirmedUriHandlerExtensionIds';
13
32
  const USER_TRUSTED_EXTENSIONS_STORAGE_KEY = 'extensionUrlHandler.confirmedExtensions';
14
33
  function isExtensionId(value) {
15
34
  return /^[a-z0-9][a-z0-9\-]*\.[a-z0-9][a-z0-9\-]*$/i.test(value);
@@ -38,6 +57,293 @@ class UserTrustedExtensionIdStorage {
38
57
  }
39
58
  }
40
59
  const IExtensionUrlHandler = ( createDecorator('extensionUrlHandler'));
60
+ let ExtensionUrlHandler = class ExtensionUrlHandler {
61
+ constructor(urlService, extensionService, dialogService, notificationService, extensionManagementService, extensionEnablementService, hostService, galleryService, storageService, configurationService, progressService, telemetryService, productService) {
62
+ this.extensionService = extensionService;
63
+ this.dialogService = dialogService;
64
+ this.notificationService = notificationService;
65
+ this.extensionManagementService = extensionManagementService;
66
+ this.extensionEnablementService = extensionEnablementService;
67
+ this.hostService = hostService;
68
+ this.galleryService = galleryService;
69
+ this.storageService = storageService;
70
+ this.configurationService = configurationService;
71
+ this.progressService = progressService;
72
+ this.telemetryService = telemetryService;
73
+ this.productService = productService;
74
+ this.extensionHandlers = ( new Map());
75
+ this.uriBuffer = ( new Map());
76
+ this.userTrustedExtensionsStorage = ( new UserTrustedExtensionIdStorage(storageService));
77
+ const interval = setInterval(() => this.garbageCollect(), THIRTY_SECONDS);
78
+ const urlToHandleValue = this.storageService.get(URL_TO_HANDLE, 1 );
79
+ if (urlToHandleValue) {
80
+ this.storageService.remove(URL_TO_HANDLE, 1 );
81
+ this.handleURL(URI.revive(JSON.parse(urlToHandleValue)), { trusted: true });
82
+ }
83
+ this.disposable = combinedDisposable(urlService.registerHandler(this), toDisposable(() => clearInterval(interval)));
84
+ const cache = ExtensionUrlBootstrapHandler.cache;
85
+ setTimeout(() => cache.forEach(([uri, option]) => this.handleURL(uri, option)));
86
+ }
87
+ async handleURL(uri, options) {
88
+ if (!isExtensionId(uri.authority)) {
89
+ return false;
90
+ }
91
+ const extensionId = uri.authority;
92
+ this.telemetryService.publicLog2('uri_invoked/start', { extensionId });
93
+ const initialHandler = this.extensionHandlers.get(ExtensionIdentifier.toKey(extensionId));
94
+ let extensionDisplayName;
95
+ if (!initialHandler) {
96
+ const extension = await this.extensionService.getExtension(extensionId);
97
+ if (!extension) {
98
+ await this.handleUnhandledURL(uri, { id: extensionId }, options);
99
+ return true;
100
+ }
101
+ else {
102
+ extensionDisplayName = extension.displayName ?? '';
103
+ }
104
+ }
105
+ else {
106
+ extensionDisplayName = initialHandler.extensionDisplayName;
107
+ }
108
+ const trusted = options?.trusted
109
+ || this.productService.trustedExtensionProtocolHandlers?.includes(extensionId)
110
+ || this.didUserTrustExtension(ExtensionIdentifier.toKey(extensionId));
111
+ if (!trusted) {
112
+ let uriString = ( uri.toString(false));
113
+ if (uriString.length > 40) {
114
+ uriString = `${uriString.substring(0, 30)}...${uriString.substring(uriString.length - 5)}`;
115
+ }
116
+ const result = await this.dialogService.confirm({
117
+ message: ( localizeWithPath(
118
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
119
+ 'confirmUrl',
120
+ "Allow '{0}' extension to open this URI?",
121
+ extensionDisplayName
122
+ )),
123
+ checkbox: {
124
+ label: ( localizeWithPath(
125
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
126
+ 'rememberConfirmUrl',
127
+ "Don't ask again for this extension."
128
+ )),
129
+ },
130
+ detail: uriString,
131
+ primaryButton: ( localizeWithPath(
132
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
133
+ { key: 'open', comment: ['&& denotes a mnemonic'] },
134
+ "&&Open"
135
+ ))
136
+ });
137
+ if (!result.confirmed) {
138
+ this.telemetryService.publicLog2('uri_invoked/cancel', { extensionId });
139
+ return true;
140
+ }
141
+ if (result.checkboxChecked) {
142
+ this.userTrustedExtensionsStorage.add(ExtensionIdentifier.toKey(extensionId));
143
+ }
144
+ }
145
+ const handler = this.extensionHandlers.get(ExtensionIdentifier.toKey(extensionId));
146
+ if (handler) {
147
+ if (!initialHandler) {
148
+ return await this.handleURLByExtension(extensionId, handler, uri, options);
149
+ }
150
+ return false;
151
+ }
152
+ const timestamp = ( new Date()).getTime();
153
+ let uris = this.uriBuffer.get(ExtensionIdentifier.toKey(extensionId));
154
+ if (!uris) {
155
+ uris = [];
156
+ this.uriBuffer.set(ExtensionIdentifier.toKey(extensionId), uris);
157
+ }
158
+ uris.push({ timestamp, uri });
159
+ await this.extensionService.activateByEvent(`onUri:${ExtensionIdentifier.toKey(extensionId)}`, 1 );
160
+ return true;
161
+ }
162
+ registerExtensionHandler(extensionId, handler) {
163
+ this.extensionHandlers.set(ExtensionIdentifier.toKey(extensionId), handler);
164
+ const uris = this.uriBuffer.get(ExtensionIdentifier.toKey(extensionId)) || [];
165
+ for (const { uri } of uris) {
166
+ this.handleURLByExtension(extensionId, handler, uri);
167
+ }
168
+ this.uriBuffer.delete(ExtensionIdentifier.toKey(extensionId));
169
+ }
170
+ unregisterExtensionHandler(extensionId) {
171
+ this.extensionHandlers.delete(ExtensionIdentifier.toKey(extensionId));
172
+ }
173
+ async handleURLByExtension(extensionId, handler, uri, options) {
174
+ this.telemetryService.publicLog2('uri_invoked/end', { extensionId: ExtensionIdentifier.toKey(extensionId) });
175
+ return await handler.handleURL(uri, options);
176
+ }
177
+ async handleUnhandledURL(uri, extensionIdentifier, options) {
178
+ const installedExtensions = await this.extensionManagementService.getInstalled();
179
+ let extension = installedExtensions.find(e => areSameExtensions(e.identifier, extensionIdentifier));
180
+ if (!extension) {
181
+ let galleryExtension;
182
+ try {
183
+ galleryExtension = (await this.galleryService.getExtensions([extensionIdentifier], CancellationToken.None))[0] ?? undefined;
184
+ }
185
+ catch (err) {
186
+ return;
187
+ }
188
+ if (!galleryExtension) {
189
+ return;
190
+ }
191
+ this.telemetryService.publicLog2('uri_invoked/install_extension/start', { extensionId: extensionIdentifier.id });
192
+ const result = await this.dialogService.confirm({
193
+ message: ( localizeWithPath(
194
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
195
+ 'installAndHandle',
196
+ "Would you like to install '{0}' extension from '{1}' to open this URI?",
197
+ galleryExtension.displayName,
198
+ galleryExtension.publisherDisplayName
199
+ )),
200
+ detail: `${( localizeWithPath(
201
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
202
+ 'installDetail',
203
+ "'{0}' extension wants to open a URI:",
204
+ galleryExtension.displayName
205
+ ))}\n\n${( uri.toString())}`,
206
+ primaryButton: ( localizeWithPath(
207
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
208
+ { key: 'install and open', comment: ['&& denotes a mnemonic'] },
209
+ "&&Install and Open"
210
+ ))
211
+ });
212
+ if (!result.confirmed) {
213
+ this.telemetryService.publicLog2('uri_invoked/install_extension/cancel', { extensionId: extensionIdentifier.id });
214
+ return;
215
+ }
216
+ this.telemetryService.publicLog2('uri_invoked/install_extension/accept', { extensionId: extensionIdentifier.id });
217
+ try {
218
+ extension = await this.progressService.withProgress({
219
+ location: 15 ,
220
+ title: ( localizeWithPath(
221
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
222
+ 'Installing',
223
+ "Installing Extension '{0}'...",
224
+ galleryExtension.displayName || galleryExtension.name
225
+ ))
226
+ }, () => this.extensionManagementService.installFromGallery(galleryExtension));
227
+ }
228
+ catch (error) {
229
+ this.notificationService.error(error);
230
+ return;
231
+ }
232
+ }
233
+ if (!this.extensionEnablementService.isEnabled(extension)) {
234
+ this.telemetryService.publicLog2('uri_invoked/enable_extension/start', { extensionId: extensionIdentifier.id });
235
+ const result = await this.dialogService.confirm({
236
+ message: ( localizeWithPath(
237
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
238
+ 'enableAndHandle',
239
+ "Extension '{0}' is disabled. Would you like to enable the extension and open the URL?",
240
+ extension.manifest.displayName || extension.manifest.name
241
+ )),
242
+ detail: `${extension.manifest.displayName || extension.manifest.name} (${extensionIdentifier.id}) wants to open a URL:\n\n${( uri.toString())}`,
243
+ primaryButton: ( localizeWithPath(
244
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
245
+ { key: 'enableAndReload', comment: ['&& denotes a mnemonic'] },
246
+ "&&Enable and Open"
247
+ ))
248
+ });
249
+ if (!result.confirmed) {
250
+ this.telemetryService.publicLog2('uri_invoked/enable_extension/cancel', { extensionId: extensionIdentifier.id });
251
+ return;
252
+ }
253
+ this.telemetryService.publicLog2('uri_invoked/enable_extension/accept', { extensionId: extensionIdentifier.id });
254
+ await this.extensionEnablementService.setEnablement([extension], 8 );
255
+ }
256
+ if (this.extensionService.canAddExtension(toExtensionDescription(extension))) {
257
+ await this.waitUntilExtensionIsAdded(extensionIdentifier);
258
+ await this.handleURL(uri, { ...options, trusted: true });
259
+ }
260
+ else {
261
+ this.telemetryService.publicLog2('uri_invoked/activate_extension/start', { extensionId: extensionIdentifier.id });
262
+ const result = await this.dialogService.confirm({
263
+ message: ( localizeWithPath(
264
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
265
+ 'reloadAndHandle',
266
+ "Extension '{0}' is not loaded. Would you like to reload the window to load the extension and open the URL?",
267
+ extension.manifest.displayName || extension.manifest.name
268
+ )),
269
+ detail: `${extension.manifest.displayName || extension.manifest.name} (${extensionIdentifier.id}) wants to open a URL:\n\n${( uri.toString())}`,
270
+ primaryButton: ( localizeWithPath(
271
+ 'vs/workbench/services/extensions/browser/extensionUrlHandler',
272
+ { key: 'reloadAndOpen', comment: ['&& denotes a mnemonic'] },
273
+ "&&Reload Window and Open"
274
+ ))
275
+ });
276
+ if (!result.confirmed) {
277
+ this.telemetryService.publicLog2('uri_invoked/activate_extension/cancel', { extensionId: extensionIdentifier.id });
278
+ return;
279
+ }
280
+ this.telemetryService.publicLog2('uri_invoked/activate_extension/accept', { extensionId: extensionIdentifier.id });
281
+ this.storageService.store(URL_TO_HANDLE, JSON.stringify(uri.toJSON()), 1 , 1 );
282
+ await this.hostService.reload();
283
+ }
284
+ }
285
+ async waitUntilExtensionIsAdded(extensionId) {
286
+ if (!(await this.extensionService.getExtension(extensionId.id))) {
287
+ await ( new Promise((c, e) => {
288
+ const disposable = this.extensionService.onDidChangeExtensions(async () => {
289
+ try {
290
+ if (await this.extensionService.getExtension(extensionId.id)) {
291
+ disposable.dispose();
292
+ c();
293
+ }
294
+ }
295
+ catch (error) {
296
+ e(error);
297
+ }
298
+ });
299
+ }));
300
+ }
301
+ }
302
+ garbageCollect() {
303
+ const now = ( new Date()).getTime();
304
+ const uriBuffer = ( new Map());
305
+ this.uriBuffer.forEach((uris, extensionId) => {
306
+ uris = uris.filter(({ timestamp }) => now - timestamp < FIVE_MINUTES);
307
+ if (uris.length > 0) {
308
+ uriBuffer.set(extensionId, uris);
309
+ }
310
+ });
311
+ this.uriBuffer = uriBuffer;
312
+ }
313
+ didUserTrustExtension(id) {
314
+ if (( this.userTrustedExtensionsStorage.has(id))) {
315
+ return true;
316
+ }
317
+ return this.getConfirmedTrustedExtensionIdsFromConfiguration().indexOf(id) > -1;
318
+ }
319
+ getConfirmedTrustedExtensionIdsFromConfiguration() {
320
+ const trustedExtensionIds = this.configurationService.getValue(USER_TRUSTED_EXTENSIONS_CONFIGURATION_KEY);
321
+ if (!Array.isArray(trustedExtensionIds)) {
322
+ return [];
323
+ }
324
+ return trustedExtensionIds;
325
+ }
326
+ dispose() {
327
+ this.disposable.dispose();
328
+ this.extensionHandlers.clear();
329
+ this.uriBuffer.clear();
330
+ }
331
+ };
332
+ ExtensionUrlHandler = ( __decorate([
333
+ ( __param(0, IURLService)),
334
+ ( __param(1, IExtensionService)),
335
+ ( __param(2, IDialogService)),
336
+ ( __param(3, INotificationService)),
337
+ ( __param(4, IExtensionManagementService)),
338
+ ( __param(5, IWorkbenchExtensionEnablementService)),
339
+ ( __param(6, IHostService)),
340
+ ( __param(7, IExtensionGalleryService)),
341
+ ( __param(8, IStorageService)),
342
+ ( __param(9, IConfigurationService)),
343
+ ( __param(10, IProgressService)),
344
+ ( __param(11, ITelemetryService)),
345
+ ( __param(12, IProductService))
346
+ ], ExtensionUrlHandler));
41
347
  let ExtensionUrlBootstrapHandler = class ExtensionUrlBootstrapHandler {
42
348
  static { ExtensionUrlBootstrapHandler_1 = this; }
43
349
  static { this._cache = []; }
@@ -104,4 +410,4 @@ class ManageAuthorizedExtensionURIsAction extends Action2 {
104
410
  }
105
411
  }
106
412
  registerAction2(ManageAuthorizedExtensionURIsAction);
107
- export { IExtensionUrlHandler };
413
+ export { ExtensionUrlHandler, IExtensionUrlHandler };
@@ -0,0 +1,10 @@
1
+ import { ExtensionHostExtensions } from '../common/extensions.js';
2
+
3
+ interface IWebWorkerExtensionHostInitData {
4
+ readonly extensions: ExtensionHostExtensions;
5
+ }
6
+ interface IWebWorkerExtensionHostDataProvider {
7
+ getInitData(): Promise<IWebWorkerExtensionHostInitData>;
8
+ }
9
+
10
+ export type { IWebWorkerExtensionHostDataProvider, IWebWorkerExtensionHostInitData };
@@ -1,11 +1,5 @@
1
- import { Event } from '../../../../base/common/event.js';
2
- import { ExtensionIdentifier, IExtensionDescription } from '../../../../platform/extensions/common/extensions.js';
1
+ import { IExtensionDescription, ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
3
2
 
4
- declare class DeltaExtensionsResult {
5
- readonly versionId: number;
6
- readonly removedDueToLooping: IExtensionDescription[];
7
- constructor(versionId: number, removedDueToLooping: IExtensionDescription[]);
8
- }
9
3
  interface IReadOnlyExtensionDescriptionRegistry {
10
4
  containsActivationEvent(activationEvent: string): boolean;
11
5
  containsExtension(extensionId: ExtensionIdentifier): boolean;
@@ -15,39 +9,10 @@ interface IReadOnlyExtensionDescriptionRegistry {
15
9
  getExtensionDescriptionByUUID(uuid: string): IExtensionDescription | undefined;
16
10
  getExtensionDescriptionByIdOrUUID(extensionId: ExtensionIdentifier | string, uuid: string | undefined): IExtensionDescription | undefined;
17
11
  }
18
- declare class ExtensionDescriptionRegistry implements IReadOnlyExtensionDescriptionRegistry {
19
- private readonly _activationEventsReader;
20
- static isHostExtension(extensionId: ExtensionIdentifier | string, myRegistry: ExtensionDescriptionRegistry, globalRegistry: ExtensionDescriptionRegistry): boolean;
21
- private readonly _onDidChange;
22
- readonly onDidChange: Event<void>;
23
- private _versionId;
24
- private _extensionDescriptions;
25
- private _extensionsMap;
26
- private _extensionsArr;
27
- private _activationMap;
28
- constructor(_activationEventsReader: IActivationEventsReader, extensionDescriptions: IExtensionDescription[]);
29
- private _initialize;
30
- set(extensionDescriptions: IExtensionDescription[]): {
31
- versionId: number;
32
- };
33
- deltaExtensions(toAdd: IExtensionDescription[], toRemove: ExtensionIdentifier[]): DeltaExtensionsResult;
34
- private static _findLoopingExtensions;
35
- containsActivationEvent(activationEvent: string): boolean;
36
- containsExtension(extensionId: ExtensionIdentifier): boolean;
37
- getExtensionDescriptionsForActivationEvent(activationEvent: string): IExtensionDescription[];
38
- getAllExtensionDescriptions(): IExtensionDescription[];
39
- getSnapshot(): ExtensionDescriptionRegistrySnapshot;
40
- getExtensionDescription(extensionId: ExtensionIdentifier | string): IExtensionDescription | undefined;
41
- getExtensionDescriptionByUUID(uuid: string): IExtensionDescription | undefined;
42
- getExtensionDescriptionByIdOrUUID(extensionId: ExtensionIdentifier | string, uuid: string | undefined): IExtensionDescription | undefined;
43
- }
44
12
  declare class ExtensionDescriptionRegistrySnapshot {
45
13
  readonly versionId: number;
46
14
  readonly extensions: readonly IExtensionDescription[];
47
15
  constructor(versionId: number, extensions: readonly IExtensionDescription[]);
48
16
  }
49
- interface IActivationEventsReader {
50
- readActivationEvents(extensionDescription: IExtensionDescription): string[] | undefined;
51
- }
52
17
 
53
- export { DeltaExtensionsResult, ExtensionDescriptionRegistry, ExtensionDescriptionRegistrySnapshot, type IActivationEventsReader, type IReadOnlyExtensionDescriptionRegistry };
18
+ export { ExtensionDescriptionRegistrySnapshot, type IReadOnlyExtensionDescriptionRegistry };
@@ -1,7 +1,4 @@
1
- import { URI, UriDto, UriComponents } from '../../../../base/common/uri.js';
2
- import { ExtensionIdentifier, IExtensionDescription } from '../../../../platform/extensions/common/extensions.js';
3
- import { LogLevel, ILoggerResource } from '../../../../platform/log/common/log.js';
4
- import { IRemoteConnectionData } from '../../../../platform/remote/common/remoteAuthorityResolver.js';
1
+ import { IExtensionDescription, ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
5
2
 
6
3
  interface IExtensionDescriptionSnapshot {
7
4
  readonly versionId: number;
@@ -21,73 +18,5 @@ interface IExtensionDescriptionDelta {
21
18
  readonly myToRemove: ExtensionIdentifier[];
22
19
  readonly myToAdd: ExtensionIdentifier[];
23
20
  }
24
- interface IExtensionHostInitData {
25
- version: string;
26
- quality: string | undefined;
27
- commit?: string;
28
- /**
29
- * When set to `0`, no polling for the parent process still running will happen.
30
- */
31
- parentPid: number | 0;
32
- environment: IEnvironment;
33
- workspace?: IStaticWorkspaceData | null;
34
- extensions: IExtensionDescriptionSnapshot;
35
- nlsBaseUrl?: URI;
36
- telemetryInfo: {
37
- readonly sessionId: string;
38
- readonly machineId: string;
39
- readonly firstSessionDate: string;
40
- readonly msftInternal?: boolean;
41
- };
42
- logLevel: LogLevel;
43
- loggers: UriDto<ILoggerResource>[];
44
- logsLocation: URI;
45
- autoStart: boolean;
46
- remote: {
47
- isRemote: boolean;
48
- authority: string | undefined;
49
- connectionData: IRemoteConnectionData | null;
50
- };
51
- consoleForward: {
52
- includeStack: boolean;
53
- logNative: boolean;
54
- };
55
- uiKind: UIKind;
56
- messagePorts?: ReadonlyMap<string, MessagePortLike>;
57
- }
58
- interface IEnvironment {
59
- isExtensionDevelopmentDebug: boolean;
60
- appName: string;
61
- appHost: string;
62
- appRoot?: URI;
63
- appLanguage: string;
64
- extensionTelemetryLogResource: URI;
65
- isExtensionTelemetryLoggingOnly: boolean;
66
- appUriScheme: string;
67
- extensionDevelopmentLocationURI?: URI[];
68
- extensionTestsLocationURI?: URI;
69
- globalStorageHome: URI;
70
- workspaceStorageHome: URI;
71
- useHostProxy?: boolean;
72
- skipWorkspaceStorageLock?: boolean;
73
- extensionLogLevel?: [string, string][];
74
- }
75
- interface IStaticWorkspaceData {
76
- id: string;
77
- name: string;
78
- transient?: boolean;
79
- configuration?: UriComponents | null;
80
- isUntitled?: boolean | null;
81
- }
82
- interface MessagePortLike {
83
- postMessage(message: any, transfer?: any[]): void;
84
- addEventListener(type: 'message', listener: (e: any) => any): void;
85
- removeEventListener(type: 'message', listener: (e: any) => any): void;
86
- start(): void;
87
- }
88
- declare enum UIKind {
89
- Desktop = 1,
90
- Web = 2
91
- }
92
21
 
93
- export { type IEnvironment, type IExtensionDescriptionDelta, type IExtensionDescriptionSnapshot, type IExtensionHostInitData, type IStaticWorkspaceData, type MessagePortLike, UIKind };
22
+ export type { IExtensionDescriptionDelta, IExtensionDescriptionSnapshot };
@@ -22,10 +22,6 @@ interface IExtensionsStatus {
22
22
  runtimeErrors: Error[];
23
23
  runningLocation: ExtensionRunningLocation | null;
24
24
  }
25
- declare class MissingExtensionDependency {
26
- readonly dependency: string;
27
- constructor(dependency: string);
28
- }
29
25
  declare const enum ExtensionHostStartup {
30
26
  /**
31
27
  * The extension host should be launched immediately and doesn't require a `$startExtensionHost` call.
@@ -237,4 +233,4 @@ interface IExtensionService {
237
233
  }): Promise<void>;
238
234
  }
239
235
 
240
- export { ActivationKind, ActivationTimes, type ExtensionActivationReason, ExtensionHostExtensions, ExtensionHostStartup, ExtensionPointContribution, type IExtensionHost, IExtensionService, type IExtensionsStatus, type IMessage, type IResponsiveStateChangeEvent, type IWillActivateEvent, MissingExtensionDependency, type WillStopExtensionHostsEvent };
236
+ export { ActivationKind, ActivationTimes, type ExtensionActivationReason, ExtensionHostExtensions, ExtensionHostStartup, ExtensionPointContribution, type IExtensionHost, IExtensionService, type IExtensionsStatus, type IMessage, type IResponsiveStateChangeEvent, type IWillActivateEvent, type WillStopExtensionHostsEvent };
@@ -1,7 +1,7 @@
1
1
  import { FileOperationError } from 'monaco-editor/esm/vs/platform/files/common/files.js';
2
2
  import { createDecorator } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
3
3
  import { VSBuffer } from 'monaco-editor/esm/vs/base/common/buffer.js';
4
- import { isUndefinedOrNull } from 'monaco-editor/esm/vs/base/common/types.js';
4
+ import { isUndefinedOrNull, areFunctions } from 'monaco-editor/esm/vs/base/common/types.js';
5
5
  const ITextFileService = ( createDecorator('textFileService'));
6
6
  class TextFileOperationError extends FileOperationError {
7
7
  static isTextFileOperationError(obj) {
@@ -13,6 +13,10 @@ class TextFileOperationError extends FileOperationError {
13
13
  this.options = options;
14
14
  }
15
15
  }
16
+ function isTextFileEditorModel(model) {
17
+ const candidate = model;
18
+ return areFunctions(candidate.setEncoding, candidate.getEncoding, candidate.save, candidate.revert, candidate.isDirty, candidate.getLanguageId);
19
+ }
16
20
  function stringToSnapshot(value) {
17
21
  let done = false;
18
22
  return {
@@ -42,4 +46,4 @@ function toBufferOrReadable(value) {
42
46
  }
43
47
  };
44
48
  }
45
- export { ITextFileService, TextFileOperationError, stringToSnapshot, toBufferOrReadable };
49
+ export { ITextFileService, TextFileOperationError, isTextFileEditorModel, stringToSnapshot, toBufferOrReadable };