UNPKG

@sussudio/platform

Version:

Internal APIs for VS Code's service injection the base services.

94 lines (92 loc) 3.64 kB
/*--------------------------------------------------------------------------------------------- * 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 '@sussudio/base/common/event.mjs'; import { Disposable } from '@sussudio/base/common/lifecycle.mjs'; import { UriDto } from '@sussudio/base/common/uri.mjs'; import { IChannel } from '@sussudio/base/parts/ipc/common/ipc.mjs'; import { IStorageDatabase, IStorageItemsChangeEvent, IUpdateRequest, } from '@sussudio/base/parts/storage/common/storage.mjs'; import { IUserDataProfile } from '../../userDataProfile/common/userDataProfile.mjs'; import { ISerializedSingleFolderWorkspaceIdentifier, ISerializedWorkspaceIdentifier, IEmptyWorkspaceIdentifier, IAnyWorkspaceIdentifier, } from '../../workspace/common/workspace.mjs'; export type Key = string; export type Value = string; export type Item = [Key, Value]; export interface IBaseSerializableStorageRequest { /** * Profile to correlate storage. Only used when no * workspace is provided. Can be undefined to denote * application scope. */ readonly profile: UriDto<IUserDataProfile> | undefined; /** * Workspace to correlate storage. Can be undefined to * denote application or profile scope depending on profile. */ readonly workspace: | ISerializedWorkspaceIdentifier | ISerializedSingleFolderWorkspaceIdentifier | IEmptyWorkspaceIdentifier | undefined; /** * Additional payload for the request to perform. */ readonly payload?: unknown; } export interface ISerializableUpdateRequest extends IBaseSerializableStorageRequest { insert?: Item[]; delete?: Key[]; } export interface ISerializableItemsChangeEvent { readonly changed?: Item[]; readonly deleted?: Key[]; } declare abstract class BaseStorageDatabaseClient extends Disposable implements IStorageDatabase { protected channel: IChannel; protected profile: UriDto<IUserDataProfile> | undefined; protected workspace: IAnyWorkspaceIdentifier | undefined; abstract readonly onDidChangeItemsExternal: Event<IStorageItemsChangeEvent>; constructor( channel: IChannel, profile: UriDto<IUserDataProfile> | undefined, workspace: IAnyWorkspaceIdentifier | undefined, ); getItems(): Promise<Map<string, string>>; updateItems(request: IUpdateRequest): Promise<void>; abstract close(): Promise<void>; } declare abstract class BaseProfileAwareStorageDatabaseClient extends BaseStorageDatabaseClient { private readonly _onDidChangeItemsExternal; readonly onDidChangeItemsExternal: Event<IStorageItemsChangeEvent>; constructor(channel: IChannel, profile: UriDto<IUserDataProfile> | undefined); private registerListeners; private onDidChangeStorage; } export declare class ApplicationStorageDatabaseClient extends BaseProfileAwareStorageDatabaseClient { constructor(channel: IChannel); close(): Promise<void>; } export declare class ProfileStorageDatabaseClient extends BaseProfileAwareStorageDatabaseClient { constructor(channel: IChannel, profile: UriDto<IUserDataProfile>); close(): Promise<void>; } export declare class WorkspaceStorageDatabaseClient extends BaseStorageDatabaseClient implements IStorageDatabase { readonly onDidChangeItemsExternal: Event<any>; constructor(channel: IChannel, workspace: IAnyWorkspaceIdentifier); close(): Promise<void>; } export declare class StorageClient { private readonly channel; constructor(channel: IChannel); isUsed(path: string): Promise<boolean>; } export {};