@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
109 lines (107 loc) • 4.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 { 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 { IExtensionManagementService } from '../../extensionManagement/common/extensionManagement.mjs';
import { IFileService } from '../../files/common/files.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,
AbstractJsonFileSynchroniser,
IAcceptResult,
IFileResourcePreview,
IMergeResult,
} from './abstractSynchronizer.mjs';
import {
IRemoteUserData,
IUserDataSyncBackupStoreService,
IUserDataSyncConfiguration,
IUserDataSynchroniser,
IUserDataSyncLogService,
IUserDataSyncEnablementService,
IUserDataSyncStoreService,
IUserDataSyncUtilService,
IUserDataResourceManifest,
} from './userDataSync.mjs';
interface ISettingsResourcePreview extends IFileResourcePreview {
previewResult: IMergeResult;
}
export interface ISettingsSyncContent {
settings: string;
}
export declare function parseSettingsSyncContent(syncContent: string): ISettingsSyncContent;
export declare class SettingsSynchroniser extends AbstractJsonFileSynchroniser implements IUserDataSynchroniser {
private readonly extensionManagementService;
protected readonly version: number;
readonly previewResource: URI;
readonly baseResource: URI;
readonly localResource: URI;
readonly remoteResource: URI;
readonly acceptedResource: URI;
constructor(
profile: IUserDataProfile,
collection: string | undefined,
fileService: IFileService,
environmentService: IEnvironmentService,
storageService: IStorageService,
userDataSyncStoreService: IUserDataSyncStoreService,
userDataSyncBackupStoreService: IUserDataSyncBackupStoreService,
logService: IUserDataSyncLogService,
userDataSyncUtilService: IUserDataSyncUtilService,
configurationService: IConfigurationService,
userDataSyncEnablementService: IUserDataSyncEnablementService,
telemetryService: ITelemetryService,
extensionManagementService: IExtensionManagementService,
uriIdentityService: IUriIdentityService,
);
getRemoteUserDataSyncConfiguration(manifest: IUserDataResourceManifest | null): Promise<IUserDataSyncConfiguration>;
protected generateSyncPreview(
remoteUserData: IRemoteUserData,
lastSyncUserData: IRemoteUserData | null,
isRemoteDataFromCurrentMachine: boolean,
): Promise<ISettingsResourcePreview[]>;
protected hasRemoteChanged(lastSyncUserData: IRemoteUserData): Promise<boolean>;
protected getMergeResult(resourcePreview: ISettingsResourcePreview, token: CancellationToken): Promise<IMergeResult>;
protected getAcceptResult(
resourcePreview: ISettingsResourcePreview,
resource: URI,
content: string | null | undefined,
token: CancellationToken,
): Promise<IAcceptResult>;
protected applyResult(
remoteUserData: IRemoteUserData,
lastSyncUserData: IRemoteUserData | null,
resourcePreviews: [ISettingsResourcePreview, IAcceptResult][],
force: boolean,
): Promise<void>;
hasLocalData(): Promise<boolean>;
resolveContent(uri: URI): Promise<string | null>;
protected resolvePreviewContent(resource: URI): Promise<string | null>;
private getSettingsSyncContent;
private parseSettingsSyncContent;
private toSettingsSyncContent;
private _defaultIgnoredSettings;
private getIgnoredSettings;
private validateContent;
}
export declare class SettingsInitializer extends AbstractInitializer {
constructor(
fileService: IFileService,
userDataProfilesService: IUserDataProfilesService,
environmentService: IEnvironmentService,
logService: IUserDataSyncLogService,
storageService: IStorageService,
uriIdentityService: IUriIdentityService,
);
doInitialize(remoteUserData: IRemoteUserData): Promise<void>;
private isEmpty;
private parseSettingsSyncContent;
}
export {};