sussudio
Version:
An unofficial VS Code Internal API
94 lines (93 loc) • 7.48 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 { CancellationToken } from "../../../base/common/cancellation.mjs";
import { URI } from "../../../base/common/uri.mjs";
import { IConfigurationService } from "../../configuration/common/configuration.mjs";
import { IEnvironmentService } from "../../environment/common/environment.mjs";
import { IExtensionGalleryService, IExtensionManagementService, ILocalExtension } from "../../extensionManagement/common/extensionManagement.mjs";
import { IExtensionStorageService } from "../../extensionManagement/common/extensionStorage.mjs";
import { IExtensionIdentifier } 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 { IStorageService } from "../../storage/common/storage.mjs";
import { ITelemetryService } from "../../telemetry/common/telemetry.mjs";
import { IUriIdentityService } from "../../uriIdentity/common/uriIdentity.mjs";
import { IUserDataProfile, IUserDataProfilesService } from "../../userDataProfile/common/userDataProfile.mjs";
import { AbstractInitializer, AbstractSynchroniser, IAcceptResult, IMergeResult, IResourcePreview } from "./abstractSynchronizer.mjs";
import { IMergeResult as IExtensionMergeResult } from "./extensionsMerge.mjs";
import { IIgnoredExtensionsManagementService } from "./ignoredExtensions.mjs";
import { IRemoteUserData, ISyncData, ISyncExtension, ISyncExtensionWithVersion, IUserDataSyncBackupStoreService, IUserDataSynchroniser, IUserDataSyncLogService, IUserDataSyncEnablementService, IUserDataSyncStoreService } from "./userDataSync.mjs";
import { IUserDataProfileStorageService } from "../../userDataProfile/common/userDataProfileStorageService.mjs";
type IExtensionResourceMergeResult = IAcceptResult & IExtensionMergeResult;
interface IExtensionResourcePreview extends IResourcePreview {
readonly localExtensions: ISyncExtensionWithVersion[];
readonly remoteExtensions: ISyncExtension[] | null;
readonly skippedExtensions: ISyncExtension[];
readonly builtinExtensions: IExtensionIdentifier[];
readonly previewResult: IExtensionResourceMergeResult;
}
interface ILastSyncUserData extends IRemoteUserData {
skippedExtensions: ISyncExtension[] | undefined;
builtinExtensions: IExtensionIdentifier[] | undefined;
}
export declare function parseExtensions(syncData: ISyncData): ISyncExtension[];
export declare function stringify(extensions: ISyncExtension[], format: boolean): string;
export declare class ExtensionsSynchroniser extends AbstractSynchroniser implements IUserDataSynchroniser {
private readonly extensionManagementService;
private readonly ignoredExtensionsManagementService;
private readonly instantiationService;
protected readonly version: number;
private readonly previewResource;
private readonly baseResource;
private readonly localResource;
private readonly remoteResource;
private readonly acceptedResource;
private readonly localExtensionsProvider;
constructor(profile: IUserDataProfile, collection: string | undefined, environmentService: IEnvironmentService, fileService: IFileService, storageService: IStorageService, userDataSyncStoreService: IUserDataSyncStoreService, userDataSyncBackupStoreService: IUserDataSyncBackupStoreService, extensionManagementService: IExtensionManagementService, ignoredExtensionsManagementService: IIgnoredExtensionsManagementService, logService: IUserDataSyncLogService, configurationService: IConfigurationService, userDataSyncEnablementService: IUserDataSyncEnablementService, telemetryService: ITelemetryService, extensionStorageService: IExtensionStorageService, uriIdentityService: IUriIdentityService, userDataProfileStorageService: IUserDataProfileStorageService, instantiationService: IInstantiationService);
protected generateSyncPreview(remoteUserData: IRemoteUserData, lastSyncUserData: ILastSyncUserData | null): Promise<IExtensionResourcePreview[]>;
protected hasRemoteChanged(lastSyncUserData: ILastSyncUserData): Promise<boolean>;
private getPreviewContent;
protected getMergeResult(resourcePreview: IExtensionResourcePreview, token: CancellationToken): Promise<IMergeResult>;
protected getAcceptResult(resourcePreview: IExtensionResourcePreview, resource: URI, content: string | null | undefined, token: CancellationToken): Promise<IExtensionResourceMergeResult>;
private acceptLocal;
private acceptRemote;
protected applyResult(remoteUserData: IRemoteUserData, lastSyncUserData: IRemoteUserData | null, resourcePreviews: [IExtensionResourcePreview, IExtensionResourceMergeResult][], force: boolean): Promise<void>;
resolveContent(uri: URI): Promise<string | null>;
private stringify;
hasLocalData(): Promise<boolean>;
}
export declare class LocalExtensionsProvider {
private readonly extensionManagementService;
private readonly userDataProfileStorageService;
private readonly extensionGalleryService;
private readonly ignoredExtensionsManagementService;
private readonly instantiationService;
private readonly logService;
constructor(extensionManagementService: IExtensionManagementService, userDataProfileStorageService: IUserDataProfileStorageService, extensionGalleryService: IExtensionGalleryService, ignoredExtensionsManagementService: IIgnoredExtensionsManagementService, instantiationService: IInstantiationService, logService: IUserDataSyncLogService);
getLocalExtensions(profile: IUserDataProfile): Promise<{
localExtensions: ISyncExtensionWithVersion[];
ignoredExtensions: string[];
}>;
updateLocalExtensions(added: ISyncExtension[], removed: IExtensionIdentifier[], updated: ISyncExtension[], skippedExtensions: ISyncExtension[], profile: IUserDataProfile): Promise<ISyncExtension[]>;
private updateExtensionState;
private withProfileScopedServices;
}
export interface IExtensionsInitializerPreviewResult {
readonly installedExtensions: ILocalExtension[];
readonly disabledExtensions: IExtensionIdentifier[];
readonly newExtensions: (IExtensionIdentifier & {
preRelease: boolean;
})[];
readonly remoteExtensions: ISyncExtension[];
}
export declare abstract class AbstractExtensionsInitializer extends AbstractInitializer {
protected readonly extensionManagementService: IExtensionManagementService;
private readonly ignoredExtensionsManagementService;
constructor(extensionManagementService: IExtensionManagementService, ignoredExtensionsManagementService: IIgnoredExtensionsManagementService, fileService: IFileService, userDataProfilesService: IUserDataProfilesService, environmentService: IEnvironmentService, logService: ILogService, storageService: IStorageService, uriIdentityService: IUriIdentityService);
protected parseExtensions(remoteUserData: IRemoteUserData): Promise<ISyncExtension[] | null>;
protected generatePreview(remoteExtensions: ISyncExtension[], localExtensions: ILocalExtension[]): IExtensionsInitializerPreviewResult;
}
export {};