sussudio
Version:
An unofficial VS Code Internal API
118 lines (117 loc) • 7.56 kB
text/typescript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Disposable } from "../../../base/common/lifecycle.mjs";
import Severity from "../../../base/common/severity.mjs";
import { URI } from "../../../base/common/uri.mjs";
import { IEnvironmentService } from "../../environment/common/environment.mjs";
import { Metadata } from "./extensionManagement.mjs";
import { ExtensionType, IExtensionManifest, TargetPlatform, IExtensionIdentifier, IRelaxedExtensionManifest, IExtensionDescription } from "../../extensions/common/extensions.mjs";
import { IFileService } from "../../files/common/files.mjs";
import { IInstantiationService } from "../../instantiation/common/instantiation.mjs";
import { ILogService } from "../../log/common/log.mjs";
import { IProductService } from "../../product/common/productService.mjs";
import { Event } from "../../../base/common/event.mjs";
import { IExtensionsProfileScannerService } from "./extensionsProfileScannerService.mjs";
import { IUserDataProfilesService } from "../../userDataProfile/common/userDataProfile.mjs";
import { IUriIdentityService } from "../../uriIdentity/common/uriIdentity.mjs";
export type IScannedExtensionManifest = IRelaxedExtensionManifest & {
__metadata?: Metadata;
};
interface IRelaxedScannedExtension {
type: ExtensionType;
isBuiltin: boolean;
identifier: IExtensionIdentifier;
manifest: IRelaxedExtensionManifest;
location: URI;
targetPlatform: TargetPlatform;
metadata: Metadata | undefined;
isValid: boolean;
validations: readonly [Severity, string][];
}
export type IScannedExtension = Readonly<IRelaxedScannedExtension> & {
manifest: IExtensionManifest;
};
export interface Translations {
[id: string]: string;
}
export declare namespace Translations {
function equals(a: Translations, b: Translations): boolean;
}
export type ScanOptions = {
readonly profileLocation?: URI;
readonly includeInvalid?: boolean;
readonly includeAllVersions?: boolean;
readonly includeUninstalled?: boolean;
readonly checkControlFile?: boolean;
readonly language?: string;
readonly useCache?: boolean;
};
export declare const IExtensionsScannerService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IExtensionsScannerService>;
export interface IExtensionsScannerService {
readonly _serviceBrand: undefined;
readonly systemExtensionsLocation: URI;
readonly userExtensionsLocation: URI;
readonly onDidChangeCache: Event<ExtensionType>;
getTargetPlatform(): Promise<TargetPlatform>;
scanAllExtensions(systemScanOptions: ScanOptions, userScanOptions: ScanOptions, includeExtensionsUnderDev: boolean): Promise<IScannedExtension[]>;
scanSystemExtensions(scanOptions: ScanOptions): Promise<IScannedExtension[]>;
scanUserExtensions(scanOptions: ScanOptions): Promise<IScannedExtension[]>;
scanExtensionsUnderDevelopment(scanOptions: ScanOptions, existingExtensions: IScannedExtension[]): Promise<IScannedExtension[]>;
scanExistingExtension(extensionLocation: URI, extensionType: ExtensionType, scanOptions: ScanOptions): Promise<IScannedExtension | null>;
scanOneOrMultipleExtensions(extensionLocation: URI, extensionType: ExtensionType, scanOptions: ScanOptions): Promise<IScannedExtension[]>;
scanMetadata(extensionLocation: URI): Promise<Metadata | undefined>;
updateMetadata(extensionLocation: URI, metadata: Partial<Metadata>): Promise<void>;
initializeDefaultProfileExtensions(): Promise<void>;
}
export declare abstract class AbstractExtensionsScannerService extends Disposable implements IExtensionsScannerService {
readonly systemExtensionsLocation: URI;
readonly userExtensionsLocation: URI;
private readonly extensionsControlLocation;
private readonly cacheLocation;
private readonly userDataProfilesService;
protected readonly extensionsProfileScannerService: IExtensionsProfileScannerService;
protected readonly fileService: IFileService;
protected readonly logService: ILogService;
private readonly environmentService;
private readonly productService;
private readonly uriIdentityService;
private readonly instantiationService;
readonly _serviceBrand: undefined;
protected abstract getTranslations(language: string): Promise<Translations>;
private readonly _onDidChangeCache;
readonly onDidChangeCache: Event<ExtensionType>;
private readonly obsoleteFile;
private readonly systemExtensionsCachedScanner;
private readonly userExtensionsCachedScanner;
private readonly extensionsScanner;
constructor(systemExtensionsLocation: URI, userExtensionsLocation: URI, extensionsControlLocation: URI, cacheLocation: URI, userDataProfilesService: IUserDataProfilesService, extensionsProfileScannerService: IExtensionsProfileScannerService, fileService: IFileService, logService: ILogService, environmentService: IEnvironmentService, productService: IProductService, uriIdentityService: IUriIdentityService, instantiationService: IInstantiationService);
private _targetPlatformPromise;
getTargetPlatform(): Promise<TargetPlatform>;
scanAllExtensions(systemScanOptions: ScanOptions, userScanOptions: ScanOptions, includeExtensionsUnderDev: boolean): Promise<IScannedExtension[]>;
scanSystemExtensions(scanOptions: ScanOptions): Promise<IScannedExtension[]>;
scanUserExtensions(scanOptions: ScanOptions): Promise<IScannedExtension[]>;
scanExtensionsUnderDevelopment(scanOptions: ScanOptions, existingExtensions: IScannedExtension[]): Promise<IScannedExtension[]>;
scanExistingExtension(extensionLocation: URI, extensionType: ExtensionType, scanOptions: ScanOptions): Promise<IScannedExtension | null>;
scanOneOrMultipleExtensions(extensionLocation: URI, extensionType: ExtensionType, scanOptions: ScanOptions): Promise<IScannedExtension[]>;
scanMetadata(extensionLocation: URI): Promise<Metadata | undefined>;
updateMetadata(extensionLocation: URI, metaData: Partial<Metadata>): Promise<void>;
initializeDefaultProfileExtensions(): Promise<void>;
private initializeDefaultProfileExtensionsPromise;
private doInitializeDefaultProfileExtensions;
private applyScanOptions;
private dedupExtensions;
private scanDefaultSystemExtensions;
private scanDevSystemExtensions;
private getBuiltInExtensionControl;
private createExtensionScannerInput;
private getMtime;
}
export declare function toExtensionDescription(extension: IScannedExtension, isUnderDevelopment: boolean): IExtensionDescription;
export declare class NativeExtensionsScannerService extends AbstractExtensionsScannerService implements IExtensionsScannerService {
private readonly translationsPromise;
constructor(systemExtensionsLocation: URI, userExtensionsLocation: URI, userHome: URI, userDataPath: URI, userDataProfilesService: IUserDataProfilesService, extensionsProfileScannerService: IExtensionsProfileScannerService, fileService: IFileService, logService: ILogService, environmentService: IEnvironmentService, productService: IProductService, uriIdentityService: IUriIdentityService, instantiationService: IInstantiationService);
protected getTranslations(language: string): Promise<Translations>;
}
export {};