@codingame/monaco-vscode-extension-gallery-service-override 5.0.0 → 5.1.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-extension-gallery-service-override",
3
- "version": "5.0.0",
3
+ "version": "5.1.0",
4
4
  "keywords": [],
5
5
  "author": {
6
6
  "name": "CodinGame",
@@ -26,6 +26,6 @@
26
26
  }
27
27
  },
28
28
  "dependencies": {
29
- "vscode": "npm:@codingame/monaco-vscode-api@5.0.0"
29
+ "vscode": "npm:@codingame/monaco-vscode-api@5.1.0"
30
30
  }
31
31
  }
@@ -372,7 +372,11 @@ let ExtensionRecommendationNotificationService = class ExtensionRecommendationNo
372
372
  }
373
373
  if (resourceExtensions.length) {
374
374
  const extensions = await this.extensionsWorkbenchService.getResourceExtensions(resourceExtensions, true);
375
- result.push(...extensions);
375
+ for (const extension of extensions) {
376
+ if (await this.extensionsWorkbenchService.canInstall(extension)) {
377
+ result.push(extension);
378
+ }
379
+ }
376
380
  }
377
381
  }
378
382
  return result;
@@ -764,7 +764,11 @@ let ExtensionsListView = class ExtensionsListView extends ViewPane {
764
764
  }
765
765
  if (resourceExtensions.length) {
766
766
  const extensions = await this.extensionsWorkbenchService.getResourceExtensions(resourceExtensions, true);
767
- result.push(...extensions);
767
+ for (const extension of extensions) {
768
+ if (await this.extensionsWorkbenchService.canInstall(extension)) {
769
+ result.push(extension);
770
+ }
771
+ }
768
772
  }
769
773
  }
770
774
  return result;
@@ -1681,7 +1681,7 @@ let ExtensionsWorkbenchService = class ExtensionsWorkbenchService extends Dispos
1681
1681
  }
1682
1682
  return false;
1683
1683
  }
1684
- if (extension.resourceExtension) {
1684
+ if (extension.resourceExtension && (await this.extensionManagementService.canInstall(extension.resourceExtension))) {
1685
1685
  return true;
1686
1686
  }
1687
1687
  return false;
@@ -35,6 +35,9 @@ import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/te
35
35
 
36
36
  var WorkspaceExtensionsManagementService_1;
37
37
  const _moduleId = "vs/workbench/services/extensionManagement/common/extensionManagementService";
38
+ function isResourceExtension(extension) {
39
+ return extension && !!extension.manifest;
40
+ }
38
41
  let ExtensionManagementService = class ExtensionManagementService extends Disposable {
39
42
  constructor(extensionManagementServerService, extensionGalleryService, userDataProfileService, configurationService, productService, downloadService, userDataSyncEnablementService, dialogService, workspaceTrustRequestService, extensionManifestPropertiesService, fileService, logService, instantiationService, extensionsScannerService, telemetryService) {
40
43
  super();
@@ -291,7 +294,13 @@ let ExtensionManagementService = class ExtensionManagementService extends Dispos
291
294
  }
292
295
  return Promise.reject('No Servers');
293
296
  }
294
- async canInstall(gallery) {
297
+ async canInstall(extension) {
298
+ if (isResourceExtension(extension)) {
299
+ return this.canInstallResourceExtension(extension);
300
+ }
301
+ return this.canInstallGalleryExtension(extension);
302
+ }
303
+ async canInstallGalleryExtension(gallery) {
295
304
  if (this.extensionManagementServerService.localExtensionManagementServer
296
305
  && (await this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.canInstall(gallery))) {
297
306
  return true;
@@ -312,6 +321,18 @@ let ExtensionManagementService = class ExtensionManagementService extends Dispos
312
321
  }
313
322
  return false;
314
323
  }
324
+ canInstallResourceExtension(extension) {
325
+ if (this.extensionManagementServerService.localExtensionManagementServer) {
326
+ return true;
327
+ }
328
+ if (this.extensionManagementServerService.remoteExtensionManagementServer && this.extensionManifestPropertiesService.canExecuteOnWorkspace(extension.manifest)) {
329
+ return true;
330
+ }
331
+ if (this.extensionManagementServerService.webExtensionManagementServer && this.extensionManifestPropertiesService.canExecuteOnWeb(extension.manifest)) {
332
+ return true;
333
+ }
334
+ return false;
335
+ }
315
336
  async updateFromGallery(gallery, extension, installOptions) {
316
337
  const server = this.getServer(extension);
317
338
  if (!server) {
@@ -395,6 +416,9 @@ let ExtensionManagementService = class ExtensionManagementService extends Dispos
395
416
  return this.workspaceExtensionManagementService.getInstalled(includeInvalid);
396
417
  }
397
418
  async installResourceExtension(extension, installOptions) {
419
+ if (!this.canInstallResourceExtension(extension)) {
420
+ throw ( (new Error('This extension cannot be installed in the current workspace.')));
421
+ }
398
422
  if (!installOptions.isWorkspaceScoped) {
399
423
  return this.installFromLocation(extension.location);
400
424
  }