@codingame/monaco-vscode-extensions-service-override 3.2.3 → 4.1.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/extensions.js +6 -87
- package/override/vs/platform/dialogs/common/dialogs.js +2 -0
- package/package.json +9 -9
- package/_virtual/semver.js +0 -3
- package/external/vscode-semver/semver.js +0 -985
- package/override/vs/workbench/browser/parts/editor/textEditor.weak.js +0 -8
- package/vscode/src/vs/base/common/console.js +0 -59
- package/vscode/src/vs/platform/extensionManagement/common/extensionManagementCLI.js +0 -497
- package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js +0 -44
- package/vscode/src/vs/platform/lifecycle/common/lifecycle.js +0 -27
- package/vscode/src/vs/platform/remote/common/managedSocket.js +0 -98
- package/vscode/src/vs/workbench/api/browser/mainThreadAiEmbeddingVector.js +0 -31
- package/vscode/src/vs/workbench/api/browser/mainThreadAiRelatedInformation.js +0 -35
- package/vscode/src/vs/workbench/api/browser/mainThreadAuthentication.js +0 -227
- package/vscode/src/vs/workbench/api/browser/mainThreadBulkEdits.js +0 -68
- package/vscode/src/vs/workbench/api/browser/mainThreadCLICommands.js +0 -103
- package/vscode/src/vs/workbench/api/browser/mainThreadChat.js +0 -83
- package/vscode/src/vs/workbench/api/browser/mainThreadChatAgents2.js +0 -203
- package/vscode/src/vs/workbench/api/browser/mainThreadChatProvider.js +0 -201
- package/vscode/src/vs/workbench/api/browser/mainThreadChatVariables.js +0 -41
- package/vscode/src/vs/workbench/api/browser/mainThreadClipboard.js +0 -24
- package/vscode/src/vs/workbench/api/browser/mainThreadCodeInsets.js +0 -107
- package/vscode/src/vs/workbench/api/browser/mainThreadCommands.js +0 -98
- package/vscode/src/vs/workbench/api/browser/mainThreadComments.js +0 -545
- package/vscode/src/vs/workbench/api/browser/mainThreadConfiguration.js +0 -80
- package/vscode/src/vs/workbench/api/browser/mainThreadConsole.js +0 -35
- package/vscode/src/vs/workbench/api/browser/mainThreadCustomEditors.js +0 -578
- package/vscode/src/vs/workbench/api/browser/mainThreadDebugService.js +0 -424
- package/vscode/src/vs/workbench/api/browser/mainThreadDecorations.js +0 -102
- package/vscode/src/vs/workbench/api/browser/mainThreadDiagnostics.js +0 -69
- package/vscode/src/vs/workbench/api/browser/mainThreadDialogs.js +0 -68
- package/vscode/src/vs/workbench/api/browser/mainThreadDocumentContentProviders.js +0 -79
- package/vscode/src/vs/workbench/api/browser/mainThreadDocuments.js +0 -253
- package/vscode/src/vs/workbench/api/browser/mainThreadDocumentsAndEditors.js +0 -370
- package/vscode/src/vs/workbench/api/browser/mainThreadDownloadService.js +0 -22
- package/vscode/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.js +0 -41
- package/vscode/src/vs/workbench/api/browser/mainThreadEditor.js +0 -414
- package/vscode/src/vs/workbench/api/browser/mainThreadEditorTabs.js +0 -482
- package/vscode/src/vs/workbench/api/browser/mainThreadEditors.js +0 -227
- package/vscode/src/vs/workbench/api/browser/mainThreadErrors.js +0 -24
- package/vscode/src/vs/workbench/api/browser/mainThreadExtensionService.js +0 -317
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystem.js +0 -208
- package/vscode/src/vs/workbench/api/browser/mainThreadFileSystemEventService.js +0 -374
- package/vscode/src/vs/workbench/api/browser/mainThreadInlineChat.js +0 -72
- package/vscode/src/vs/workbench/api/browser/mainThreadInteractive.js +0 -28
- package/vscode/src/vs/workbench/api/browser/mainThreadIssueReporter.js +0 -50
- package/vscode/src/vs/workbench/api/browser/mainThreadLabelService.js +0 -27
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguageFeatures.js +0 -991
- package/vscode/src/vs/workbench/api/browser/mainThreadLanguages.js +0 -78
- package/vscode/src/vs/workbench/api/browser/mainThreadLocalization.js +0 -35
- package/vscode/src/vs/workbench/api/browser/mainThreadLogService.js +0 -78
- package/vscode/src/vs/workbench/api/browser/mainThreadManagedSockets.js +0 -93
- package/vscode/src/vs/workbench/api/browser/mainThreadMessageService.js +0 -137
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebook.js +0 -194
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocuments.js +0 -123
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDocumentsAndEditors.js +0 -188
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookDto.js +0 -129
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookEditors.js +0 -131
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookKernels.js +0 -374
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookRenderers.js +0 -25
- package/vscode/src/vs/workbench/api/browser/mainThreadNotebookSaveParticipant.js +0 -48
- package/vscode/src/vs/workbench/api/browser/mainThreadOutputService.js +0 -76
- package/vscode/src/vs/workbench/api/browser/mainThreadProfilContentHandlers.js +0 -38
- package/vscode/src/vs/workbench/api/browser/mainThreadProgress.js +0 -68
- package/vscode/src/vs/workbench/api/browser/mainThreadQuickDiff.js +0 -42
- package/vscode/src/vs/workbench/api/browser/mainThreadQuickOpen.js +0 -185
- package/vscode/src/vs/workbench/api/browser/mainThreadRemoteConnectionData.js +0 -30
- package/vscode/src/vs/workbench/api/browser/mainThreadSCM.js +0 -493
- package/vscode/src/vs/workbench/api/browser/mainThreadSaveParticipant.js +0 -49
- package/vscode/src/vs/workbench/api/browser/mainThreadSearch.js +0 -146
- package/vscode/src/vs/workbench/api/browser/mainThreadSecretState.js +0 -70
- package/vscode/src/vs/workbench/api/browser/mainThreadShare.js +0 -50
- package/vscode/src/vs/workbench/api/browser/mainThreadSpeech.js +0 -99
- package/vscode/src/vs/workbench/api/browser/mainThreadStatusBar.js +0 -53
- package/vscode/src/vs/workbench/api/browser/mainThreadStorage.js +0 -72
- package/vscode/src/vs/workbench/api/browser/mainThreadTask.js +0 -731
- package/vscode/src/vs/workbench/api/browser/mainThreadTelemetry.js +0 -53
- package/vscode/src/vs/workbench/api/browser/mainThreadTerminalService.js +0 -408
- package/vscode/src/vs/workbench/api/browser/mainThreadTesting.js +0 -195
- package/vscode/src/vs/workbench/api/browser/mainThreadTheming.js +0 -24
- package/vscode/src/vs/workbench/api/browser/mainThreadTimeline.js +0 -55
- package/vscode/src/vs/workbench/api/browser/mainThreadTreeViews.js +0 -312
- package/vscode/src/vs/workbench/api/browser/mainThreadTunnelService.js +0 -223
- package/vscode/src/vs/workbench/api/browser/mainThreadUriOpeners.js +0 -110
- package/vscode/src/vs/workbench/api/browser/mainThreadUrls.js +0 -61
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviewManager.js +0 -29
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviewPanels.js +0 -283
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviewViews.js +0 -100
- package/vscode/src/vs/workbench/api/browser/mainThreadWebviews.js +0 -135
- package/vscode/src/vs/workbench/api/browser/mainThreadWindow.js +0 -57
- package/vscode/src/vs/workbench/api/browser/mainThreadWorkspace.js +0 -268
- package/vscode/src/vs/workbench/api/common/shared/dataTransferCache.js +0 -35
- package/vscode/src/vs/workbench/contrib/customEditor/common/customTextEditorModel.js +0 -73
- package/vscode/src/vs/workbench/contrib/externalUriOpener/common/contributedOpeners.js +0 -83
- package/vscode/src/vs/workbench/services/extensions/browser/extensionService.js +0 -284
- package/vscode/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.js +0 -276
- package/vscode/src/vs/workbench/services/extensions/browser/webWorkerFileSystemProvider.js +0 -52
- package/vscode/src/vs/workbench/services/extensions/common/abstractExtensionService.js +0 -1138
- package/vscode/src/vs/workbench/services/extensions/common/extHostCustomers.js +0 -41
- package/vscode/src/vs/workbench/services/extensions/common/extensionDevOptions.js +0 -25
- package/vscode/src/vs/workbench/services/extensions/common/extensionHostManager.js +0 -512
- package/vscode/src/vs/workbench/services/extensions/common/extensionRunningLocationTracker.js +0 -274
- package/vscode/src/vs/workbench/services/extensions/common/extensionStorageMigration.js +0 -58
- package/vscode/src/vs/workbench/services/extensions/common/extensionsProposedApi.js +0 -80
- package/vscode/src/vs/workbench/services/extensions/common/extensionsUtil.js +0 -64
- package/vscode/src/vs/workbench/services/extensions/common/lazyCreateExtensionHostManager.js +0 -161
- package/vscode/src/vs/workbench/services/extensions/common/remoteConsoleUtil.js +0 -49
- package/vscode/src/vs/workbench/services/extensions/common/remoteExtensionHost.js +0 -222
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
function parse(entry) {
|
|
2
|
-
const args = [];
|
|
3
|
-
let stack;
|
|
4
|
-
try {
|
|
5
|
-
const parsedArguments = JSON.parse(entry.arguments);
|
|
6
|
-
const stackArgument = parsedArguments[parsedArguments.length - 1];
|
|
7
|
-
if (stackArgument && stackArgument.__$stack) {
|
|
8
|
-
parsedArguments.pop();
|
|
9
|
-
stack = stackArgument.__$stack;
|
|
10
|
-
}
|
|
11
|
-
args.push(...parsedArguments);
|
|
12
|
-
}
|
|
13
|
-
catch (error) {
|
|
14
|
-
args.push('Unable to log remote console arguments', entry.arguments);
|
|
15
|
-
}
|
|
16
|
-
return { args, stack };
|
|
17
|
-
}
|
|
18
|
-
function findFirstFrame(stack) {
|
|
19
|
-
if (!stack) {
|
|
20
|
-
return stack;
|
|
21
|
-
}
|
|
22
|
-
const newlineIndex = stack.indexOf('\n');
|
|
23
|
-
if (newlineIndex === -1) {
|
|
24
|
-
return stack;
|
|
25
|
-
}
|
|
26
|
-
return stack.substring(0, newlineIndex);
|
|
27
|
-
}
|
|
28
|
-
function log(entry, label) {
|
|
29
|
-
const { args, stack } = parse(entry);
|
|
30
|
-
const isOneStringArg = typeof args[0] === 'string' && args.length === 1;
|
|
31
|
-
let topFrame = findFirstFrame(stack);
|
|
32
|
-
if (topFrame) {
|
|
33
|
-
topFrame = `(${topFrame.trim()})`;
|
|
34
|
-
}
|
|
35
|
-
let consoleArgs = [];
|
|
36
|
-
if (typeof args[0] === 'string') {
|
|
37
|
-
if (topFrame && isOneStringArg) {
|
|
38
|
-
consoleArgs = [`%c[${label}] %c${args[0]} %c${topFrame}`, color('blue'), color(''), color('grey')];
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
consoleArgs = [`%c[${label}] %c${args[0]}`, color('blue'), color(''), ...args.slice(1)];
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
consoleArgs = [`%c[${label}]%`, color('blue'), ...args];
|
|
46
|
-
}
|
|
47
|
-
if (topFrame && !isOneStringArg) {
|
|
48
|
-
consoleArgs.push(topFrame);
|
|
49
|
-
}
|
|
50
|
-
if (typeof console[entry.severity] !== 'function') {
|
|
51
|
-
throw new Error('Unknown console method');
|
|
52
|
-
}
|
|
53
|
-
console[entry.severity].apply(console, consoleArgs);
|
|
54
|
-
}
|
|
55
|
-
function color(color) {
|
|
56
|
-
return `color: ${color}`;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export { log, parse };
|
|
@@ -1,497 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import { CancellationToken } from 'vscode/vscode/vs/base/common/cancellation';
|
|
3
|
-
import { getErrorMessage, isCancellationError } from 'vscode/vscode/vs/base/common/errors';
|
|
4
|
-
import { Schemas } from 'vscode/vscode/vs/base/common/network';
|
|
5
|
-
import { basename } from 'vscode/vscode/vs/base/common/resources';
|
|
6
|
-
import { semverExports } from '../../../../../../external/vscode-semver/semver.js';
|
|
7
|
-
import { URI } from 'vscode/vscode/vs/base/common/uri';
|
|
8
|
-
import { localizeWithPath } from 'vscode/vscode/vs/nls';
|
|
9
|
-
import { EXTENSION_IDENTIFIER_REGEX, IExtensionManagementService, IExtensionGalleryService } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagement';
|
|
10
|
-
import { getIdAndVersion, areSameExtensions, getGalleryExtensionId, getExtensionId } from 'vscode/vscode/vs/platform/extensionManagement/common/extensionManagementUtil';
|
|
11
|
-
import { EXTENSION_CATEGORIES } from 'vscode/vscode/vs/platform/extensions/common/extensions';
|
|
12
|
-
|
|
13
|
-
const notFound = (id) => ( localizeWithPath(
|
|
14
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
15
|
-
'notFound',
|
|
16
|
-
"Extension '{0}' not found.",
|
|
17
|
-
id
|
|
18
|
-
));
|
|
19
|
-
const useId = ( localizeWithPath(
|
|
20
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
21
|
-
'useId',
|
|
22
|
-
"Make sure you use the full extension ID, including the publisher, e.g.: {0}",
|
|
23
|
-
'ms-dotnettools.csharp'
|
|
24
|
-
));
|
|
25
|
-
let ExtensionManagementCLI = class ExtensionManagementCLI {
|
|
26
|
-
constructor(logger, extensionManagementService, extensionGalleryService) {
|
|
27
|
-
this.logger = logger;
|
|
28
|
-
this.extensionManagementService = extensionManagementService;
|
|
29
|
-
this.extensionGalleryService = extensionGalleryService;
|
|
30
|
-
}
|
|
31
|
-
get location() {
|
|
32
|
-
return undefined;
|
|
33
|
-
}
|
|
34
|
-
async listExtensions(showVersions, category, profileLocation) {
|
|
35
|
-
let extensions = await this.extensionManagementService.getInstalled(1 , profileLocation);
|
|
36
|
-
const categories = ( EXTENSION_CATEGORIES.map(c => c.toLowerCase()));
|
|
37
|
-
if (category && category !== '') {
|
|
38
|
-
if (categories.indexOf(category.toLowerCase()) < 0) {
|
|
39
|
-
this.logger.info('Invalid category please enter a valid category. To list valid categories run --category without a category specified');
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
extensions = extensions.filter(e => {
|
|
43
|
-
if (e.manifest.categories) {
|
|
44
|
-
const lowerCaseCategories = ( e.manifest.categories.map(c => c.toLowerCase()));
|
|
45
|
-
return lowerCaseCategories.indexOf(category.toLowerCase()) > -1;
|
|
46
|
-
}
|
|
47
|
-
return false;
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
else if (category === '') {
|
|
51
|
-
this.logger.info('Possible Categories: ');
|
|
52
|
-
categories.forEach(category => {
|
|
53
|
-
this.logger.info(category);
|
|
54
|
-
});
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
if (this.location) {
|
|
58
|
-
this.logger.info(( localizeWithPath(
|
|
59
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
60
|
-
'listFromLocation',
|
|
61
|
-
"Extensions installed on {0}:",
|
|
62
|
-
this.location
|
|
63
|
-
)));
|
|
64
|
-
}
|
|
65
|
-
extensions = extensions.sort((e1, e2) => e1.identifier.id.localeCompare(e2.identifier.id));
|
|
66
|
-
let lastId = undefined;
|
|
67
|
-
for (const extension of extensions) {
|
|
68
|
-
if (lastId !== extension.identifier.id) {
|
|
69
|
-
lastId = extension.identifier.id;
|
|
70
|
-
this.logger.info(showVersions ? `${lastId}@${extension.manifest.version}` : lastId);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
async installExtensions(extensions, builtinExtensions, installOptions, force) {
|
|
75
|
-
const failed = [];
|
|
76
|
-
try {
|
|
77
|
-
if (extensions.length) {
|
|
78
|
-
this.logger.info(this.location ? ( localizeWithPath(
|
|
79
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
80
|
-
'installingExtensionsOnLocation',
|
|
81
|
-
"Installing extensions on {0}...",
|
|
82
|
-
this.location
|
|
83
|
-
)) : ( localizeWithPath(
|
|
84
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
85
|
-
'installingExtensions',
|
|
86
|
-
"Installing extensions..."
|
|
87
|
-
)));
|
|
88
|
-
}
|
|
89
|
-
const installVSIXInfos = [];
|
|
90
|
-
const installExtensionInfos = [];
|
|
91
|
-
const addInstallExtensionInfo = (id, version, isBuiltin) => {
|
|
92
|
-
installExtensionInfos.push({ id, version: version !== 'prerelease' ? version : undefined, installOptions: { ...installOptions, isBuiltin, installPreReleaseVersion: version === 'prerelease' || installOptions.installPreReleaseVersion } });
|
|
93
|
-
};
|
|
94
|
-
for (const extension of extensions) {
|
|
95
|
-
if (extension instanceof URI) {
|
|
96
|
-
installVSIXInfos.push({ vsix: extension, installOptions });
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
const [id, version] = getIdAndVersion(extension);
|
|
100
|
-
addInstallExtensionInfo(id, version, false);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
for (const extension of builtinExtensions) {
|
|
104
|
-
if (extension instanceof URI) {
|
|
105
|
-
installVSIXInfos.push({ vsix: extension, installOptions: { ...installOptions, isBuiltin: true, donotIncludePackAndDependencies: true } });
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
const [id, version] = getIdAndVersion(extension);
|
|
109
|
-
addInstallExtensionInfo(id, version, true);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
const installed = await this.extensionManagementService.getInstalled(1 , installOptions.profileLocation);
|
|
113
|
-
if (installVSIXInfos.length) {
|
|
114
|
-
await Promise.all(( installVSIXInfos.map(async ({ vsix, installOptions }) => {
|
|
115
|
-
try {
|
|
116
|
-
await this.installVSIX(vsix, installOptions, force, installed);
|
|
117
|
-
}
|
|
118
|
-
catch (err) {
|
|
119
|
-
this.logger.error(err);
|
|
120
|
-
failed.push(( vsix.toString()));
|
|
121
|
-
}
|
|
122
|
-
})));
|
|
123
|
-
}
|
|
124
|
-
if (installExtensionInfos.length) {
|
|
125
|
-
const failedGalleryExtensions = await this.installGalleryExtensions(installExtensionInfos, installed, force);
|
|
126
|
-
failed.push(...failedGalleryExtensions);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
this.logger.error(( localizeWithPath(
|
|
131
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
132
|
-
'error while installing extensions',
|
|
133
|
-
"Error while installing extensions: {0}",
|
|
134
|
-
getErrorMessage(error)
|
|
135
|
-
)));
|
|
136
|
-
throw error;
|
|
137
|
-
}
|
|
138
|
-
if (failed.length) {
|
|
139
|
-
throw new Error(localizeWithPath('vs/platform/extensionManagement/common/extensionManagementCLI', 'installation failed', "Failed Installing Extensions: {0}", failed.join(', ')));
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
async updateExtensions(profileLocation) {
|
|
143
|
-
const installedExtensions = await this.extensionManagementService.getInstalled(1 , profileLocation);
|
|
144
|
-
const installedExtensionsQuery = [];
|
|
145
|
-
for (const extension of installedExtensions) {
|
|
146
|
-
if (!!extension.identifier.uuid) {
|
|
147
|
-
installedExtensionsQuery.push({ ...extension.identifier, preRelease: extension.preRelease });
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
this.logger.trace(( localizeWithPath(
|
|
151
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
152
|
-
{ key: 'updateExtensionsQuery', comment: ['Placeholder is for the count of extensions'] },
|
|
153
|
-
"Fetching latest versions for {0} extensions",
|
|
154
|
-
installedExtensionsQuery.length
|
|
155
|
-
)));
|
|
156
|
-
const availableVersions = await this.extensionGalleryService.getExtensions(installedExtensionsQuery, { compatible: true }, CancellationToken.None);
|
|
157
|
-
const extensionsToUpdate = [];
|
|
158
|
-
for (const newVersion of availableVersions) {
|
|
159
|
-
for (const oldVersion of installedExtensions) {
|
|
160
|
-
if (areSameExtensions(oldVersion.identifier, newVersion.identifier) && semverExports.gt(newVersion.version, oldVersion.manifest.version)) {
|
|
161
|
-
extensionsToUpdate.push({
|
|
162
|
-
extension: newVersion,
|
|
163
|
-
options: { operation: 3 , installPreReleaseVersion: oldVersion.isPreReleaseVersion }
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
if (!extensionsToUpdate.length) {
|
|
169
|
-
this.logger.info(( localizeWithPath(
|
|
170
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
171
|
-
'updateExtensionsNoExtensions',
|
|
172
|
-
"No extension to update"
|
|
173
|
-
)));
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
this.logger.info(( localizeWithPath(
|
|
177
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
178
|
-
'updateExtensionsNewVersionsAvailable',
|
|
179
|
-
"Updating extensions: {0}",
|
|
180
|
-
( extensionsToUpdate.map(ext => ext.extension.identifier.id)).join(', ')
|
|
181
|
-
)));
|
|
182
|
-
const installationResult = await this.extensionManagementService.installGalleryExtensions(extensionsToUpdate);
|
|
183
|
-
for (const extensionResult of installationResult) {
|
|
184
|
-
if (extensionResult.error) {
|
|
185
|
-
this.logger.error(( localizeWithPath(
|
|
186
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
187
|
-
'errorUpdatingExtension',
|
|
188
|
-
"Error while updating extension {0}: {1}",
|
|
189
|
-
extensionResult.identifier.id,
|
|
190
|
-
getErrorMessage(extensionResult.error)
|
|
191
|
-
)));
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
this.logger.info(( localizeWithPath(
|
|
195
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
196
|
-
'successUpdate',
|
|
197
|
-
"Extension '{0}' v{1} was successfully updated.",
|
|
198
|
-
extensionResult.identifier.id,
|
|
199
|
-
extensionResult.local?.manifest.version
|
|
200
|
-
)));
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
async installGalleryExtensions(installExtensionInfos, installed, force) {
|
|
205
|
-
installExtensionInfos = installExtensionInfos.filter(({ id, version }) => {
|
|
206
|
-
const installedExtension = installed.find(i => areSameExtensions(i.identifier, { id }));
|
|
207
|
-
if (installedExtension) {
|
|
208
|
-
if (!force && (!version || (version === 'prerelease' && installedExtension.preRelease))) {
|
|
209
|
-
this.logger.info(( localizeWithPath(
|
|
210
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
211
|
-
'alreadyInstalled-checkAndUpdate',
|
|
212
|
-
"Extension '{0}' v{1} is already installed. Use '--force' option to update to latest version or provide '@<version>' to install a specific version, for example: '{2}@1.2.3'.",
|
|
213
|
-
id,
|
|
214
|
-
installedExtension.manifest.version,
|
|
215
|
-
id
|
|
216
|
-
)));
|
|
217
|
-
return false;
|
|
218
|
-
}
|
|
219
|
-
if (version && installedExtension.manifest.version === version) {
|
|
220
|
-
this.logger.info(( localizeWithPath(
|
|
221
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
222
|
-
'alreadyInstalled',
|
|
223
|
-
"Extension '{0}' is already installed.",
|
|
224
|
-
`${id}@${version}`
|
|
225
|
-
)));
|
|
226
|
-
return false;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
return true;
|
|
230
|
-
});
|
|
231
|
-
if (!installExtensionInfos.length) {
|
|
232
|
-
return [];
|
|
233
|
-
}
|
|
234
|
-
const failed = [];
|
|
235
|
-
const extensionsToInstall = [];
|
|
236
|
-
const galleryExtensions = await this.getGalleryExtensions(installExtensionInfos);
|
|
237
|
-
await Promise.all(( installExtensionInfos.map(async ({ id, version, installOptions }) => {
|
|
238
|
-
const gallery = galleryExtensions.get(id.toLowerCase());
|
|
239
|
-
if (!gallery) {
|
|
240
|
-
this.logger.error(`${notFound(version ? `${id}@${version}` : id)}\n${useId}`);
|
|
241
|
-
failed.push(id);
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
try {
|
|
245
|
-
const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None);
|
|
246
|
-
if (manifest && !this.validateExtensionKind(manifest)) {
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
catch (err) {
|
|
251
|
-
this.logger.error(err.message || err.stack || err);
|
|
252
|
-
failed.push(id);
|
|
253
|
-
return;
|
|
254
|
-
}
|
|
255
|
-
const installedExtension = installed.find(e => areSameExtensions(e.identifier, gallery.identifier));
|
|
256
|
-
if (installedExtension) {
|
|
257
|
-
if (gallery.version === installedExtension.manifest.version) {
|
|
258
|
-
this.logger.info(( localizeWithPath(
|
|
259
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
260
|
-
'alreadyInstalled',
|
|
261
|
-
"Extension '{0}' is already installed.",
|
|
262
|
-
version ? `${id}@${version}` : id
|
|
263
|
-
)));
|
|
264
|
-
return;
|
|
265
|
-
}
|
|
266
|
-
this.logger.info(( localizeWithPath(
|
|
267
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
268
|
-
'updateMessage',
|
|
269
|
-
"Updating the extension '{0}' to the version {1}",
|
|
270
|
-
id,
|
|
271
|
-
gallery.version
|
|
272
|
-
)));
|
|
273
|
-
}
|
|
274
|
-
if (installOptions.isBuiltin) {
|
|
275
|
-
this.logger.info(version ? ( localizeWithPath(
|
|
276
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
277
|
-
'installing builtin with version',
|
|
278
|
-
"Installing builtin extension '{0}' v{1}...",
|
|
279
|
-
id,
|
|
280
|
-
version
|
|
281
|
-
)) : ( localizeWithPath(
|
|
282
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
283
|
-
'installing builtin ',
|
|
284
|
-
"Installing builtin extension '{0}'...",
|
|
285
|
-
id
|
|
286
|
-
)));
|
|
287
|
-
}
|
|
288
|
-
else {
|
|
289
|
-
this.logger.info(version ? ( localizeWithPath(
|
|
290
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
291
|
-
'installing with version',
|
|
292
|
-
"Installing extension '{0}' v{1}...",
|
|
293
|
-
id,
|
|
294
|
-
version
|
|
295
|
-
)) : ( localizeWithPath(
|
|
296
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
297
|
-
'installing',
|
|
298
|
-
"Installing extension '{0}'...",
|
|
299
|
-
id
|
|
300
|
-
)));
|
|
301
|
-
}
|
|
302
|
-
extensionsToInstall.push({
|
|
303
|
-
extension: gallery,
|
|
304
|
-
options: { ...installOptions, installGivenVersion: !!version },
|
|
305
|
-
});
|
|
306
|
-
})));
|
|
307
|
-
if (extensionsToInstall.length) {
|
|
308
|
-
const installationResult = await this.extensionManagementService.installGalleryExtensions(extensionsToInstall);
|
|
309
|
-
for (const extensionResult of installationResult) {
|
|
310
|
-
if (extensionResult.error) {
|
|
311
|
-
this.logger.error(( localizeWithPath(
|
|
312
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
313
|
-
'errorInstallingExtension',
|
|
314
|
-
"Error while installing extension {0}: {1}",
|
|
315
|
-
extensionResult.identifier.id,
|
|
316
|
-
getErrorMessage(extensionResult.error)
|
|
317
|
-
)));
|
|
318
|
-
failed.push(extensionResult.identifier.id);
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
this.logger.info(( localizeWithPath(
|
|
322
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
323
|
-
'successInstall',
|
|
324
|
-
"Extension '{0}' v{1} was successfully installed.",
|
|
325
|
-
extensionResult.identifier.id,
|
|
326
|
-
extensionResult.local?.manifest.version
|
|
327
|
-
)));
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
return failed;
|
|
332
|
-
}
|
|
333
|
-
async installVSIX(vsix, installOptions, force, installedExtensions) {
|
|
334
|
-
const manifest = await this.extensionManagementService.getManifest(vsix);
|
|
335
|
-
if (!manifest) {
|
|
336
|
-
throw new Error('Invalid vsix');
|
|
337
|
-
}
|
|
338
|
-
const valid = await this.validateVSIX(manifest, force, installOptions.profileLocation, installedExtensions);
|
|
339
|
-
if (valid) {
|
|
340
|
-
try {
|
|
341
|
-
await this.extensionManagementService.install(vsix, installOptions);
|
|
342
|
-
this.logger.info(( localizeWithPath(
|
|
343
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
344
|
-
'successVsixInstall',
|
|
345
|
-
"Extension '{0}' was successfully installed.",
|
|
346
|
-
basename(vsix)
|
|
347
|
-
)));
|
|
348
|
-
}
|
|
349
|
-
catch (error) {
|
|
350
|
-
if (isCancellationError(error)) {
|
|
351
|
-
this.logger.info(( localizeWithPath(
|
|
352
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
353
|
-
'cancelVsixInstall',
|
|
354
|
-
"Cancelled installing extension '{0}'.",
|
|
355
|
-
basename(vsix)
|
|
356
|
-
)));
|
|
357
|
-
}
|
|
358
|
-
else {
|
|
359
|
-
throw error;
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
async getGalleryExtensions(extensions) {
|
|
365
|
-
const galleryExtensions = ( new Map());
|
|
366
|
-
const preRelease = ( extensions.some(e => e.installOptions.installPreReleaseVersion));
|
|
367
|
-
const targetPlatform = await this.extensionManagementService.getTargetPlatform();
|
|
368
|
-
const extensionInfos = [];
|
|
369
|
-
for (const extension of extensions) {
|
|
370
|
-
if (EXTENSION_IDENTIFIER_REGEX.test(extension.id)) {
|
|
371
|
-
extensionInfos.push({ ...extension, preRelease });
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
if (extensionInfos.length) {
|
|
375
|
-
const result = await this.extensionGalleryService.getExtensions(extensionInfos, { targetPlatform }, CancellationToken.None);
|
|
376
|
-
for (const extension of result) {
|
|
377
|
-
galleryExtensions.set(extension.identifier.id.toLowerCase(), extension);
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
return galleryExtensions;
|
|
381
|
-
}
|
|
382
|
-
validateExtensionKind(_manifest) {
|
|
383
|
-
return true;
|
|
384
|
-
}
|
|
385
|
-
async validateVSIX(manifest, force, profileLocation, installedExtensions) {
|
|
386
|
-
if (!force) {
|
|
387
|
-
const extensionIdentifier = { id: getGalleryExtensionId(manifest.publisher, manifest.name) };
|
|
388
|
-
const newer = installedExtensions.find(local => areSameExtensions(extensionIdentifier, local.identifier) && semverExports.gt(local.manifest.version, manifest.version));
|
|
389
|
-
if (newer) {
|
|
390
|
-
this.logger.info(( localizeWithPath(
|
|
391
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
392
|
-
'forceDowngrade',
|
|
393
|
-
"A newer version of extension '{0}' v{1} is already installed. Use '--force' option to downgrade to older version.",
|
|
394
|
-
newer.identifier.id,
|
|
395
|
-
newer.manifest.version,
|
|
396
|
-
manifest.version
|
|
397
|
-
)));
|
|
398
|
-
return false;
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
return this.validateExtensionKind(manifest);
|
|
402
|
-
}
|
|
403
|
-
async uninstallExtensions(extensions, force, profileLocation) {
|
|
404
|
-
const getId = async (extensionDescription) => {
|
|
405
|
-
if (extensionDescription instanceof URI) {
|
|
406
|
-
const manifest = await this.extensionManagementService.getManifest(extensionDescription);
|
|
407
|
-
return getExtensionId(manifest.publisher, manifest.name);
|
|
408
|
-
}
|
|
409
|
-
return extensionDescription;
|
|
410
|
-
};
|
|
411
|
-
for (const extension of extensions) {
|
|
412
|
-
const id = await getId(extension);
|
|
413
|
-
const installed = await this.extensionManagementService.getInstalled(undefined, profileLocation);
|
|
414
|
-
const extensionsToUninstall = installed.filter(e => areSameExtensions(e.identifier, { id }));
|
|
415
|
-
if (!extensionsToUninstall.length) {
|
|
416
|
-
throw new Error(`${this.notInstalled(id)}\n${useId}`);
|
|
417
|
-
}
|
|
418
|
-
if (( extensionsToUninstall.some(e => e.type === 0 ))) {
|
|
419
|
-
this.logger.info(( localizeWithPath(
|
|
420
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
421
|
-
'builtin',
|
|
422
|
-
"Extension '{0}' is a Built-in extension and cannot be uninstalled",
|
|
423
|
-
id
|
|
424
|
-
)));
|
|
425
|
-
return;
|
|
426
|
-
}
|
|
427
|
-
if (!force && ( extensionsToUninstall.some(e => e.isBuiltin))) {
|
|
428
|
-
this.logger.info(( localizeWithPath(
|
|
429
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
430
|
-
'forceUninstall',
|
|
431
|
-
"Extension '{0}' is marked as a Built-in extension by user. Please use '--force' option to uninstall it.",
|
|
432
|
-
id
|
|
433
|
-
)));
|
|
434
|
-
return;
|
|
435
|
-
}
|
|
436
|
-
this.logger.info(( localizeWithPath(
|
|
437
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
438
|
-
'uninstalling',
|
|
439
|
-
"Uninstalling {0}...",
|
|
440
|
-
id
|
|
441
|
-
)));
|
|
442
|
-
for (const extensionToUninstall of extensionsToUninstall) {
|
|
443
|
-
await this.extensionManagementService.uninstall(extensionToUninstall, { profileLocation });
|
|
444
|
-
}
|
|
445
|
-
if (this.location) {
|
|
446
|
-
this.logger.info(( localizeWithPath(
|
|
447
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
448
|
-
'successUninstallFromLocation',
|
|
449
|
-
"Extension '{0}' was successfully uninstalled from {1}!",
|
|
450
|
-
id,
|
|
451
|
-
this.location
|
|
452
|
-
)));
|
|
453
|
-
}
|
|
454
|
-
else {
|
|
455
|
-
this.logger.info(( localizeWithPath(
|
|
456
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
457
|
-
'successUninstall',
|
|
458
|
-
"Extension '{0}' was successfully uninstalled!",
|
|
459
|
-
id
|
|
460
|
-
)));
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
async locateExtension(extensions) {
|
|
465
|
-
const installed = await this.extensionManagementService.getInstalled();
|
|
466
|
-
extensions.forEach(e => {
|
|
467
|
-
installed.forEach(i => {
|
|
468
|
-
if (i.identifier.id === e) {
|
|
469
|
-
if (i.location.scheme === Schemas.file) {
|
|
470
|
-
this.logger.info(i.location.fsPath);
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
});
|
|
475
|
-
});
|
|
476
|
-
}
|
|
477
|
-
notInstalled(id) {
|
|
478
|
-
return this.location ? ( localizeWithPath(
|
|
479
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
480
|
-
'notInstalleddOnLocation',
|
|
481
|
-
"Extension '{0}' is not installed on {1}.",
|
|
482
|
-
id,
|
|
483
|
-
this.location
|
|
484
|
-
)) : ( localizeWithPath(
|
|
485
|
-
'vs/platform/extensionManagement/common/extensionManagementCLI',
|
|
486
|
-
'notInstalled',
|
|
487
|
-
"Extension '{0}' is not installed.",
|
|
488
|
-
id
|
|
489
|
-
));
|
|
490
|
-
}
|
|
491
|
-
};
|
|
492
|
-
ExtensionManagementCLI = ( __decorate([
|
|
493
|
-
( __param(1, IExtensionManagementService)),
|
|
494
|
-
( __param(2, IExtensionGalleryService))
|
|
495
|
-
], ExtensionManagementCLI));
|
|
496
|
-
|
|
497
|
-
export { ExtensionManagementCLI };
|
package/vscode/src/vs/platform/extensionResourceLoader/browser/extensionResourceLoaderService.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from '../../../../../../external/tslib/tslib.es6.js';
|
|
2
|
-
import { IFileService } from 'vscode/vscode/vs/platform/files/common/files';
|
|
3
|
-
import { FileAccess, Schemas } from 'vscode/vscode/vs/base/common/network';
|
|
4
|
-
import { IProductService } from 'vscode/vscode/vs/platform/product/common/productService';
|
|
5
|
-
import { IStorageService } from 'vscode/vscode/vs/platform/storage/common/storage';
|
|
6
|
-
import { IEnvironmentService } from 'vscode/vscode/vs/platform/environment/common/environment';
|
|
7
|
-
import { ILogService } from 'vscode/vscode/vs/platform/log/common/log';
|
|
8
|
-
import { IConfigurationService } from 'vscode/vscode/vs/platform/configuration/common/configuration';
|
|
9
|
-
import { AbstractExtensionResourceLoaderService } from 'vscode/vscode/vs/platform/extensionResourceLoader/common/extensionResourceLoader';
|
|
10
|
-
|
|
11
|
-
let ExtensionResourceLoaderService = class ExtensionResourceLoaderService extends AbstractExtensionResourceLoaderService {
|
|
12
|
-
constructor(fileService, storageService, productService, environmentService, configurationService, _logService) {
|
|
13
|
-
super(fileService, storageService, productService, environmentService, configurationService);
|
|
14
|
-
this._logService = _logService;
|
|
15
|
-
}
|
|
16
|
-
async readExtensionResource(uri) {
|
|
17
|
-
uri = FileAccess.uriToBrowserUri(uri);
|
|
18
|
-
if (uri.scheme !== Schemas.http && uri.scheme !== Schemas.https && uri.scheme !== Schemas.data) {
|
|
19
|
-
const result = await this._fileService.readFile(uri);
|
|
20
|
-
return ( result.value.toString());
|
|
21
|
-
}
|
|
22
|
-
const requestInit = {};
|
|
23
|
-
if (this.isExtensionGalleryResource(uri)) {
|
|
24
|
-
requestInit.headers = await this.getExtensionGalleryRequestHeaders();
|
|
25
|
-
requestInit.mode = 'cors';
|
|
26
|
-
}
|
|
27
|
-
const response = await fetch(( uri.toString(true)), requestInit);
|
|
28
|
-
if (response.status !== 200) {
|
|
29
|
-
this._logService.info(`Request to '${( uri.toString(true))}' failed with status code ${response.status}`);
|
|
30
|
-
throw new Error(response.statusText);
|
|
31
|
-
}
|
|
32
|
-
return response.text();
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
ExtensionResourceLoaderService = ( __decorate([
|
|
36
|
-
( __param(0, IFileService)),
|
|
37
|
-
( __param(1, IStorageService)),
|
|
38
|
-
( __param(2, IProductService)),
|
|
39
|
-
( __param(3, IEnvironmentService)),
|
|
40
|
-
( __param(4, IConfigurationService)),
|
|
41
|
-
( __param(5, ILogService))
|
|
42
|
-
], ExtensionResourceLoaderService));
|
|
43
|
-
|
|
44
|
-
export { ExtensionResourceLoaderService };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { isThenable, Promises } from 'vscode/vscode/vs/base/common/async';
|
|
2
|
-
|
|
3
|
-
function handleVetos(vetos, onError) {
|
|
4
|
-
if (vetos.length === 0) {
|
|
5
|
-
return Promise.resolve(false);
|
|
6
|
-
}
|
|
7
|
-
const promises = [];
|
|
8
|
-
let lazyValue = false;
|
|
9
|
-
for (const valueOrPromise of vetos) {
|
|
10
|
-
if (valueOrPromise === true) {
|
|
11
|
-
return Promise.resolve(true);
|
|
12
|
-
}
|
|
13
|
-
if (isThenable(valueOrPromise)) {
|
|
14
|
-
promises.push(valueOrPromise.then(value => {
|
|
15
|
-
if (value) {
|
|
16
|
-
lazyValue = true;
|
|
17
|
-
}
|
|
18
|
-
}, err => {
|
|
19
|
-
onError(err);
|
|
20
|
-
lazyValue = true;
|
|
21
|
-
}));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return Promises.settled(promises).then(() => lazyValue);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export { handleVetos };
|