@codingame/monaco-vscode-extension-gallery-service-override 2.2.2 → 3.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.
- package/extensionGallery.js +23 -8
- package/package.json +9 -9
- package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +123 -163
- package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +42 -7
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +43 -827
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.js +542 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +63 -54
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.js +0 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +10 -13
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +36 -8
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.js +2 -2
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +1 -5
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extension.css.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css.js +1 -1
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService.js +234 -0
- package/vscode/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.js +2 -2
|
@@ -359,24 +359,24 @@ import { IFileDialogService, IDialogService } from 'vscode/vscode/vs/platform/di
|
|
|
359
359
|
});
|
|
360
360
|
const jsonRegistry = ( Registry.as(Extensions$3.JSONContribution));
|
|
361
361
|
jsonRegistry.registerSchema(ExtensionsConfigurationSchemaId, ExtensionsConfigurationSchema);
|
|
362
|
-
CommandsRegistry.registerCommand('_extensions.manage', (accessor, extensionId, tab, preserveFocus) => {
|
|
362
|
+
CommandsRegistry.registerCommand('_extensions.manage', (accessor, extensionId, tab, preserveFocus, feature) => {
|
|
363
363
|
const extensionService = accessor.get(IExtensionsWorkbenchService);
|
|
364
364
|
const extension = extensionService.local.find(e => areSameExtensions(e.identifier, { id: extensionId }));
|
|
365
365
|
if (extension) {
|
|
366
|
-
extensionService.open(extension, { tab, preserveFocus });
|
|
366
|
+
extensionService.open(extension, { tab, preserveFocus, feature });
|
|
367
367
|
}
|
|
368
368
|
else {
|
|
369
369
|
throw new Error(localizeWithPath('vs/workbench/contrib/extensions/browser/extensions.contribution', 'notFound', "Extension '{0}' not found.", extensionId));
|
|
370
370
|
}
|
|
371
371
|
});
|
|
372
|
-
CommandsRegistry.registerCommand('extension.open', async (accessor, extensionId, tab, preserveFocus) => {
|
|
372
|
+
CommandsRegistry.registerCommand('extension.open', async (accessor, extensionId, tab, preserveFocus, feature) => {
|
|
373
373
|
const extensionService = accessor.get(IExtensionsWorkbenchService);
|
|
374
374
|
const commandService = accessor.get(ICommandService);
|
|
375
375
|
const [extension] = await extensionService.getExtensions([{ id: extensionId }], CancellationToken.None);
|
|
376
376
|
if (extension) {
|
|
377
|
-
return extensionService.open(extension, { tab, preserveFocus });
|
|
377
|
+
return extensionService.open(extension, { tab, preserveFocus, feature });
|
|
378
378
|
}
|
|
379
|
-
return commandService.executeCommand('_extensions.manage', extensionId, tab, preserveFocus);
|
|
379
|
+
return commandService.executeCommand('_extensions.manage', extensionId, tab, preserveFocus, feature);
|
|
380
380
|
});
|
|
381
381
|
CommandsRegistry.registerCommand({
|
|
382
382
|
id: 'workbench.extensions.installExtension',
|
|
@@ -1107,34 +1107,43 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1107
1107
|
run: async (accessor) => {
|
|
1108
1108
|
const extensionManagementService = accessor.get(IWorkbenchExtensionManagementService);
|
|
1109
1109
|
if (isWeb) {
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
quickPick.
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1110
|
+
return ( new Promise((c, e) => {
|
|
1111
|
+
const quickInputService = accessor.get(IQuickInputService);
|
|
1112
|
+
const disposables = ( new DisposableStore());
|
|
1113
|
+
const quickPick = disposables.add(quickInputService.createQuickPick());
|
|
1114
|
+
quickPick.title = ( localizeWithPath(
|
|
1115
|
+
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1116
|
+
'installFromLocation',
|
|
1117
|
+
"Install Extension from Location"
|
|
1118
|
+
));
|
|
1119
|
+
quickPick.customButton = true;
|
|
1120
|
+
quickPick.customLabel = ( localizeWithPath(
|
|
1121
|
+
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1122
|
+
'install button',
|
|
1123
|
+
"Install"
|
|
1124
|
+
));
|
|
1125
|
+
quickPick.placeholder = ( localizeWithPath(
|
|
1126
|
+
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1127
|
+
'installFromLocationPlaceHolder',
|
|
1128
|
+
"Location of the web extension"
|
|
1129
|
+
));
|
|
1130
|
+
quickPick.ignoreFocusOut = true;
|
|
1131
|
+
disposables.add(Event.any(quickPick.onDidAccept, quickPick.onDidCustom)(async () => {
|
|
1132
|
+
quickPick.hide();
|
|
1133
|
+
if (quickPick.value) {
|
|
1134
|
+
try {
|
|
1135
|
+
await extensionManagementService.installFromLocation(( URI.parse(quickPick.value)));
|
|
1136
|
+
}
|
|
1137
|
+
catch (error) {
|
|
1138
|
+
e(error);
|
|
1139
|
+
return;
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
c();
|
|
1143
|
+
}));
|
|
1144
|
+
disposables.add(quickPick.onDidHide(() => disposables.dispose()));
|
|
1145
|
+
quickPick.show();
|
|
1135
1146
|
}));
|
|
1136
|
-
disposables.add(quickPick.onDidHide(() => disposables.dispose()));
|
|
1137
|
-
quickPick.show();
|
|
1138
1147
|
}
|
|
1139
1148
|
else {
|
|
1140
1149
|
const fileDialogService = accessor.get(IFileDialogService);
|
|
@@ -1149,7 +1158,7 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1149
1158
|
)),
|
|
1150
1159
|
});
|
|
1151
1160
|
if (extensionLocation?.[0]) {
|
|
1152
|
-
extensionManagementService.installFromLocation(extensionLocation[0]);
|
|
1161
|
+
await extensionManagementService.installFromLocation(extensionLocation[0]);
|
|
1153
1162
|
}
|
|
1154
1163
|
}
|
|
1155
1164
|
}
|
|
@@ -1653,7 +1662,7 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1653
1662
|
});
|
|
1654
1663
|
this.registerExtensionAction({
|
|
1655
1664
|
id: ToggleAutoUpdateForExtensionAction.ID,
|
|
1656
|
-
title:
|
|
1665
|
+
title: ToggleAutoUpdateForExtensionAction.LABEL,
|
|
1657
1666
|
category: ExtensionsLocalizedLabel,
|
|
1658
1667
|
menu: {
|
|
1659
1668
|
id: MenuId.ExtensionContext,
|
|
@@ -1863,11 +1872,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1863
1872
|
});
|
|
1864
1873
|
this.registerExtensionAction({
|
|
1865
1874
|
id: 'workbench.extensions.action.toggleApplyToAllProfiles',
|
|
1866
|
-
title:
|
|
1875
|
+
title: ( localize2WithPath(
|
|
1867
1876
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1868
1877
|
'workbench.extensions.action.toggleApplyToAllProfiles',
|
|
1869
1878
|
"Apply Extension to all Profiles"
|
|
1870
|
-
)),
|
|
1879
|
+
)),
|
|
1871
1880
|
toggled: ( ContextKeyExpr.has('isApplicationScopedExtension')),
|
|
1872
1881
|
menu: {
|
|
1873
1882
|
id: MenuId.ExtensionContext,
|
|
@@ -1884,11 +1893,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1884
1893
|
});
|
|
1885
1894
|
this.registerExtensionAction({
|
|
1886
1895
|
id: TOGGLE_IGNORE_EXTENSION_ACTION_ID,
|
|
1887
|
-
title:
|
|
1896
|
+
title: ( localize2WithPath(
|
|
1888
1897
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1889
1898
|
'workbench.extensions.action.toggleIgnoreExtension',
|
|
1890
1899
|
"Sync This Extension"
|
|
1891
|
-
)),
|
|
1900
|
+
)),
|
|
1892
1901
|
menu: {
|
|
1893
1902
|
id: MenuId.ExtensionContext,
|
|
1894
1903
|
group: '2_configure',
|
|
@@ -1904,11 +1913,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1904
1913
|
});
|
|
1905
1914
|
this.registerExtensionAction({
|
|
1906
1915
|
id: 'workbench.extensions.action.ignoreRecommendation',
|
|
1907
|
-
title:
|
|
1916
|
+
title: ( localize2WithPath(
|
|
1908
1917
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1909
1918
|
'workbench.extensions.action.ignoreRecommendation',
|
|
1910
1919
|
"Ignore Recommendation"
|
|
1911
|
-
)),
|
|
1920
|
+
)),
|
|
1912
1921
|
menu: {
|
|
1913
1922
|
id: MenuId.ExtensionContext,
|
|
1914
1923
|
group: '3_recommendations',
|
|
@@ -1919,11 +1928,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1919
1928
|
});
|
|
1920
1929
|
this.registerExtensionAction({
|
|
1921
1930
|
id: 'workbench.extensions.action.undoIgnoredRecommendation',
|
|
1922
|
-
title:
|
|
1931
|
+
title: ( localize2WithPath(
|
|
1923
1932
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1924
1933
|
'workbench.extensions.action.undoIgnoredRecommendation',
|
|
1925
1934
|
"Undo Ignored Recommendation"
|
|
1926
|
-
)),
|
|
1935
|
+
)),
|
|
1927
1936
|
menu: {
|
|
1928
1937
|
id: MenuId.ExtensionContext,
|
|
1929
1938
|
group: '3_recommendations',
|
|
@@ -1934,11 +1943,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1934
1943
|
});
|
|
1935
1944
|
this.registerExtensionAction({
|
|
1936
1945
|
id: 'workbench.extensions.action.addExtensionToWorkspaceRecommendations',
|
|
1937
|
-
title:
|
|
1946
|
+
title: ( localize2WithPath(
|
|
1938
1947
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1939
1948
|
'workbench.extensions.action.addExtensionToWorkspaceRecommendations',
|
|
1940
1949
|
"Add to Workspace Recommendations"
|
|
1941
|
-
)),
|
|
1950
|
+
)),
|
|
1942
1951
|
menu: {
|
|
1943
1952
|
id: MenuId.ExtensionContext,
|
|
1944
1953
|
group: '3_recommendations',
|
|
@@ -1949,11 +1958,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1949
1958
|
});
|
|
1950
1959
|
this.registerExtensionAction({
|
|
1951
1960
|
id: 'workbench.extensions.action.removeExtensionFromWorkspaceRecommendations',
|
|
1952
|
-
title:
|
|
1961
|
+
title: ( localize2WithPath(
|
|
1953
1962
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1954
1963
|
'workbench.extensions.action.removeExtensionFromWorkspaceRecommendations',
|
|
1955
1964
|
"Remove from Workspace Recommendations"
|
|
1956
|
-
)),
|
|
1965
|
+
)),
|
|
1957
1966
|
menu: {
|
|
1958
1967
|
id: MenuId.ExtensionContext,
|
|
1959
1968
|
group: '3_recommendations',
|
|
@@ -1964,11 +1973,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1964
1973
|
});
|
|
1965
1974
|
this.registerExtensionAction({
|
|
1966
1975
|
id: 'workbench.extensions.action.addToWorkspaceRecommendations',
|
|
1967
|
-
title:
|
|
1976
|
+
title: ( localize2WithPath(
|
|
1968
1977
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1969
1978
|
'workbench.extensions.action.addToWorkspaceRecommendations',
|
|
1970
1979
|
"Add Extension to Workspace Recommendations"
|
|
1971
|
-
)),
|
|
1980
|
+
)),
|
|
1972
1981
|
category: ( localizeWithPath(
|
|
1973
1982
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1974
1983
|
'extensions',
|
|
@@ -1994,11 +2003,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
1994
2003
|
});
|
|
1995
2004
|
this.registerExtensionAction({
|
|
1996
2005
|
id: 'workbench.extensions.action.addToWorkspaceFolderRecommendations',
|
|
1997
|
-
title:
|
|
2006
|
+
title: ( localize2WithPath(
|
|
1998
2007
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
1999
2008
|
'workbench.extensions.action.addToWorkspaceFolderRecommendations',
|
|
2000
2009
|
"Add Extension to Workspace Folder Recommendations"
|
|
2001
|
-
)),
|
|
2010
|
+
)),
|
|
2002
2011
|
category: ( localizeWithPath(
|
|
2003
2012
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
2004
2013
|
'extensions',
|
|
@@ -2012,11 +2021,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
2012
2021
|
});
|
|
2013
2022
|
this.registerExtensionAction({
|
|
2014
2023
|
id: 'workbench.extensions.action.addToWorkspaceIgnoredRecommendations',
|
|
2015
|
-
title:
|
|
2024
|
+
title: ( localize2WithPath(
|
|
2016
2025
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
2017
2026
|
'workbench.extensions.action.addToWorkspaceIgnoredRecommendations',
|
|
2018
2027
|
"Add Extension to Workspace Ignored Recommendations"
|
|
2019
|
-
)),
|
|
2028
|
+
)),
|
|
2020
2029
|
category: ( localizeWithPath(
|
|
2021
2030
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
2022
2031
|
'extensions',
|
|
@@ -2042,11 +2051,11 @@ let ExtensionsContributions = class ExtensionsContributions extends Disposable {
|
|
|
2042
2051
|
});
|
|
2043
2052
|
this.registerExtensionAction({
|
|
2044
2053
|
id: 'workbench.extensions.action.addToWorkspaceFolderIgnoredRecommendations',
|
|
2045
|
-
title:
|
|
2054
|
+
title: ( localize2WithPath(
|
|
2046
2055
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
2047
2056
|
'workbench.extensions.action.addToWorkspaceFolderIgnoredRecommendations',
|
|
2048
2057
|
"Add Extension to Workspace Folder Ignored Recommendations"
|
|
2049
|
-
)),
|
|
2058
|
+
)),
|
|
2050
2059
|
category: ( localizeWithPath(
|
|
2051
2060
|
'vs/workbench/contrib/extensions/browser/extensions.contribution',
|
|
2052
2061
|
'extensions',
|
|
@@ -59,7 +59,6 @@ let Renderer = class Renderer {
|
|
|
59
59
|
const verifiedPublisherWidget = this.instantiationService.createInstance(VerifiedPublisherWidget, append(publisher, $(`.verified-publisher`)), true);
|
|
60
60
|
const publisherDisplayName = append(publisher, $('.publisher-name.ellipsis'));
|
|
61
61
|
const actionbar = ( new ActionBar(footer, {
|
|
62
|
-
animated: false,
|
|
63
62
|
actionViewItemProvider: (action) => {
|
|
64
63
|
if (action instanceof ActionWithDropDownAction) {
|
|
65
64
|
return ( new ExtensionActionWithDropdownActionViewItem(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
|
|
2
2
|
import './media/extensionsViewlet.css.js';
|
|
3
|
-
import {
|
|
3
|
+
import { localize2WithPath, localizeWithPath } from 'vscode/vscode/vs/nls';
|
|
4
4
|
import { Delayer, timeout, Promises } from 'vscode/vscode/vs/base/common/async';
|
|
5
5
|
import { isCancellationError } from 'vscode/vscode/vs/base/common/errors';
|
|
6
6
|
import { createErrorWithActions } from 'vscode/vscode/vs/base/common/errorMessage';
|
|
@@ -74,11 +74,11 @@ const SearchUnsupportedWorkspaceExtensionsContext = ( new RawContextKey('searchU
|
|
|
74
74
|
const SearchDeprecatedExtensionsContext = ( new RawContextKey('searchDeprecatedExtensions', false));
|
|
75
75
|
const RecommendedExtensionsContext = ( new RawContextKey('recommendedExtensions', false));
|
|
76
76
|
const SortByUpdateDateContext = ( new RawContextKey('sortByUpdateDate', false));
|
|
77
|
-
const REMOTE_CATEGORY =
|
|
77
|
+
const REMOTE_CATEGORY = ( localize2WithPath(
|
|
78
78
|
'vs/workbench/contrib/extensions/browser/extensionsViewlet',
|
|
79
79
|
{ key: 'remote', comment: ['Remote as in remote machine'] },
|
|
80
80
|
"Remote"
|
|
81
|
-
))
|
|
81
|
+
));
|
|
82
82
|
let ExtensionsViewletViewsContribution = class ExtensionsViewletViewsContribution {
|
|
83
83
|
constructor(extensionManagementServerService, labelService, viewDescriptorService, contextKeyService) {
|
|
84
84
|
this.extensionManagementServerService = extensionManagementServerService;
|
|
@@ -150,15 +150,12 @@ let ExtensionsViewletViewsContribution = class ExtensionsViewletViewsContributio
|
|
|
150
150
|
super({
|
|
151
151
|
id: 'workbench.extensions.installLocalExtensions',
|
|
152
152
|
get title() {
|
|
153
|
-
return
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
)),
|
|
160
|
-
original: `Install Local Extensions in '${server.label}'...`,
|
|
161
|
-
};
|
|
153
|
+
return ( localize2WithPath(
|
|
154
|
+
'vs/workbench/contrib/extensions/browser/extensionsViewlet',
|
|
155
|
+
'select and install local extensions',
|
|
156
|
+
"Install Local Extensions in '{0}'...",
|
|
157
|
+
server.label
|
|
158
|
+
));
|
|
162
159
|
},
|
|
163
160
|
category: REMOTE_CATEGORY,
|
|
164
161
|
icon: installLocalInRemoteIcon,
|
|
@@ -562,7 +559,7 @@ let ExtensionsViewPaneContainer = class ExtensionsViewPaneContainer extends View
|
|
|
562
559
|
toolbarOptions: {
|
|
563
560
|
primaryGroup: () => true,
|
|
564
561
|
},
|
|
565
|
-
actionViewItemProvider: action => createActionViewItem(this.instantiationService, action)
|
|
562
|
+
actionViewItemProvider: (action, options) => createActionViewItem(this.instantiationService, action, options)
|
|
566
563
|
}));
|
|
567
564
|
this._register(( new DragAndDropObserver(this.root, {
|
|
568
565
|
onDragEnter: (e) => {
|
|
@@ -29,7 +29,7 @@ import { coalesce, distinct, flatten } from 'vscode/vscode/vs/base/common/arrays
|
|
|
29
29
|
import { alert } from 'vscode/vscode/vs/base/browser/ui/aria/aria';
|
|
30
30
|
import { CancellationToken } from 'vscode/vscode/vs/base/common/cancellation';
|
|
31
31
|
import { ActionRunner, Separator, Action } from 'vscode/vscode/vs/base/common/actions';
|
|
32
|
-
import { ExtensionIdentifierMap, isLanguagePackExtension } from 'vscode/vscode/vs/platform/extensions/common/extensions';
|
|
32
|
+
import { ExtensionIdentifierMap, ExtensionIdentifier, isLanguagePackExtension } from 'vscode/vscode/vs/platform/extensions/common/extensions';
|
|
33
33
|
import { createCancelablePromise, ThrottledDelayer } from 'vscode/vscode/vs/base/common/async';
|
|
34
34
|
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
|
|
35
35
|
import { SeverityIcon } from 'vscode/vscode/vs/platform/severityIcon/browser/severityIcon';
|
|
@@ -46,6 +46,8 @@ import { IWorkbenchLayoutService } from 'vscode/vscode/vs/workbench/services/lay
|
|
|
46
46
|
import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
|
|
47
47
|
import { isOfflineError } from 'vscode/vscode/vs/base/parts/request/common/request';
|
|
48
48
|
import { defaultCountBadgeStyles } from 'vscode/vscode/vs/platform/theme/browser/defaultStyles';
|
|
49
|
+
import { Registry } from 'vscode/vscode/vs/platform/registry/common/platform';
|
|
50
|
+
import { Extensions, IExtensionFeaturesManagementService } from 'vscode/vscode/vs/workbench/services/extensionManagement/common/extensionFeatures';
|
|
49
51
|
|
|
50
52
|
var ExtensionsListView_1;
|
|
51
53
|
const NONE_CATEGORY = 'none';
|
|
@@ -72,7 +74,7 @@ function isLocalSortBy(value) {
|
|
|
72
74
|
let ExtensionsListView = class ExtensionsListView extends ViewPane {
|
|
73
75
|
static { ExtensionsListView_1 = this; }
|
|
74
76
|
static { this.RECENT_UPDATE_DURATION = 7 * 24 * 60 * 60 * 1000; }
|
|
75
|
-
constructor(options, viewletViewOptions, notificationService, keybindingService, contextMenuService, instantiationService, themeService, extensionService, extensionsWorkbenchService, extensionRecommendationsService, telemetryService, configurationService, contextService, extensionManagementServerService, extensionManifestPropertiesService, extensionManagementService, workspaceService, productService, contextKeyService, viewDescriptorService, openerService, preferencesService, storageService, workspaceTrustManagementService, extensionEnablementService, layoutService, logService) {
|
|
77
|
+
constructor(options, viewletViewOptions, notificationService, keybindingService, contextMenuService, instantiationService, themeService, extensionService, extensionsWorkbenchService, extensionRecommendationsService, telemetryService, configurationService, contextService, extensionManagementServerService, extensionManifestPropertiesService, extensionManagementService, workspaceService, productService, contextKeyService, viewDescriptorService, openerService, preferencesService, storageService, workspaceTrustManagementService, extensionEnablementService, layoutService, extensionFeaturesManagementService, logService) {
|
|
76
78
|
super({
|
|
77
79
|
...viewletViewOptions,
|
|
78
80
|
showActions: ViewPaneShowActions.Always,
|
|
@@ -94,6 +96,7 @@ let ExtensionsListView = class ExtensionsListView extends ViewPane {
|
|
|
94
96
|
this.workspaceTrustManagementService = workspaceTrustManagementService;
|
|
95
97
|
this.extensionEnablementService = extensionEnablementService;
|
|
96
98
|
this.layoutService = layoutService;
|
|
99
|
+
this.extensionFeaturesManagementService = extensionFeaturesManagementService;
|
|
97
100
|
this.logService = logService;
|
|
98
101
|
this.list = null;
|
|
99
102
|
this.queryRequest = null;
|
|
@@ -360,6 +363,9 @@ let ExtensionsListView = class ExtensionsListView extends ViewPane {
|
|
|
360
363
|
else if (/@recentlyUpdated/i.test(query.value)) {
|
|
361
364
|
extensions = this.filterRecentlyUpdatedExtensions(local, query, options);
|
|
362
365
|
}
|
|
366
|
+
else if (/@feature:/i.test(query.value)) {
|
|
367
|
+
extensions = this.filterExtensionsByFeature(local, query, options);
|
|
368
|
+
}
|
|
363
369
|
return { extensions, canIncludeInstalledExtensions };
|
|
364
370
|
}
|
|
365
371
|
filterBuiltinExtensions(local, query, options) {
|
|
@@ -556,6 +562,22 @@ let ExtensionsListView = class ExtensionsListView extends ViewPane {
|
|
|
556
562
|
options.sortBy = options.sortBy ?? "UpdateDate" ;
|
|
557
563
|
return this.sortExtensions(result, options);
|
|
558
564
|
}
|
|
565
|
+
filterExtensionsByFeature(local, query, options) {
|
|
566
|
+
const value = query.value.replace(/@feature:/g, '').trim().toLowerCase();
|
|
567
|
+
const featureId = value.split(' ')[0];
|
|
568
|
+
const feature = ( Registry.as(Extensions.ExtensionFeaturesRegistry)).getExtensionFeature(featureId);
|
|
569
|
+
if (!feature) {
|
|
570
|
+
return [];
|
|
571
|
+
}
|
|
572
|
+
const renderer = feature.renderer ? this.instantiationService.createInstance(feature.renderer) : undefined;
|
|
573
|
+
const result = local.filter(e => {
|
|
574
|
+
if (!e.local) {
|
|
575
|
+
return false;
|
|
576
|
+
}
|
|
577
|
+
return renderer?.shouldRender(e.local.manifest) || this.extensionFeaturesManagementService.getAccessData(( new ExtensionIdentifier(e.identifier.id)), featureId);
|
|
578
|
+
});
|
|
579
|
+
return this.sortExtensions(result, options);
|
|
580
|
+
}
|
|
559
581
|
mergeAddedExtensions(extensions, newExtensions) {
|
|
560
582
|
const oldExtensions = [...extensions];
|
|
561
583
|
const findPreviousExtensionIndex = (from) => {
|
|
@@ -918,7 +940,8 @@ let ExtensionsListView = class ExtensionsListView extends ViewPane {
|
|
|
918
940
|
|| this.isSearchWorkspaceUnsupportedExtensionsQuery(query)
|
|
919
941
|
|| this.isSearchRecentlyUpdatedQuery(query)
|
|
920
942
|
|| this.isSearchExtensionUpdatesQuery(query)
|
|
921
|
-
|| this.isSortInstalledExtensionsQuery(query, sortBy)
|
|
943
|
+
|| this.isSortInstalledExtensionsQuery(query, sortBy)
|
|
944
|
+
|| this.isFeatureExtensionsQuery(query);
|
|
922
945
|
}
|
|
923
946
|
static isSearchBuiltInExtensionsQuery(query) {
|
|
924
947
|
return /@builtin\s.+/i.test(query);
|
|
@@ -936,7 +959,7 @@ let ExtensionsListView = class ExtensionsListView extends ViewPane {
|
|
|
936
959
|
return /@installed$/i.test(query);
|
|
937
960
|
}
|
|
938
961
|
static isSearchInstalledExtensionsQuery(query) {
|
|
939
|
-
return /@installed\s./i.test(query);
|
|
962
|
+
return /@installed\s./i.test(query) || this.isFeatureExtensionsQuery(query);
|
|
940
963
|
}
|
|
941
964
|
static isOutdatedExtensionsQuery(query) {
|
|
942
965
|
return /@outdated/i.test(query);
|
|
@@ -989,6 +1012,9 @@ let ExtensionsListView = class ExtensionsListView extends ViewPane {
|
|
|
989
1012
|
static isSortUpdateDateQuery(query) {
|
|
990
1013
|
return /@sort:updateDate/i.test(query);
|
|
991
1014
|
}
|
|
1015
|
+
static isFeatureExtensionsQuery(query) {
|
|
1016
|
+
return /@feature:/i.test(query);
|
|
1017
|
+
}
|
|
992
1018
|
focus() {
|
|
993
1019
|
super.focus();
|
|
994
1020
|
if (!this.list) {
|
|
@@ -1025,7 +1051,8 @@ ExtensionsListView = ExtensionsListView_1 = ( __decorate([
|
|
|
1025
1051
|
( __param(23, IWorkspaceTrustManagementService)),
|
|
1026
1052
|
( __param(24, IWorkbenchExtensionEnablementService)),
|
|
1027
1053
|
( __param(25, IWorkbenchLayoutService)),
|
|
1028
|
-
( __param(26,
|
|
1054
|
+
( __param(26, IExtensionFeaturesManagementService)),
|
|
1055
|
+
( __param(27, ILogService))
|
|
1029
1056
|
], ExtensionsListView));
|
|
1030
1057
|
class DefaultPopularExtensionsView extends ExtensionsListView {
|
|
1031
1058
|
async show() {
|
|
@@ -1079,8 +1106,8 @@ class RecentlyUpdatedExtensionsView extends ExtensionsListView {
|
|
|
1079
1106
|
}
|
|
1080
1107
|
}
|
|
1081
1108
|
let StaticQueryExtensionsView = class StaticQueryExtensionsView extends ExtensionsListView {
|
|
1082
|
-
constructor(options, viewletViewOptions, notificationService, keybindingService, contextMenuService, instantiationService, themeService, extensionService, extensionsWorkbenchService, extensionRecommendationsService, telemetryService, configurationService, contextService, extensionManagementServerService, extensionManifestPropertiesService, extensionManagementService, workspaceService, productService, contextKeyService, viewDescriptorService, openerService, preferencesService, storageService, workspaceTrustManagementService, extensionEnablementService, layoutService, logService) {
|
|
1083
|
-
super(options, viewletViewOptions, notificationService, keybindingService, contextMenuService, instantiationService, themeService, extensionService, extensionsWorkbenchService, extensionRecommendationsService, telemetryService, configurationService, contextService, extensionManagementServerService, extensionManifestPropertiesService, extensionManagementService, workspaceService, productService, contextKeyService, viewDescriptorService, openerService, preferencesService, storageService, workspaceTrustManagementService, extensionEnablementService, layoutService, logService);
|
|
1109
|
+
constructor(options, viewletViewOptions, notificationService, keybindingService, contextMenuService, instantiationService, themeService, extensionService, extensionsWorkbenchService, extensionRecommendationsService, telemetryService, configurationService, contextService, extensionManagementServerService, extensionManifestPropertiesService, extensionManagementService, workspaceService, productService, contextKeyService, viewDescriptorService, openerService, preferencesService, storageService, workspaceTrustManagementService, extensionEnablementService, layoutService, extensionFeaturesManagementService, logService) {
|
|
1110
|
+
super(options, viewletViewOptions, notificationService, keybindingService, contextMenuService, instantiationService, themeService, extensionService, extensionsWorkbenchService, extensionRecommendationsService, telemetryService, configurationService, contextService, extensionManagementServerService, extensionManifestPropertiesService, extensionManagementService, workspaceService, productService, contextKeyService, viewDescriptorService, openerService, preferencesService, storageService, workspaceTrustManagementService, extensionEnablementService, layoutService, extensionFeaturesManagementService, logService);
|
|
1084
1111
|
this.options = options;
|
|
1085
1112
|
}
|
|
1086
1113
|
show() {
|
|
@@ -1112,7 +1139,8 @@ StaticQueryExtensionsView = ( __decorate([
|
|
|
1112
1139
|
( __param(23, IWorkspaceTrustManagementService)),
|
|
1113
1140
|
( __param(24, IWorkbenchExtensionEnablementService)),
|
|
1114
1141
|
( __param(25, IWorkbenchLayoutService)),
|
|
1115
|
-
( __param(26,
|
|
1142
|
+
( __param(26, IExtensionFeaturesManagementService)),
|
|
1143
|
+
( __param(27, ILogService))
|
|
1116
1144
|
], StaticQueryExtensionsView));
|
|
1117
1145
|
function toSpecificWorkspaceUnsupportedQuery(query, qualifier) {
|
|
1118
1146
|
if (!query) {
|
|
@@ -585,7 +585,7 @@ let ExtensionHoverWidget = ExtensionHoverWidget_1 = class ExtensionHoverWidget e
|
|
|
585
585
|
'{0} uncaught errors',
|
|
586
586
|
extensionRuntimeStatus.runtimeErrors.length
|
|
587
587
|
))}](${( URI.parse(
|
|
588
|
-
`command:extension.open?${encodeURIComponent(JSON.stringify([this.extension.identifier.id, "
|
|
588
|
+
`command:extension.open?${encodeURIComponent(JSON.stringify([this.extension.identifier.id, "features" ]))}`
|
|
589
589
|
))})` : undefined;
|
|
590
590
|
const messageLink = extensionRuntimeStatus.messages.length ? `[${extensionRuntimeStatus.messages.length === 1 ? ( localizeWithPath(
|
|
591
591
|
'vs/workbench/contrib/extensions/browser/extensionsWidgets',
|
|
@@ -597,7 +597,7 @@ let ExtensionHoverWidget = ExtensionHoverWidget_1 = class ExtensionHoverWidget e
|
|
|
597
597
|
'{0} messages',
|
|
598
598
|
extensionRuntimeStatus.messages.length
|
|
599
599
|
))}](${( URI.parse(
|
|
600
|
-
`command:extension.open?${encodeURIComponent(JSON.stringify([this.extension.identifier.id, "
|
|
600
|
+
`command:extension.open?${encodeURIComponent(JSON.stringify([this.extension.identifier.id, "features" ]))}`
|
|
601
601
|
))})` : undefined;
|
|
602
602
|
markdown.appendMarkdown(`$(${hasErrors ? errorIcon.id : hasWarnings ? warningIcon.id : infoIcon.id}) This extension has reported `);
|
|
603
603
|
if (errorsLink && messageLink) {
|
|
@@ -36,7 +36,6 @@ import { IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/
|
|
|
36
36
|
import { isUndefined, isBoolean, isString } from 'vscode/vscode/vs/base/common/types';
|
|
37
37
|
import { IExtensionManifestPropertiesService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService';
|
|
38
38
|
import { toExtension, toExtensionDescription, IExtensionService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensions';
|
|
39
|
-
import { ExtensionEditor } from './extensionEditor.js';
|
|
40
39
|
import { isWeb, language } from 'vscode/vscode/vs/base/common/platform';
|
|
41
40
|
import { getLocale } from 'vscode/vscode/vs/platform/languagePacks/common/languagePacks';
|
|
42
41
|
import { ILocaleService } from 'vscode/vscode/vs/workbench/services/localization/common/locale';
|
|
@@ -915,10 +914,7 @@ let ExtensionsWorkbenchService = class ExtensionsWorkbenchService extends Dispos
|
|
|
915
914
|
if (!extension) {
|
|
916
915
|
throw new Error(`Extension not found. ${extension}`);
|
|
917
916
|
}
|
|
918
|
-
|
|
919
|
-
if (options?.tab && editor instanceof ExtensionEditor) {
|
|
920
|
-
await editor.openTab(options.tab);
|
|
921
|
-
}
|
|
917
|
+
await this.editorService.openEditor(this.instantiationService.createInstance(ExtensionsInput, extension), options, options?.sideByside ? SIDE_GROUP : ACTIVE_GROUP);
|
|
922
918
|
}
|
|
923
919
|
getExtensionStatus(extension) {
|
|
924
920
|
const extensionsStatus = this.extensionService.getExtensionsStatus();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import n from '../../../../../../../../external/rollup-plugin-styles/dist/runtime/inject-css.js';
|
|
2
2
|
|
|
3
|
-
var css = ".extension-bookmark-container{position:relative}.extension-bookmark-container>.extension-bookmark{position:absolute}.extension-list-item{box-sizing:border-box;display:flex;height:100%;overflow:hidden;padding:0 0 0 16px;width:100%}.extension-list-item>.icon-container{align-items:center;display:flex;position:relative}.extension-list-item>.icon-container>.icon{flex-shrink:0;height:42px;object-fit:contain;padding-right:14px;width:42px}.extension-list-item>.icon-container .extension-badge{bottom:5px;position:absolute}.extension-list-item>.icon-container .extension-badge.extension-remote-badge{align-items:center;border-radius:20px;display:flex;height:22px;justify-content:center;line-height:22px;right:5px;width:22px}.extension-list-item>.icon-container .extension-remote-badge .codicon{color:currentColor}.extension-list-item>.details{display:flex;flex:1;flex-direction:column;justify-content:center;overflow:hidden}.extension-list-item>.details>.header-container{display:flex;height:19px;overflow:hidden;padding-right:11px}.extension-list-item>.details>.header-container>.header{align-items:center;display:flex;flex:1;flex-wrap:nowrap;min-width:0;overflow:hidden}.extension-list-item>.details>.header-container>.header>.name{flex:1;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.extension-list-item.deprecated>.details>.header-container>.header>.name{text-decoration:line-through}.extension-list-item>.details>.header-container>.header>.activation-status,.extension-list-item>.details>.header-container>.header>.install-count,.extension-list-item>.details>.header-container>.header>.ratings{align-items:center;display:flex}.extension-list-item>.details>.header-container>.header>.install-count:not(:empty){font-size:80%;margin:0 6px}.extension-list-item>.details>.header-container>.header>.activation-status:not(:empty){font-size:80%;margin-left:2px}.extension-list-item>.details>.header-container>.header>.activation-status .activationTime,.extension-list-item>.details>.header-container>.header>.activation-status:not(:empty) .codicon{margin-right:2px}.extension-list-item>.details>.header-container>.header .codicon{font-size:120%;margin-right:3px;-webkit-mask:inherit}.extension-list-item>.details>.header-container>.header>.ratings{text-align:right}.extension-list-item>.details>.header-container>.header>.extension-remote-badge-container{display:none;margin-left:6px}.extension-list-item>.details>.header-container>.header .extension-remote-badge .codicon{margin-right:0}.extension-list-item>.details>.header-container>.header .extension-remote-badge{align-items:center;border-radius:20px;display:flex;height:14px;justify-content:center;line-height:14px;text-align:center;width:14px}.extension-list-item>.details>.header-container>.header .extension-remote-badge>.codicon{color:currentColor;font-size:12px}.extension-list-item>.details>.header-container>.header .sync-ignored{display:flex}.extension-list-item>.details>.header-container>.header .sync-ignored>.codicon{font-size:100%}.extension-list-item>.details>.description{color:var(--vscode-descriptionForeground);line-height:normal;padding-right:11px}.hc-black .extension-list-item>.details>.description,.hc-light .extension-list-item>.details>.description,.monaco-list-row.selected .extension-list-item>.details>.description{color:unset}.extension-list-item>.details>.footer{display:flex;height:
|
|
3
|
+
var css = ".extension-bookmark-container{position:relative}.extension-bookmark-container>.extension-bookmark{position:absolute}.extension-list-item{box-sizing:border-box;display:flex;height:100%;overflow:hidden;padding:0 0 0 16px;width:100%}.extension-list-item>.icon-container{align-items:center;display:flex;position:relative}.extension-list-item>.icon-container>.icon{flex-shrink:0;height:42px;object-fit:contain;padding-right:14px;width:42px}.extension-list-item>.icon-container .extension-badge{bottom:5px;position:absolute}.extension-list-item>.icon-container .extension-badge.extension-remote-badge{align-items:center;border-radius:20px;display:flex;height:22px;justify-content:center;line-height:22px;right:5px;width:22px}.extension-list-item>.icon-container .extension-remote-badge .codicon{color:currentColor}.extension-list-item>.details{display:flex;flex:1;flex-direction:column;justify-content:center;overflow:hidden}.extension-list-item>.details>.header-container{display:flex;height:19px;overflow:hidden;padding-right:11px}.extension-list-item>.details>.header-container>.header{align-items:center;display:flex;flex:1;flex-wrap:nowrap;min-width:0;overflow:hidden}.extension-list-item>.details>.header-container>.header>.name{flex:1;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.extension-list-item.deprecated>.details>.header-container>.header>.name{text-decoration:line-through}.extension-list-item>.details>.header-container>.header>.activation-status,.extension-list-item>.details>.header-container>.header>.install-count,.extension-list-item>.details>.header-container>.header>.ratings{align-items:center;display:flex}.extension-list-item>.details>.header-container>.header>.install-count:not(:empty){font-size:80%;margin:0 6px}.extension-list-item>.details>.header-container>.header>.activation-status:not(:empty){font-size:80%;margin-left:2px}.extension-list-item>.details>.header-container>.header>.activation-status .activationTime,.extension-list-item>.details>.header-container>.header>.activation-status:not(:empty) .codicon{margin-right:2px}.extension-list-item>.details>.header-container>.header .codicon{font-size:120%;margin-right:3px;-webkit-mask:inherit}.extension-list-item>.details>.header-container>.header>.ratings{text-align:right}.extension-list-item>.details>.header-container>.header>.extension-remote-badge-container{display:none;margin-left:6px}.extension-list-item>.details>.header-container>.header .extension-remote-badge .codicon{margin-right:0}.extension-list-item>.details>.header-container>.header .extension-remote-badge{align-items:center;border-radius:20px;display:flex;height:14px;justify-content:center;line-height:14px;text-align:center;width:14px}.extension-list-item>.details>.header-container>.header .extension-remote-badge>.codicon{color:currentColor;font-size:12px}.extension-list-item>.details>.header-container>.header .sync-ignored{display:flex}.extension-list-item>.details>.header-container>.header .sync-ignored>.codicon{font-size:100%}.extension-list-item>.details>.description{color:var(--vscode-descriptionForeground);line-height:normal;padding-right:11px}.hc-black .extension-list-item>.details>.description,.hc-light .extension-list-item>.details>.description,.monaco-list-row.selected .extension-list-item>.details>.description{color:unset}.extension-list-item>.details>.footer{align-items:center;display:flex;height:24px;justify-content:flex-end;overflow:hidden;padding-right:7px}.extension-list-item>.details>.footer>.author{align-items:center;display:flex;flex:1;line-height:24px}.extension-list-item>.details>.footer>.author>.publisher-name{color:var(--vscode-descriptionForeground);font-size:90%;font-weight:600}.monaco-list-row.disabled .extension-list-item>.details>.footer>.author>.publisher-name{color:var(--vscode-disabledForeground)}.monaco-list-row.disabled.selected .extension-list-item>.details>.footer>.author>.publisher-name,.monaco-list-row.selected .extension-list-item>.details>.footer>.author>.publisher-name{color:unset}.extension-list-item>.details>.footer>.author>.publisher-name:not(:first-child){padding-left:1px}.extension-list-item .ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.extension-list-item>.details>.footer>.monaco-action-bar>.actions-container{flex-wrap:wrap-reverse}.extension-list-item>.details>.footer>.monaco-action-bar>.actions-container .action-label:not(.icon){border-radius:2px}.extension-list-item>.details>.footer>.monaco-action-bar>.actions-container .extension-action.label{line-height:16px;max-width:150px}.extension-list-item .footer .monaco-action-bar .action-item.action-dropdown-item.empty>.action-label{margin-right:4px}.extension-list-item .footer .monaco-action-bar .action-item.action-dropdown-item.empty>.action-dropdown-item-separator{display:none}.extension-list-item .monaco-action-bar>.actions-container>.action-item.disabled{min-width:0}.monaco-list-row.disabled .extension-list-item{color:var(--vscode-disabledForeground)}.monaco-list-row.disabled.selected .extension-list-item .details .description,.monaco-list-row.disabled.selected .extension-list-item .details .header .name{color:unset}.extension-list-item .monaco-action-bar .action-label.icon{padding:1px 2px}.hc-black .extension-list-item .monaco-action-bar .action-label.icon,.hc-light .extension-list-item .monaco-action-bar .action-label.icon{padding:0 2px}.extension-list-item .monaco-action-bar>.actions-container>.action-item.action-dropdown-item,.extension-list-item .monaco-action-bar>.actions-container>.action-item:not(.action-dropdown-item)>.extension-action{margin-left:6px}.extension-list-item .monaco-action-bar>.actions-container>.action-item.action-dropdown-item:not(.empty)>.extension-action.label{border-right-width:0}.extension-list-item .monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.action-dropdown-item-separator{height:16px;margin-top:2px}.extension-list-item .monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.action-dropdown-item-separator>div{height:10px}.extension-list-item .monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.monaco-dropdown .extension-action.label{border-left-width:0}.extension-list-item .monaco-action-bar>.actions-container>.action-item.action-dropdown-item.empty>.extension-action{border-radius:2px}.extension-list-item .monaco-action-bar>.actions-container>.action-item.action-dropdown-item:not(.empty)>.extension-action.label:not(.dropdown){border-radius:2px 0 0 2px}.extension-list-item .monaco-action-bar>.actions-container>.action-item.action-dropdown-item>.monaco-dropdown .extension-action{border-radius:0 2px 2px 0}";
|
|
4
4
|
n(css,{});
|
|
5
5
|
|
|
6
6
|
export { css, css as default };
|