sussudio
Version:
An unofficial VS Code Internal API
59 lines (58 loc) • 3.31 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 { Event } from "../../../base/common/event.mjs";
import { Disposable } from "../../../base/common/lifecycle.mjs";
import { IStorageDatabase } from "../../../base/parts/storage/common/storage.mjs";
import { IStorageService, IStorageValueChangeEvent, StorageTarget } from "../../storage/common/storage.mjs";
import { IUserDataProfile } from "./userDataProfile.mjs";
export interface IProfileStorageValueChanges {
readonly profile: IUserDataProfile;
readonly changes: IStorageValueChangeEvent[];
}
export interface IProfileStorageChanges {
readonly targetChanges: IUserDataProfile[];
readonly valueChanges: IProfileStorageValueChanges[];
}
export interface IStorageValue {
readonly value: string | undefined;
readonly target: StorageTarget;
}
export declare const IUserDataProfileStorageService: import("../../instantiation/common/instantiation.mjs").ServiceIdentifier<IUserDataProfileStorageService>;
export interface IUserDataProfileStorageService {
readonly _serviceBrand: undefined;
/**
* Emitted whenever data is updated or deleted in a profile storage or target of a profile storage entry changes
*/
readonly onDidChange: Event<IProfileStorageChanges>;
/**
* Return the requested profile storage data
* @param profile The profile from which the data has to be read from
*/
readStorageData(profile: IUserDataProfile): Promise<Map<string, IStorageValue>>;
/**
* Update the given profile storage data in the profile storage
* @param profile The profile to which the data has to be written to
* @param data Data that has to be updated
* @param target Storage target of the data
*/
updateStorageData(profile: IUserDataProfile, data: Map<string, string | undefined | null>, target: StorageTarget): Promise<void>;
/**
* Calls a function with a storage service scoped to given profile.
*/
withProfileScopedStorageService<T>(profile: IUserDataProfile, fn: (storageService: IStorageService) => Promise<T>): Promise<T>;
}
export declare abstract class AbstractUserDataProfileStorageService extends Disposable implements IUserDataProfileStorageService {
protected readonly storageService: IStorageService;
_serviceBrand: undefined;
readonly abstract onDidChange: Event<IProfileStorageChanges>;
constructor(storageService: IStorageService);
readStorageData(profile: IUserDataProfile): Promise<Map<string, IStorageValue>>;
updateStorageData(profile: IUserDataProfile, data: Map<string, string | undefined | null>, target: StorageTarget): Promise<void>;
withProfileScopedStorageService<T>(profile: IUserDataProfile, fn: (storageService: IStorageService) => Promise<T>): Promise<T>;
private getItems;
private writeItems;
protected closeAndDispose(storageDatabase: IStorageDatabase): Promise<void>;
protected abstract createStorageDatabase(profile: IUserDataProfile): Promise<IStorageDatabase>;
}