UNPKG

sussudio

Version:

An unofficial VS Code Internal API

364 lines (363 loc) 17.3 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { IStringDictionary } from "../../../base/common/collections.mjs"; import { Event } from "../../../base/common/event.mjs"; import { FormattingOptions } from "../../../base/common/jsonFormatter.mjs"; import { IDisposable } from "../../../base/common/lifecycle.mjs"; import { IExtUri } from "../../../base/common/resources.mjs"; import { URI } from "../../../base/common/uri.mjs"; import { IHeaders } from "../../../base/parts/request/common/request.mjs"; import { IEnvironmentService } from "../../environment/common/environment.mjs"; import { IExtensionIdentifier } from "../../extensionManagement/common/extensionManagement.mjs"; import { ILogService } from "../../log/common/log.mjs"; import { IUserDataProfile } from "../../userDataProfile/common/userDataProfile.mjs"; export declare const CONFIGURATION_SYNC_STORE_KEY = "configurationSync.store"; export declare function getDisallowedIgnoredSettings(): string[]; export declare function getDefaultIgnoredSettings(): string[]; export declare const USER_DATA_SYNC_CONFIGURATION_SCOPE = "settingsSync"; export interface IUserDataSyncConfiguration { keybindingsPerPlatform?: boolean; ignoredExtensions?: string[]; ignoredSettings?: string[]; } export declare const CONFIG_SYNC_KEYBINDINGS_PER_PLATFORM = "settingsSync.keybindingsPerPlatform"; export declare function registerConfiguration(): IDisposable; export interface IUserData { ref: string; content: string | null; } export type IAuthenticationProvider = { id: string; scopes: string[]; }; export interface IUserDataSyncStore { readonly url: URI; readonly type: UserDataSyncStoreType; readonly defaultUrl: URI; readonly stableUrl: URI; readonly insidersUrl: URI; readonly canSwitch: boolean; readonly authenticationProviders: IAuthenticationProvider[]; } export declare function isAuthenticationProvider(thing: any): thing is IAuthenticationProvider; export declare const enum SyncResource { Settings = "settings", Keybindings = "keybindings", Snippets = "snippets", Tasks = "tasks", Extensions = "extensions", GlobalState = "globalState", Profiles = "profiles" } export declare const ALL_SYNC_RESOURCES: SyncResource[]; export declare function getPathSegments(collection: string | undefined, ...paths: string[]): string[]; export declare function getLastSyncResourceUri(collection: string | undefined, syncResource: SyncResource, environmentService: IEnvironmentService, extUri: IExtUri): URI; export type IUserDataResourceManifest = Record<ServerResource, string>; export interface IUserDataCollectionManifest { [collectionId: string]: { readonly latest?: IUserDataResourceManifest; }; } export interface IUserDataManifest { readonly latest?: IUserDataResourceManifest; readonly session: string; readonly ref: string; readonly collections?: IUserDataCollectionManifest; } export interface IResourceRefHandle { ref: string; created: number; } export type ServerResource = SyncResource | 'machines' | 'editSessions'; export type UserDataSyncStoreType = 'insiders' | 'stable'; export declare const IUserDataSyncStoreManagementService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataSyncStoreManagementService>; export interface IUserDataSyncStoreManagementService { readonly _serviceBrand: undefined; readonly onDidChangeUserDataSyncStore: Event<void>; readonly userDataSyncStore: IUserDataSyncStore | undefined; switch(type: UserDataSyncStoreType): Promise<void>; getPreviousUserDataSyncStore(): Promise<IUserDataSyncStore | undefined>; } export declare const IUserDataSyncStoreService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataSyncStoreService>; export interface IUserDataSyncStoreService { readonly _serviceBrand: undefined; readonly onDidChangeDonotMakeRequestsUntil: Event<void>; readonly donotMakeRequestsUntil: Date | undefined; readonly onTokenFailed: Event<void>; readonly onTokenSucceed: Event<void>; setAuthToken(token: string, type: string): void; manifest(oldValue: IUserDataManifest | null, headers?: IHeaders): Promise<IUserDataManifest | null>; readResource(resource: ServerResource, oldValue: IUserData | null, collection?: string, headers?: IHeaders): Promise<IUserData>; writeResource(resource: ServerResource, content: string, ref: string | null, collection?: string, headers?: IHeaders): Promise<string>; deleteResource(resource: ServerResource, ref: string | null, collection?: string): Promise<void>; getAllResourceRefs(resource: ServerResource, collection?: string): Promise<IResourceRefHandle[]>; resolveResourceContent(resource: ServerResource, ref: string, collection?: string, headers?: IHeaders): Promise<string | null>; getAllCollections(headers?: IHeaders): Promise<string[]>; createCollection(headers?: IHeaders): Promise<string>; deleteCollection(collection?: string, headers?: IHeaders): Promise<void>; clear(): Promise<void>; } export declare const IUserDataSyncBackupStoreService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataSyncBackupStoreService>; export interface IUserDataSyncBackupStoreService { readonly _serviceBrand: undefined; backup(profile: IUserDataProfile, resource: SyncResource, content: string): Promise<void>; getAllRefs(profile: IUserDataProfile, resource: SyncResource): Promise<IResourceRefHandle[]>; resolveContent(profile: IUserDataProfile, resource: SyncResource, ref: string): Promise<string | null>; } export declare const HEADER_OPERATION_ID = "x-operation-id"; export declare const HEADER_EXECUTION_ID = "X-Execution-Id"; export declare function createSyncHeaders(executionId: string): IHeaders; export declare const enum UserDataSyncErrorCode { Unauthorized = "Unauthorized", NotFound = "NotFound", MethodNotFound = "MethodNotFound", Conflict = "Conflict", Gone = "Gone", PreconditionFailed = "PreconditionFailed", TooLarge = "TooLarge", UpgradeRequired = "UpgradeRequired", PreconditionRequired = "PreconditionRequired", TooManyRequests = "RemoteTooManyRequests", TooManyRequestsAndRetryAfter = "TooManyRequestsAndRetryAfter", RequestFailed = "RequestFailed", RequestCanceled = "RequestCanceled", RequestTimeout = "RequestTimeout", RequestProtocolNotSupported = "RequestProtocolNotSupported", RequestPathNotEscaped = "RequestPathNotEscaped", RequestHeadersNotObject = "RequestHeadersNotObject", NoCollection = "NoCollection", NoRef = "NoRef", EmptyResponse = "EmptyResponse", TurnedOff = "TurnedOff", SessionExpired = "SessionExpired", ServiceChanged = "ServiceChanged", DefaultServiceChanged = "DefaultServiceChanged", LocalTooManyProfiles = "LocalTooManyProfiles", LocalTooManyRequests = "LocalTooManyRequests", LocalPreconditionFailed = "LocalPreconditionFailed", LocalInvalidContent = "LocalInvalidContent", LocalError = "LocalError", IncompatibleLocalContent = "IncompatibleLocalContent", IncompatibleRemoteContent = "IncompatibleRemoteContent", Unknown = "Unknown" } export declare class UserDataSyncError extends Error { readonly code: UserDataSyncErrorCode; readonly resource?: SyncResource | undefined; readonly operationId?: string | undefined; constructor(message: string, code: UserDataSyncErrorCode, resource?: SyncResource | undefined, operationId?: string | undefined); } export declare class UserDataSyncStoreError extends UserDataSyncError { readonly url: string; readonly serverCode: number | undefined; constructor(message: string, url: string, code: UserDataSyncErrorCode, serverCode: number | undefined, operationId: string | undefined); } export declare class UserDataAutoSyncError extends UserDataSyncError { constructor(message: string, code: UserDataSyncErrorCode); } export declare namespace UserDataSyncError { function toUserDataSyncError(error: Error): UserDataSyncError; } export interface ISyncUserDataProfile { readonly id: string; readonly collection: string; readonly name: string; readonly shortName?: string; } export interface ISyncExtension { identifier: IExtensionIdentifier; preRelease?: boolean; version?: string; disabled?: boolean; installed?: boolean; state?: IStringDictionary<any>; } export interface ISyncExtensionWithVersion extends ISyncExtension { version: string; } export interface IStorageValue { version: number; value: string; } export interface IGlobalState { storage: IStringDictionary<IStorageValue>; } export declare const enum SyncStatus { Uninitialized = "uninitialized", Idle = "idle", Syncing = "syncing", HasConflicts = "hasConflicts" } export interface ISyncResourceHandle { created: number; uri: URI; } export interface IRemoteUserData { ref: string; syncData: ISyncData | null; } export interface ISyncData { version: number; machineId?: string; content: string; } export declare const enum Change { None = 0, Added = 1, Modified = 2, Deleted = 3 } export declare const enum MergeState { Preview = "preview", Conflict = "conflict", Accepted = "accepted" } export interface IResourcePreview { readonly baseResource: URI; readonly remoteResource: URI; readonly localResource: URI; readonly previewResource: URI; readonly acceptedResource: URI; readonly localChange: Change; readonly remoteChange: Change; readonly mergeState: MergeState; } export interface IUserDataSyncResource { readonly syncResource: SyncResource; readonly profile: IUserDataProfile; } export interface IUserDataSyncResourceConflicts extends IUserDataSyncResource { readonly conflicts: IResourcePreview[]; } export interface IUserDataSyncResourcePreview extends IUserDataSyncResource { readonly isLastSyncFromCurrentMachine: boolean; readonly resourcePreviews: IResourcePreview[]; } export interface IUserDataSyncResourceError extends IUserDataSyncResource { readonly error: UserDataSyncError; } export interface IUserDataInitializer { initialize(userData: IUserData): Promise<void>; } export interface IUserDataSynchroniser { readonly resource: SyncResource; readonly status: SyncStatus; readonly onDidChangeStatus: Event<SyncStatus>; readonly conflicts: IUserDataSyncResourceConflicts; readonly onDidChangeConflicts: Event<IUserDataSyncResourceConflicts>; readonly onDidChangeLocal: Event<void>; sync(manifest: IUserDataResourceManifest | null, headers: IHeaders): Promise<void>; stop(): Promise<void>; preview(manifest: IUserDataResourceManifest | null, userDataSyncConfiguration: IUserDataSyncConfiguration, headers: IHeaders): Promise<IUserDataSyncResourcePreview | null>; accept(resource: URI, content?: string | null): Promise<IUserDataSyncResourcePreview | null>; merge(resource: URI): Promise<IUserDataSyncResourcePreview | null>; discard(resource: URI): Promise<IUserDataSyncResourcePreview | null>; apply(force: boolean, headers: IHeaders): Promise<IUserDataSyncResourcePreview | null>; hasPreviouslySynced(): Promise<boolean>; hasLocalData(): Promise<boolean>; resetLocal(): Promise<void>; resolveContent(resource: URI): Promise<string | null>; replace(content: string): Promise<boolean>; } export declare const SYNC_SERVICE_URL_TYPE = "sync.store.url.type"; export declare function getEnablementKey(resource: SyncResource): string; export declare const IUserDataSyncEnablementService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataSyncEnablementService>; export interface IUserDataSyncEnablementService { _serviceBrand: any; readonly onDidChangeEnablement: Event<boolean>; isEnabled(): boolean; canToggleEnablement(): boolean; setEnablement(enabled: boolean): void; readonly onDidChangeResourceEnablement: Event<[SyncResource, boolean]>; isResourceEnabled(resource: SyncResource): boolean; setResourceEnablement(resource: SyncResource, enabled: boolean): void; getResourceSyncStateVersion(resource: SyncResource): string | undefined; } export interface IUserDataSyncTask { readonly manifest: IUserDataManifest | null; run(): Promise<void>; stop(): Promise<void>; } export interface IUserDataManualSyncTask { readonly id: string; merge(): Promise<void>; apply(): Promise<void>; stop(): Promise<void>; } export declare const IUserDataSyncService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataSyncService>; export interface IUserDataSyncService { _serviceBrand: any; readonly status: SyncStatus; readonly onDidChangeStatus: Event<SyncStatus>; readonly conflicts: IUserDataSyncResourceConflicts[]; readonly onDidChangeConflicts: Event<IUserDataSyncResourceConflicts[]>; readonly onDidChangeLocal: Event<SyncResource>; readonly onSyncErrors: Event<IUserDataSyncResourceError[]>; readonly lastSyncTime: number | undefined; readonly onDidChangeLastSyncTime: Event<number>; readonly onDidResetRemote: Event<void>; readonly onDidResetLocal: Event<void>; createSyncTask(manifest: IUserDataManifest | null, disableCache?: boolean): Promise<IUserDataSyncTask>; createManualSyncTask(): Promise<IUserDataManualSyncTask>; resolveContent(resource: URI): Promise<string | null>; accept(syncResource: IUserDataSyncResource, resource: URI, content: string | null | undefined, apply: boolean | { force: boolean; }): Promise<void>; reset(): Promise<void>; resetRemote(): Promise<void>; cleanUpRemoteData(): Promise<void>; resetLocal(): Promise<void>; hasLocalData(): Promise<boolean>; hasPreviouslySynced(): Promise<boolean>; getRemoteProfiles(): Promise<ISyncUserDataProfile[]>; getRemoteSyncResourceHandles(syncResource: SyncResource, profile?: ISyncUserDataProfile): Promise<ISyncResourceHandle[]>; getLocalSyncResourceHandles(syncResource: SyncResource, profile?: IUserDataProfile): Promise<ISyncResourceHandle[]>; getAssociatedResources(syncResourceHandle: ISyncResourceHandle): Promise<{ resource: URI; comparableResource: URI; }[]>; getMachineId(syncResourceHandle: ISyncResourceHandle): Promise<string | undefined>; replace(syncResourceHandle: ISyncResourceHandle): Promise<void>; } export declare const IUserDataSyncResourceProviderService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataSyncResourceProviderService>; export interface IUserDataSyncResourceProviderService { _serviceBrand: any; getRemoteSyncedProfiles(): Promise<ISyncUserDataProfile[]>; getLocalSyncResourceHandles(syncResource: SyncResource, profile: IUserDataProfile): Promise<ISyncResourceHandle[]>; getRemoteSyncResourceHandles(syncResource: SyncResource, profile: ISyncUserDataProfile | undefined): Promise<ISyncResourceHandle[]>; getAssociatedResources(syncResourceHandle: ISyncResourceHandle): Promise<{ resource: URI; comparableResource: URI; }[]>; getMachineId(syncResourceHandle: ISyncResourceHandle): Promise<string | undefined>; resolveContent(resource: URI): Promise<string | null>; resolveUserDataSyncResource(syncResourceHandle: ISyncResourceHandle): IUserDataSyncResource | undefined; } export declare const IUserDataAutoSyncService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataAutoSyncService>; export interface IUserDataAutoSyncService { _serviceBrand: any; readonly onError: Event<UserDataSyncError>; turnOn(): Promise<void>; turnOff(everywhere: boolean): Promise<void>; triggerSync(sources: string[], hasToLimitSync: boolean, disableCache: boolean): Promise<void>; } export declare const IUserDataSyncUtilService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataSyncUtilService>; export interface IUserDataSyncUtilService { readonly _serviceBrand: undefined; resolveUserBindings(userbindings: string[]): Promise<IStringDictionary<string>>; resolveFormattingOptions(resource: URI): Promise<FormattingOptions>; resolveDefaultIgnoredSettings(): Promise<string[]>; } export declare const IUserDataSyncLogService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataSyncLogService>; export interface IUserDataSyncLogService extends ILogService { } export interface IConflictSetting { key: string; localValue: any | undefined; remoteValue: any | undefined; } export declare const USER_DATA_SYNC_SCHEME = "vscode-userdata-sync"; export declare const PREVIEW_DIR_NAME = "preview"; export declare const EXTENSIONS_SYNC_CONTEXT_KEY = "extensionsSync";