@codingame/monaco-vscode-extension-gallery-service-override 15.0.2 → 16.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/index.js +10 -7
- package/package.json +23 -20
- package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.d.ts +1 -0
- package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +50 -21
- package/vscode/src/vs/platform/extensionManagement/common/allowedExtensionsService.js +5 -5
- package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryManifestService.d.ts +13 -0
- package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryManifestService.js +209 -0
- package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.d.ts +15 -8
- package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js +339 -184
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.d.ts +1 -1
- package/vscode/src/vs/platform/userDataProfile/common/userDataProfileIpc.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +19 -19
- package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.d.ts +1 -9
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +91 -113
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.js +17 -17
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js +15 -15
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +225 -183
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js +5 -5
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.js +7 -14
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js +4 -4
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.js +3 -3
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.d.ts +6 -5
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +110 -97
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +13 -13
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.d.ts +39 -10
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.js +202 -66
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.d.ts +10 -5
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +163 -126
- package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js +2 -2
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extension.css +235 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css +727 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css +161 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsWidgets.css +58 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/loading-dark.svg +31 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/loading-hc.svg +31 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/loading.svg +31 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/runtimeExtensionsEditor.css +70 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js +2 -2
- package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.js +22 -4
- package/vscode/src/vs/workbench/contrib/extensions/common/reportExtensionIssueAction.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.js +2 -2
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.d.ts +9 -1
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js +66 -20
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionGalleryManifestService.d.ts +7 -0
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionGalleryManifestService.js +27 -0
- package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +5 -5
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService.js +4 -4
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionGalleryService.d.ts +15 -0
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionGalleryService.js +36 -0
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementChannelClient.d.ts +1 -1
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.js +2 -2
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.js +56 -56
- package/vscode/src/vs/workbench/services/extensionManagement/common/media/extensionManagement.css +6 -0
- package/vscode/src/vs/workbench/services/extensionManagement/common/remoteExtensionManagementService.d.ts +1 -1
- package/vscode/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.d.ts +1 -0
- package/vscode/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.js +4 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extension.css.js +0 -6
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css.js +0 -6
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css.js +0 -6
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsWidgets.css.js +0 -6
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/runtimeExtensionsEditor.css.js +0 -6
- package/vscode/src/vs/workbench/services/extensionManagement/common/media/extensionManagement.css.js +0 -6
- /package/{assets → vscode/src/vs/workbench/contrib/extensions/browser/media}/theme-icon.png +0 -0
- /package/{assets → vscode/src/vs/workbench/services/extensionManagement/common/media}/defaultIcon.png +0 -0
package/index.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { SyncDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/descriptors';
|
|
4
4
|
import { IAllowedExtensionsService, IExtensionTipsService, IGlobalExtensionEnablementService, IExtensionGalleryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement.service';
|
|
5
|
-
import { ExtensionGalleryService } from './vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js';
|
|
6
5
|
import { GlobalExtensionEnablementService } from '@codingame/monaco-vscode-a2719803-af40-5ae9-a29f-8a2231c33056-common/vscode/vs/platform/extensionManagement/common/extensionEnablementService';
|
|
7
6
|
import { IExtensionsWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service';
|
|
8
7
|
import { getLocale } from '@codingame/monaco-vscode-7ba0af96-90c2-5e11-ad7f-befdbbf246c8-common/vscode/vs/platform/languagePacks/common/languagePacks';
|
|
@@ -42,14 +41,17 @@ import { AllowedExtensionsService } from './vscode/src/vs/platform/extensionMana
|
|
|
42
41
|
import { registerAssets } from '@codingame/monaco-vscode-api/assets';
|
|
43
42
|
import { getExtensionManifests } from '@codingame/monaco-vscode-api/extensions';
|
|
44
43
|
import { isLocaleAvailable } from '@codingame/monaco-vscode-api/l10n';
|
|
44
|
+
import { unsupported } from '@codingame/monaco-vscode-api/tools';
|
|
45
|
+
import { IExtensionGalleryManifestService } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionGalleryManifest.service';
|
|
46
|
+
import { WebExtensionGalleryManifestService } from './vscode/src/vs/workbench/services/extensionManagement/browser/extensionGalleryManifestService.js';
|
|
47
|
+
import { WorkbenchExtensionGalleryService } from './vscode/src/vs/workbench/services/extensionManagement/common/extensionGalleryService.js';
|
|
45
48
|
import './vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js';
|
|
46
49
|
import './vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js';
|
|
47
|
-
import { unsupported } from '@codingame/monaco-vscode-api/tools';
|
|
48
50
|
|
|
49
51
|
registerAssets({
|
|
50
|
-
'vs/workbench/services/extensionManagement/common/media/defaultIcon.png': new URL('./
|
|
51
|
-
'vs/workbench/contrib/extensions/browser/media/theme-icon.png': new URL('./
|
|
52
|
-
'vs/workbench/contrib/extensions/browser/media/language-icon.svg': new URL('./
|
|
52
|
+
'vs/workbench/services/extensionManagement/common/media/defaultIcon.png': new URL('./vscode/src/vs/workbench/services/extensionManagement/common/media/defaultIcon.png', import.meta.url).toString(),
|
|
53
|
+
'vs/workbench/contrib/extensions/browser/media/theme-icon.png': new URL('./vscode/src/vs/workbench/contrib/extensions/browser/media/theme-icon.png', import.meta.url).href,
|
|
54
|
+
'vs/workbench/contrib/extensions/browser/media/language-icon.svg': new URL('./vscode/src/vs/workbench/contrib/extensions/browser/media/theme-icon.png', import.meta.url).href
|
|
53
55
|
});
|
|
54
56
|
class EmptyRemoteAgentService {
|
|
55
57
|
constructor() {
|
|
@@ -97,7 +99,7 @@ class ExtensionsWorkbenchServiceOverride extends ExtensionsWorkbenchService {
|
|
|
97
99
|
}
|
|
98
100
|
function getServiceOverride(options = { webOnly: false }) {
|
|
99
101
|
return {
|
|
100
|
-
[IExtensionGalleryService.toString()]: new SyncDescriptor(
|
|
102
|
+
[IExtensionGalleryService.toString()]: new SyncDescriptor(WorkbenchExtensionGalleryService, [], true),
|
|
101
103
|
[IGlobalExtensionEnablementService.toString()]: new SyncDescriptor(GlobalExtensionEnablementService, [], true),
|
|
102
104
|
[IExtensionsWorkbenchService.toString()]: new SyncDescriptor(ExtensionsWorkbenchServiceOverride, [], true),
|
|
103
105
|
[IExtensionManagementServerService.toString()]: new SyncDescriptor(ExtensionManagementServerServiceOverride, [options.webOnly], true),
|
|
@@ -117,7 +119,8 @@ function getServiceOverride(options = { webOnly: false }) {
|
|
|
117
119
|
[IExtensionFeaturesManagementService.toString()]: new SyncDescriptor(ExtensionFeaturesManagementService, [], true),
|
|
118
120
|
[IExtensionsScannerService.toString()]: new SyncDescriptor(ExtensionsScannerService, [], true),
|
|
119
121
|
[IExtensionsProfileScannerService.toString()]: new SyncDescriptor(ExtensionsProfileScannerService, [], true),
|
|
120
|
-
[IAllowedExtensionsService.toString()]: new SyncDescriptor(AllowedExtensionsService, [], true)
|
|
122
|
+
[IAllowedExtensionsService.toString()]: new SyncDescriptor(AllowedExtensionsService, [], true),
|
|
123
|
+
[IExtensionGalleryManifestService.toString()]: new SyncDescriptor(WebExtensionGalleryManifestService, [], true)
|
|
121
124
|
};
|
|
122
125
|
}
|
|
123
126
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-extension-gallery-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "16.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - extension-gallery service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,25 +15,25 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-039b5553-0838-562a-97c2-30d6e54a7b42-common": "
|
|
19
|
-
"@codingame/monaco-vscode-0f5ced28-abde-558b-8652-db8e7d4d64aa-common": "
|
|
20
|
-
"@codingame/monaco-vscode-10418ae3-ee63-5700-a757-89cbe6564ee4-common": "
|
|
21
|
-
"@codingame/monaco-vscode-12c5f9eb-72d3-57ca-babd-5bef7aa9de3b-common": "
|
|
22
|
-
"@codingame/monaco-vscode-
|
|
23
|
-
"@codingame/monaco-vscode-
|
|
24
|
-
"@codingame/monaco-vscode-411e0589-fa79-504b-b32c-80a88847b23a-common": "
|
|
25
|
-
"@codingame/monaco-vscode-5e324391-11e3-5ceb-93ee-938e4098e4ad-common": "
|
|
26
|
-
"@codingame/monaco-vscode-65619f8f-0eab-5d8b-855a-43b6353fe527-common": "
|
|
27
|
-
"@codingame/monaco-vscode-
|
|
28
|
-
"@codingame/monaco-vscode-
|
|
29
|
-
"@codingame/monaco-vscode-
|
|
30
|
-
"@codingame/monaco-vscode-
|
|
31
|
-
"@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "
|
|
32
|
-
"@codingame/monaco-vscode-a2719803-af40-5ae9-a29f-8a2231c33056-common": "
|
|
33
|
-
"@codingame/monaco-vscode-
|
|
34
|
-
"@codingame/monaco-vscode-
|
|
35
|
-
"@codingame/monaco-vscode-
|
|
36
|
-
"@codingame/monaco-vscode-d7f659f5-da33-5ea8-a3b8-9b94f2cf5f33-common": "
|
|
18
|
+
"@codingame/monaco-vscode-039b5553-0838-562a-97c2-30d6e54a7b42-common": "16.0.0",
|
|
19
|
+
"@codingame/monaco-vscode-0f5ced28-abde-558b-8652-db8e7d4d64aa-common": "16.0.0",
|
|
20
|
+
"@codingame/monaco-vscode-10418ae3-ee63-5700-a757-89cbe6564ee4-common": "16.0.0",
|
|
21
|
+
"@codingame/monaco-vscode-12c5f9eb-72d3-57ca-babd-5bef7aa9de3b-common": "16.0.0",
|
|
22
|
+
"@codingame/monaco-vscode-3a00040f-b81b-50bc-88da-35f611c0bd1e-common": "16.0.0",
|
|
23
|
+
"@codingame/monaco-vscode-3e369455-cc41-54c6-86fb-8b7cd999a5da-common": "16.0.0",
|
|
24
|
+
"@codingame/monaco-vscode-411e0589-fa79-504b-b32c-80a88847b23a-common": "16.0.0",
|
|
25
|
+
"@codingame/monaco-vscode-5e324391-11e3-5ceb-93ee-938e4098e4ad-common": "16.0.0",
|
|
26
|
+
"@codingame/monaco-vscode-65619f8f-0eab-5d8b-855a-43b6353fe527-common": "16.0.0",
|
|
27
|
+
"@codingame/monaco-vscode-68b3311c-eb96-5711-8f72-f5f4b2e31932-common": "16.0.0",
|
|
28
|
+
"@codingame/monaco-vscode-7559b0be-bfa5-5fe6-b731-1973fe9fffa1-common": "16.0.0",
|
|
29
|
+
"@codingame/monaco-vscode-7ba0af96-90c2-5e11-ad7f-befdbbf246c8-common": "16.0.0",
|
|
30
|
+
"@codingame/monaco-vscode-805e9c2f-56b6-5a43-8b5b-d2dc2d3805fc-common": "16.0.0",
|
|
31
|
+
"@codingame/monaco-vscode-8c844347-a703-5de1-9eeb-5e0c7f503a58-common": "16.0.0",
|
|
32
|
+
"@codingame/monaco-vscode-a2719803-af40-5ae9-a29f-8a2231c33056-common": "16.0.0",
|
|
33
|
+
"@codingame/monaco-vscode-a7c9ae3c-16d2-5d17-86b2-981be7094566-common": "16.0.0",
|
|
34
|
+
"@codingame/monaco-vscode-api": "16.0.0",
|
|
35
|
+
"@codingame/monaco-vscode-b1110435-a331-5549-ab1e-aa3d763c3a1f-common": "16.0.0",
|
|
36
|
+
"@codingame/monaco-vscode-d7f659f5-da33-5ea8-a3b8-9b94f2cf5f33-common": "16.0.0"
|
|
37
37
|
},
|
|
38
38
|
"main": "index.js",
|
|
39
39
|
"module": "index.js",
|
|
@@ -42,6 +42,9 @@
|
|
|
42
42
|
".": {
|
|
43
43
|
"default": "./index.js"
|
|
44
44
|
},
|
|
45
|
+
"./vscode/*.css": {
|
|
46
|
+
"default": "./vscode/src/*.css"
|
|
47
|
+
},
|
|
45
48
|
"./vscode/*": {
|
|
46
49
|
"types": "./vscode/src/*.d.ts",
|
|
47
50
|
"default": "./vscode/src/*.js"
|
package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.d.ts
CHANGED
|
@@ -122,6 +122,7 @@ export declare abstract class AbstractExtensionManagementService extends Commont
|
|
|
122
122
|
protected abstract createInstallExtensionTask(manifest: IExtensionManifest, extension: URI | IGalleryExtension, options: InstallExtensionTaskOptions): IInstallExtensionTask;
|
|
123
123
|
protected abstract createUninstallExtensionTask(extension: ILocalExtension, options: UninstallExtensionTaskOptions): IUninstallExtensionTask;
|
|
124
124
|
protected abstract copyExtension(extension: ILocalExtension, fromProfileLocation: URI, toProfileLocation: URI, metadata?: Partial<Metadata>): Promise<ILocalExtension>;
|
|
125
|
+
protected abstract removeExtension(extension: ILocalExtension): Promise<void>;
|
|
125
126
|
}
|
|
126
127
|
export declare function toExtensionManagementError(error: Error, code?: ExtensionManagementErrorCode): ExtensionManagementError;
|
|
127
128
|
export declare abstract class AbstractExtensionTask<T> {
|
package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js
CHANGED
|
@@ -32,7 +32,7 @@ let CommontExtensionManagementService = class CommontExtensionManagementService
|
|
|
32
32
|
const allowedToInstall = this.allowedExtensionsService.isAllowed({ id: extension.identifier.id, publisherDisplayName: extension.publisherDisplayName });
|
|
33
33
|
if (allowedToInstall !== true) {
|
|
34
34
|
return (new MarkdownString(localize(
|
|
35
|
-
|
|
35
|
+
1749,
|
|
36
36
|
"This extension cannot be installed because {0}",
|
|
37
37
|
allowedToInstall.value
|
|
38
38
|
)));
|
|
@@ -40,12 +40,12 @@ let CommontExtensionManagementService = class CommontExtensionManagementService
|
|
|
40
40
|
if (!(await this.isExtensionPlatformCompatible(extension))) {
|
|
41
41
|
const learnLink = isWeb ? 'https://aka.ms/vscode-web-extensions-guide' : 'https://aka.ms/vscode-platform-specific-extensions';
|
|
42
42
|
return (new MarkdownString(`${( localize(
|
|
43
|
-
|
|
43
|
+
1750,
|
|
44
44
|
"The '{0}' extension is not available in {1} for the {2}.",
|
|
45
45
|
extension.displayName ?? extension.identifier.id,
|
|
46
46
|
this.productService.nameLong,
|
|
47
47
|
TargetPlatformToString(await this.getTargetPlatform())
|
|
48
|
-
))} [${( localize(
|
|
48
|
+
))} [${( localize(1751, "Learn Why"))}](${learnLink})`));
|
|
49
49
|
}
|
|
50
50
|
return true;
|
|
51
51
|
}
|
|
@@ -110,7 +110,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
110
110
|
}
|
|
111
111
|
async installGalleryExtensions(extensions) {
|
|
112
112
|
if (!this.galleryService.isEnabled()) {
|
|
113
|
-
throw ( new ExtensionManagementError(( localize(
|
|
113
|
+
throw ( new ExtensionManagementError(( localize(1752, "Marketplace is not enabled")), ExtensionManagementErrorCode.NotAllowed));
|
|
114
114
|
}
|
|
115
115
|
const results = [];
|
|
116
116
|
const installableExtensions = [];
|
|
@@ -522,9 +522,9 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
522
522
|
async checkAndGetCompatibleVersion(extension, sameVersion, installPreRelease, productVersion) {
|
|
523
523
|
let compatibleExtension;
|
|
524
524
|
const extensionsControlManifest = await this.getExtensionsControlManifest();
|
|
525
|
-
if (isMalicious(extension.identifier, extensionsControlManifest)) {
|
|
525
|
+
if (isMalicious(extension.identifier, extensionsControlManifest.malicious)) {
|
|
526
526
|
throw ( new ExtensionManagementError(( localize(
|
|
527
|
-
|
|
527
|
+
1753,
|
|
528
528
|
"Can't install '{0}' extension since it was reported to be problematic.",
|
|
529
529
|
extension.identifier.id
|
|
530
530
|
)), ExtensionManagementErrorCode.Malicious));
|
|
@@ -535,7 +535,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
535
535
|
compatibleExtension = (await this.galleryService.getExtensions([{ id: deprecationInfo.extension.id, preRelease: deprecationInfo.extension.preRelease }], { targetPlatform: await this.getTargetPlatform(), compatible: true, productVersion }, CancellationToken.None))[0];
|
|
536
536
|
if (!compatibleExtension) {
|
|
537
537
|
throw ( new ExtensionManagementError(( localize(
|
|
538
|
-
|
|
538
|
+
1754,
|
|
539
539
|
"Can't install '{0}' extension since it was deprecated and the replacement extension '{1}' can't be found.",
|
|
540
540
|
extension.identifier.id,
|
|
541
541
|
deprecationInfo.extension.id
|
|
@@ -546,7 +546,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
546
546
|
if ((await this.canInstall(extension)) !== true) {
|
|
547
547
|
const targetPlatform = await this.getTargetPlatform();
|
|
548
548
|
throw ( new ExtensionManagementError(( localize(
|
|
549
|
-
|
|
549
|
+
1750,
|
|
550
550
|
"The '{0}' extension is not available in {1} for the {2}.",
|
|
551
551
|
extension.identifier.id,
|
|
552
552
|
this.productService.nameLong,
|
|
@@ -558,7 +558,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
558
558
|
const incompatibleApiProposalsMessages = [];
|
|
559
559
|
if (!areApiProposalsCompatible(extension.properties.enabledApiProposals ?? [], incompatibleApiProposalsMessages)) {
|
|
560
560
|
throw ( new ExtensionManagementError(( localize(
|
|
561
|
-
|
|
561
|
+
1755,
|
|
562
562
|
"Can't install '{0}' extension. {1}",
|
|
563
563
|
extension.displayName ?? extension.identifier.id,
|
|
564
564
|
incompatibleApiProposalsMessages[0]
|
|
@@ -566,13 +566,13 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
566
566
|
}
|
|
567
567
|
if (!installPreRelease && extension.properties.isPreReleaseVersion && (await this.galleryService.getExtensions([extension.identifier], CancellationToken.None))[0]) {
|
|
568
568
|
throw ( new ExtensionManagementError(( localize(
|
|
569
|
-
|
|
569
|
+
1756,
|
|
570
570
|
"Can't install release version of '{0}' extension because it has no release version.",
|
|
571
571
|
extension.displayName ?? extension.identifier.id
|
|
572
572
|
)), ExtensionManagementErrorCode.ReleaseVersionNotFound));
|
|
573
573
|
}
|
|
574
574
|
throw ( new ExtensionManagementError(( localize(
|
|
575
|
-
|
|
575
|
+
1757,
|
|
576
576
|
"Can't install '{0}' extension because it is not compatible with the current version of {1} (version {2}).",
|
|
577
577
|
extension.identifier.id,
|
|
578
578
|
this.productService.nameLong,
|
|
@@ -637,7 +637,15 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
637
637
|
const allTasks = [];
|
|
638
638
|
const processedTasks = [];
|
|
639
639
|
const alreadyRequestedUninstalls = [];
|
|
640
|
+
const extensionsToRemove = [];
|
|
640
641
|
const installedExtensionsMap = ( new ResourceMap());
|
|
642
|
+
const getInstalledExtensions = async (profileLocation) => {
|
|
643
|
+
let installed = installedExtensionsMap.get(profileLocation);
|
|
644
|
+
if (!installed) {
|
|
645
|
+
installedExtensionsMap.set(profileLocation, installed = await this.getInstalled(ExtensionType.User, profileLocation));
|
|
646
|
+
}
|
|
647
|
+
return installed;
|
|
648
|
+
};
|
|
641
649
|
for (const { extension, options } of extensions) {
|
|
642
650
|
const uninstallOptions = {
|
|
643
651
|
...options,
|
|
@@ -651,13 +659,31 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
651
659
|
else {
|
|
652
660
|
allTasks.push(createUninstallExtensionTask(extension, uninstallOptions));
|
|
653
661
|
}
|
|
662
|
+
if (uninstallOptions.remove) {
|
|
663
|
+
extensionsToRemove.push(extension);
|
|
664
|
+
for (const profile of this.userDataProfilesService.profiles) {
|
|
665
|
+
if (this.uriIdentityService.extUri.isEqual(profile.extensionsResource, uninstallOptions.profileLocation)) {
|
|
666
|
+
continue;
|
|
667
|
+
}
|
|
668
|
+
const installed = await getInstalledExtensions(profile.extensionsResource);
|
|
669
|
+
const profileExtension = installed.find(e => areSameExtensions(e.identifier, extension.identifier));
|
|
670
|
+
if (profileExtension) {
|
|
671
|
+
const uninstallOptionsWithProfile = { ...uninstallOptions, profileLocation: profile.extensionsResource };
|
|
672
|
+
const uninstallExtensionTask = this.uninstallingExtensions.get(getUninstallExtensionTaskKey(profileExtension, uninstallOptionsWithProfile));
|
|
673
|
+
if (uninstallExtensionTask) {
|
|
674
|
+
this.logService.info('Extensions is already requested to uninstall', profileExtension.identifier.id);
|
|
675
|
+
alreadyRequestedUninstalls.push(uninstallExtensionTask.waitUntilTaskIsFinished());
|
|
676
|
+
}
|
|
677
|
+
else {
|
|
678
|
+
allTasks.push(createUninstallExtensionTask(profileExtension, uninstallOptionsWithProfile));
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
}
|
|
654
683
|
}
|
|
655
684
|
try {
|
|
656
685
|
for (const task of allTasks.slice(0)) {
|
|
657
|
-
|
|
658
|
-
if (!installed) {
|
|
659
|
-
installedExtensionsMap.set(task.options.profileLocation, installed = await this.getInstalled(ExtensionType.User, task.options.profileLocation));
|
|
660
|
-
}
|
|
686
|
+
const installed = await getInstalledExtensions(task.options.profileLocation);
|
|
661
687
|
if (task.options.donotIncludePack) {
|
|
662
688
|
this.logService.info('Uninstalling the extension without including packed extension', `${task.extension.identifier.id}@${task.extension.manifest.version}`);
|
|
663
689
|
}
|
|
@@ -707,6 +733,9 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
707
733
|
for (const task of allTasks) {
|
|
708
734
|
postUninstallExtension(task.extension, task.options);
|
|
709
735
|
}
|
|
736
|
+
if (extensionsToRemove.length) {
|
|
737
|
+
await this.joinAllSettled(( extensionsToRemove.map(extension => this.removeExtension(extension))));
|
|
738
|
+
}
|
|
710
739
|
}
|
|
711
740
|
catch (e) {
|
|
712
741
|
const error = toExtensionManagementError(e);
|
|
@@ -746,7 +775,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
746
775
|
if (extensionToUninstall === dependingExtension) {
|
|
747
776
|
if (dependents.length === 1) {
|
|
748
777
|
return localize(
|
|
749
|
-
|
|
778
|
+
1758,
|
|
750
779
|
"Cannot uninstall '{0}' extension. '{1}' extension depends on this.",
|
|
751
780
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
752
781
|
dependents[0].manifest.displayName || dependents[0].manifest.name
|
|
@@ -754,7 +783,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
754
783
|
}
|
|
755
784
|
if (dependents.length === 2) {
|
|
756
785
|
return localize(
|
|
757
|
-
|
|
786
|
+
1759,
|
|
758
787
|
"Cannot uninstall '{0}' extension. '{1}' and '{2}' extensions depend on this.",
|
|
759
788
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
760
789
|
dependents[0].manifest.displayName || dependents[0].manifest.name,
|
|
@@ -762,7 +791,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
762
791
|
);
|
|
763
792
|
}
|
|
764
793
|
return localize(
|
|
765
|
-
|
|
794
|
+
1760,
|
|
766
795
|
"Cannot uninstall '{0}' extension. '{1}', '{2}' and other extension depend on this.",
|
|
767
796
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
768
797
|
dependents[0].manifest.displayName || dependents[0].manifest.name,
|
|
@@ -771,7 +800,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
771
800
|
}
|
|
772
801
|
if (dependents.length === 1) {
|
|
773
802
|
return localize(
|
|
774
|
-
|
|
803
|
+
1761,
|
|
775
804
|
"Cannot uninstall '{0}' extension . It includes uninstalling '{1}' extension and '{2}' extension depends on this.",
|
|
776
805
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
777
806
|
dependingExtension.manifest.displayName
|
|
@@ -781,7 +810,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
781
810
|
}
|
|
782
811
|
if (dependents.length === 2) {
|
|
783
812
|
return localize(
|
|
784
|
-
|
|
813
|
+
1762,
|
|
785
814
|
"Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}' and '{3}' extensions depend on this.",
|
|
786
815
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
787
816
|
dependingExtension.manifest.displayName
|
|
@@ -791,7 +820,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
791
820
|
);
|
|
792
821
|
}
|
|
793
822
|
return localize(
|
|
794
|
-
|
|
823
|
+
1763,
|
|
795
824
|
"Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}', '{3}' and other extensions depend on this.",
|
|
796
825
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
797
826
|
dependingExtension.manifest.displayName
|
|
@@ -80,14 +80,14 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
|
|
|
80
80
|
`command:workbench.action.openSettings?${encodeURIComponent(JSON.stringify({ query: `@id:${AllowedExtensionsConfigKey}` }))}`
|
|
81
81
|
)).toString());
|
|
82
82
|
const extensionValue = this._allowedExtensionsConfigValue[id];
|
|
83
|
-
const extensionReason = ( new MarkdownString(( localize(
|
|
83
|
+
const extensionReason = ( new MarkdownString(( localize(1764, "it is not in the [allowed list]({0})", settingsCommandLink))));
|
|
84
84
|
if (!isUndefined(extensionValue)) {
|
|
85
85
|
if (isBoolean(extensionValue)) {
|
|
86
86
|
return extensionValue ? true : extensionReason;
|
|
87
87
|
}
|
|
88
88
|
if (extensionValue === 'stable' && prerelease) {
|
|
89
89
|
return (new MarkdownString(localize(
|
|
90
|
-
|
|
90
|
+
1765,
|
|
91
91
|
"the pre-release versions of this extension are not in the [allowed list]({0})",
|
|
92
92
|
settingsCommandLink
|
|
93
93
|
)));
|
|
@@ -107,7 +107,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
|
|
|
107
107
|
return false;
|
|
108
108
|
}))) {
|
|
109
109
|
return (new MarkdownString(localize(
|
|
110
|
-
|
|
110
|
+
1766,
|
|
111
111
|
"the version {0} of this extension is not in the [allowed list]({1})",
|
|
112
112
|
version,
|
|
113
113
|
settingsCommandLink
|
|
@@ -120,7 +120,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
|
|
|
120
120
|
if (!isUndefined(publisherValue)) {
|
|
121
121
|
if (isBoolean(publisherValue)) {
|
|
122
122
|
return publisherValue ? true : ( new MarkdownString(( localize(
|
|
123
|
-
|
|
123
|
+
1767,
|
|
124
124
|
"the extensions from this publisher are not in the [allowed list]({1})",
|
|
125
125
|
publisherKey,
|
|
126
126
|
settingsCommandLink
|
|
@@ -128,7 +128,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
|
|
|
128
128
|
}
|
|
129
129
|
if (publisherValue === 'stable' && prerelease) {
|
|
130
130
|
return (new MarkdownString(localize(
|
|
131
|
-
|
|
131
|
+
1768,
|
|
132
132
|
"the pre-release versions from this publisher are not in the [allowed list]({1})",
|
|
133
133
|
publisherKey,
|
|
134
134
|
settingsCommandLink
|
package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryManifestService.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
2
|
+
import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
3
|
+
import { IProductService } from "@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service";
|
|
4
|
+
import { IExtensionGalleryManifest } from "@codingame/monaco-vscode-d7f659f5-da33-5ea8-a3b8-9b94f2cf5f33-common/vscode/vs/platform/extensionManagement/common/extensionGalleryManifest";
|
|
5
|
+
import { IExtensionGalleryManifestService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionGalleryManifest.service";
|
|
6
|
+
export declare class ExtensionGalleryManifestService extends Disposable implements IExtensionGalleryManifestService {
|
|
7
|
+
protected readonly productService: IProductService;
|
|
8
|
+
readonly _serviceBrand: undefined;
|
|
9
|
+
readonly onDidChangeExtensionGalleryManifest: Event<any>;
|
|
10
|
+
constructor(productService: IProductService);
|
|
11
|
+
isEnabled(): boolean;
|
|
12
|
+
getExtensionGalleryManifest(): Promise<IExtensionGalleryManifest | null>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
4
|
+
import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
5
|
+
import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
|
|
6
|
+
import { ExtensionGalleryResourceType, Flag } from '@codingame/monaco-vscode-d7f659f5-da33-5ea8-a3b8-9b94f2cf5f33-common/vscode/vs/platform/extensionManagement/common/extensionGalleryManifest';
|
|
7
|
+
import { FilterType, SortBy } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement';
|
|
8
|
+
|
|
9
|
+
let ExtensionGalleryManifestService = class ExtensionGalleryManifestService extends Disposable {
|
|
10
|
+
constructor(productService) {
|
|
11
|
+
super();
|
|
12
|
+
this.productService = productService;
|
|
13
|
+
this.onDidChangeExtensionGalleryManifest = Event.None;
|
|
14
|
+
}
|
|
15
|
+
isEnabled() {
|
|
16
|
+
return !!this.productService.extensionsGallery?.serviceUrl;
|
|
17
|
+
}
|
|
18
|
+
async getExtensionGalleryManifest() {
|
|
19
|
+
const extensionsGallery = this.productService.extensionsGallery;
|
|
20
|
+
if (!extensionsGallery?.serviceUrl) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const resources = [
|
|
24
|
+
{
|
|
25
|
+
id: `${extensionsGallery.serviceUrl}/extensionquery`,
|
|
26
|
+
type: ExtensionGalleryResourceType.ExtensionQueryService
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: `${extensionsGallery.serviceUrl}/vscode/{publisher}/{name}/latest`,
|
|
30
|
+
type: ExtensionGalleryResourceType.ExtensionLatestVersionUri
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: `${extensionsGallery.serviceUrl}/publishers/{publisher}/extensions/{name}/{version}/stats?statType={statTypeName}`,
|
|
34
|
+
type: ExtensionGalleryResourceType.ExtensionStatisticsUri
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
id: `${extensionsGallery.serviceUrl}/itemName/{publisher}.{name}/version/{version}/statType/{statTypeValue}/vscodewebextension`,
|
|
38
|
+
type: ExtensionGalleryResourceType.WebExtensionStatisticsUri
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
if (extensionsGallery.publisherUrl) {
|
|
42
|
+
resources.push({
|
|
43
|
+
id: `${extensionsGallery.publisherUrl}/{publisher}`,
|
|
44
|
+
type: ExtensionGalleryResourceType.PublisherViewUri
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
if (extensionsGallery.itemUrl) {
|
|
48
|
+
resources.push({
|
|
49
|
+
id: `${extensionsGallery.itemUrl}/?itemName={publisher}.{name}`,
|
|
50
|
+
type: ExtensionGalleryResourceType.ExtensionDetailsViewUri
|
|
51
|
+
});
|
|
52
|
+
resources.push({
|
|
53
|
+
id: `${extensionsGallery.itemUrl}/?itemName={publisher}.{name}&ssr=false#review-details`,
|
|
54
|
+
type: ExtensionGalleryResourceType.ExtensionRatingViewUri
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (extensionsGallery.resourceUrlTemplate) {
|
|
58
|
+
resources.push({
|
|
59
|
+
id: extensionsGallery.resourceUrlTemplate,
|
|
60
|
+
type: ExtensionGalleryResourceType.ExtensionResourceUri
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const filtering = [
|
|
64
|
+
{
|
|
65
|
+
name: FilterType.Tag,
|
|
66
|
+
value: 1,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: FilterType.ExtensionId,
|
|
70
|
+
value: 4,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: FilterType.Category,
|
|
74
|
+
value: 5,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: FilterType.ExtensionName,
|
|
78
|
+
value: 7,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: FilterType.Target,
|
|
82
|
+
value: 8,
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: FilterType.Featured,
|
|
86
|
+
value: 9,
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: FilterType.SearchText,
|
|
90
|
+
value: 10,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: FilterType.ExcludeWithFlags,
|
|
94
|
+
value: 12,
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
const sorting = [
|
|
98
|
+
{
|
|
99
|
+
name: SortBy.NoneOrRelevance,
|
|
100
|
+
value: 0,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: SortBy.LastUpdatedDate,
|
|
104
|
+
value: 1,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
name: SortBy.Title,
|
|
108
|
+
value: 2,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: SortBy.PublisherName,
|
|
112
|
+
value: 3,
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: SortBy.InstallCount,
|
|
116
|
+
value: 4,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
name: SortBy.AverageRating,
|
|
120
|
+
value: 6,
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: SortBy.PublishedDate,
|
|
124
|
+
value: 10,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: SortBy.WeightedRating,
|
|
128
|
+
value: 12,
|
|
129
|
+
},
|
|
130
|
+
];
|
|
131
|
+
const flags = [
|
|
132
|
+
{
|
|
133
|
+
name: Flag.None,
|
|
134
|
+
value: 0x0,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: Flag.IncludeVersions,
|
|
138
|
+
value: 0x1,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: Flag.IncludeFiles,
|
|
142
|
+
value: 0x2,
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: Flag.IncludeCategoryAndTags,
|
|
146
|
+
value: 0x4,
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
name: Flag.IncludeSharedAccounts,
|
|
150
|
+
value: 0x8,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
name: Flag.IncludeVersionProperties,
|
|
154
|
+
value: 0x10,
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: Flag.ExcludeNonValidated,
|
|
158
|
+
value: 0x20,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: Flag.IncludeInstallationTargets,
|
|
162
|
+
value: 0x40,
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: Flag.IncludeAssetUri,
|
|
166
|
+
value: 0x80,
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: Flag.IncludeStatistics,
|
|
170
|
+
value: 0x100,
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
name: Flag.IncludeLatestVersionOnly,
|
|
174
|
+
value: 0x200,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: Flag.Unpublished,
|
|
178
|
+
value: 0x1000,
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: Flag.IncludeNameConflictInfo,
|
|
182
|
+
value: 0x8000,
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
name: Flag.IncludeLatestPrereleaseAndStableVersionOnly,
|
|
186
|
+
value: 0x10000,
|
|
187
|
+
},
|
|
188
|
+
];
|
|
189
|
+
return {
|
|
190
|
+
version: '',
|
|
191
|
+
resources,
|
|
192
|
+
capabilities: {
|
|
193
|
+
extensionQuery: {
|
|
194
|
+
filtering,
|
|
195
|
+
sorting,
|
|
196
|
+
flags,
|
|
197
|
+
},
|
|
198
|
+
signing: {
|
|
199
|
+
allRepositorySigned: true,
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
ExtensionGalleryManifestService = ( __decorate([
|
|
206
|
+
( __param(0, IProductService))
|
|
207
|
+
], ExtensionGalleryManifestService));
|
|
208
|
+
|
|
209
|
+
export { ExtensionGalleryManifestService };
|