@codingame/monaco-vscode-extension-gallery-service-override 1.83.9

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 (66) hide show
  1. package/extensionGallery.d.ts +12 -0
  2. package/extensionGallery.js +76 -0
  3. package/external/rollup-plugin-styles/dist/runtime/inject-css.js +3 -0
  4. package/external/tslib/tslib.es6.js +11 -0
  5. package/index.d.ts +1 -0
  6. package/index.js +1 -0
  7. package/override/vs/platform/dialogs/common/dialogs.js +8 -0
  8. package/package.json +30 -0
  9. package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +784 -0
  10. package/vscode/src/vs/platform/extensionManagement/common/extensionEnablementService.js +142 -0
  11. package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js +855 -0
  12. package/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.js +119 -0
  13. package/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.js +57 -0
  14. package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.js +58 -0
  15. package/vscode/src/vs/platform/externalServices/common/marketplace.js +17 -0
  16. package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +492 -0
  17. package/vscode/src/vs/workbench/contrib/extensions/browser/browserRuntimeExtensionsEditor.js +28 -0
  18. package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js +78 -0
  19. package/vscode/src/vs/workbench/contrib/extensions/browser/deprecatedExtensionsChecker.js +87 -0
  20. package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js +60 -0
  21. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +1868 -0
  22. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.js +52 -0
  23. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js +437 -0
  24. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.js +17 -0
  25. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js +221 -0
  26. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +2063 -0
  27. package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js +13 -0
  28. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js +46 -0
  29. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.js +65 -0
  30. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js +98 -0
  31. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.js +224 -0
  32. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js +121 -0
  33. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.js +285 -0
  34. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +912 -0
  35. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +1270 -0
  36. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.js +824 -0
  37. package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +1730 -0
  38. package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js +324 -0
  39. package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.js +28 -0
  40. package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.js +28 -0
  41. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extension.css.js +6 -0
  42. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css.js +6 -0
  43. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css.js +6 -0
  44. package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsWidgets.css.js +6 -0
  45. package/vscode/src/vs/workbench/contrib/extensions/browser/media/runtimeExtensionsEditor.css.js +6 -0
  46. package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.js +29 -0
  47. package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.js +26 -0
  48. package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.js +38 -0
  49. package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js +88 -0
  50. package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.js +67 -0
  51. package/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.js +43 -0
  52. package/vscode/src/vs/workbench/contrib/extensions/common/extensionsUtils.js +104 -0
  53. package/vscode/src/vs/workbench/contrib/extensions/common/reportExtensionIssueAction.js +31 -0
  54. package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.js +41 -0
  55. package/vscode/src/vs/workbench/contrib/markdown/browser/markdownDocumentRenderer.js +207 -0
  56. package/vscode/src/vs/workbench/contrib/update/common/update.js +3 -0
  57. package/vscode/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.js +84 -0
  58. package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js +634 -0
  59. package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +883 -0
  60. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementChannelClient.js +109 -0
  61. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.js +62 -0
  62. package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.js +633 -0
  63. package/vscode/src/vs/workbench/services/extensionManagement/common/remoteExtensionManagementService.js +58 -0
  64. package/vscode/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.js +269 -0
  65. package/vscode/src/vs/workbench/services/extensionRecommendations/common/extensionIgnoredRecommendationsService.js +83 -0
  66. package/vscode/src/vs/workbench/services/remote/common/remoteExtensionsScanner.js +73 -0
@@ -0,0 +1,13 @@
1
+ import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
2
+ import { Registry } from 'monaco-editor/esm/vs/platform/registry/common/platform.js';
3
+ import { SyncDescriptor } from 'monaco-editor/esm/vs/platform/instantiation/common/descriptors.js';
4
+ import { EditorPaneDescriptor } from 'vscode/vscode/vs/workbench/browser/editor';
5
+ import { RuntimeExtensionsEditor } from './browserRuntimeExtensionsEditor.js';
6
+ import { RuntimeExtensionsInput } from '../common/runtimeExtensionsInput.js';
7
+ import { EditorExtensions } from 'vscode/vscode/vs/workbench/common/editor';
8
+
9
+ ( Registry.as(EditorExtensions.EditorPane)).registerEditorPane(EditorPaneDescriptor.create(RuntimeExtensionsEditor, RuntimeExtensionsEditor.ID, ( localizeWithPath(
10
+ 'vs/workbench/contrib/extensions/browser/extensions.web.contribution',
11
+ 'runtimeExtension',
12
+ "Running Extensions"
13
+ ))), [( new SyncDescriptor(RuntimeExtensionsInput))]);
@@ -0,0 +1,46 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
3
+ import { IProgressService } from 'monaco-editor/esm/vs/platform/progress/common/progress.js';
4
+ import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
5
+ import { DeferredPromise, timeout } from 'monaco-editor/esm/vs/base/common/async.js';
6
+ import { ILogService } from 'monaco-editor/esm/vs/platform/log/common/log.js';
7
+ import { CancellationToken } from 'monaco-editor/esm/vs/base/common/cancellation.js';
8
+
9
+ let ExtensionActivationProgress = class ExtensionActivationProgress {
10
+ constructor(extensionService, progressService, logService) {
11
+ const options = {
12
+ location: 10 ,
13
+ title: ( localizeWithPath(
14
+ 'vs/workbench/contrib/extensions/browser/extensionsActivationProgress',
15
+ 'activation',
16
+ "Activating Extensions..."
17
+ ))
18
+ };
19
+ let deferred;
20
+ let count = 0;
21
+ this._listener = extensionService.onWillActivateByEvent(e => {
22
+ logService.trace('onWillActivateByEvent: ', e.event);
23
+ if (!deferred) {
24
+ deferred = ( new DeferredPromise());
25
+ progressService.withProgress(options, _ => deferred.p);
26
+ }
27
+ count++;
28
+ Promise.race([e.activation, timeout(5000, CancellationToken.None)]).finally(() => {
29
+ if (--count === 0) {
30
+ deferred.complete(undefined);
31
+ deferred = undefined;
32
+ }
33
+ });
34
+ });
35
+ }
36
+ dispose() {
37
+ this._listener.dispose();
38
+ }
39
+ };
40
+ ExtensionActivationProgress = ( __decorate([
41
+ ( __param(0, IExtensionService)),
42
+ ( __param(1, IProgressService)),
43
+ ( __param(2, ILogService))
44
+ ], ExtensionActivationProgress));
45
+
46
+ export { ExtensionActivationProgress };
@@ -0,0 +1,65 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
3
+ import { getLocation, parse } from 'monaco-editor/esm/vs/base/common/json.js';
4
+ import { Disposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
5
+ import { IExtensionManagementService } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
6
+ import { Range } from 'monaco-editor/esm/vs/editor/common/core/range.js';
7
+ import { ILanguageFeaturesService } from 'monaco-editor/esm/vs/editor/common/services/languageFeatures.js';
8
+
9
+ let ExtensionsCompletionItemsProvider = class ExtensionsCompletionItemsProvider extends Disposable {
10
+ constructor(extensionManagementService, languageFeaturesService) {
11
+ super();
12
+ this.extensionManagementService = extensionManagementService;
13
+ this._register(languageFeaturesService.completionProvider.register({ language: 'jsonc', pattern: '**/settings.json' }, {
14
+ _debugDisplayName: 'extensionsCompletionProvider',
15
+ provideCompletionItems: async (model, position, _context, token) => {
16
+ const getWordRangeAtPosition = (model, position) => {
17
+ const wordAtPosition = model.getWordAtPosition(position);
18
+ return wordAtPosition ? ( new Range(
19
+ position.lineNumber,
20
+ wordAtPosition.startColumn,
21
+ position.lineNumber,
22
+ wordAtPosition.endColumn
23
+ )) : null;
24
+ };
25
+ const location = getLocation(model.getValue(), model.getOffsetAt(position));
26
+ const range = getWordRangeAtPosition(model, position) ?? Range.fromPositions(position, position);
27
+ if (location.path[0] === 'extensions.supportUntrustedWorkspaces' && location.path.length === 2 && location.isAtPropertyKey) {
28
+ let alreadyConfigured = [];
29
+ try {
30
+ alreadyConfigured = ( Object.keys(parse(model.getValue())['extensions.supportUntrustedWorkspaces']));
31
+ }
32
+ catch (e) { }
33
+ return { suggestions: await this.provideSupportUntrustedWorkspacesExtensionProposals(alreadyConfigured, range) };
34
+ }
35
+ return { suggestions: [] };
36
+ }
37
+ }));
38
+ }
39
+ async provideSupportUntrustedWorkspacesExtensionProposals(alreadyConfigured, range) {
40
+ const suggestions = [];
41
+ const installedExtensions = (await this.extensionManagementService.getInstalled()).filter(e => e.manifest.main);
42
+ const proposedExtensions = installedExtensions.filter(e => alreadyConfigured.indexOf(e.identifier.id) === -1);
43
+ if (proposedExtensions.length) {
44
+ suggestions.push(...( proposedExtensions.map(e => {
45
+ const text = `"${e.identifier.id}": {\n\t"supported": true,\n\t"version": "${e.manifest.version}"\n},`;
46
+ return { label: e.identifier.id, kind: 13 , insertText: text, filterText: text, range };
47
+ })));
48
+ }
49
+ else {
50
+ const text = '"vscode.csharp": {\n\t"supported": true,\n\t"version": "0.0.0"\n},';
51
+ suggestions.push({ label: ( localizeWithPath(
52
+ 'vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider',
53
+ 'exampleExtension',
54
+ "Example"
55
+ )), kind: 13 , insertText: text, filterText: text, range });
56
+ }
57
+ return suggestions;
58
+ }
59
+ };
60
+ ExtensionsCompletionItemsProvider = ( __decorate([
61
+ ( __param(0, IExtensionManagementService)),
62
+ ( __param(1, ILanguageFeaturesService))
63
+ ], ExtensionsCompletionItemsProvider));
64
+
65
+ export { ExtensionsCompletionItemsProvider };
@@ -0,0 +1,98 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { IExtensionsWorkbenchService } from 'vscode/vscode/vs/workbench/contrib/extensions/common/extensions';
3
+ import { IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
4
+ import { CommandsRegistry } from 'monaco-editor/esm/vs/platform/commands/common/commands.js';
5
+ import { MenuRegistry, MenuId } from 'monaco-editor/esm/vs/platform/actions/common/actions.js';
6
+ import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
7
+ import { areSameExtensions } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
8
+ import { Severity, INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
9
+ import { Action } from 'monaco-editor/esm/vs/base/common/actions.js';
10
+ import { IHostService } from 'vscode/vscode/vs/workbench/services/host/browser/host';
11
+ import { Disposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
12
+ import { CancellationToken } from 'monaco-editor/esm/vs/base/common/cancellation.js';
13
+ import { Promises } from 'monaco-editor/esm/vs/base/common/async.js';
14
+
15
+ let ExtensionDependencyChecker = class ExtensionDependencyChecker extends Disposable {
16
+ constructor(extensionService, extensionsWorkbenchService, notificationService, hostService) {
17
+ super();
18
+ this.extensionService = extensionService;
19
+ this.extensionsWorkbenchService = extensionsWorkbenchService;
20
+ this.notificationService = notificationService;
21
+ this.hostService = hostService;
22
+ CommandsRegistry.registerCommand('workbench.extensions.installMissingDependencies', () => this.installMissingDependencies());
23
+ MenuRegistry.appendMenuItem(MenuId.CommandPalette, {
24
+ command: {
25
+ id: 'workbench.extensions.installMissingDependencies',
26
+ category: ( localizeWithPath(
27
+ 'vs/workbench/contrib/extensions/browser/extensionsDependencyChecker',
28
+ 'extensions',
29
+ "Extensions"
30
+ )),
31
+ title: ( localizeWithPath(
32
+ 'vs/workbench/contrib/extensions/browser/extensionsDependencyChecker',
33
+ 'auto install missing deps',
34
+ "Install Missing Dependencies"
35
+ ))
36
+ }
37
+ });
38
+ }
39
+ async getUninstalledMissingDependencies() {
40
+ const allMissingDependencies = await this.getAllMissingDependencies();
41
+ const localExtensions = await this.extensionsWorkbenchService.queryLocal();
42
+ return allMissingDependencies.filter(id => localExtensions.every(l => !areSameExtensions(l.identifier, { id })));
43
+ }
44
+ async getAllMissingDependencies() {
45
+ await this.extensionService.whenInstalledExtensionsRegistered();
46
+ const runningExtensionsIds = this.extensionService.extensions.reduce((result, r) => { result.add(r.identifier.value.toLowerCase()); return result; }, ( new Set()));
47
+ const missingDependencies = ( new Set());
48
+ for (const extension of this.extensionService.extensions) {
49
+ if (extension.extensionDependencies) {
50
+ extension.extensionDependencies.forEach(dep => {
51
+ if (!( runningExtensionsIds.has(dep.toLowerCase()))) {
52
+ missingDependencies.add(dep);
53
+ }
54
+ });
55
+ }
56
+ }
57
+ return [...( missingDependencies.values())];
58
+ }
59
+ async installMissingDependencies() {
60
+ const missingDependencies = await this.getUninstalledMissingDependencies();
61
+ if (missingDependencies.length) {
62
+ const extensions = await this.extensionsWorkbenchService.getExtensions(( missingDependencies.map(id => ({ id }))), CancellationToken.None);
63
+ if (extensions.length) {
64
+ await Promises.settled(( extensions.map(extension => this.extensionsWorkbenchService.install(extension))));
65
+ this.notificationService.notify({
66
+ severity: Severity.Info,
67
+ message: ( localizeWithPath(
68
+ 'vs/workbench/contrib/extensions/browser/extensionsDependencyChecker',
69
+ 'finished installing missing deps',
70
+ "Finished installing missing dependencies. Please reload the window now."
71
+ )),
72
+ actions: {
73
+ primary: [( new Action('realod', ( localizeWithPath(
74
+ 'vs/workbench/contrib/extensions/browser/extensionsDependencyChecker',
75
+ 'reload',
76
+ "Reload Window"
77
+ )), '', true, () => this.hostService.reload()))]
78
+ }
79
+ });
80
+ }
81
+ }
82
+ else {
83
+ this.notificationService.info(( localizeWithPath(
84
+ 'vs/workbench/contrib/extensions/browser/extensionsDependencyChecker',
85
+ 'no missing deps',
86
+ "There are no missing dependencies to install."
87
+ )));
88
+ }
89
+ }
90
+ };
91
+ ExtensionDependencyChecker = ( __decorate([
92
+ ( __param(0, IExtensionService)),
93
+ ( __param(1, IExtensionsWorkbenchService)),
94
+ ( __param(2, INotificationService)),
95
+ ( __param(3, IHostService))
96
+ ], ExtensionDependencyChecker));
97
+
98
+ export { ExtensionDependencyChecker };
@@ -0,0 +1,224 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import './media/extension.css.js';
3
+ import { append, $, addDisposableListener } from 'monaco-editor/esm/vs/base/browser/dom.js';
4
+ import { combinedDisposable, dispose } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
5
+ import { ActionBar } from 'monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js';
6
+ import { IInstantiationService } from 'monaco-editor/esm/vs/platform/instantiation/common/instantiation.js';
7
+ import { Event } from 'monaco-editor/esm/vs/base/common/event.js';
8
+ import { ExtensionContainers, IExtensionsWorkbenchService } from 'vscode/vscode/vs/workbench/contrib/extensions/common/extensions';
9
+ import { ActionWithDropDownAction, ExtensionActionWithDropdownActionViewItem, ExtensionDropDownAction, ExtensionStatusAction, ExtensionStatusLabelAction, MigrateDeprecatedExtensionAction, ReloadAction, UpdateAction, SkipUpdateAction, InstallDropdownAction, InstallingLabelAction, SetLanguageAction, ClearLanguageAction, RemoteInstallAction, LocalInstallAction, WebInstallAction, SwitchToReleasedVersionAction, SwitchToPreReleaseVersionAction, ManageExtensionAction } from 'vscode/vscode/vs/workbench/contrib/extensions/browser/extensionsActions';
10
+ import { areSameExtensions } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
11
+ import { extensionVerifiedPublisherIconColor, RecommendationWidget, PreReleaseBookmarkWidget, RemoteBadgeWidget, ExtensionPackCountWidget, VerifiedPublisherWidget, ExtensionHoverWidget, SyncIgnoredWidget, ExtensionActivationStatusWidget, InstallCountWidget, RatingsWidget } from './extensionsWidgets.js';
12
+ import { IExtensionService, toExtension } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
13
+ import { IExtensionManagementServerService } from 'vscode/vscode/vs/workbench/services/extensionManagement/common/extensionManagement';
14
+ import { INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
15
+ import { isLanguagePackExtension } from 'monaco-editor/esm/vs/platform/extensions/common/extensions.js';
16
+ import { registerThemingParticipant } from 'monaco-editor/esm/vs/platform/theme/common/themeService.js';
17
+ import { ThemeIcon } from 'monaco-editor/esm/vs/base/common/themables.js';
18
+ import { WORKBENCH_BACKGROUND } from 'vscode/vscode/vs/workbench/common/theme';
19
+ import { IContextMenuService } from 'monaco-editor/esm/vs/platform/contextview/browser/contextView.js';
20
+ import { verifiedPublisherIcon } from 'vscode/vscode/vs/workbench/contrib/extensions/browser/extensionsIcons';
21
+
22
+ const EXTENSION_LIST_ELEMENT_HEIGHT = 72;
23
+ class Delegate {
24
+ getHeight() { return EXTENSION_LIST_ELEMENT_HEIGHT; }
25
+ getTemplateId() { return 'extension'; }
26
+ }
27
+ let Renderer = class Renderer {
28
+ constructor(extensionViewState, options, instantiationService, notificationService, extensionService, extensionManagementServerService, extensionsWorkbenchService, contextMenuService) {
29
+ this.extensionViewState = extensionViewState;
30
+ this.options = options;
31
+ this.instantiationService = instantiationService;
32
+ this.notificationService = notificationService;
33
+ this.extensionService = extensionService;
34
+ this.extensionManagementServerService = extensionManagementServerService;
35
+ this.extensionsWorkbenchService = extensionsWorkbenchService;
36
+ this.contextMenuService = contextMenuService;
37
+ }
38
+ get templateId() { return 'extension'; }
39
+ renderTemplate(root) {
40
+ const recommendationWidget = this.instantiationService.createInstance(RecommendationWidget, append(root, $('.extension-bookmark-container')));
41
+ const preReleaseWidget = this.instantiationService.createInstance(PreReleaseBookmarkWidget, append(root, $('.extension-bookmark-container')));
42
+ const element = append(root, $('.extension-list-item'));
43
+ const iconContainer = append(element, $('.icon-container'));
44
+ const icon = append(iconContainer, $('img.icon', { alt: '' }));
45
+ const iconRemoteBadgeWidget = this.instantiationService.createInstance(RemoteBadgeWidget, iconContainer, false);
46
+ const extensionPackBadgeWidget = this.instantiationService.createInstance(ExtensionPackCountWidget, iconContainer);
47
+ const details = append(element, $('.details'));
48
+ const headerContainer = append(details, $('.header-container'));
49
+ const header = append(headerContainer, $('.header'));
50
+ const name = append(header, $('span.name'));
51
+ const installCount = append(header, $('span.install-count'));
52
+ const ratings = append(header, $('span.ratings'));
53
+ const syncIgnore = append(header, $('span.sync-ignored'));
54
+ const activationStatus = append(header, $('span.activation-status'));
55
+ const headerRemoteBadgeWidget = this.instantiationService.createInstance(RemoteBadgeWidget, header, false);
56
+ const description = append(details, $('.description.ellipsis'));
57
+ const footer = append(details, $('.footer'));
58
+ const publisher = append(footer, $('.author.ellipsis'));
59
+ const verifiedPublisherWidget = this.instantiationService.createInstance(VerifiedPublisherWidget, append(publisher, $(`.verified-publisher`)), true);
60
+ const publisherDisplayName = append(publisher, $('.publisher-name.ellipsis'));
61
+ const actionbar = ( new ActionBar(footer, {
62
+ animated: false,
63
+ actionViewItemProvider: (action) => {
64
+ if (action instanceof ActionWithDropDownAction) {
65
+ return ( new ExtensionActionWithDropdownActionViewItem(
66
+ action,
67
+ { icon: true, label: true, menuActionsOrProvider: { getActions: () => action.menuActions }, menuActionClassNames: (action.class || '').split(' ') },
68
+ this.contextMenuService
69
+ ));
70
+ }
71
+ if (action instanceof ExtensionDropDownAction) {
72
+ return action.createActionViewItem();
73
+ }
74
+ return undefined;
75
+ },
76
+ focusOnlyEnabledItems: true
77
+ }));
78
+ actionbar.setFocusable(false);
79
+ actionbar.onDidRun(({ error }) => error && this.notificationService.error(error));
80
+ const extensionStatusIconAction = this.instantiationService.createInstance(ExtensionStatusAction);
81
+ const actions = [
82
+ this.instantiationService.createInstance(ExtensionStatusLabelAction),
83
+ this.instantiationService.createInstance(MigrateDeprecatedExtensionAction, true),
84
+ this.instantiationService.createInstance(ReloadAction),
85
+ this.instantiationService.createInstance(ActionWithDropDownAction, 'extensions.updateActions', '', [[this.instantiationService.createInstance(UpdateAction, false)], [this.instantiationService.createInstance(SkipUpdateAction)]]),
86
+ this.instantiationService.createInstance(InstallDropdownAction),
87
+ this.instantiationService.createInstance(InstallingLabelAction),
88
+ this.instantiationService.createInstance(SetLanguageAction),
89
+ this.instantiationService.createInstance(ClearLanguageAction),
90
+ this.instantiationService.createInstance(RemoteInstallAction, false),
91
+ this.instantiationService.createInstance(LocalInstallAction),
92
+ this.instantiationService.createInstance(WebInstallAction),
93
+ extensionStatusIconAction,
94
+ this.instantiationService.createInstance(SwitchToReleasedVersionAction, true),
95
+ this.instantiationService.createInstance(SwitchToPreReleaseVersionAction, true),
96
+ this.instantiationService.createInstance(ManageExtensionAction)
97
+ ];
98
+ const extensionHoverWidget = this.instantiationService.createInstance(ExtensionHoverWidget, { target: root, position: this.options.hoverOptions.position }, extensionStatusIconAction);
99
+ const widgets = [
100
+ recommendationWidget,
101
+ preReleaseWidget,
102
+ iconRemoteBadgeWidget,
103
+ extensionPackBadgeWidget,
104
+ headerRemoteBadgeWidget,
105
+ verifiedPublisherWidget,
106
+ extensionHoverWidget,
107
+ this.instantiationService.createInstance(SyncIgnoredWidget, syncIgnore),
108
+ this.instantiationService.createInstance(ExtensionActivationStatusWidget, activationStatus, true),
109
+ this.instantiationService.createInstance(InstallCountWidget, installCount, true),
110
+ this.instantiationService.createInstance(RatingsWidget, ratings, true),
111
+ ];
112
+ const extensionContainers = this.instantiationService.createInstance(ExtensionContainers, [...actions, ...widgets]);
113
+ actionbar.push(actions, { icon: true, label: true });
114
+ const disposable = combinedDisposable(...actions, ...widgets, actionbar, extensionContainers);
115
+ return {
116
+ root, element, icon, name, installCount, ratings, description, publisherDisplayName, disposables: [disposable], actionbar,
117
+ extensionDisposables: [],
118
+ set extension(extension) {
119
+ extensionContainers.extension = extension;
120
+ }
121
+ };
122
+ }
123
+ renderPlaceholder(index, data) {
124
+ data.element.classList.add('loading');
125
+ data.root.removeAttribute('aria-label');
126
+ data.root.removeAttribute('data-extension-id');
127
+ data.extensionDisposables = dispose(data.extensionDisposables);
128
+ data.icon.src = '';
129
+ data.name.textContent = '';
130
+ data.description.textContent = '';
131
+ data.publisherDisplayName.textContent = '';
132
+ data.installCount.style.display = 'none';
133
+ data.ratings.style.display = 'none';
134
+ data.extension = null;
135
+ }
136
+ renderElement(extension, index, data) {
137
+ data.element.classList.remove('loading');
138
+ data.root.setAttribute('data-extension-id', extension.identifier.id);
139
+ if (extension.state !== 3 && !extension.server) {
140
+ extension = this.extensionsWorkbenchService.local.filter(e => e.server === extension.server && areSameExtensions(e.identifier, extension.identifier))[0] || extension;
141
+ }
142
+ data.extensionDisposables = dispose(data.extensionDisposables);
143
+ const computeEnablement = async () => {
144
+ if (extension.state === 3 ) {
145
+ if (!!extension.deprecationInfo) {
146
+ return true;
147
+ }
148
+ if (this.extensionsWorkbenchService.canSetLanguage(extension)) {
149
+ return false;
150
+ }
151
+ return !(await this.extensionsWorkbenchService.canInstall(extension));
152
+ }
153
+ else if (extension.local && !isLanguagePackExtension(extension.local.manifest)) {
154
+ const runningExtension = this.extensionService.extensions.filter(e => areSameExtensions({ id: e.identifier.value, uuid: e.uuid }, extension.identifier))[0];
155
+ return !(runningExtension && extension.server === this.extensionManagementServerService.getExtensionManagementServer(toExtension(runningExtension)));
156
+ }
157
+ return false;
158
+ };
159
+ const updateEnablement = async () => {
160
+ const disabled = await computeEnablement();
161
+ const deprecated = !!extension.deprecationInfo;
162
+ data.element.classList.toggle('deprecated', deprecated);
163
+ data.root.classList.toggle('disabled', disabled);
164
+ };
165
+ updateEnablement();
166
+ this.extensionService.onDidChangeExtensions(() => updateEnablement(), this, data.extensionDisposables);
167
+ data.extensionDisposables.push(addDisposableListener(data.icon, 'error', () => data.icon.src = extension.iconUrlFallback, { once: true }));
168
+ data.icon.src = extension.iconUrl;
169
+ if (!data.icon.complete) {
170
+ data.icon.style.visibility = 'hidden';
171
+ data.icon.onload = () => data.icon.style.visibility = 'inherit';
172
+ }
173
+ else {
174
+ data.icon.style.visibility = 'inherit';
175
+ }
176
+ data.name.textContent = extension.displayName;
177
+ data.description.textContent = extension.description;
178
+ const updatePublisher = () => {
179
+ data.publisherDisplayName.textContent = extension.publisherDisplayName;
180
+ };
181
+ updatePublisher();
182
+ Event.filter(this.extensionsWorkbenchService.onChange, e => !!e && areSameExtensions(e.identifier, extension.identifier))(() => updatePublisher(), this, data.extensionDisposables);
183
+ data.installCount.style.display = '';
184
+ data.ratings.style.display = '';
185
+ data.extension = extension;
186
+ if (extension.gallery && extension.gallery.properties && extension.gallery.properties.localizedLanguages && extension.gallery.properties.localizedLanguages.length) {
187
+ data.description.textContent = ( extension.gallery.properties.localizedLanguages.map(name => name[0].toLocaleUpperCase() + name.slice(1))).join(', ');
188
+ }
189
+ this.extensionViewState.onFocus(e => {
190
+ if (areSameExtensions(extension.identifier, e.identifier)) {
191
+ data.actionbar.setFocusable(true);
192
+ }
193
+ }, this, data.extensionDisposables);
194
+ this.extensionViewState.onBlur(e => {
195
+ if (areSameExtensions(extension.identifier, e.identifier)) {
196
+ data.actionbar.setFocusable(false);
197
+ }
198
+ }, this, data.extensionDisposables);
199
+ }
200
+ disposeElement(extension, index, data) {
201
+ data.extensionDisposables = dispose(data.extensionDisposables);
202
+ }
203
+ disposeTemplate(data) {
204
+ data.extensionDisposables = dispose(data.extensionDisposables);
205
+ data.disposables = dispose(data.disposables);
206
+ }
207
+ };
208
+ Renderer = ( __decorate([
209
+ ( __param(2, IInstantiationService)),
210
+ ( __param(3, INotificationService)),
211
+ ( __param(4, IExtensionService)),
212
+ ( __param(5, IExtensionManagementServerService)),
213
+ ( __param(6, IExtensionsWorkbenchService)),
214
+ ( __param(7, IContextMenuService))
215
+ ], Renderer));
216
+ registerThemingParticipant((theme, collector) => {
217
+ const verifiedPublisherIconColor = theme.getColor(extensionVerifiedPublisherIconColor);
218
+ if (verifiedPublisherIconColor) {
219
+ const disabledVerifiedPublisherIconColor = ( verifiedPublisherIconColor.transparent(.5)).makeOpaque(WORKBENCH_BACKGROUND(theme));
220
+ collector.addRule(`.extensions-list .monaco-list .monaco-list-row.disabled .author .verified-publisher ${ThemeIcon.asCSSSelector(verifiedPublisherIcon)} { color: ${disabledVerifiedPublisherIconColor}; }`);
221
+ }
222
+ });
223
+
224
+ export { Delegate, Renderer };
@@ -0,0 +1,121 @@
1
+ import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
2
+ import { PickerQuickAccessProvider } from 'vscode/vscode/vs/platform/quickinput/browser/pickerQuickAccess';
3
+ import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
4
+ import { VIEWLET_ID } from 'vscode/vscode/vs/workbench/contrib/extensions/common/extensions';
5
+ import { IExtensionGalleryService, IExtensionManagementService } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
6
+ import { INotificationService } from 'monaco-editor/esm/vs/platform/notification/common/notification.js';
7
+ import { ILogService } from 'monaco-editor/esm/vs/platform/log/common/log.js';
8
+ import { IPaneCompositePartService } from 'vscode/vscode/vs/workbench/services/panecomposite/browser/panecomposite';
9
+
10
+ var InstallExtensionQuickAccessProvider_1, ManageExtensionsQuickAccessProvider_1;
11
+ let InstallExtensionQuickAccessProvider = class InstallExtensionQuickAccessProvider extends PickerQuickAccessProvider {
12
+ static { InstallExtensionQuickAccessProvider_1 = this; }
13
+ static { this.PREFIX = 'ext install '; }
14
+ constructor(paneCompositeService, galleryService, extensionsService, notificationService, logService) {
15
+ super(InstallExtensionQuickAccessProvider_1.PREFIX);
16
+ this.paneCompositeService = paneCompositeService;
17
+ this.galleryService = galleryService;
18
+ this.extensionsService = extensionsService;
19
+ this.notificationService = notificationService;
20
+ this.logService = logService;
21
+ }
22
+ _getPicks(filter, disposables, token) {
23
+ if (!filter) {
24
+ return [{
25
+ label: ( localizeWithPath(
26
+ 'vs/workbench/contrib/extensions/browser/extensionsQuickAccess',
27
+ 'type',
28
+ "Type an extension name to install or search."
29
+ ))
30
+ }];
31
+ }
32
+ const genericSearchPickItem = {
33
+ label: ( localizeWithPath(
34
+ 'vs/workbench/contrib/extensions/browser/extensionsQuickAccess',
35
+ 'searchFor',
36
+ "Press Enter to search for extension '{0}'.",
37
+ filter
38
+ )),
39
+ accept: () => this.searchExtension(filter)
40
+ };
41
+ if (/\./.test(filter)) {
42
+ return this.getPicksForExtensionId(filter, genericSearchPickItem, token);
43
+ }
44
+ return [genericSearchPickItem];
45
+ }
46
+ async getPicksForExtensionId(filter, fallback, token) {
47
+ try {
48
+ const [galleryExtension] = await this.galleryService.getExtensions([{ id: filter }], token);
49
+ if (token.isCancellationRequested) {
50
+ return [];
51
+ }
52
+ if (!galleryExtension) {
53
+ return [fallback];
54
+ }
55
+ return [{
56
+ label: ( localizeWithPath(
57
+ 'vs/workbench/contrib/extensions/browser/extensionsQuickAccess',
58
+ 'install',
59
+ "Press Enter to install extension '{0}'.",
60
+ filter
61
+ )),
62
+ accept: () => this.installExtension(galleryExtension, filter)
63
+ }];
64
+ }
65
+ catch (error) {
66
+ if (token.isCancellationRequested) {
67
+ return [];
68
+ }
69
+ this.logService.error(error);
70
+ return [fallback];
71
+ }
72
+ }
73
+ async installExtension(extension, name) {
74
+ try {
75
+ await openExtensionsViewlet(this.paneCompositeService, `@id:${name}`);
76
+ await this.extensionsService.installFromGallery(extension);
77
+ }
78
+ catch (error) {
79
+ this.notificationService.error(error);
80
+ }
81
+ }
82
+ async searchExtension(name) {
83
+ openExtensionsViewlet(this.paneCompositeService, name);
84
+ }
85
+ };
86
+ InstallExtensionQuickAccessProvider = InstallExtensionQuickAccessProvider_1 = ( __decorate([
87
+ ( __param(0, IPaneCompositePartService)),
88
+ ( __param(1, IExtensionGalleryService)),
89
+ ( __param(2, IExtensionManagementService)),
90
+ ( __param(3, INotificationService)),
91
+ ( __param(4, ILogService))
92
+ ], InstallExtensionQuickAccessProvider));
93
+ let ManageExtensionsQuickAccessProvider = class ManageExtensionsQuickAccessProvider extends PickerQuickAccessProvider {
94
+ static { ManageExtensionsQuickAccessProvider_1 = this; }
95
+ static { this.PREFIX = 'ext '; }
96
+ constructor(paneCompositeService) {
97
+ super(ManageExtensionsQuickAccessProvider_1.PREFIX);
98
+ this.paneCompositeService = paneCompositeService;
99
+ }
100
+ _getPicks() {
101
+ return [{
102
+ label: ( localizeWithPath(
103
+ 'vs/workbench/contrib/extensions/browser/extensionsQuickAccess',
104
+ 'manage',
105
+ "Press Enter to manage your extensions."
106
+ )),
107
+ accept: () => openExtensionsViewlet(this.paneCompositeService)
108
+ }];
109
+ }
110
+ };
111
+ ManageExtensionsQuickAccessProvider = ManageExtensionsQuickAccessProvider_1 = ( __decorate([
112
+ ( __param(0, IPaneCompositePartService))
113
+ ], ManageExtensionsQuickAccessProvider));
114
+ async function openExtensionsViewlet(paneCompositeService, search = '') {
115
+ const viewlet = await paneCompositeService.openPaneComposite(VIEWLET_ID, 0 , true);
116
+ const view = viewlet?.getViewPaneContainer();
117
+ view?.search(search);
118
+ view?.focus();
119
+ }
120
+
121
+ export { InstallExtensionQuickAccessProvider, ManageExtensionsQuickAccessProvider };