@codingame/monaco-vscode-extension-gallery-service-override 31.0.0 → 32.0.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.
Files changed (81) hide show
  1. package/index.js +4 -4
  2. package/package.json +2 -2
  3. package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +58 -33
  4. package/vscode/src/vs/platform/extensionManagement/common/allowedExtensionsService.js +5 -5
  5. package/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.js +1 -1
  6. package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.d.ts +14 -0
  7. package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.js +145 -0
  8. package/vscode/src/vs/platform/extensionRecommendations/common/extensionRecommendations.d.ts +19 -0
  9. package/vscode/src/vs/platform/extensionRecommendations/common/extensionRecommendations.js +25 -0
  10. package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.d.ts +76 -0
  11. package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +470 -0
  12. package/vscode/src/vs/workbench/contrib/extensions/browser/browserRuntimeExtensionsEditor.d.ts +1 -1
  13. package/vscode/src/vs/workbench/contrib/extensions/browser/browserRuntimeExtensionsEditor.js +1 -1
  14. package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.d.ts +25 -0
  15. package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js +83 -0
  16. package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.d.ts +20 -0
  17. package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js +66 -0
  18. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.d.ts +83 -0
  19. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +1353 -0
  20. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.d.ts +11 -0
  21. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.js +49 -0
  22. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.d.ts +22 -0
  23. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.js +728 -0
  24. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.d.ts +63 -0
  25. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js +522 -0
  26. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.d.ts +19 -0
  27. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.js +18 -0
  28. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.d.ts +71 -0
  29. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js +263 -0
  30. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.d.ts +5 -0
  31. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +2227 -0
  32. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js +2 -2
  33. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.d.ts +9 -0
  34. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js +40 -0
  35. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.d.ts +9 -0
  36. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.js +77 -0
  37. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.d.ts +16 -0
  38. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js +93 -0
  39. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.d.ts +27 -0
  40. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js +100 -0
  41. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.d.ts +151 -0
  42. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +1031 -0
  43. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.d.ts +235 -0
  44. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +1600 -0
  45. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.d.ts +314 -0
  46. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +3449 -0
  47. package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.d.ts +44 -0
  48. package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js +368 -0
  49. package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.d.ts +9 -0
  50. package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.js +30 -0
  51. package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.d.ts +9 -0
  52. package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.js +30 -0
  53. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css +910 -0
  54. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionManagement.css +12 -0
  55. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css +229 -0
  56. package/vscode/src/vs/workbench/contrib/extensions/browser/media/loading-dark.svg +31 -0
  57. package/vscode/src/vs/workbench/contrib/extensions/browser/media/loading-hc.svg +31 -0
  58. package/vscode/src/vs/workbench/contrib/extensions/browser/media/loading.svg +31 -0
  59. package/vscode/src/vs/workbench/contrib/extensions/browser/media/runtimeExtensionsEditor.css +86 -0
  60. package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.d.ts +9 -0
  61. package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.js +38 -0
  62. package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.d.ts +9 -0
  63. package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.js +41 -0
  64. package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.d.ts +11 -0
  65. package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.js +38 -0
  66. package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.d.ts +33 -0
  67. package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js +179 -0
  68. package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.d.ts +11 -0
  69. package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.js +90 -0
  70. package/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.d.ts +24 -0
  71. package/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.js +50 -0
  72. package/vscode/src/vs/workbench/contrib/extensions/common/reportExtensionIssueAction.js +1 -1
  73. package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.d.ts +15 -0
  74. package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.js +47 -0
  75. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.d.ts +35 -0
  76. package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.js +876 -0
  77. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.d.ts +4 -0
  78. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js +82 -51
  79. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService.js +4 -4
  80. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.js +2 -2
  81. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.js +46 -46
package/index.js CHANGED
@@ -14,9 +14,9 @@ import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/l
14
14
  import { getLocale } from '@codingame/monaco-vscode-api/vscode/vs/platform/languagePacks/common/languagePacks';
15
15
  import { IgnoredExtensionsManagementService } from './vscode/src/vs/platform/userDataSync/common/ignoredExtensions.js';
16
16
  import { IIgnoredExtensionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/platform/userDataSync/common/ignoredExtensions.service';
17
- import { ExtensionRecommendationNotificationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService';
18
- import { ExtensionRecommendationsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/browser/extensionRecommendationsService';
19
- import { ExtensionsWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService';
17
+ import { ExtensionRecommendationNotificationService } from './vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js';
18
+ import { ExtensionRecommendationsService } from './vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js';
19
+ import { ExtensionsWorkbenchService } from './vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js';
20
20
  import { IExtensionsWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service';
21
21
  import { ExtensionEnablementService } from './vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js';
22
22
  import { WebExtensionGalleryManifestService } from './vscode/src/vs/workbench/services/extensionManagement/browser/extensionGalleryManifestService.js';
@@ -42,7 +42,7 @@ import { IRemoteUserDataProfilesService } from '@codingame/monaco-vscode-api/vsc
42
42
  import { registerAssets } from '@codingame/monaco-vscode-api/assets';
43
43
  import { isLocaleAvailable } from '@codingame/monaco-vscode-api/l10n';
44
44
  import { unsupported } from '@codingame/monaco-vscode-api/tools';
45
- import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/browser/extensions.contribution';
45
+ import './vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js';
46
46
  import './vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js';
47
47
  import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
48
48
  import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codingame/monaco-vscode-extension-gallery-service-override",
3
- "version": "31.0.0",
3
+ "version": "32.0.0",
4
4
  "private": false,
5
5
  "description": "VSCode public API plugged on the monaco editor - extension-gallery service-override",
6
6
  "keywords": [],
@@ -15,7 +15,7 @@
15
15
  },
16
16
  "type": "module",
17
17
  "dependencies": {
18
- "@codingame/monaco-vscode-api": "31.0.0"
18
+ "@codingame/monaco-vscode-api": "32.0.0"
19
19
  },
20
20
  "main": "index.js",
21
21
  "module": "index.js",
@@ -36,7 +36,7 @@ let CommontExtensionManagementService = class CommontExtensionManagementService
36
36
  });
37
37
  if (allowedToInstall !== true) {
38
38
  return (new MarkdownString(localize(
39
- 1847,
39
+ 1859,
40
40
  "This extension cannot be installed because {0}",
41
41
  allowedToInstall.value
42
42
  )));
@@ -44,12 +44,12 @@ let CommontExtensionManagementService = class CommontExtensionManagementService
44
44
  if (!(await this.isExtensionPlatformCompatible(extension))) {
45
45
  const learnLink = isWeb ? "https://aka.ms/vscode-web-extensions-guide" : "https://aka.ms/vscode-platform-specific-extensions";
46
46
  return (new MarkdownString(`${( localize(
47
- 1848,
47
+ 1860,
48
48
  "The '{0}' extension is not available in {1} for the {2} platform.",
49
49
  extension.displayName ?? extension.identifier.id,
50
50
  this.productService.nameLong,
51
51
  TargetPlatformToString(await this.getTargetPlatform())
52
- ))} [${( localize(1849, "Learn Why"))}](${learnLink})`));
52
+ ))} [${( localize(1861, "Learn Why"))}](${learnLink})`));
53
53
  }
54
54
  return true;
55
55
  }
@@ -146,7 +146,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
146
146
  }
147
147
  async installGalleryExtensions(extensions) {
148
148
  if (!this.galleryService.isEnabled()) {
149
- throw ( new ExtensionManagementError(( localize(1850, "Marketplace is not enabled")), ExtensionManagementErrorCode.NotAllowed));
149
+ throw ( new ExtensionManagementError(( localize(1862, "Marketplace is not enabled")), ExtensionManagementErrorCode.NotAllowed));
150
150
  }
151
151
  const results = [];
152
152
  const installableExtensions = [];
@@ -302,21 +302,21 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
302
302
  ( options.profileLocation.toString())
303
303
  );
304
304
  existingInstallingExtension.waitingTasks.push(root);
305
- alreadyRequestedInstallations.push(
306
- Event.toPromise(Event.filter(this.onDidInstallExtensions, results => ( results.some(result => areSameExtensions(result.identifier, identifier))))).then(results => {
307
- this.logService.info(
308
- "Finished waiting for already requested installing extension",
309
- identifier.id,
310
- root.identifier.id,
311
- ( options.profileLocation.toString())
312
- );
313
- const result = results.find(result => areSameExtensions(result.identifier, identifier));
314
- if (!result?.local) {
315
- throw ( new Error(`Extension ${identifier.id} is not installed`));
316
- }
317
- return result.local;
318
- })
319
- );
305
+ const waitForInstallation = Event.toPromise(Event.filter(this.onDidInstallExtensions, results => ( results.some(result => areSameExtensions(result.identifier, identifier))))).then(results => {
306
+ this.logService.info(
307
+ "Finished waiting for already requested installing extension",
308
+ identifier.id,
309
+ root.identifier.id,
310
+ ( options.profileLocation.toString())
311
+ );
312
+ const result = results.find(result => areSameExtensions(result.identifier, identifier));
313
+ if (!result?.local) {
314
+ throw ( new Error(`Extension ${identifier.id} is not installed`));
315
+ }
316
+ return result.local;
317
+ });
318
+ alreadyRequestedInstallations.push(waitForInstallation);
319
+ waitForInstallation.catch(() => {});
320
320
  }
321
321
  return;
322
322
  }
@@ -371,12 +371,37 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
371
371
  getInstallExtensionTaskKey(extension, installExtensionTaskOptions.profileLocation)
372
372
  ) : undefined;
373
373
  if (existingInstallExtensionTask) {
374
+ const existingTask = existingInstallExtensionTask.task;
374
375
  this.logService.info(
375
376
  "Extension is already requested to install",
376
- existingInstallExtensionTask.task.identifier.id,
377
+ existingTask.identifier.id,
377
378
  ( installExtensionTaskOptions.profileLocation.toString())
378
379
  );
379
- alreadyRequestedInstallations.push(existingInstallExtensionTask.task.waitUntilTaskIsFinished());
380
+ const resultKey = `${existingTask.identifier.id.toLowerCase()}-${( installExtensionTaskOptions.profileLocation.toString())}`;
381
+ const waitForInstallation = existingTask.waitUntilTaskIsFinished().then(local => {
382
+ installExtensionResultsMap.set(resultKey, {
383
+ local,
384
+ identifier: existingTask.identifier,
385
+ operation: existingTask.operation,
386
+ source: existingTask.source,
387
+ context: installExtensionTaskOptions.context,
388
+ profileLocation: installExtensionTaskOptions.profileLocation,
389
+ applicationScoped: local.isApplicationScoped
390
+ });
391
+ return local;
392
+ }, error => {
393
+ installExtensionResultsMap.set(resultKey, {
394
+ error: toExtensionManagementError(error),
395
+ identifier: existingTask.identifier,
396
+ operation: existingTask.operation,
397
+ source: existingTask.source,
398
+ context: installExtensionTaskOptions.context,
399
+ profileLocation: installExtensionTaskOptions.profileLocation
400
+ });
401
+ throw error;
402
+ });
403
+ alreadyRequestedInstallations.push(waitForInstallation);
404
+ waitForInstallation.catch(() => {});
380
405
  } else {
381
406
  createInstallExtensionTask(manifest, extension, installExtensionTaskOptions, undefined);
382
407
  }
@@ -808,7 +833,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
808
833
  const extensionsControlManifest = await this.getExtensionsControlManifest();
809
834
  if (isMalicious(extension.identifier, extensionsControlManifest.malicious)) {
810
835
  throw ( new ExtensionManagementError(( localize(
811
- 1851,
836
+ 1863,
812
837
  "Can't install '{0}' extension since it was reported to be problematic.",
813
838
  extension.identifier.id
814
839
  )), ExtensionManagementErrorCode.Malicious));
@@ -828,7 +853,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
828
853
  }, CancellationToken.None))[0];
829
854
  if (!compatibleExtension) {
830
855
  throw ( new ExtensionManagementError(( localize(
831
- 1852,
856
+ 1864,
832
857
  "Can't install '{0}' extension since it was deprecated and the replacement extension '{1}' can't be found.",
833
858
  extension.identifier.id,
834
859
  deprecationInfo.extension.id
@@ -838,7 +863,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
838
863
  if ((await this.canInstall(extension)) !== true) {
839
864
  const targetPlatform = await this.getTargetPlatform();
840
865
  throw ( new ExtensionManagementError(( localize(
841
- 1848,
866
+ 1860,
842
867
  "The '{0}' extension is not available in {1} for the {2} platform.",
843
868
  extension.identifier.id,
844
869
  this.productService.nameLong,
@@ -853,7 +878,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
853
878
  incompatibleApiProposalsMessages
854
879
  )) {
855
880
  throw ( new ExtensionManagementError(( localize(
856
- 1853,
881
+ 1865,
857
882
  "Can't install '{0}' extension. {1}",
858
883
  extension.displayName ?? extension.identifier.id,
859
884
  incompatibleApiProposalsMessages[0]
@@ -861,13 +886,13 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
861
886
  }
862
887
  if (!installPreRelease && extension.hasPreReleaseVersion && extension.properties.isPreReleaseVersion && (await this.galleryService.getExtensions([extension.identifier], CancellationToken.None))[0]) {
863
888
  throw ( new ExtensionManagementError(( localize(
864
- 1854,
889
+ 1866,
865
890
  "Can't install release version of '{0}' extension because it has no release version.",
866
891
  extension.displayName ?? extension.identifier.id
867
892
  )), ExtensionManagementErrorCode.ReleaseVersionNotFound));
868
893
  }
869
894
  throw ( new ExtensionManagementError(( localize(
870
- 1855,
895
+ 1867,
871
896
  "Can't install '{0}' extension because it is not compatible with the current version of {1} (version {2}).",
872
897
  extension.identifier.id,
873
898
  this.productService.nameLong,
@@ -1187,7 +1212,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
1187
1212
  if (extensionToUninstall === dependingExtension) {
1188
1213
  if (dependents.length === 1) {
1189
1214
  return localize(
1190
- 1856,
1215
+ 1868,
1191
1216
  "Cannot uninstall '{0}' extension. '{1}' extension depends on this.",
1192
1217
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
1193
1218
  dependents[0].manifest.displayName || dependents[0].manifest.name
@@ -1195,7 +1220,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
1195
1220
  }
1196
1221
  if (dependents.length === 2) {
1197
1222
  return localize(
1198
- 1857,
1223
+ 1869,
1199
1224
  "Cannot uninstall '{0}' extension. '{1}' and '{2}' extensions depend on this.",
1200
1225
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
1201
1226
  dependents[0].manifest.displayName || dependents[0].manifest.name,
@@ -1203,7 +1228,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
1203
1228
  );
1204
1229
  }
1205
1230
  return localize(
1206
- 1858,
1231
+ 1870,
1207
1232
  "Cannot uninstall '{0}' extension. '{1}', '{2}' and other extension depend on this.",
1208
1233
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
1209
1234
  dependents[0].manifest.displayName || dependents[0].manifest.name,
@@ -1212,7 +1237,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
1212
1237
  }
1213
1238
  if (dependents.length === 1) {
1214
1239
  return localize(
1215
- 1859,
1240
+ 1871,
1216
1241
  "Cannot uninstall '{0}' extension . It includes uninstalling '{1}' extension and '{2}' extension depends on this.",
1217
1242
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
1218
1243
  dependingExtension.manifest.displayName || dependingExtension.manifest.name,
@@ -1221,7 +1246,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
1221
1246
  }
1222
1247
  if (dependents.length === 2) {
1223
1248
  return localize(
1224
- 1860,
1249
+ 1872,
1225
1250
  "Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}' and '{3}' extensions depend on this.",
1226
1251
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
1227
1252
  dependingExtension.manifest.displayName || dependingExtension.manifest.name,
@@ -1230,7 +1255,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
1230
1255
  );
1231
1256
  }
1232
1257
  return localize(
1233
- 1861,
1258
+ 1873,
1234
1259
  "Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}', '{3}' and other extensions depend on this.",
1235
1260
  extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
1236
1261
  dependingExtension.manifest.displayName || dependingExtension.manifest.name,
@@ -77,14 +77,14 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
77
77
  query: `@id:${AllowedExtensionsConfigKey}`
78
78
  }).toString());
79
79
  const extensionValue = this._allowedExtensionsConfigValue[id];
80
- const extensionReason = ( new MarkdownString(( localize(1862, "it is not in the [allowed list]({0})", settingsCommandLink))));
80
+ const extensionReason = ( new MarkdownString(( localize(1874, "it is not in the [allowed list]({0})", settingsCommandLink))));
81
81
  if (!isUndefined(extensionValue)) {
82
82
  if (isBoolean(extensionValue)) {
83
83
  return extensionValue ? true : extensionReason;
84
84
  }
85
85
  if (extensionValue === "stable" && prerelease) {
86
86
  return (new MarkdownString(localize(
87
- 1863,
87
+ 1875,
88
88
  "the pre-release versions of this extension are not in the [allowed list]({0})",
89
89
  settingsCommandLink
90
90
  )));
@@ -107,7 +107,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
107
107
  return false;
108
108
  }))) {
109
109
  return (new MarkdownString(localize(
110
- 1864,
110
+ 1876,
111
111
  "the version {0} of this extension is not in the [allowed list]({1})",
112
112
  version,
113
113
  settingsCommandLink
@@ -120,7 +120,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
120
120
  if (!isUndefined(publisherValue)) {
121
121
  if (isBoolean(publisherValue)) {
122
122
  return publisherValue ? true : ( new MarkdownString(( localize(
123
- 1865,
123
+ 1877,
124
124
  "the extensions from this publisher are not in the [allowed list]({1})",
125
125
  publisherKey,
126
126
  settingsCommandLink
@@ -128,7 +128,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
128
128
  }
129
129
  if (publisherValue === "stable" && prerelease) {
130
130
  return (new MarkdownString(localize(
131
- 1866,
131
+ 1878,
132
132
  "the pre-release versions from this publisher are not in the [allowed list]({1})",
133
133
  publisherKey,
134
134
  settingsCommandLink
@@ -20,7 +20,7 @@ import '@codingame/monaco-vscode-api/vscode/vs/nls';
20
20
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
21
21
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
22
22
  import '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry';
23
- import '@codingame/monaco-vscode-api/vscode/vs/platform/extensionRecommendations/common/extensionRecommendations';
23
+ import '../../extensionRecommendations/common/extensionRecommendations.js';
24
24
  import '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
25
25
 
26
26
  let ExtensionTipsService = class ExtensionTipsService extends Disposable {
@@ -0,0 +1,14 @@
1
+ import { IGlobalExtensionEnablementService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement.service";
2
+ import { IExtensionManagementService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement.service";
3
+ import { IExtensionGalleryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement.service";
4
+ import { IExtensionStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionStorage.service";
5
+ import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
6
+ import { IUserDataProfile } from "@codingame/monaco-vscode-api/vscode/vs/platform/userDataProfile/common/userDataProfile";
7
+ /**
8
+ * Migrates the installed unsupported nightly extension to a supported pre-release extension. It includes following:
9
+ * - Uninstall the Unsupported extension
10
+ * - Install (with optional storage migration) the Pre-release extension only if
11
+ * - the extension is not installed
12
+ * - or it is a release version and the unsupported extension is enabled.
13
+ */
14
+ export declare function migrateUnsupportedExtensions(profile: IUserDataProfile | undefined, extensionManagementService: IExtensionManagementService, galleryService: IExtensionGalleryService, extensionStorageService: IExtensionStorageService, extensionEnablementService: IGlobalExtensionEnablementService, logService: ILogService): Promise<void>;
@@ -0,0 +1,145 @@
1
+
2
+ import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
3
+ import { EXTENSION_INSTALL_SKIP_PUBLISHER_TRUST_CONTEXT, InstallOperation } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement';
4
+ import { areSameExtensions, getExtensionId } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
5
+ import { ExtensionType } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
6
+ import { semverExports } from '@codingame/monaco-vscode-api/_virtual/semver';
7
+
8
+ async function migrateUnsupportedExtensions(
9
+ profile,
10
+ extensionManagementService,
11
+ galleryService,
12
+ extensionStorageService,
13
+ extensionEnablementService,
14
+ logService
15
+ ) {
16
+ try {
17
+ const extensionsControlManifest = await extensionManagementService.getExtensionsControlManifest();
18
+ if (!extensionsControlManifest.deprecated) {
19
+ return;
20
+ }
21
+ const installed = await extensionManagementService.getInstalled(ExtensionType.User, profile?.extensionsResource);
22
+ for (const [unsupportedExtensionId, deprecated] of Object.entries(extensionsControlManifest.deprecated)) {
23
+ if (!deprecated?.extension) {
24
+ continue;
25
+ }
26
+ const {
27
+ id: preReleaseExtensionId,
28
+ autoMigrate,
29
+ preRelease
30
+ } = deprecated.extension;
31
+ if (!autoMigrate) {
32
+ continue;
33
+ }
34
+ const unsupportedExtension = installed.find(i => areSameExtensions(i.identifier, {
35
+ id: unsupportedExtensionId
36
+ }));
37
+ if (!unsupportedExtension) {
38
+ continue;
39
+ }
40
+ const gallery = (await galleryService.getExtensions([{
41
+ id: preReleaseExtensionId,
42
+ preRelease
43
+ }], {
44
+ targetPlatform: await extensionManagementService.getTargetPlatform(),
45
+ compatible: true
46
+ }, CancellationToken.None))[0];
47
+ if (!gallery) {
48
+ logService.info(
49
+ `Skipping migrating '${unsupportedExtension.identifier.id}' extension because, the comaptible target '${preReleaseExtensionId}' extension is not found`
50
+ );
51
+ continue;
52
+ }
53
+ try {
54
+ logService.info(
55
+ `Migrating '${unsupportedExtension.identifier.id}' extension to '${preReleaseExtensionId}' extension...`
56
+ );
57
+ const isUnsupportedExtensionEnabled = !( extensionEnablementService.getDisabledExtensions().some(e => areSameExtensions(e, unsupportedExtension.identifier)));
58
+ await extensionManagementService.uninstall(unsupportedExtension, {
59
+ profileLocation: profile?.extensionsResource
60
+ });
61
+ logService.info(
62
+ `Uninstalled the unsupported extension '${unsupportedExtension.identifier.id}'`
63
+ );
64
+ let preReleaseExtension = installed.find(i => areSameExtensions(i.identifier, {
65
+ id: preReleaseExtensionId
66
+ }));
67
+ if (!preReleaseExtension || (preReleaseExtension.isPreReleaseVersion !== !!preRelease && isUnsupportedExtensionEnabled)) {
68
+ preReleaseExtension = await extensionManagementService.installFromGallery(gallery, {
69
+ installPreReleaseVersion: preRelease,
70
+ isMachineScoped: unsupportedExtension.isMachineScoped,
71
+ operation: InstallOperation.Migrate,
72
+ profileLocation: profile?.extensionsResource,
73
+ context: {
74
+ [EXTENSION_INSTALL_SKIP_PUBLISHER_TRUST_CONTEXT]: true
75
+ }
76
+ });
77
+ logService.info(
78
+ `Installed the pre-release extension '${preReleaseExtension.identifier.id}'`
79
+ );
80
+ if (!autoMigrate.donotDisable && !isUnsupportedExtensionEnabled) {
81
+ await extensionEnablementService.disableExtension(preReleaseExtension.identifier);
82
+ logService.info(
83
+ `Disabled the pre-release extension '${preReleaseExtension.identifier.id}' because the unsupported extension '${unsupportedExtension.identifier.id}' is disabled`
84
+ );
85
+ }
86
+ if (autoMigrate.storage) {
87
+ extensionStorageService.addToMigrationList(getExtensionId(
88
+ unsupportedExtension.manifest.publisher,
89
+ unsupportedExtension.manifest.name
90
+ ), getExtensionId(preReleaseExtension.manifest.publisher, preReleaseExtension.manifest.name));
91
+ logService.info(`Added pre-release extension to the storage migration list`);
92
+ }
93
+ }
94
+ logService.info(
95
+ `Migrated '${unsupportedExtension.identifier.id}' extension to '${preReleaseExtensionId}' extension.`
96
+ );
97
+ } catch (error) {
98
+ logService.error(error);
99
+ }
100
+ }
101
+ if (extensionsControlManifest.autoUpdate) {
102
+ for (const [extensionId, version] of Object.entries(extensionsControlManifest.autoUpdate)) {
103
+ try {
104
+ const extensionToAutoUpdate = installed.find(i => areSameExtensions(i.identifier, {
105
+ id: extensionId
106
+ }) && semverExports.lte(i.manifest.version, version));
107
+ if (!extensionToAutoUpdate) {
108
+ continue;
109
+ }
110
+ const gallery = (await galleryService.getExtensions([{
111
+ id: extensionId,
112
+ preRelease: extensionToAutoUpdate.preRelease
113
+ }], {
114
+ targetPlatform: await extensionManagementService.getTargetPlatform(),
115
+ compatible: true
116
+ }, CancellationToken.None))[0];
117
+ if (!gallery) {
118
+ logService.info(
119
+ `Skipping updating '${extensionToAutoUpdate.identifier.id}' extension because, the compatible target '${extensionId}' extension is not found`
120
+ );
121
+ continue;
122
+ }
123
+ await extensionManagementService.installFromGallery(gallery, {
124
+ installPreReleaseVersion: extensionToAutoUpdate.preRelease,
125
+ isMachineScoped: extensionToAutoUpdate.isMachineScoped,
126
+ operation: InstallOperation.Update,
127
+ profileLocation: profile?.extensionsResource,
128
+ context: {
129
+ [EXTENSION_INSTALL_SKIP_PUBLISHER_TRUST_CONTEXT]: true
130
+ }
131
+ });
132
+ logService.info(
133
+ `Autoupdated '${extensionToAutoUpdate.identifier.id}' extension to '${gallery.version}' extension.`
134
+ );
135
+ } catch (error) {
136
+ logService.error(error);
137
+ }
138
+ }
139
+ }
140
+ } catch (error) {
141
+ logService.error(error);
142
+ }
143
+ }
144
+
145
+ export { migrateUnsupportedExtensions };
@@ -0,0 +1,19 @@
1
+ export declare enum RecommendationSource {
2
+ FILE = 1,
3
+ WORKSPACE = 2,
4
+ EXE = 3
5
+ }
6
+ export interface IExtensionRecommendations {
7
+ source: RecommendationSource;
8
+ extensions: string[];
9
+ name: string;
10
+ searchValue?: string;
11
+ }
12
+ export declare function RecommendationSourceToString(source: RecommendationSource): "file" | "workspace" | "exe";
13
+ export declare enum RecommendationsNotificationResult {
14
+ Ignored = "ignored",
15
+ Cancelled = "cancelled",
16
+ TooMany = "toomany",
17
+ IncompatibleWindow = "incompatibleWindow",
18
+ Accepted = "reacted"
19
+ }
@@ -0,0 +1,25 @@
1
+
2
+
3
+ var RecommendationSource;
4
+ (function (RecommendationSource) {
5
+ RecommendationSource[RecommendationSource["FILE"] = 1] = "FILE";
6
+ RecommendationSource[RecommendationSource["WORKSPACE"] = 2] = "WORKSPACE";
7
+ RecommendationSource[RecommendationSource["EXE"] = 3] = "EXE";
8
+ })(RecommendationSource || (RecommendationSource = {}));
9
+ function RecommendationSourceToString(source) {
10
+ switch (source) {
11
+ case RecommendationSource.FILE: return 'file';
12
+ case RecommendationSource.WORKSPACE: return 'workspace';
13
+ case RecommendationSource.EXE: return 'exe';
14
+ }
15
+ }
16
+ var RecommendationsNotificationResult;
17
+ (function (RecommendationsNotificationResult) {
18
+ RecommendationsNotificationResult["Ignored"] = "ignored";
19
+ RecommendationsNotificationResult["Cancelled"] = "cancelled";
20
+ RecommendationsNotificationResult["TooMany"] = "toomany";
21
+ RecommendationsNotificationResult["IncompatibleWindow"] = "incompatibleWindow";
22
+ RecommendationsNotificationResult["Accepted"] = "reacted";
23
+ })(RecommendationsNotificationResult || (RecommendationsNotificationResult = {}));
24
+
25
+ export { RecommendationSource, RecommendationSourceToString, RecommendationsNotificationResult };
@@ -0,0 +1,76 @@
1
+ import { Dimension } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/dom";
2
+ import { Action } from "@codingame/monaco-vscode-api/vscode/vs/base/common/actions";
3
+ import { Action2 } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions";
4
+ import { IMenuService } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.service";
5
+ import { IClipboardService } from "@codingame/monaco-vscode-api/vscode/vs/platform/clipboard/common/clipboardService.service";
6
+ import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
7
+ import { IContextMenuService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service";
8
+ import { ExtensionIdentifier, IExtensionDescription } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions";
9
+ import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
10
+ import { IInstantiationService, ServicesAccessor } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
11
+ import { ILabelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service";
12
+ import { INotificationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service";
13
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
14
+ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
15
+ import { IThemeService } from "@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service";
16
+ import { EditorPane } from "@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/editor/editorPane";
17
+ import { IEditorGroup } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService";
18
+ import { IWorkbenchEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service";
19
+ import { IExtensionFeaturesManagementService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensionManagement/common/extensionFeatures.service";
20
+ import { IExtensionHostProfile, IExtensionsStatus } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions";
21
+ import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
22
+ import { IExtension } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions";
23
+ import { IExtensionsWorkbenchService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service";
24
+ interface IExtensionProfileInformation {
25
+ /**
26
+ * segment when the extension was running.
27
+ * 2*i = segment start time
28
+ * 2*i+1 = segment end time
29
+ */
30
+ segments: number[];
31
+ /**
32
+ * total time when the extension was running.
33
+ * (sum of all segment lengths).
34
+ */
35
+ totalTime: number;
36
+ }
37
+ export interface IRuntimeExtension {
38
+ originalIndex: number;
39
+ description: IExtensionDescription;
40
+ marketplaceInfo: IExtension | undefined;
41
+ status: IExtensionsStatus;
42
+ profileInfo?: IExtensionProfileInformation;
43
+ unresponsiveProfile?: IExtensionHostProfile;
44
+ }
45
+ export declare abstract class AbstractRuntimeExtensionsEditor extends EditorPane {
46
+ private readonly contextKeyService;
47
+ private readonly _extensionsWorkbenchService;
48
+ private readonly _extensionService;
49
+ private readonly _notificationService;
50
+ private readonly _contextMenuService;
51
+ protected readonly _instantiationService: IInstantiationService;
52
+ private readonly _labelService;
53
+ private readonly _environmentService;
54
+ private readonly _clipboardService;
55
+ private readonly _extensionFeaturesManagementService;
56
+ private readonly _hoverService;
57
+ private readonly _menuService;
58
+ static readonly ID: string;
59
+ private _list;
60
+ private _elements;
61
+ private _updateSoon;
62
+ constructor(group: IEditorGroup, telemetryService: ITelemetryService, themeService: IThemeService, contextKeyService: IContextKeyService, _extensionsWorkbenchService: IExtensionsWorkbenchService, _extensionService: IExtensionService, _notificationService: INotificationService, _contextMenuService: IContextMenuService, _instantiationService: IInstantiationService, storageService: IStorageService, _labelService: ILabelService, _environmentService: IWorkbenchEnvironmentService, _clipboardService: IClipboardService, _extensionFeaturesManagementService: IExtensionFeaturesManagementService, _hoverService: IHoverService, _menuService: IMenuService);
63
+ protected _updateExtensions(): Promise<void>;
64
+ private _resolveExtensions;
65
+ protected createEditor(parent: HTMLElement): void;
66
+ layout(dimension: Dimension): void;
67
+ protected abstract _getProfileInfo(): IExtensionHostProfile | null;
68
+ protected abstract _getUnresponsiveProfile(extensionId: ExtensionIdentifier): IExtensionHostProfile | undefined;
69
+ protected abstract _createSlowExtensionAction(element: IRuntimeExtension): Action | null;
70
+ protected abstract _createReportExtensionIssueAction(element: IRuntimeExtension): Action | null;
71
+ }
72
+ export declare class ShowRuntimeExtensionsAction extends Action2 {
73
+ constructor();
74
+ run(accessor: ServicesAccessor): Promise<void>;
75
+ }
76
+ export {};