2
>
* Copyright (c) Microsoft Corporation. All rights reserved.
3
>
* Licensed under the MIT License. See License.txt in the project root for license information.
4
>
*--------------------------------------------------------------------------------------------*/
5
>
6
>
import { distinct, isNonEmptyArray } from '../../../base/common/arrays.js';
7
>
import { Barrier, CancelablePromise, createCancelablePromise } from '../../../base/common/async.js';
8
>
import { CancellationToken } from '../../../base/common/cancellation.js';
9
>
import { CancellationError, getErrorMessage, isCancellationError } from '../../../base/common/errors.js';
10
>
import { Emitter, Event } from '../../../base/common/event.js';
11
>
import { Disposable, toDisposable } from '../../../base/common/lifecycle.js';
12
>
import { ResourceMap } from '../../../base/common/map.js';
13
>
import { isWeb } from '../../../base/common/platform.js';
14
>
import { URI } from '../../../base/common/uri.js';
15
>
import * as nls from '../../../nls.js';
16
>
import {
17
>
ExtensionManagementError, IExtensionGalleryService, IExtensionIdentifier, IExtensionManagementParticipant, IGalleryExtension, ILocalExtension, InstallOperation,
18
>
IExtensionsControlManifest, StatisticType, isTargetPlatformCompatible, TargetPlatformToString, ExtensionManagementErrorCode,
19
>
InstallOptions, UninstallOptions, Metadata, InstallExtensionEvent, DidUninstallExtensionEvent, InstallExtensionResult, UninstallExtensionEvent, IExtensionManagementService, InstallExtensionInfo, EXTENSION_INSTALL_DEP_PACK_CONTEXT, ExtensionGalleryError,
20
>
IProductVersion, ExtensionGalleryErrorCode,
21
>
EXTENSION_INSTALL_SOURCE_CONTEXT,
22
>
DidUpdateExtensionMetadata,
23
>
UninstallExtensionInfo,
24
>
ExtensionSignatureVerificationCode,
25
>
IAllowedExtensionsService
26
>
} from './extensionManagement.js';
27
>
import { areSameExtensions, ExtensionKey, getGalleryExtensionId, getGalleryExtensionTelemetryData, getLocalExtensionTelemetryData, isMalicious } from './extensionManagementUtil.js';
28
>
import { ExtensionType, IExtensionManifest, isApplicationScopedExtension, TargetPlatform } from '../../extensions/common/extensions.js';
29
>
import { ILogService } from '../../log/common/log.js';
30
>
import { IProductService } from '../../product/common/productService.js';
31
>
import { ITelemetryService } from '../../telemetry/common/telemetry.js';
32
>
import { IUriIdentityService } from '../../uriIdentity/common/uriIdentity.js';
33
>
import { IUserDataProfilesService } from '../../userDataProfile/common/userDataProfile.js';
34
>
import { IMarkdownString, MarkdownString } from '../../../base/common/htmlContent.js';
35
>
36
>
export type InstallableExtension = { readonly manifest: IExtensionManifest; extension: IGalleryExtension | URI; options: InstallOptions };
37
>
38
>
export type InstallExtensionTaskOptions = InstallOptions & { readonly profileLocation: URI; readonly productVersion: IProductVersion };
39
>
export interface IInstallExtensionTask {
40
>
readonly manifest: IExtensionManifest;
41
>
readonly identifier: IExtensionIdentifier;
42
>
readonly source: IGalleryExtension | URI;
43
>
readonly operation: InstallOperation;
44
>
readonly options: InstallExtensionTaskOptions;
45
>
readonly verificationStatus?: ExtensionSignatureVerificationCode;
46
>
run(): Promise<ILocalExtension>;
47
>
waitUntilTaskIsFinished(): Promise<ILocalExtension>;
48
>
cancel(): void;
49
>
}
50
>
51
>
export type UninstallExtensionTaskOptions = UninstallOptions & { readonly profileLocation: URI };
52
>
export interface IUninstallExtensionTask {
53
>
readonly options: UninstallExtensionTaskOptions;
54
>
readonly extension: ILocalExtension;
55
>
run(): Promise<void>;
56
>
waitUntilTaskIsFinished(): Promise<void>;
57
>
cancel(): void;
58
>
}
59
>
60
>
export abstract class CommontExtensionManagementService extends Disposable implements IExtensionManagementService {
61
>
62
>
_serviceBrand: undefined;
63
>
64
>
readonly preferPreReleases: boolean;
65
>
66
>
constructor(
67
@IProductService protected readonly productService: IProductService,
68
@IAllowedExtensionsService protected readonly allowedExtensionsService: IAllowedExtensionsService,