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 { coalesce } from '../../../base/common/arrays.js';
7
>
import { ThrottledDelayer } from '../../../base/common/async.js';
8
>
import * as objects from '../../../base/common/objects.js';
9
>
import { VSBuffer } from '../../../base/common/buffer.js';
10
>
import { getErrorMessage } from '../../../base/common/errors.js';
11
>
import { getNodeType, parse, ParseError } from '../../../base/common/json.js';
12
>
import { getParseErrorMessage } from '../../../base/common/jsonErrorMessages.js';
13
>
import { Disposable } from '../../../base/common/lifecycle.js';
14
>
import { FileAccess, Schemas } from '../../../base/common/network.js';
15
>
import * as path from '../../../base/common/path.js';
16
>
import * as platform from '../../../base/common/platform.js';
17
>
import { basename, isEqual, joinPath } from '../../../base/common/resources.js';
18
>
import * as semver from '../../../base/common/semver/semver.js';
19
>
import Severity from '../../../base/common/severity.js';
20
>
import { URI } from '../../../base/common/uri.js';
21
>
import { localize } from '../../../nls.js';
22
>
import { IEnvironmentService } from '../../environment/common/environment.js';
23
>
import { IProductVersion, Metadata } from './extensionManagement.js';
24
>
import { areSameExtensions, computeTargetPlatform, getExtensionId, getGalleryExtensionId } from './extensionManagementUtil.js';
25
>
import { ExtensionType, ExtensionIdentifier, IExtensionManifest, TargetPlatform, IExtensionIdentifier, IRelaxedExtensionManifest, UNDEFINED_PUBLISHER, IExtensionDescription, BUILTIN_MANIFEST_CACHE_FILE, USER_MANIFEST_CACHE_FILE, ExtensionIdentifierMap, parseEnabledApiProposalNames } from '../../extensions/common/extensions.js';
26
>
import { validateExtensionManifest } from '../../extensions/common/extensionValidator.js';
27
>
import { FileOperationResult, IFileService, toFileOperationResult } from '../../files/common/files.js';
28
>
import { createDecorator, IInstantiationService } from '../../instantiation/common/instantiation.js';
29
>
import { ILogService } from '../../log/common/log.js';
30
>
import { IProductService } from '../../product/common/productService.js';
31
>
import { Emitter, Event } from '../../../base/common/event.js';
32
>
import { revive } from '../../../base/common/marshalling.js';
33
>
import { ExtensionsProfileScanningError, ExtensionsProfileScanningErrorCode, IExtensionsProfileScannerService, IProfileExtensionsScanOptions, IScannedProfileExtension } from './extensionsProfileScannerService.js';
34
>
import { IUserDataProfile, IUserDataProfilesService } from '../../userDataProfile/common/userDataProfile.js';
35
>
import { IUriIdentityService } from '../../uriIdentity/common/uriIdentity.js';
36
>
import { localizeManifest } from './extensionNls.js';
37
>
38
>
export type ManifestMetadata = Partial<{
39
>
targetPlatform: TargetPlatform;
40
>
installedTimestamp: number;
41
>
size: number;
42
>
}>;
43
>
44
>
export type IScannedExtensionManifest = IRelaxedExtensionManifest & { __metadata?: ManifestMetadata };
45
>
46
>
interface IRelaxedScannedExtension {
47
>
type: ExtensionType;
48
>
isBuiltin: boolean;
49
>
identifier: IExtensionIdentifier;
50
>
manifest: IRelaxedExtensionManifest;
51
>
location: URI;
52
>
targetPlatform: TargetPlatform;
53
>
publisherDisplayName?: string;
54
>
metadata: Metadata | undefined;
55
>
isValid: boolean;
56
>
validations: readonly [Severity, string][];
57
>
preRelease: boolean;
58
>
forceAutoUpdate: boolean;
59
>
}
60
>
61
>
export type IScannedExtension = Readonly<IRelaxedScannedExtension> & { manifest: IExtensionManifest };
62
>
63
>
export interface Translations {
64
>
[id: string]: string;
65
>
}
66
>
67
>
export namespace Translations {
68
>
export function equals(a: Translations, b: Translations): boolean {
69
if (a === b) {
70
return true;