@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
171 lines (169 loc) • 7.46 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 '@sussudio/base/common/cancellation.mjs';
import { URI } from '@sussudio/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 {};