@codingame/monaco-vscode-extension-gallery-service-override 3.2.2 → 4.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 (39) hide show
  1. package/extensionGallery.js +7 -1
  2. package/override/vs/platform/dialogs/common/dialogs.js +2 -0
  3. package/package.json +9 -9
  4. package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +18 -16
  5. package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js +24 -23
  6. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.js +5 -2
  7. package/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.js +10 -0
  8. package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +33 -19
  9. package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js +1 -1
  10. package/vscode/src/vs/workbench/contrib/extensions/browser/deprecatedExtensionsChecker.js +8 -5
  11. package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js +1 -1
  12. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +109 -40
  13. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.js +11 -8
  14. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js +31 -11
  15. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js +35 -21
  16. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +54 -29
  17. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.js +6 -6
  18. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.js +11 -1
  19. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +18 -17
  20. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +71 -31
  21. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.js +63 -20
  22. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +551 -134
  23. package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js +3 -3
  24. package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.js +1 -1
  25. package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.js +1 -1
  26. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extension.css.js +1 -1
  27. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css.js +1 -1
  28. package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.js +1 -1
  29. package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js +78 -4
  31. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js +7 -1
  32. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionsProfileScannerService.js +24 -0
  33. package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +15 -8
  34. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementChannelClient.js +2 -2
  35. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.js +3 -2
  36. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.js +469 -57
  37. package/vscode/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.js +5 -2
  38. package/vscode/src/vs/workbench/services/extensionRecommendations/common/extensionIgnoredRecommendationsService.js +1 -0
  39. package/vscode/src/vs/workbench/services/extensions/browser/extensionsScannerService.js +33 -0
@@ -19,14 +19,24 @@ import { CountBadge } from 'vscode/vscode/vs/base/browser/ui/countBadge/countBad
19
19
  import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
20
20
  import { IUserDataSyncEnablementService } from 'vscode/vscode/vs/platform/userDataSync/common/userDataSync';
21
21
  import { starFullIcon, verifiedPublisherIcon, sponsorIcon, installCountIcon, starHalfIcon, starEmptyIcon, remoteIcon, ratingIcon, preReleaseIcon, syncIgnoredIcon, activationTimeIcon, errorIcon, warningIcon, infoIcon } from 'vscode/vscode/vs/workbench/contrib/extensions/browser/extensionsIcons';
22
- import { registerColor, textLinkForeground } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
22
+ import { registerColor } from 'vscode/vscode/vs/platform/theme/common/colorUtils';
23
+ import { textLinkForeground } from 'vscode/vscode/vs/platform/theme/common/colors/baseColors';
24
+ import 'vscode/vscode/vs/platform/theme/common/colors/chartsColors';
25
+ import 'vscode/vscode/vs/platform/theme/common/colors/editorColors';
26
+ import 'vscode/vscode/vs/platform/theme/common/colors/inputColors';
27
+ import 'vscode/vscode/vs/platform/theme/common/colors/listColors';
28
+ import 'vscode/vscode/vs/platform/theme/common/colors/menuColors';
29
+ import 'vscode/vscode/vs/platform/theme/common/colors/minimapColors';
30
+ import 'vscode/vscode/vs/platform/theme/common/colors/miscColors';
31
+ import 'vscode/vscode/vs/platform/theme/common/colors/quickpickColors';
32
+ import 'vscode/vscode/vs/platform/theme/common/colors/searchColors';
23
33
  import { IHoverService } from 'vscode/vscode/vs/platform/hover/browser/hover';
24
34
  import { MarkdownString } from 'vscode/vscode/vs/base/common/htmlContent';
25
35
  import { URI } from 'vscode/vscode/vs/base/common/uri';
26
36
  import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
27
37
  import { areSameExtensions } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
28
- import Severity from 'vscode/vscode/vs/base/common/severity';
29
- import { setupCustomHover } from 'vscode/vscode/vs/base/browser/ui/iconLabel/iconLabelHover';
38
+ import Severity$1 from 'vscode/vscode/vs/base/common/severity';
39
+ import { setupCustomHover } from 'vscode/vscode/vs/base/browser/ui/hover/updatableHoverWidget';
30
40
  import { Color } from 'vscode/vscode/vs/base/common/color';
31
41
  import { renderMarkdown } from 'vscode/vscode/vs/base/browser/markdownRenderer';
32
42
  import { IOpenerService } from 'vscode/vscode/vs/platform/opener/common/opener';
@@ -35,6 +45,8 @@ import { renderIcon } from 'vscode/vscode/vs/base/browser/ui/iconLabel/iconLabel
35
45
  import { StandardKeyboardEvent } from 'vscode/vscode/vs/base/browser/keyboardEvent';
36
46
  import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
37
47
  import { defaultCountBadgeStyles } from 'vscode/vscode/vs/platform/theme/browser/defaultStyles';
48
+ import { getDefaultHoverDelegate } from 'vscode/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
49
+ import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace';
38
50
 
39
51
  var ExtensionHoverWidget_1;
40
52
  class ExtensionWidget extends Disposable {
@@ -115,11 +127,11 @@ class RatingsWidget extends ExtensionWidget {
115
127
  if (this.small) {
116
128
  container.classList.add('small');
117
129
  }
130
+ this.containerHover = this._register(setupCustomHover(getDefaultHoverDelegate('mouse'), container, ''));
118
131
  this.render();
119
132
  }
120
133
  render() {
121
134
  this.container.innerText = '';
122
- this.container.title = '';
123
135
  if (!this.extension) {
124
136
  return;
125
137
  }
@@ -133,12 +145,12 @@ class RatingsWidget extends ExtensionWidget {
133
145
  return;
134
146
  }
135
147
  const rating = Math.round(this.extension.rating * 2) / 2;
136
- this.container.title = ( localizeWithPath(
148
+ this.containerHover.update(( localizeWithPath(
137
149
  'vs/workbench/contrib/extensions/browser/extensionsWidgets',
138
150
  'ratedLabel',
139
151
  "Average rating: {0} out of 5",
140
152
  rating
141
- ));
153
+ )));
142
154
  if (this.small) {
143
155
  append(this.container, $('span' + ThemeIcon.asCSSSelector(starFullIcon)));
144
156
  const count = append(this.container, $('span.count'));
@@ -170,6 +182,7 @@ let VerifiedPublisherWidget = class VerifiedPublisherWidget extends ExtensionWid
170
182
  this.small = small;
171
183
  this.openerService = openerService;
172
184
  this.disposables = this._register(( new DisposableStore()));
185
+ this.containerHover = this._register(setupCustomHover(getDefaultHoverDelegate('mouse'), container, ''));
173
186
  this.render();
174
187
  }
175
188
  render() {
@@ -178,12 +191,18 @@ let VerifiedPublisherWidget = class VerifiedPublisherWidget extends ExtensionWid
178
191
  if (!this.extension?.publisherDomain?.verified) {
179
192
  return;
180
193
  }
194
+ if (this.extension.resourceExtension) {
195
+ return;
196
+ }
197
+ if (this.extension.local?.source === 'resource') {
198
+ return;
199
+ }
181
200
  const publisherDomainLink = ( URI.parse(this.extension.publisherDomain.link));
182
201
  const verifiedPublisher = append(this.container, $('span.extension-verified-publisher.clickable'));
183
202
  append(verifiedPublisher, renderIcon(verifiedPublisherIcon));
184
203
  if (!this.small) {
185
204
  verifiedPublisher.tabIndex = 0;
186
- verifiedPublisher.title = `Verified Domain: ${this.extension.publisherDomain.link}`;
205
+ this.containerHover.update(`Verified Domain: ${this.extension.publisherDomain.link}`);
187
206
  verifiedPublisher.setAttribute('role', 'link');
188
207
  append(verifiedPublisher, $('span.extension-verified-publisher-domain', undefined, publisherDomainLink.authority.startsWith('www.') ? publisherDomainLink.authority.substring(4) : publisherDomainLink.authority));
189
208
  this.disposables.add(onClick(verifiedPublisher, () => this.openerService.open(publisherDomainLink)));
@@ -208,7 +227,8 @@ let SponsorWidget = class SponsorWidget extends ExtensionWidget {
208
227
  if (!this.extension?.publisherSponsorLink) {
209
228
  return;
210
229
  }
211
- const sponsor = append(this.container, $('span.sponsor.clickable', { tabIndex: 0, title: this.extension?.publisherSponsorLink }));
230
+ const sponsor = append(this.container, $('span.sponsor.clickable', { tabIndex: 0 }));
231
+ this.disposables.add(setupCustomHover(getDefaultHoverDelegate('mouse'), sponsor, this.extension?.publisherSponsorLink.toString() ?? ''));
212
232
  sponsor.setAttribute('role', 'link');
213
233
  const sponsorIconElement = renderIcon(sponsorIcon);
214
234
  const label = $('span', undefined, ( localizeWithPath(
@@ -322,6 +342,7 @@ let RemoteBadge = class RemoteBadge extends Disposable {
322
342
  this.themeService = themeService;
323
343
  this.extensionManagementServerService = extensionManagementServerService;
324
344
  this.element = $('div.extension-badge.extension-remote-badge');
345
+ this.elementHover = this._register(setupCustomHover(getDefaultHoverDelegate('mouse'), this.element, ''));
325
346
  this.render();
326
347
  }
327
348
  render() {
@@ -340,12 +361,12 @@ let RemoteBadge = class RemoteBadge extends Disposable {
340
361
  if (this.tooltip) {
341
362
  const updateTitle = () => {
342
363
  if (this.element && this.extensionManagementServerService.remoteExtensionManagementServer) {
343
- this.element.title = ( localizeWithPath(
364
+ this.elementHover.update(( localizeWithPath(
344
365
  'vs/workbench/contrib/extensions/browser/extensionsWidgets',
345
366
  'remote extension title',
346
367
  "Extension in {0}",
347
368
  this.extensionManagementServerService.remoteExtensionManagementServer.label
348
- ));
369
+ )));
349
370
  }
350
371
  };
351
372
  this._register(this.labelService.onDidChangeFormatters(() => updateTitle()));
@@ -385,19 +406,21 @@ let SyncIgnoredWidget = class SyncIgnoredWidget extends ExtensionWidget {
385
406
  this.configurationService = configurationService;
386
407
  this.extensionsWorkbenchService = extensionsWorkbenchService;
387
408
  this.userDataSyncEnablementService = userDataSyncEnablementService;
409
+ this.disposables = this._register(( new DisposableStore()));
388
410
  this._register(Event.filter(this.configurationService.onDidChangeConfiguration, e => e.affectsConfiguration('settingsSync.ignoredExtensions'))(() => this.render()));
389
411
  this._register(userDataSyncEnablementService.onDidChangeEnablement(() => this.update()));
390
412
  this.render();
391
413
  }
392
414
  render() {
415
+ this.disposables.clear();
393
416
  this.container.innerText = '';
394
417
  if (this.extension && this.extension.state === 1 && this.userDataSyncEnablementService.isEnabled() && this.extensionsWorkbenchService.isExtensionIgnoredToSync(this.extension)) {
395
418
  const element = append(this.container, $('span.extension-sync-ignored' + ThemeIcon.asCSSSelector(syncIgnoredIcon)));
396
- element.title = ( localizeWithPath(
419
+ this.disposables.add(setupCustomHover(getDefaultHoverDelegate('mouse'), element, ( localizeWithPath(
397
420
  'vs/workbench/contrib/extensions/browser/extensionsWidgets',
398
421
  'syncingore.label',
399
422
  "This extension is ignored during sync."
400
- ));
423
+ ))));
401
424
  element.classList.add(...ThemeIcon.asClassNameArray(syncIgnoredIcon));
402
425
  }
403
426
  }
@@ -453,7 +476,7 @@ ExtensionActivationStatusWidget = ( __decorate([
453
476
  ( __param(3, IExtensionsWorkbenchService))
454
477
  ], ExtensionActivationStatusWidget));
455
478
  let ExtensionHoverWidget = ExtensionHoverWidget_1 = class ExtensionHoverWidget extends ExtensionWidget {
456
- constructor(options, extensionStatusAction, extensionsWorkbenchService, hoverService, configurationService, extensionRecommendationsService, themeService) {
479
+ constructor(options, extensionStatusAction, extensionsWorkbenchService, hoverService, configurationService, extensionRecommendationsService, themeService, contextService) {
457
480
  super();
458
481
  this.options = options;
459
482
  this.extensionStatusAction = extensionStatusAction;
@@ -462,6 +485,7 @@ let ExtensionHoverWidget = ExtensionHoverWidget_1 = class ExtensionHoverWidget e
462
485
  this.configurationService = configurationService;
463
486
  this.extensionRecommendationsService = extensionRecommendationsService;
464
487
  this.themeService = themeService;
488
+ this.contextService = contextService;
465
489
  this.hover = this._register(( new MutableDisposable()));
466
490
  }
467
491
  render() {
@@ -526,6 +550,24 @@ let ExtensionHoverWidget = ExtensionHoverWidget_1 = class ExtensionHoverWidget e
526
550
  markdown.appendText(`\n`);
527
551
  }
528
552
  }
553
+ const location = this.extension.resourceExtension?.location ?? (this.extension.local?.source === 'resource' ? this.extension.local?.location : undefined);
554
+ if (location) {
555
+ if (this.extension.isWorkspaceScoped && this.contextService.isInsideWorkspace(location)) {
556
+ markdown.appendMarkdown(( localizeWithPath(
557
+ 'vs/workbench/contrib/extensions/browser/extensionsWidgets',
558
+ 'workspace extension',
559
+ "Workspace Extension"
560
+ )));
561
+ }
562
+ else {
563
+ markdown.appendMarkdown(( localizeWithPath(
564
+ 'vs/workbench/contrib/extensions/browser/extensionsWidgets',
565
+ 'local extension',
566
+ "Local Extension"
567
+ )));
568
+ }
569
+ markdown.appendText(`\n`);
570
+ }
529
571
  if (this.extension.description) {
530
572
  markdown.appendMarkdown(`${this.extension.description}`);
531
573
  markdown.appendText(`\n`);
@@ -553,9 +595,9 @@ let ExtensionHoverWidget = ExtensionHoverWidget_1 = class ExtensionHoverWidget e
553
595
  const preReleaseMessage = ExtensionHoverWidget_1.getPreReleaseMessage(this.extension);
554
596
  const extensionRuntimeStatus = this.extensionsWorkbenchService.getExtensionStatus(this.extension);
555
597
  const extensionStatus = this.extensionStatusAction.status;
556
- const reloadRequiredMessage = this.extension.reloadRequiredStatus;
598
+ const runtimeState = this.extension.runtimeState;
557
599
  const recommendationMessage = this.getRecommendationMessage(this.extension);
558
- if (extensionRuntimeStatus || extensionStatus || reloadRequiredMessage || recommendationMessage || preReleaseMessage) {
600
+ if (extensionRuntimeStatus || extensionStatus || runtimeState || recommendationMessage || preReleaseMessage) {
559
601
  markdown.appendMarkdown(`---`);
560
602
  markdown.appendText(`\n`);
561
603
  if (extensionRuntimeStatus) {
@@ -573,8 +615,8 @@ let ExtensionHoverWidget = ExtensionHoverWidget_1 = class ExtensionHoverWidget e
573
615
  markdown.appendText(`\n`);
574
616
  }
575
617
  if (extensionRuntimeStatus.runtimeErrors.length || extensionRuntimeStatus.messages.length) {
576
- const hasErrors = extensionRuntimeStatus.runtimeErrors.length || ( extensionRuntimeStatus.messages.some(message => message.type === Severity.Error));
577
- const hasWarnings = ( extensionRuntimeStatus.messages.some(message => message.type === Severity.Warning));
618
+ const hasErrors = extensionRuntimeStatus.runtimeErrors.length || ( extensionRuntimeStatus.messages.some(message => message.type === Severity$1.Error));
619
+ const hasWarnings = ( extensionRuntimeStatus.messages.some(message => message.type === Severity$1.Warning));
578
620
  const errorsLink = extensionRuntimeStatus.runtimeErrors.length ? `[${extensionRuntimeStatus.runtimeErrors.length === 1 ? ( localizeWithPath(
579
621
  'vs/workbench/contrib/extensions/browser/extensionsWidgets',
580
622
  'uncaught error',
@@ -625,9 +667,9 @@ let ExtensionHoverWidget = ExtensionHoverWidget_1 = class ExtensionHoverWidget e
625
667
  }
626
668
  markdown.appendText(`\n`);
627
669
  }
628
- if (reloadRequiredMessage) {
670
+ if (runtimeState) {
629
671
  markdown.appendMarkdown(`$(${infoIcon.id}) `);
630
- markdown.appendMarkdown(`${reloadRequiredMessage}`);
672
+ markdown.appendMarkdown(`${runtimeState.reason}`);
631
673
  markdown.appendText(`\n`);
632
674
  }
633
675
  if (preReleaseMessage) {
@@ -689,7 +731,8 @@ ExtensionHoverWidget = ExtensionHoverWidget_1 = ( __decorate([
689
731
  ( __param(3, IHoverService)),
690
732
  ( __param(4, IConfigurationService)),
691
733
  ( __param(5, IExtensionRecommendationsService)),
692
- ( __param(6, IThemeService))
734
+ ( __param(6, IThemeService)),
735
+ ( __param(7, IWorkspaceContextService))
693
736
  ], ExtensionHoverWidget));
694
737
  let ExtensionStatusWidget = class ExtensionStatusWidget extends ExtensionWidget {
695
738
  constructor(container, extensionStatusAction, openerService) {