@codingame/monaco-vscode-extension-gallery-service-override 31.0.0 → 32.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 +4 -4
- package/package.json +2 -2
- package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js +58 -33
- package/vscode/src/vs/platform/extensionManagement/common/allowedExtensionsService.js +5 -5
- package/vscode/src/vs/platform/extensionManagement/common/extensionTipsService.js +1 -1
- package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.d.ts +14 -0
- package/vscode/src/vs/platform/extensionManagement/common/unsupportedExtensionsMigration.js +145 -0
- package/vscode/src/vs/platform/extensionRecommendations/common/extensionRecommendations.d.ts +19 -0
- package/vscode/src/vs/platform/extensionRecommendations/common/extensionRecommendations.js +25 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.d.ts +76 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.js +470 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/browserRuntimeExtensionsEditor.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/browserRuntimeExtensionsEditor.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.d.ts +25 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/configBasedRecommendations.js +83 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/exeBasedRecommendations.js +66 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.d.ts +83 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEditor.js +1353 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionEnablementWorkspaceTrustTransitionParticipant.js +49 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.d.ts +22 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionFeaturesTab.js +728 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.d.ts +63 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js +522 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendations.js +18 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.d.ts +71 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js +263 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js +2227 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js +2 -2
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsActivationProgress.js +40 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsCompletionItemsProvider.js +77 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsDependencyChecker.js +93 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.d.ts +27 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsQuickAccess.js +100 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.d.ts +151 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViewlet.js +1031 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.d.ts +235 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsViews.js +1600 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.d.ts +314 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js +3449 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.d.ts +44 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/fileBasedRecommendations.js +368 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/keymapRecommendations.js +30 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/languageRecommendations.js +30 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionEditor.css +910 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionManagement.css +12 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/media/extensionsViewlet.css +229 -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 +86 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/remoteRecommendations.js +38 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/unsupportedExtensionsMigrationContribution.js +41 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/webRecommendations.js +38 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/extensions/browser/workspaceRecommendations.js +179 -0
- package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/extensions/common/extensionQuery.js +90 -0
- package/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/extensions/common/extensionsInput.js +50 -0
- package/vscode/src/vs/workbench/contrib/extensions/common/reportExtensionIssueAction.js +1 -1
- package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/extensions/common/runtimeExtensionsInput.js +47 -0
- package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.d.ts +35 -0
- package/vscode/src/vs/workbench/services/accounts/browser/defaultAccount.js +876 -0
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.d.ts +4 -0
- package/vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js +82 -51
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionFeaturesManagemetService.js +4 -4
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementServerService.js +2 -2
- package/vscode/src/vs/workbench/services/extensionManagement/common/extensionManagementService.js +46 -46
package/index.js
CHANGED
|
@@ -14,9 +14,9 @@ import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/l
|
|
|
14
14
|
import { getLocale } from '@codingame/monaco-vscode-api/vscode/vs/platform/languagePacks/common/languagePacks';
|
|
15
15
|
import { IgnoredExtensionsManagementService } from './vscode/src/vs/platform/userDataSync/common/ignoredExtensions.js';
|
|
16
16
|
import { IIgnoredExtensionsManagementService } from '@codingame/monaco-vscode-api/vscode/vs/platform/userDataSync/common/ignoredExtensions.service';
|
|
17
|
-
import { ExtensionRecommendationNotificationService } from '
|
|
18
|
-
import { ExtensionRecommendationsService } from '
|
|
19
|
-
import { ExtensionsWorkbenchService } from '
|
|
17
|
+
import { ExtensionRecommendationNotificationService } from './vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationNotificationService.js';
|
|
18
|
+
import { ExtensionRecommendationsService } from './vscode/src/vs/workbench/contrib/extensions/browser/extensionRecommendationsService.js';
|
|
19
|
+
import { ExtensionsWorkbenchService } from './vscode/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.js';
|
|
20
20
|
import { IExtensionsWorkbenchService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service';
|
|
21
21
|
import { ExtensionEnablementService } from './vscode/src/vs/workbench/services/extensionManagement/browser/extensionEnablementService.js';
|
|
22
22
|
import { WebExtensionGalleryManifestService } from './vscode/src/vs/workbench/services/extensionManagement/browser/extensionGalleryManifestService.js';
|
|
@@ -42,7 +42,7 @@ import { IRemoteUserDataProfilesService } from '@codingame/monaco-vscode-api/vsc
|
|
|
42
42
|
import { registerAssets } from '@codingame/monaco-vscode-api/assets';
|
|
43
43
|
import { isLocaleAvailable } from '@codingame/monaco-vscode-api/l10n';
|
|
44
44
|
import { unsupported } from '@codingame/monaco-vscode-api/tools';
|
|
45
|
-
import '
|
|
45
|
+
import './vscode/src/vs/workbench/contrib/extensions/browser/extensions.contribution.js';
|
|
46
46
|
import './vscode/src/vs/workbench/contrib/extensions/browser/extensions.web.contribution.js';
|
|
47
47
|
import { IProductService } from '@codingame/monaco-vscode-api/vscode/vs/platform/product/common/productService.service';
|
|
48
48
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-extension-gallery-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "32.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,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-api": "
|
|
18
|
+
"@codingame/monaco-vscode-api": "32.0.0"
|
|
19
19
|
},
|
|
20
20
|
"main": "index.js",
|
|
21
21
|
"module": "index.js",
|
package/vscode/src/vs/platform/extensionManagement/common/abstractExtensionManagementService.js
CHANGED
|
@@ -36,7 +36,7 @@ let CommontExtensionManagementService = class CommontExtensionManagementService
|
|
|
36
36
|
});
|
|
37
37
|
if (allowedToInstall !== true) {
|
|
38
38
|
return (new MarkdownString(localize(
|
|
39
|
-
|
|
39
|
+
1859,
|
|
40
40
|
"This extension cannot be installed because {0}",
|
|
41
41
|
allowedToInstall.value
|
|
42
42
|
)));
|
|
@@ -44,12 +44,12 @@ let CommontExtensionManagementService = class CommontExtensionManagementService
|
|
|
44
44
|
if (!(await this.isExtensionPlatformCompatible(extension))) {
|
|
45
45
|
const learnLink = isWeb ? "https://aka.ms/vscode-web-extensions-guide" : "https://aka.ms/vscode-platform-specific-extensions";
|
|
46
46
|
return (new MarkdownString(`${( localize(
|
|
47
|
-
|
|
47
|
+
1860,
|
|
48
48
|
"The '{0}' extension is not available in {1} for the {2} platform.",
|
|
49
49
|
extension.displayName ?? extension.identifier.id,
|
|
50
50
|
this.productService.nameLong,
|
|
51
51
|
TargetPlatformToString(await this.getTargetPlatform())
|
|
52
|
-
))} [${( localize(
|
|
52
|
+
))} [${( localize(1861, "Learn Why"))}](${learnLink})`));
|
|
53
53
|
}
|
|
54
54
|
return true;
|
|
55
55
|
}
|
|
@@ -146,7 +146,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
146
146
|
}
|
|
147
147
|
async installGalleryExtensions(extensions) {
|
|
148
148
|
if (!this.galleryService.isEnabled()) {
|
|
149
|
-
throw ( new ExtensionManagementError(( localize(
|
|
149
|
+
throw ( new ExtensionManagementError(( localize(1862, "Marketplace is not enabled")), ExtensionManagementErrorCode.NotAllowed));
|
|
150
150
|
}
|
|
151
151
|
const results = [];
|
|
152
152
|
const installableExtensions = [];
|
|
@@ -302,21 +302,21 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
302
302
|
( options.profileLocation.toString())
|
|
303
303
|
);
|
|
304
304
|
existingInstallingExtension.waitingTasks.push(root);
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
);
|
|
305
|
+
const waitForInstallation = Event.toPromise(Event.filter(this.onDidInstallExtensions, results => ( results.some(result => areSameExtensions(result.identifier, identifier))))).then(results => {
|
|
306
|
+
this.logService.info(
|
|
307
|
+
"Finished waiting for already requested installing extension",
|
|
308
|
+
identifier.id,
|
|
309
|
+
root.identifier.id,
|
|
310
|
+
( options.profileLocation.toString())
|
|
311
|
+
);
|
|
312
|
+
const result = results.find(result => areSameExtensions(result.identifier, identifier));
|
|
313
|
+
if (!result?.local) {
|
|
314
|
+
throw ( new Error(`Extension ${identifier.id} is not installed`));
|
|
315
|
+
}
|
|
316
|
+
return result.local;
|
|
317
|
+
});
|
|
318
|
+
alreadyRequestedInstallations.push(waitForInstallation);
|
|
319
|
+
waitForInstallation.catch(() => {});
|
|
320
320
|
}
|
|
321
321
|
return;
|
|
322
322
|
}
|
|
@@ -371,12 +371,37 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
371
371
|
getInstallExtensionTaskKey(extension, installExtensionTaskOptions.profileLocation)
|
|
372
372
|
) : undefined;
|
|
373
373
|
if (existingInstallExtensionTask) {
|
|
374
|
+
const existingTask = existingInstallExtensionTask.task;
|
|
374
375
|
this.logService.info(
|
|
375
376
|
"Extension is already requested to install",
|
|
376
|
-
|
|
377
|
+
existingTask.identifier.id,
|
|
377
378
|
( installExtensionTaskOptions.profileLocation.toString())
|
|
378
379
|
);
|
|
379
|
-
|
|
380
|
+
const resultKey = `${existingTask.identifier.id.toLowerCase()}-${( installExtensionTaskOptions.profileLocation.toString())}`;
|
|
381
|
+
const waitForInstallation = existingTask.waitUntilTaskIsFinished().then(local => {
|
|
382
|
+
installExtensionResultsMap.set(resultKey, {
|
|
383
|
+
local,
|
|
384
|
+
identifier: existingTask.identifier,
|
|
385
|
+
operation: existingTask.operation,
|
|
386
|
+
source: existingTask.source,
|
|
387
|
+
context: installExtensionTaskOptions.context,
|
|
388
|
+
profileLocation: installExtensionTaskOptions.profileLocation,
|
|
389
|
+
applicationScoped: local.isApplicationScoped
|
|
390
|
+
});
|
|
391
|
+
return local;
|
|
392
|
+
}, error => {
|
|
393
|
+
installExtensionResultsMap.set(resultKey, {
|
|
394
|
+
error: toExtensionManagementError(error),
|
|
395
|
+
identifier: existingTask.identifier,
|
|
396
|
+
operation: existingTask.operation,
|
|
397
|
+
source: existingTask.source,
|
|
398
|
+
context: installExtensionTaskOptions.context,
|
|
399
|
+
profileLocation: installExtensionTaskOptions.profileLocation
|
|
400
|
+
});
|
|
401
|
+
throw error;
|
|
402
|
+
});
|
|
403
|
+
alreadyRequestedInstallations.push(waitForInstallation);
|
|
404
|
+
waitForInstallation.catch(() => {});
|
|
380
405
|
} else {
|
|
381
406
|
createInstallExtensionTask(manifest, extension, installExtensionTaskOptions, undefined);
|
|
382
407
|
}
|
|
@@ -808,7 +833,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
808
833
|
const extensionsControlManifest = await this.getExtensionsControlManifest();
|
|
809
834
|
if (isMalicious(extension.identifier, extensionsControlManifest.malicious)) {
|
|
810
835
|
throw ( new ExtensionManagementError(( localize(
|
|
811
|
-
|
|
836
|
+
1863,
|
|
812
837
|
"Can't install '{0}' extension since it was reported to be problematic.",
|
|
813
838
|
extension.identifier.id
|
|
814
839
|
)), ExtensionManagementErrorCode.Malicious));
|
|
@@ -828,7 +853,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
828
853
|
}, CancellationToken.None))[0];
|
|
829
854
|
if (!compatibleExtension) {
|
|
830
855
|
throw ( new ExtensionManagementError(( localize(
|
|
831
|
-
|
|
856
|
+
1864,
|
|
832
857
|
"Can't install '{0}' extension since it was deprecated and the replacement extension '{1}' can't be found.",
|
|
833
858
|
extension.identifier.id,
|
|
834
859
|
deprecationInfo.extension.id
|
|
@@ -838,7 +863,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
838
863
|
if ((await this.canInstall(extension)) !== true) {
|
|
839
864
|
const targetPlatform = await this.getTargetPlatform();
|
|
840
865
|
throw ( new ExtensionManagementError(( localize(
|
|
841
|
-
|
|
866
|
+
1860,
|
|
842
867
|
"The '{0}' extension is not available in {1} for the {2} platform.",
|
|
843
868
|
extension.identifier.id,
|
|
844
869
|
this.productService.nameLong,
|
|
@@ -853,7 +878,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
853
878
|
incompatibleApiProposalsMessages
|
|
854
879
|
)) {
|
|
855
880
|
throw ( new ExtensionManagementError(( localize(
|
|
856
|
-
|
|
881
|
+
1865,
|
|
857
882
|
"Can't install '{0}' extension. {1}",
|
|
858
883
|
extension.displayName ?? extension.identifier.id,
|
|
859
884
|
incompatibleApiProposalsMessages[0]
|
|
@@ -861,13 +886,13 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
861
886
|
}
|
|
862
887
|
if (!installPreRelease && extension.hasPreReleaseVersion && extension.properties.isPreReleaseVersion && (await this.galleryService.getExtensions([extension.identifier], CancellationToken.None))[0]) {
|
|
863
888
|
throw ( new ExtensionManagementError(( localize(
|
|
864
|
-
|
|
889
|
+
1866,
|
|
865
890
|
"Can't install release version of '{0}' extension because it has no release version.",
|
|
866
891
|
extension.displayName ?? extension.identifier.id
|
|
867
892
|
)), ExtensionManagementErrorCode.ReleaseVersionNotFound));
|
|
868
893
|
}
|
|
869
894
|
throw ( new ExtensionManagementError(( localize(
|
|
870
|
-
|
|
895
|
+
1867,
|
|
871
896
|
"Can't install '{0}' extension because it is not compatible with the current version of {1} (version {2}).",
|
|
872
897
|
extension.identifier.id,
|
|
873
898
|
this.productService.nameLong,
|
|
@@ -1187,7 +1212,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
1187
1212
|
if (extensionToUninstall === dependingExtension) {
|
|
1188
1213
|
if (dependents.length === 1) {
|
|
1189
1214
|
return localize(
|
|
1190
|
-
|
|
1215
|
+
1868,
|
|
1191
1216
|
"Cannot uninstall '{0}' extension. '{1}' extension depends on this.",
|
|
1192
1217
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
1193
1218
|
dependents[0].manifest.displayName || dependents[0].manifest.name
|
|
@@ -1195,7 +1220,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
1195
1220
|
}
|
|
1196
1221
|
if (dependents.length === 2) {
|
|
1197
1222
|
return localize(
|
|
1198
|
-
|
|
1223
|
+
1869,
|
|
1199
1224
|
"Cannot uninstall '{0}' extension. '{1}' and '{2}' extensions depend on this.",
|
|
1200
1225
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
1201
1226
|
dependents[0].manifest.displayName || dependents[0].manifest.name,
|
|
@@ -1203,7 +1228,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
1203
1228
|
);
|
|
1204
1229
|
}
|
|
1205
1230
|
return localize(
|
|
1206
|
-
|
|
1231
|
+
1870,
|
|
1207
1232
|
"Cannot uninstall '{0}' extension. '{1}', '{2}' and other extension depend on this.",
|
|
1208
1233
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
1209
1234
|
dependents[0].manifest.displayName || dependents[0].manifest.name,
|
|
@@ -1212,7 +1237,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
1212
1237
|
}
|
|
1213
1238
|
if (dependents.length === 1) {
|
|
1214
1239
|
return localize(
|
|
1215
|
-
|
|
1240
|
+
1871,
|
|
1216
1241
|
"Cannot uninstall '{0}' extension . It includes uninstalling '{1}' extension and '{2}' extension depends on this.",
|
|
1217
1242
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
1218
1243
|
dependingExtension.manifest.displayName || dependingExtension.manifest.name,
|
|
@@ -1221,7 +1246,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
1221
1246
|
}
|
|
1222
1247
|
if (dependents.length === 2) {
|
|
1223
1248
|
return localize(
|
|
1224
|
-
|
|
1249
|
+
1872,
|
|
1225
1250
|
"Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}' and '{3}' extensions depend on this.",
|
|
1226
1251
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
1227
1252
|
dependingExtension.manifest.displayName || dependingExtension.manifest.name,
|
|
@@ -1230,7 +1255,7 @@ let AbstractExtensionManagementService = class AbstractExtensionManagementServic
|
|
|
1230
1255
|
);
|
|
1231
1256
|
}
|
|
1232
1257
|
return localize(
|
|
1233
|
-
|
|
1258
|
+
1873,
|
|
1234
1259
|
"Cannot uninstall '{0}' extension. It includes uninstalling '{1}' extension and '{2}', '{3}' and other extensions depend on this.",
|
|
1235
1260
|
extensionToUninstall.manifest.displayName || extensionToUninstall.manifest.name,
|
|
1236
1261
|
dependingExtension.manifest.displayName || dependingExtension.manifest.name,
|
|
@@ -77,14 +77,14 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
|
|
|
77
77
|
query: `@id:${AllowedExtensionsConfigKey}`
|
|
78
78
|
}).toString());
|
|
79
79
|
const extensionValue = this._allowedExtensionsConfigValue[id];
|
|
80
|
-
const extensionReason = ( new MarkdownString(( localize(
|
|
80
|
+
const extensionReason = ( new MarkdownString(( localize(1874, "it is not in the [allowed list]({0})", settingsCommandLink))));
|
|
81
81
|
if (!isUndefined(extensionValue)) {
|
|
82
82
|
if (isBoolean(extensionValue)) {
|
|
83
83
|
return extensionValue ? true : extensionReason;
|
|
84
84
|
}
|
|
85
85
|
if (extensionValue === "stable" && prerelease) {
|
|
86
86
|
return (new MarkdownString(localize(
|
|
87
|
-
|
|
87
|
+
1875,
|
|
88
88
|
"the pre-release versions of this extension are not in the [allowed list]({0})",
|
|
89
89
|
settingsCommandLink
|
|
90
90
|
)));
|
|
@@ -107,7 +107,7 @@ let AllowedExtensionsService = class AllowedExtensionsService extends Disposable
|
|
|
107
107
|
return false;
|
|
108
108
|
}))) {
|
|
109
109
|
return (new MarkdownString(localize(
|
|
110
|
-
|
|
110
|
+
1876,
|
|
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
|
+
1877,
|
|
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
|
+
1878,
|
|
132
132
|
"the pre-release versions from this publisher are not in the [allowed list]({1})",
|
|
133
133
|
publisherKey,
|
|
134
134
|
settingsCommandLink
|
|
@@ -20,7 +20,7 @@ import '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
|
20
20
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
21
21
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/uuid';
|
|
22
22
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry';
|
|
23
|
-
import '
|
|
23
|
+
import '../../extensionRecommendations/common/extensionRecommendations.js';
|
|
24
24
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
|
|
25
25
|
|
|
26
26
|
let ExtensionTipsService = class ExtensionTipsService extends Disposable {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IGlobalExtensionEnablementService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement.service";
|
|
2
|
+
import { IExtensionManagementService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement.service";
|
|
3
|
+
import { IExtensionGalleryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement.service";
|
|
4
|
+
import { IExtensionStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionStorage.service";
|
|
5
|
+
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
6
|
+
import { IUserDataProfile } from "@codingame/monaco-vscode-api/vscode/vs/platform/userDataProfile/common/userDataProfile";
|
|
7
|
+
/**
|
|
8
|
+
* Migrates the installed unsupported nightly extension to a supported pre-release extension. It includes following:
|
|
9
|
+
* - Uninstall the Unsupported extension
|
|
10
|
+
* - Install (with optional storage migration) the Pre-release extension only if
|
|
11
|
+
* - the extension is not installed
|
|
12
|
+
* - or it is a release version and the unsupported extension is enabled.
|
|
13
|
+
*/
|
|
14
|
+
export declare function migrateUnsupportedExtensions(profile: IUserDataProfile | undefined, extensionManagementService: IExtensionManagementService, galleryService: IExtensionGalleryService, extensionStorageService: IExtensionStorageService, extensionEnablementService: IGlobalExtensionEnablementService, logService: ILogService): Promise<void>;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
|
|
2
|
+
import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
3
|
+
import { EXTENSION_INSTALL_SKIP_PUBLISHER_TRUST_CONTEXT, InstallOperation } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagement';
|
|
4
|
+
import { areSameExtensions, getExtensionId } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
|
|
5
|
+
import { ExtensionType } from '@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions';
|
|
6
|
+
import { semverExports } from '@codingame/monaco-vscode-api/_virtual/semver';
|
|
7
|
+
|
|
8
|
+
async function migrateUnsupportedExtensions(
|
|
9
|
+
profile,
|
|
10
|
+
extensionManagementService,
|
|
11
|
+
galleryService,
|
|
12
|
+
extensionStorageService,
|
|
13
|
+
extensionEnablementService,
|
|
14
|
+
logService
|
|
15
|
+
) {
|
|
16
|
+
try {
|
|
17
|
+
const extensionsControlManifest = await extensionManagementService.getExtensionsControlManifest();
|
|
18
|
+
if (!extensionsControlManifest.deprecated) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const installed = await extensionManagementService.getInstalled(ExtensionType.User, profile?.extensionsResource);
|
|
22
|
+
for (const [unsupportedExtensionId, deprecated] of Object.entries(extensionsControlManifest.deprecated)) {
|
|
23
|
+
if (!deprecated?.extension) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const {
|
|
27
|
+
id: preReleaseExtensionId,
|
|
28
|
+
autoMigrate,
|
|
29
|
+
preRelease
|
|
30
|
+
} = deprecated.extension;
|
|
31
|
+
if (!autoMigrate) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const unsupportedExtension = installed.find(i => areSameExtensions(i.identifier, {
|
|
35
|
+
id: unsupportedExtensionId
|
|
36
|
+
}));
|
|
37
|
+
if (!unsupportedExtension) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const gallery = (await galleryService.getExtensions([{
|
|
41
|
+
id: preReleaseExtensionId,
|
|
42
|
+
preRelease
|
|
43
|
+
}], {
|
|
44
|
+
targetPlatform: await extensionManagementService.getTargetPlatform(),
|
|
45
|
+
compatible: true
|
|
46
|
+
}, CancellationToken.None))[0];
|
|
47
|
+
if (!gallery) {
|
|
48
|
+
logService.info(
|
|
49
|
+
`Skipping migrating '${unsupportedExtension.identifier.id}' extension because, the comaptible target '${preReleaseExtensionId}' extension is not found`
|
|
50
|
+
);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
logService.info(
|
|
55
|
+
`Migrating '${unsupportedExtension.identifier.id}' extension to '${preReleaseExtensionId}' extension...`
|
|
56
|
+
);
|
|
57
|
+
const isUnsupportedExtensionEnabled = !( extensionEnablementService.getDisabledExtensions().some(e => areSameExtensions(e, unsupportedExtension.identifier)));
|
|
58
|
+
await extensionManagementService.uninstall(unsupportedExtension, {
|
|
59
|
+
profileLocation: profile?.extensionsResource
|
|
60
|
+
});
|
|
61
|
+
logService.info(
|
|
62
|
+
`Uninstalled the unsupported extension '${unsupportedExtension.identifier.id}'`
|
|
63
|
+
);
|
|
64
|
+
let preReleaseExtension = installed.find(i => areSameExtensions(i.identifier, {
|
|
65
|
+
id: preReleaseExtensionId
|
|
66
|
+
}));
|
|
67
|
+
if (!preReleaseExtension || (preReleaseExtension.isPreReleaseVersion !== !!preRelease && isUnsupportedExtensionEnabled)) {
|
|
68
|
+
preReleaseExtension = await extensionManagementService.installFromGallery(gallery, {
|
|
69
|
+
installPreReleaseVersion: preRelease,
|
|
70
|
+
isMachineScoped: unsupportedExtension.isMachineScoped,
|
|
71
|
+
operation: InstallOperation.Migrate,
|
|
72
|
+
profileLocation: profile?.extensionsResource,
|
|
73
|
+
context: {
|
|
74
|
+
[EXTENSION_INSTALL_SKIP_PUBLISHER_TRUST_CONTEXT]: true
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
logService.info(
|
|
78
|
+
`Installed the pre-release extension '${preReleaseExtension.identifier.id}'`
|
|
79
|
+
);
|
|
80
|
+
if (!autoMigrate.donotDisable && !isUnsupportedExtensionEnabled) {
|
|
81
|
+
await extensionEnablementService.disableExtension(preReleaseExtension.identifier);
|
|
82
|
+
logService.info(
|
|
83
|
+
`Disabled the pre-release extension '${preReleaseExtension.identifier.id}' because the unsupported extension '${unsupportedExtension.identifier.id}' is disabled`
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
if (autoMigrate.storage) {
|
|
87
|
+
extensionStorageService.addToMigrationList(getExtensionId(
|
|
88
|
+
unsupportedExtension.manifest.publisher,
|
|
89
|
+
unsupportedExtension.manifest.name
|
|
90
|
+
), getExtensionId(preReleaseExtension.manifest.publisher, preReleaseExtension.manifest.name));
|
|
91
|
+
logService.info(`Added pre-release extension to the storage migration list`);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
logService.info(
|
|
95
|
+
`Migrated '${unsupportedExtension.identifier.id}' extension to '${preReleaseExtensionId}' extension.`
|
|
96
|
+
);
|
|
97
|
+
} catch (error) {
|
|
98
|
+
logService.error(error);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (extensionsControlManifest.autoUpdate) {
|
|
102
|
+
for (const [extensionId, version] of Object.entries(extensionsControlManifest.autoUpdate)) {
|
|
103
|
+
try {
|
|
104
|
+
const extensionToAutoUpdate = installed.find(i => areSameExtensions(i.identifier, {
|
|
105
|
+
id: extensionId
|
|
106
|
+
}) && semverExports.lte(i.manifest.version, version));
|
|
107
|
+
if (!extensionToAutoUpdate) {
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
const gallery = (await galleryService.getExtensions([{
|
|
111
|
+
id: extensionId,
|
|
112
|
+
preRelease: extensionToAutoUpdate.preRelease
|
|
113
|
+
}], {
|
|
114
|
+
targetPlatform: await extensionManagementService.getTargetPlatform(),
|
|
115
|
+
compatible: true
|
|
116
|
+
}, CancellationToken.None))[0];
|
|
117
|
+
if (!gallery) {
|
|
118
|
+
logService.info(
|
|
119
|
+
`Skipping updating '${extensionToAutoUpdate.identifier.id}' extension because, the compatible target '${extensionId}' extension is not found`
|
|
120
|
+
);
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
await extensionManagementService.installFromGallery(gallery, {
|
|
124
|
+
installPreReleaseVersion: extensionToAutoUpdate.preRelease,
|
|
125
|
+
isMachineScoped: extensionToAutoUpdate.isMachineScoped,
|
|
126
|
+
operation: InstallOperation.Update,
|
|
127
|
+
profileLocation: profile?.extensionsResource,
|
|
128
|
+
context: {
|
|
129
|
+
[EXTENSION_INSTALL_SKIP_PUBLISHER_TRUST_CONTEXT]: true
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
logService.info(
|
|
133
|
+
`Autoupdated '${extensionToAutoUpdate.identifier.id}' extension to '${gallery.version}' extension.`
|
|
134
|
+
);
|
|
135
|
+
} catch (error) {
|
|
136
|
+
logService.error(error);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
} catch (error) {
|
|
141
|
+
logService.error(error);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export { migrateUnsupportedExtensions };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare enum RecommendationSource {
|
|
2
|
+
FILE = 1,
|
|
3
|
+
WORKSPACE = 2,
|
|
4
|
+
EXE = 3
|
|
5
|
+
}
|
|
6
|
+
export interface IExtensionRecommendations {
|
|
7
|
+
source: RecommendationSource;
|
|
8
|
+
extensions: string[];
|
|
9
|
+
name: string;
|
|
10
|
+
searchValue?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function RecommendationSourceToString(source: RecommendationSource): "file" | "workspace" | "exe";
|
|
13
|
+
export declare enum RecommendationsNotificationResult {
|
|
14
|
+
Ignored = "ignored",
|
|
15
|
+
Cancelled = "cancelled",
|
|
16
|
+
TooMany = "toomany",
|
|
17
|
+
IncompatibleWindow = "incompatibleWindow",
|
|
18
|
+
Accepted = "reacted"
|
|
19
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
var RecommendationSource;
|
|
4
|
+
(function (RecommendationSource) {
|
|
5
|
+
RecommendationSource[RecommendationSource["FILE"] = 1] = "FILE";
|
|
6
|
+
RecommendationSource[RecommendationSource["WORKSPACE"] = 2] = "WORKSPACE";
|
|
7
|
+
RecommendationSource[RecommendationSource["EXE"] = 3] = "EXE";
|
|
8
|
+
})(RecommendationSource || (RecommendationSource = {}));
|
|
9
|
+
function RecommendationSourceToString(source) {
|
|
10
|
+
switch (source) {
|
|
11
|
+
case RecommendationSource.FILE: return 'file';
|
|
12
|
+
case RecommendationSource.WORKSPACE: return 'workspace';
|
|
13
|
+
case RecommendationSource.EXE: return 'exe';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
var RecommendationsNotificationResult;
|
|
17
|
+
(function (RecommendationsNotificationResult) {
|
|
18
|
+
RecommendationsNotificationResult["Ignored"] = "ignored";
|
|
19
|
+
RecommendationsNotificationResult["Cancelled"] = "cancelled";
|
|
20
|
+
RecommendationsNotificationResult["TooMany"] = "toomany";
|
|
21
|
+
RecommendationsNotificationResult["IncompatibleWindow"] = "incompatibleWindow";
|
|
22
|
+
RecommendationsNotificationResult["Accepted"] = "reacted";
|
|
23
|
+
})(RecommendationsNotificationResult || (RecommendationsNotificationResult = {}));
|
|
24
|
+
|
|
25
|
+
export { RecommendationSource, RecommendationSourceToString, RecommendationsNotificationResult };
|
package/vscode/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.d.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Dimension } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/dom";
|
|
2
|
+
import { Action } from "@codingame/monaco-vscode-api/vscode/vs/base/common/actions";
|
|
3
|
+
import { Action2 } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions";
|
|
4
|
+
import { IMenuService } from "@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions.service";
|
|
5
|
+
import { IClipboardService } from "@codingame/monaco-vscode-api/vscode/vs/platform/clipboard/common/clipboardService.service";
|
|
6
|
+
import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
|
|
7
|
+
import { IContextMenuService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextview/browser/contextView.service";
|
|
8
|
+
import { ExtensionIdentifier, IExtensionDescription } from "@codingame/monaco-vscode-api/vscode/vs/platform/extensions/common/extensions";
|
|
9
|
+
import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
|
|
10
|
+
import { IInstantiationService, ServicesAccessor } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
11
|
+
import { ILabelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service";
|
|
12
|
+
import { INotificationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/notification/common/notification.service";
|
|
13
|
+
import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
|
|
14
|
+
import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
|
|
15
|
+
import { IThemeService } from "@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/themeService.service";
|
|
16
|
+
import { EditorPane } from "@codingame/monaco-vscode-api/vscode/vs/workbench/browser/parts/editor/editorPane";
|
|
17
|
+
import { IEditorGroup } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService";
|
|
18
|
+
import { IWorkbenchEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service";
|
|
19
|
+
import { IExtensionFeaturesManagementService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensionManagement/common/extensionFeatures.service";
|
|
20
|
+
import { IExtensionHostProfile, IExtensionsStatus } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions";
|
|
21
|
+
import { IExtensionService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/extensions/common/extensions.service";
|
|
22
|
+
import { IExtension } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions";
|
|
23
|
+
import { IExtensionsWorkbenchService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/extensions/common/extensions.service";
|
|
24
|
+
interface IExtensionProfileInformation {
|
|
25
|
+
/**
|
|
26
|
+
* segment when the extension was running.
|
|
27
|
+
* 2*i = segment start time
|
|
28
|
+
* 2*i+1 = segment end time
|
|
29
|
+
*/
|
|
30
|
+
segments: number[];
|
|
31
|
+
/**
|
|
32
|
+
* total time when the extension was running.
|
|
33
|
+
* (sum of all segment lengths).
|
|
34
|
+
*/
|
|
35
|
+
totalTime: number;
|
|
36
|
+
}
|
|
37
|
+
export interface IRuntimeExtension {
|
|
38
|
+
originalIndex: number;
|
|
39
|
+
description: IExtensionDescription;
|
|
40
|
+
marketplaceInfo: IExtension | undefined;
|
|
41
|
+
status: IExtensionsStatus;
|
|
42
|
+
profileInfo?: IExtensionProfileInformation;
|
|
43
|
+
unresponsiveProfile?: IExtensionHostProfile;
|
|
44
|
+
}
|
|
45
|
+
export declare abstract class AbstractRuntimeExtensionsEditor extends EditorPane {
|
|
46
|
+
private readonly contextKeyService;
|
|
47
|
+
private readonly _extensionsWorkbenchService;
|
|
48
|
+
private readonly _extensionService;
|
|
49
|
+
private readonly _notificationService;
|
|
50
|
+
private readonly _contextMenuService;
|
|
51
|
+
protected readonly _instantiationService: IInstantiationService;
|
|
52
|
+
private readonly _labelService;
|
|
53
|
+
private readonly _environmentService;
|
|
54
|
+
private readonly _clipboardService;
|
|
55
|
+
private readonly _extensionFeaturesManagementService;
|
|
56
|
+
private readonly _hoverService;
|
|
57
|
+
private readonly _menuService;
|
|
58
|
+
static readonly ID: string;
|
|
59
|
+
private _list;
|
|
60
|
+
private _elements;
|
|
61
|
+
private _updateSoon;
|
|
62
|
+
constructor(group: IEditorGroup, telemetryService: ITelemetryService, themeService: IThemeService, contextKeyService: IContextKeyService, _extensionsWorkbenchService: IExtensionsWorkbenchService, _extensionService: IExtensionService, _notificationService: INotificationService, _contextMenuService: IContextMenuService, _instantiationService: IInstantiationService, storageService: IStorageService, _labelService: ILabelService, _environmentService: IWorkbenchEnvironmentService, _clipboardService: IClipboardService, _extensionFeaturesManagementService: IExtensionFeaturesManagementService, _hoverService: IHoverService, _menuService: IMenuService);
|
|
63
|
+
protected _updateExtensions(): Promise<void>;
|
|
64
|
+
private _resolveExtensions;
|
|
65
|
+
protected createEditor(parent: HTMLElement): void;
|
|
66
|
+
layout(dimension: Dimension): void;
|
|
67
|
+
protected abstract _getProfileInfo(): IExtensionHostProfile | null;
|
|
68
|
+
protected abstract _getUnresponsiveProfile(extensionId: ExtensionIdentifier): IExtensionHostProfile | undefined;
|
|
69
|
+
protected abstract _createSlowExtensionAction(element: IRuntimeExtension): Action | null;
|
|
70
|
+
protected abstract _createReportExtensionIssueAction(element: IRuntimeExtension): Action | null;
|
|
71
|
+
}
|
|
72
|
+
export declare class ShowRuntimeExtensionsAction extends Action2 {
|
|
73
|
+
constructor();
|
|
74
|
+
run(accessor: ServicesAccessor): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
export {};
|