@codingame/monaco-vscode-extension-gallery-service-override 1.85.6 → 2.0.0-v2.1
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 +4 -4
- package/package.json +4 -4
- package/vscode/src/vs/base/common/paging.js +118 -0
- package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +28 -28
- package/vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js +15 -15
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagementIpc.js +3 -3
- package/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.js +4 -4
- package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +39 -39
- package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js +3 -3
- package/vscode/src/vs/workbench/contrib/extensions/browser/deprecatedExtensionsChecker.js +6 -6
- package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +52 -52
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.js +3 -3
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js +12 -12
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js +8 -8
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +30 -30
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js +3 -3
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js +5 -5
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.js +5 -5
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js +8 -8
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsList.js +10 -10
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js +3 -3
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewer.js +34 -34
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +31 -31
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +31 -31
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.js +25 -25
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +48 -48
- package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js +14 -14
- package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.js +2 -2
- package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.js +2 -2
- package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js +4 -4
- package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.js +2 -2
- package/vscode/src/vs/workbench/contrib/extensions/common/reportExtensionIssueAction.js +3 -3
- package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.js +3 -3
- package/vscode/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.js +7 -7
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js +11 -11
- package/vscode/src/vs/workbench/services/extensionManagement/browser/webExtensionsScannerService.js +24 -24
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementChannelClient.js +4 -4
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.js +5 -5
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.js +18 -18
- package/vscode/src/vs/workbench/services/extensionManagement/common/remoteExtensionManagementService.js +2 -2
- package/vscode/src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.js +12 -12
- package/vscode/src/vs/workbench/services/extensionRecommendations/common/extensionIgnoredRecommendationsService.js +4 -4
package/extensionGallery.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate, __param } from './external/tslib/tslib.es6.js';
|
|
2
|
-
import { SyncDescriptor } from '
|
|
2
|
+
import { SyncDescriptor } from 'vscode/vscode/vs/platform/instantiation/common/descriptors';
|
|
3
3
|
import { IExtensionGalleryService, IGlobalExtensionEnablementService, IExtensionManagementService, IExtensionTipsService } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
|
|
4
4
|
import { ExtensionGalleryService } from './vscode/src/vs/platform/extensionManagement/common/extensionGalleryService.js';
|
|
5
5
|
import { GlobalExtensionEnablementService } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionEnablementService';
|
|
@@ -13,7 +13,7 @@ import { WebExtensionsScannerService } from './vscode/src/vs/workbench/services/
|
|
|
13
13
|
import { IExtensionRecommendationNotificationService } from 'vscode/vscode/vs/platform/extensionRecommendations/common/extensionRecommendations';
|
|
14
14
|
import { IIgnoredExtensionsManagementService, IgnoredExtensionsManagementService } from 'vscode/vscode/vs/platform/userDataSync/common/ignoredExtensions';
|
|
15
15
|
import { IExtensionManifestPropertiesService, ExtensionManifestPropertiesService } from 'vscode/vscode/vs/workbench/services/extensions/common/extensionManifestPropertiesService';
|
|
16
|
-
import { IBuiltinExtensionsScannerService } from '
|
|
16
|
+
import { IBuiltinExtensionsScannerService } from 'vscode/vscode/vs/platform/extensions/common/extensions';
|
|
17
17
|
import { BuiltinExtensionsScannerService } from './vscode/src/vs/workbench/services/extensionManagement/browser/builtinExtensionsScannerService.js';
|
|
18
18
|
import { ExtensionIgnoredRecommendationsService } from './vscode/src/vs/workbench/services/extensionRecommendations/common/extensionIgnoredRecommendationsService.js';
|
|
19
19
|
import { IWorkspaceExtensionsConfigService, WorkspaceExtensionsConfigService } from 'vscode/vscode/vs/workbench/services/extensionRecommendations/common/workspaceExtensionsConfig';
|
|
@@ -26,8 +26,8 @@ import './vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribu
|
|
|
26
26
|
import './vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js';
|
|
27
27
|
import { IExtensionUrlHandler, ExtensionUrlHandler } from 'vscode/vscode/vs/workbench/services/extensions/browser/extensionUrlHandler';
|
|
28
28
|
import { IRemoteAgentService } from 'vscode/vscode/vs/workbench/services/remote/common/remoteAgentService';
|
|
29
|
-
import { IInstantiationService } from '
|
|
30
|
-
import { ILabelService } from '
|
|
29
|
+
import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
30
|
+
import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label';
|
|
31
31
|
import { registerAssets } from 'vscode/assets';
|
|
32
32
|
|
|
33
33
|
registerAssets({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-extension-gallery-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-v2.1",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "CodinGame",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "git
|
|
12
|
+
"url": "git@github.com:CodinGame/monaco-vscode-api.git"
|
|
13
13
|
},
|
|
14
14
|
"type": "module",
|
|
15
15
|
"private": false,
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"module": "index.js",
|
|
19
19
|
"types": "index.d.ts",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"vscode": "npm:@codingame/monaco-vscode-api@
|
|
22
|
-
"
|
|
21
|
+
"vscode": "npm:@codingame/monaco-vscode-api@2.0.0-v2.1",
|
|
22
|
+
"vscode-marked": "npm:marked@=3.0.2",
|
|
23
23
|
"vscode-semver": "npm:semver@=5.5.0"
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { range } from 'vscode/vscode/vs/base/common/arrays';
|
|
2
|
+
import { CancellationTokenSource } from 'vscode/vscode/vs/base/common/cancellation';
|
|
3
|
+
import { canceled } from 'vscode/vscode/vs/base/common/errors';
|
|
4
|
+
|
|
5
|
+
function createPage(elements) {
|
|
6
|
+
return {
|
|
7
|
+
isResolved: !!elements,
|
|
8
|
+
promise: null,
|
|
9
|
+
cts: null,
|
|
10
|
+
promiseIndexes: ( new Set()),
|
|
11
|
+
elements: elements || []
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function singlePagePager(elements) {
|
|
15
|
+
return {
|
|
16
|
+
firstPage: elements,
|
|
17
|
+
total: elements.length,
|
|
18
|
+
pageSize: elements.length,
|
|
19
|
+
getPage: (pageIndex, cancellationToken) => {
|
|
20
|
+
return Promise.resolve(elements);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
class PagedModel {
|
|
25
|
+
get length() { return this.pager.total; }
|
|
26
|
+
constructor(arg) {
|
|
27
|
+
this.pages = [];
|
|
28
|
+
this.pager = Array.isArray(arg) ? singlePagePager(arg) : arg;
|
|
29
|
+
const totalPages = Math.ceil(this.pager.total / this.pager.pageSize);
|
|
30
|
+
this.pages = [
|
|
31
|
+
createPage(this.pager.firstPage.slice()),
|
|
32
|
+
...( range(totalPages - 1).map(() => createPage()))
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
isResolved(index) {
|
|
36
|
+
const pageIndex = Math.floor(index / this.pager.pageSize);
|
|
37
|
+
const page = this.pages[pageIndex];
|
|
38
|
+
return !!page.isResolved;
|
|
39
|
+
}
|
|
40
|
+
get(index) {
|
|
41
|
+
const pageIndex = Math.floor(index / this.pager.pageSize);
|
|
42
|
+
const indexInPage = index % this.pager.pageSize;
|
|
43
|
+
const page = this.pages[pageIndex];
|
|
44
|
+
return page.elements[indexInPage];
|
|
45
|
+
}
|
|
46
|
+
resolve(index, cancellationToken) {
|
|
47
|
+
if (cancellationToken.isCancellationRequested) {
|
|
48
|
+
return Promise.reject(canceled());
|
|
49
|
+
}
|
|
50
|
+
const pageIndex = Math.floor(index / this.pager.pageSize);
|
|
51
|
+
const indexInPage = index % this.pager.pageSize;
|
|
52
|
+
const page = this.pages[pageIndex];
|
|
53
|
+
if (page.isResolved) {
|
|
54
|
+
return Promise.resolve(page.elements[indexInPage]);
|
|
55
|
+
}
|
|
56
|
+
if (!page.promise) {
|
|
57
|
+
page.cts = ( new CancellationTokenSource());
|
|
58
|
+
page.promise = this.pager.getPage(pageIndex, page.cts.token)
|
|
59
|
+
.then(elements => {
|
|
60
|
+
page.elements = elements;
|
|
61
|
+
page.isResolved = true;
|
|
62
|
+
page.promise = null;
|
|
63
|
+
page.cts = null;
|
|
64
|
+
}, err => {
|
|
65
|
+
page.isResolved = false;
|
|
66
|
+
page.promise = null;
|
|
67
|
+
page.cts = null;
|
|
68
|
+
return Promise.reject(err);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const listener = cancellationToken.onCancellationRequested(() => {
|
|
72
|
+
if (!page.cts) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
page.promiseIndexes.delete(index);
|
|
76
|
+
if (page.promiseIndexes.size === 0) {
|
|
77
|
+
page.cts.cancel();
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
page.promiseIndexes.add(index);
|
|
81
|
+
return page.promise.then(() => page.elements[indexInPage])
|
|
82
|
+
.finally(() => listener.dispose());
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
class DelayedPagedModel {
|
|
86
|
+
get length() { return this.model.length; }
|
|
87
|
+
constructor(model, timeout = 500) {
|
|
88
|
+
this.model = model;
|
|
89
|
+
this.timeout = timeout;
|
|
90
|
+
}
|
|
91
|
+
isResolved(index) {
|
|
92
|
+
return this.model.isResolved(index);
|
|
93
|
+
}
|
|
94
|
+
get(index) {
|
|
95
|
+
return this.model.get(index);
|
|
96
|
+
}
|
|
97
|
+
resolve(index, cancellationToken) {
|
|
98
|
+
return ( new Promise((c, e) => {
|
|
99
|
+
if (cancellationToken.isCancellationRequested) {
|
|
100
|
+
return e(canceled());
|
|
101
|
+
}
|
|
102
|
+
const timer = setTimeout(() => {
|
|
103
|
+
if (cancellationToken.isCancellationRequested) {
|
|
104
|
+
return e(canceled());
|
|
105
|
+
}
|
|
106
|
+
timeoutCancellation.dispose();
|
|
107
|
+
this.model.resolve(index, cancellationToken).then(c, e);
|
|
108
|
+
}, this.timeout);
|
|
109
|
+
const timeoutCancellation = cancellationToken.onCancellationRequested(() => {
|
|
110
|
+
clearTimeout(timer);
|
|
111
|
+
timeoutCancellation.dispose();
|
|
112
|
+
e(canceled());
|
|
113
|
+
});
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export { DelayedPagedModel, PagedModel, singlePagePager };
|
package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import { distinct, isNonEmptyArray } from '
|
|
3
|
-
import { Barrier, createCancelablePromise } from '
|
|
4
|
-
import { CancellationToken } from '
|
|
5
|
-
import { getErrorMessage, CancellationError } from '
|
|
6
|
-
import { Emitter, Event } from '
|
|
7
|
-
import { Disposable, toDisposable } from '
|
|
8
|
-
import { isWeb } from '
|
|
9
|
-
import { isDefined } from '
|
|
10
|
-
import { URI } from '
|
|
11
|
-
import
|
|
2
|
+
import { distinct, isNonEmptyArray } from 'vscode/vscode/vs/base/common/arrays';
|
|
3
|
+
import { Barrier, createCancelablePromise } from 'vscode/vscode/vs/base/common/async';
|
|
4
|
+
import { CancellationToken } from 'vscode/vscode/vs/base/common/cancellation';
|
|
5
|
+
import { getErrorMessage, CancellationError } from 'vscode/vscode/vs/base/common/errors';
|
|
6
|
+
import { Emitter, Event } from 'vscode/vscode/vs/base/common/event';
|
|
7
|
+
import { Disposable, toDisposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
8
|
+
import { isWeb } from 'vscode/vscode/vs/base/common/platform';
|
|
9
|
+
import { isDefined } from 'vscode/vscode/vs/base/common/types';
|
|
10
|
+
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
11
|
+
import { localizeWithPath } from 'vscode/vscode/vs/nls';
|
|
12
12
|
import { isTargetPlatformCompatible, ExtensionManagementError, ExtensionManagementErrorCode, EXTENSION_INSTALL_DEP_PACK_CONTEXT, TargetPlatformToString, IExtensionGalleryService } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
|
|
13
13
|
import { areSameExtensions, getGalleryExtensionTelemetryData, adoptToGalleryExtensionId, getGalleryExtensionId, ExtensionKey, getLocalExtensionTelemetryData } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
|
|
14
|
-
import { isApplicationScopedExtension } from '
|
|
15
|
-
import { ILogService } from '
|
|
16
|
-
import { IProductService } from '
|
|
17
|
-
import { ITelemetryService } from '
|
|
18
|
-
import { IUriIdentityService } from '
|
|
19
|
-
import { IUserDataProfilesService } from '
|
|
14
|
+
import { isApplicationScopedExtension } from 'vscode/vscode/vs/platform/extensions/common/extensions';
|
|
15
|
+
import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
|
|
16
|
+
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
|
|
17
|
+
import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
|
|
18
|
+
import { IUriIdentityService } from 'vscode/vscode/vs/platform/uriIdentity/common/uriIdentity';
|
|
19
|
+
import { IUserDataProfilesService } from 'vscode/vscode/vs/platform/userDataProfile/common/userDataProfile';
|
|
20
20
|
|
|
21
21
|
let AbstractExtensionManagementService = class AbstractExtensionManagementService extends Disposable {
|
|
22
22
|
get onInstallExtension() { return this._onInstallExtension.event; }
|
|
@@ -72,7 +72,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
72
72
|
}
|
|
73
73
|
async installGalleryExtensions(extensions) {
|
|
74
74
|
if (!this.galleryService.isEnabled()) {
|
|
75
|
-
throw new ExtensionManagementError(
|
|
75
|
+
throw new ExtensionManagementError(localizeWithPath('vs/platform/extensionManagement/common/abstractExtensionManagementService', 'MarketPlaceDisabled', "Marketplace is not enabled"), ExtensionManagementErrorCode.Internal);
|
|
76
76
|
}
|
|
77
77
|
const results = [];
|
|
78
78
|
const installableExtensions = [];
|
|
@@ -429,27 +429,27 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
429
429
|
let compatibleExtension;
|
|
430
430
|
const extensionsControlManifest = await this.getExtensionsControlManifest();
|
|
431
431
|
if (( extensionsControlManifest.malicious.some(identifier => areSameExtensions(extension.identifier, identifier)))) {
|
|
432
|
-
throw new ExtensionManagementError(
|
|
432
|
+
throw new ExtensionManagementError(localizeWithPath('vs/platform/extensionManagement/common/abstractExtensionManagementService', 'malicious extension', "Can't install '{0}' extension since it was reported to be problematic.", extension.identifier.id), ExtensionManagementErrorCode.Malicious);
|
|
433
433
|
}
|
|
434
434
|
const deprecationInfo = extensionsControlManifest.deprecated[extension.identifier.id.toLowerCase()];
|
|
435
435
|
if (deprecationInfo?.extension?.autoMigrate) {
|
|
436
436
|
this.logService.info(`The '${extension.identifier.id}' extension is deprecated, fetching the compatible '${deprecationInfo.extension.id}' extension instead.`);
|
|
437
437
|
compatibleExtension = (await this.galleryService.getExtensions([{ id: deprecationInfo.extension.id, preRelease: deprecationInfo.extension.preRelease }], { targetPlatform: await this.getTargetPlatform(), compatible: true }, CancellationToken.None))[0];
|
|
438
438
|
if (!compatibleExtension) {
|
|
439
|
-
throw new ExtensionManagementError(
|
|
439
|
+
throw new ExtensionManagementError(localizeWithPath('vs/platform/extensionManagement/common/abstractExtensionManagementService', 'notFoundDeprecatedReplacementExtension', "Can't install '{0}' extension since it was deprecated and the replacement extension '{1}' can't be found.", extension.identifier.id, deprecationInfo.extension.id), ExtensionManagementErrorCode.Deprecated);
|
|
440
440
|
}
|
|
441
441
|
}
|
|
442
442
|
else {
|
|
443
443
|
if (!(await this.canInstall(extension))) {
|
|
444
444
|
const targetPlatform = await this.getTargetPlatform();
|
|
445
|
-
throw new ExtensionManagementError(
|
|
445
|
+
throw new ExtensionManagementError(localizeWithPath('vs/platform/extensionManagement/common/abstractExtensionManagementService', 'incompatible platform', "The '{0}' extension is not available in {1} for {2}.", extension.identifier.id, this.productService.nameLong, TargetPlatformToString(targetPlatform)), ExtensionManagementErrorCode.IncompatibleTargetPlatform);
|
|
446
446
|
}
|
|
447
447
|
compatibleExtension = await this.getCompatibleVersion(extension, sameVersion, installPreRelease);
|
|
448
448
|
if (!compatibleExtension) {
|
|
449
449
|
if (!installPreRelease && extension.properties.isPreReleaseVersion && (await this.galleryService.getExtensions([extension.identifier], CancellationToken.None))[0]) {
|
|
450
|
-
throw new ExtensionManagementError(
|
|
450
|
+
throw new ExtensionManagementError(localizeWithPath('vs/platform/extensionManagement/common/abstractExtensionManagementService', 'notFoundReleaseExtension', "Can't install release version of '{0}' extension because it has no release version.", extension.identifier.id), ExtensionManagementErrorCode.ReleaseVersionNotFound);
|
|
451
451
|
}
|
|
452
|
-
throw new ExtensionManagementError(
|
|
452
|
+
throw new ExtensionManagementError(localizeWithPath('vs/platform/extensionManagement/common/abstractExtensionManagementService', 'notFoundCompatibleDependency', "Can't install '{0}' extension because it is not compatible with the current version of {1} (version {2}).", extension.identifier.id, this.productService.nameLong, this.productService.version), ExtensionManagementErrorCode.Incompatible);
|
|
453
453
|
}
|
|
454
454
|
}
|
|
455
455
|
this.logService.info('Getting Manifest...', compatibleExtension.identifier.id);
|
|
@@ -608,7 +608,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
608
608
|
getDependentsErrorMessage(dependingExtension, dependents, extensionToUninstall) {
|
|
609
609
|
if (extensionToUninstall === dependingExtension) {
|
|
610
610
|
if (dependents.length === 1) {
|
|
611
|
-
return (
|
|
611
|
+
return ( localizeWithPath(
|
|
612
612
|
'vs/platform/extensionManagement/common/abstractExtensionManagementService',
|
|
613
613
|
'singleDependentError',
|
|
614
614
|
"Cannot uninstall '{0}' extension. '{1}' extension depends on this.",
|
|
@@ -617,7 +617,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
617
617
|
));
|
|
618
618
|
}
|
|
619
619
|
if (dependents.length === 2) {
|
|
620
|
-
return (
|
|
620
|
+
return ( localizeWithPath(
|
|
621
621
|
'vs/platform/extensionManagement/common/abstractExtensionManagementService',
|
|
622
622
|
'twoDependentsError',
|
|
623
623
|
"Cannot uninstall '{0}' extension. '{1}' and '{2}' extensions depend on this.",
|
|
@@ -626,7 +626,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
626
626
|
dependents[1].manifest.displayName || dependents[1].manifest.name
|
|
627
627
|
));
|
|
628
628
|
}
|
|
629
|
-
return (
|
|
629
|
+
return ( localizeWithPath(
|
|
630
630
|
'vs/platform/extensionManagement/common/abstractExtensionManagementService',
|
|
631
631
|
'multipleDependentsError',
|
|
632
632
|
"Cannot uninstall '{0}' extension. '{1}', '{2}' and other extension depend on this.",
|
|
@@ -636,7 +636,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
636
636
|
));
|
|
637
637
|
}
|
|
638
638
|
if (dependents.length === 1) {
|
|
639
|
-
return (
|
|
639
|
+
return ( localizeWithPath(
|
|
640
640
|
'vs/platform/extensionManagement/common/abstractExtensionManagementService',
|
|
641
641
|
'singleIndirectDependentError',
|
|
642
642
|
"Cannot uninstall '{0}' extension . It includes uninstalling '{1}' extension and '{2}' extension depends on this.",
|
|
@@ -647,7 +647,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
647
647
|
));
|
|
648
648
|
}
|
|
649
649
|
if (dependents.length === 2) {
|
|
650
|
-
return (
|
|
650
|
+
return ( localizeWithPath(
|
|
651
651
|
'vs/platform/extensionManagement/common/abstractExtensionManagementService',
|
|
652
652
|
'twoIndirectDependentsError',
|
|
653
653
|
"Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}' and '{3}' extensions depend on this.",
|
|
@@ -658,7 +658,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
658
658
|
dependents[1].manifest.displayName || dependents[1].manifest.name
|
|
659
659
|
));
|
|
660
660
|
}
|
|
661
|
-
return (
|
|
661
|
+
return ( localizeWithPath(
|
|
662
662
|
'vs/platform/extensionManagement/common/abstractExtensionManagementService',
|
|
663
663
|
'multipleIndirectDependentsError',
|
|
664
664
|
"Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}', '{3}' and other extensions depend on this.",
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import { distinct } from '
|
|
3
|
-
import { CancellationToken } from '
|
|
4
|
-
import { getErrorMessage, isCancellationError, CancellationError } from '
|
|
5
|
-
import { isWeb, platform } from '
|
|
6
|
-
import { arch } from '
|
|
7
|
-
import { isBoolean } from '
|
|
8
|
-
import { URI } from '
|
|
9
|
-
import { IConfigurationService } from '
|
|
10
|
-
import { IEnvironmentService } from '
|
|
2
|
+
import { distinct } from 'vscode/vscode/vs/base/common/arrays';
|
|
3
|
+
import { CancellationToken } from 'vscode/vscode/vs/base/common/cancellation';
|
|
4
|
+
import { getErrorMessage, isCancellationError, CancellationError } from 'vscode/vscode/vs/base/common/errors';
|
|
5
|
+
import { isWeb, platform } from 'vscode/vscode/vs/base/common/platform';
|
|
6
|
+
import { arch } from 'vscode/vscode/vs/base/common/process';
|
|
7
|
+
import { isBoolean } from 'vscode/vscode/vs/base/common/types';
|
|
8
|
+
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
9
|
+
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
|
|
10
|
+
import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/common/environment';
|
|
11
11
|
import { getTargetPlatform, isNotWebExtensionInWebTargetPlatform, isTargetPlatformCompatible, toTargetPlatform, WEB_EXTENSION_TAG } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
|
|
12
12
|
import { getGalleryExtensionId, areSameExtensions, getGalleryExtensionTelemetryData, adoptToGalleryExtensionId } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
|
|
13
13
|
import { isEngineValid } from 'vscode/vscode/vs/platform/extensions/common/extensionValidator';
|
|
14
|
-
import { IFileService } from '
|
|
15
|
-
import { ILogService } from '
|
|
16
|
-
import { IProductService } from '
|
|
14
|
+
import { IFileService } from 'vscode/vscode/vs/platform/files/common/files';
|
|
15
|
+
import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
|
|
16
|
+
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
|
|
17
17
|
import { asJson, isSuccess, asTextOrError, IRequestService } from 'vscode/vscode/vs/platform/request/common/request';
|
|
18
18
|
import { resolveMarketplaceHeaders } from '../../externalServices/common/marketplace.js';
|
|
19
|
-
import { IStorageService } from '
|
|
20
|
-
import { ITelemetryService } from '
|
|
21
|
-
import { StopWatch } from '
|
|
19
|
+
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
20
|
+
import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
|
|
21
|
+
import { StopWatch } from 'vscode/vscode/vs/base/common/stopwatch';
|
|
22
22
|
|
|
23
23
|
const CURRENT_TARGET_PLATFORM = isWeb ? "web" : getTargetPlatform(platform, arch);
|
|
24
24
|
const ACTIVITY_HEADER_NAME = 'X-Market-Search-Activity-Id';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Emitter } from '
|
|
2
|
-
import { Disposable } from '
|
|
3
|
-
import { URI } from '
|
|
1
|
+
import { Emitter } from 'vscode/vscode/vs/base/common/event';
|
|
2
|
+
import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
3
|
+
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
4
4
|
import { transformAndReviveIncomingURIs, DefaultURITransformer } from 'vscode/vscode/vs/base/common/uriIpc';
|
|
5
5
|
import { isTargetPlatformCompatible } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
|
|
6
6
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import { Disposable } from '
|
|
3
|
-
import { joinPath } from '
|
|
4
|
-
import { IFileService } from '
|
|
5
|
-
import { IProductService } from '
|
|
2
|
+
import { Disposable } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
3
|
+
import { joinPath } from 'vscode/vscode/vs/base/common/resources';
|
|
4
|
+
import { IFileService } from 'vscode/vscode/vs/platform/files/common/files';
|
|
5
|
+
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
|
|
6
6
|
|
|
7
7
|
let ExtensionTipsService = class ExtensionTipsService extends Disposable {
|
|
8
8
|
constructor(fileService, productService) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CancellationToken } from '
|
|
1
|
+
import { CancellationToken } from 'vscode/vscode/vs/base/common/cancellation';
|
|
2
2
|
import { areSameExtensions, getExtensionId } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
|
|
3
3
|
|
|
4
4
|
async function migrateUnsupportedExtensions(extensionManagementService, galleryService, extensionStorageService, extensionEnablementService, logService) {
|
package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import { append, $, addDisposableListener, clearNode } from '
|
|
3
|
-
import { ActionBar } from '
|
|
4
|
-
import { renderLabelWithIcons } from '
|
|
5
|
-
import { Action, Separator } from '
|
|
6
|
-
import { isNonEmptyArray } from '
|
|
7
|
-
import { RunOnceScheduler } from '
|
|
8
|
-
import { memoize } from '
|
|
9
|
-
import { dispose } from '
|
|
10
|
-
import { Schemas } from '
|
|
2
|
+
import { append, $, addDisposableListener, clearNode } from 'vscode/vscode/vs/base/browser/dom';
|
|
3
|
+
import { ActionBar } from 'vscode/vscode/vs/base/browser/ui/actionbar/actionbar';
|
|
4
|
+
import { renderLabelWithIcons } from 'vscode/vscode/vs/base/browser/ui/iconLabel/iconLabels';
|
|
5
|
+
import { Action, Separator } from 'vscode/vscode/vs/base/common/actions';
|
|
6
|
+
import { isNonEmptyArray } from 'vscode/vscode/vs/base/common/arrays';
|
|
7
|
+
import { RunOnceScheduler } from 'vscode/vscode/vs/base/common/async';
|
|
8
|
+
import { memoize } from 'vscode/vscode/vs/base/common/decorators';
|
|
9
|
+
import { dispose } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
10
|
+
import { Schemas } from 'vscode/vscode/vs/base/common/network';
|
|
11
11
|
import './media/runtimeExtensionsEditor.css.js';
|
|
12
|
-
import
|
|
13
|
-
import { Categories } from '
|
|
14
|
-
import { Action2, MenuId } from '
|
|
15
|
-
import { IClipboardService } from '
|
|
16
|
-
import { ContextKeyExpr, IContextKeyService } from '
|
|
17
|
-
import { IContextMenuService } from '
|
|
18
|
-
import { ExtensionIdentifierMap } from '
|
|
19
|
-
import { IInstantiationService } from '
|
|
20
|
-
import { ILabelService } from '
|
|
21
|
-
import { WorkbenchList } from '
|
|
22
|
-
import { INotificationService } from '
|
|
23
|
-
import { IStorageService } from '
|
|
24
|
-
import { ITelemetryService } from '
|
|
25
|
-
import { editorBackground } from '
|
|
26
|
-
import { IThemeService } from '
|
|
12
|
+
import { localizeWithPath } from 'vscode/vscode/vs/nls';
|
|
13
|
+
import { Categories } from 'vscode/vscode/vs/platform/action/common/actionCommonCategories';
|
|
14
|
+
import { Action2, MenuId } from 'vscode/vscode/vs/platform/actions/common/actions';
|
|
15
|
+
import { IClipboardService } from 'vscode/vscode/vs/platform/clipboard/common/clipboardService';
|
|
16
|
+
import { ContextKeyExpr, IContextKeyService } from 'vscode/vscode/vs/platform/contextkey/common/contextkey';
|
|
17
|
+
import { IContextMenuService } from 'vscode/vscode/vs/platform/contextview/browser/contextView';
|
|
18
|
+
import { ExtensionIdentifierMap } from 'vscode/vscode/vs/platform/extensions/common/extensions';
|
|
19
|
+
import { IInstantiationService } from 'vscode/vscode/vs/platform/instantiation/common/instantiation';
|
|
20
|
+
import { ILabelService } from 'vscode/vscode/vs/platform/label/common/label';
|
|
21
|
+
import { WorkbenchList } from 'vscode/vscode/vs/platform/list/browser/listService';
|
|
22
|
+
import { INotificationService } from 'vscode/vscode/vs/platform/notification/common/notification';
|
|
23
|
+
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
24
|
+
import { ITelemetryService } from 'vscode/vscode/vs/platform/telemetry/common/telemetry';
|
|
25
|
+
import { editorBackground } from 'vscode/vscode/vs/platform/theme/common/colorRegistry';
|
|
26
|
+
import { IThemeService } from 'vscode/vscode/vs/platform/theme/common/themeService';
|
|
27
27
|
import { EditorPane } from 'vscode/vscode/vs/workbench/browser/parts/editor/editorPane';
|
|
28
28
|
import { IExtensionsWorkbenchService } from 'vscode/vscode/vs/workbench/contrib/extensions/common/extensions';
|
|
29
29
|
import { RuntimeExtensionsInput } from '../common/runtimeExtensionsInput.js';
|
|
@@ -211,7 +211,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
211
211
|
const activationId = activationTimes.activationReason.extensionId.value;
|
|
212
212
|
const activationEvent = activationTimes.activationReason.activationEvent;
|
|
213
213
|
if (activationEvent === '*') {
|
|
214
|
-
title = (
|
|
214
|
+
title = ( localizeWithPath(
|
|
215
215
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
216
216
|
{
|
|
217
217
|
key: 'starActivation',
|
|
@@ -226,7 +226,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
226
226
|
else if (/^workspaceContains:/.test(activationEvent)) {
|
|
227
227
|
const fileNameOrGlob = activationEvent.substr('workspaceContains:'.length);
|
|
228
228
|
if (fileNameOrGlob.indexOf('*') >= 0 || fileNameOrGlob.indexOf('?') >= 0) {
|
|
229
|
-
title = (
|
|
229
|
+
title = ( localizeWithPath(
|
|
230
230
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
231
231
|
{
|
|
232
232
|
key: 'workspaceContainsGlobActivation',
|
|
@@ -241,7 +241,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
241
241
|
));
|
|
242
242
|
}
|
|
243
243
|
else {
|
|
244
|
-
title = (
|
|
244
|
+
title = ( localizeWithPath(
|
|
245
245
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
246
246
|
{
|
|
247
247
|
key: 'workspaceContainsFileActivation',
|
|
@@ -258,7 +258,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
258
258
|
}
|
|
259
259
|
else if (/^workspaceContainsTimeout:/.test(activationEvent)) {
|
|
260
260
|
const glob = activationEvent.substr('workspaceContainsTimeout:'.length);
|
|
261
|
-
title = (
|
|
261
|
+
title = ( localizeWithPath(
|
|
262
262
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
263
263
|
{
|
|
264
264
|
key: 'workspaceContainsTimeout',
|
|
@@ -273,7 +273,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
273
273
|
));
|
|
274
274
|
}
|
|
275
275
|
else if (activationEvent === 'onStartupFinished') {
|
|
276
|
-
title = (
|
|
276
|
+
title = ( localizeWithPath(
|
|
277
277
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
278
278
|
{
|
|
279
279
|
key: 'startupFinishedActivation',
|
|
@@ -287,7 +287,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
287
287
|
}
|
|
288
288
|
else if (/^onLanguage:/.test(activationEvent)) {
|
|
289
289
|
const language = activationEvent.substr('onLanguage:'.length);
|
|
290
|
-
title = (
|
|
290
|
+
title = ( localizeWithPath(
|
|
291
291
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
292
292
|
'languageActivation',
|
|
293
293
|
"Activated by {1} because you opened a {0} file",
|
|
@@ -296,7 +296,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
296
296
|
));
|
|
297
297
|
}
|
|
298
298
|
else {
|
|
299
|
-
title = (
|
|
299
|
+
title = ( localizeWithPath(
|
|
300
300
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
301
301
|
{
|
|
302
302
|
key: 'workspaceGenericActivation',
|
|
@@ -312,7 +312,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
312
312
|
}
|
|
313
313
|
}
|
|
314
314
|
else {
|
|
315
|
-
title = (
|
|
315
|
+
title = ( localizeWithPath(
|
|
316
316
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
317
317
|
'extensionActivating',
|
|
318
318
|
"Extension is activating..."
|
|
@@ -322,7 +322,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
322
322
|
clearNode(data.msgContainer);
|
|
323
323
|
if (this._getUnresponsiveProfile(element.description.identifier)) {
|
|
324
324
|
const el = $('span', undefined, ...renderLabelWithIcons(` $(alert) Unresponsive`));
|
|
325
|
-
el.title = (
|
|
325
|
+
el.title = ( localizeWithPath(
|
|
326
326
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
327
327
|
'unresponsive.title',
|
|
328
328
|
"Extension has caused the extension host to freeze."
|
|
@@ -330,7 +330,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
330
330
|
data.msgContainer.appendChild(el);
|
|
331
331
|
}
|
|
332
332
|
if (isNonEmptyArray(element.status.runtimeErrors)) {
|
|
333
|
-
const el = $('span', undefined, ...renderLabelWithIcons(`$(bug) ${(
|
|
333
|
+
const el = $('span', undefined, ...renderLabelWithIcons(`$(bug) ${( localizeWithPath(
|
|
334
334
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
335
335
|
'errors',
|
|
336
336
|
"{0} uncaught errors",
|
|
@@ -384,7 +384,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
384
384
|
},
|
|
385
385
|
accessibilityProvider: new (class {
|
|
386
386
|
getWidgetAriaLabel() {
|
|
387
|
-
return (
|
|
387
|
+
return ( localizeWithPath(
|
|
388
388
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
389
389
|
'runtimeExtensions',
|
|
390
390
|
"Runtime Extensions"
|
|
@@ -401,7 +401,7 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
401
401
|
return;
|
|
402
402
|
}
|
|
403
403
|
const actions = [];
|
|
404
|
-
actions.push(( new Action('runtimeExtensionsEditor.action.copyId', (
|
|
404
|
+
actions.push(( new Action('runtimeExtensionsEditor.action.copyId', ( localizeWithPath(
|
|
405
405
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
406
406
|
'copy id',
|
|
407
407
|
"Copy id ({0})",
|
|
@@ -415,12 +415,12 @@ let AbstractRuntimeExtensionsEditor = class AbstractRuntimeExtensionsEditor exte
|
|
|
415
415
|
}
|
|
416
416
|
actions.push(( new Separator()));
|
|
417
417
|
if (e.element.marketplaceInfo) {
|
|
418
|
-
actions.push(( new Action('runtimeExtensionsEditor.action.disableWorkspace', (
|
|
418
|
+
actions.push(( new Action('runtimeExtensionsEditor.action.disableWorkspace', ( localizeWithPath(
|
|
419
419
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
420
420
|
'disable workspace',
|
|
421
421
|
"Disable (Workspace)"
|
|
422
422
|
)), undefined, true, () => this._extensionsWorkbenchService.setEnablement(e.element.marketplaceInfo, 7 ))));
|
|
423
|
-
actions.push(( new Action('runtimeExtensionsEditor.action.disable', (
|
|
423
|
+
actions.push(( new Action('runtimeExtensionsEditor.action.disable', ( localizeWithPath(
|
|
424
424
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
425
425
|
'disable',
|
|
426
426
|
"Disable"
|
|
@@ -469,7 +469,7 @@ class ShowRuntimeExtensionsAction extends Action2 {
|
|
|
469
469
|
constructor() {
|
|
470
470
|
super({
|
|
471
471
|
id: 'workbench.action.showRuntimeExtensions',
|
|
472
|
-
title: { value: (
|
|
472
|
+
title: { value: ( localizeWithPath(
|
|
473
473
|
'vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor',
|
|
474
474
|
'showRuntimeExtensions',
|
|
475
475
|
"Show Running Extensions"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __decorate, __param } from '../../../../../../../external/tslib/tslib.es6.js';
|
|
2
2
|
import { IExtensionTipsService } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
|
|
3
3
|
import { ExtensionRecommendations } from './extensionRecommendations.js';
|
|
4
|
-
import { localizeWithPath } from '
|
|
5
|
-
import { IWorkspaceContextService } from '
|
|
6
|
-
import { Emitter } from '
|
|
4
|
+
import { localizeWithPath } from 'vscode/vscode/vs/nls';
|
|
5
|
+
import { IWorkspaceContextService } from 'vscode/vscode/vs/platform/workspace/common/workspace';
|
|
6
|
+
import { Emitter } from 'vscode/vscode/vs/base/common/event';
|
|
7
7
|
|
|
8
8
|
let ConfigBasedRecommendations = class ConfigBasedRecommendations extends ExtensionRecommendations {
|
|
9
9
|
get otherRecommendations() { return this._otherRecommendations; }
|