UNPKG

sussudio

Version:

An unofficial VS Code Internal API

146 lines (145 loc) 6.22 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Emitter, Event } from "../../../base/common/event.mjs"; import { Disposable, IDisposable } from "../../../base/common/lifecycle.mjs"; import { IStorage, Storage } from "../../../base/parts/storage/common/storage.mjs"; import { ISQLiteStorageDatabaseLoggingOptions } from "../../../base/parts/storage/node/storage.mjs"; import { IEnvironmentService } from "../../environment/common/environment.mjs"; import { IFileService } from "../../files/common/files.mjs"; import { ILogService } from "../../log/common/log.mjs"; import { IUserDataProfile, IUserDataProfilesService } from "../../userDataProfile/common/userDataProfile.mjs"; import { IAnyWorkspaceIdentifier } from "../../workspace/common/workspace.mjs"; export interface IStorageMainOptions { /** * If enabled, storage will not persist to disk * but into memory. */ readonly useInMemoryStorage?: boolean; } /** * Provides access to application, profile and workspace storage from * the electron-main side that is the owner of all storage connections. */ export interface IStorageMain extends IDisposable { /** * Emitted whenever data is updated or deleted. */ readonly onDidChangeStorage: Event<IStorageChangeEvent>; /** * Emitted when the storage is closed. */ readonly onDidCloseStorage: Event<void>; /** * Access to all cached items of this storage service. */ readonly items: Map<string, string>; /** * Allows to join on the `init` call having completed * to be able to safely use the storage. */ readonly whenInit: Promise<void>; /** * Provides access to the `IStorage` implementation which will be * in-memory for as long as the storage has not been initialized. */ readonly storage: IStorage; /** * The file path of the underlying storage file if any. */ readonly path: string | undefined; /** * Required call to ensure the service can be used. */ init(): Promise<void>; /** * Retrieve an element stored with the given key from storage. Use * the provided defaultValue if the element is null or undefined. */ get(key: string, fallbackValue: string): string; get(key: string, fallbackValue?: string): string | undefined; /** * Store a string value under the given key to storage. The value will * be converted to a string. */ set(key: string, value: string | boolean | number | undefined | null): void; /** * Delete an element stored under the provided key from storage. */ delete(key: string): void; /** * Whether the storage is using in-memory persistence or not. */ isInMemory(): boolean; /** * Close the storage connection. */ close(): Promise<void>; } export interface IStorageChangeEvent { readonly key: string; } declare abstract class BaseStorageMain extends Disposable implements IStorageMain { protected readonly logService: ILogService; private readonly fileService; private static readonly LOG_SLOW_CLOSE_THRESHOLD; protected readonly _onDidChangeStorage: Emitter<IStorageChangeEvent>; readonly onDidChangeStorage: Event<IStorageChangeEvent>; private readonly _onDidCloseStorage; readonly onDidCloseStorage: Event<void>; private _storage; get storage(): IStorage; abstract get path(): string | undefined; private initializePromise; private readonly whenInitPromise; readonly whenInit: Promise<void>; private state; constructor(logService: ILogService, fileService: IFileService); isInMemory(): boolean; init(): Promise<void>; protected createLoggingOptions(): ISQLiteStorageDatabaseLoggingOptions; protected doInit(storage: IStorage): Promise<void>; protected abstract doCreate(): Promise<Storage>; get items(): Map<string, string>; get(key: string, fallbackValue: string): string; get(key: string, fallbackValue?: string): string | undefined; set(key: string, value: string | boolean | number | undefined | null): Promise<void>; delete(key: string): Promise<void>; close(): Promise<void>; private logSlowClose; private doClose; } declare class BaseProfileAwareStorageMain extends BaseStorageMain { private readonly profile; private readonly options; private static readonly STORAGE_NAME; get path(): string | undefined; constructor(profile: IUserDataProfile, options: IStorageMainOptions, logService: ILogService, fileService: IFileService); protected doCreate(): Promise<Storage>; } export declare class ProfileStorageMain extends BaseProfileAwareStorageMain { constructor(profile: IUserDataProfile, options: IStorageMainOptions, logService: ILogService, fileService: IFileService); } export declare class ApplicationStorageMain extends BaseProfileAwareStorageMain { constructor(options: IStorageMainOptions, userDataProfileService: IUserDataProfilesService, logService: ILogService, fileService: IFileService); protected doInit(storage: IStorage): Promise<void>; private updateTelemetryState; } export declare class WorkspaceStorageMain extends BaseStorageMain { private workspace; private readonly options; private readonly environmentService; private static readonly WORKSPACE_STORAGE_NAME; private static readonly WORKSPACE_META_NAME; get path(): string | undefined; constructor(workspace: IAnyWorkspaceIdentifier, options: IStorageMainOptions, logService: ILogService, environmentService: IEnvironmentService, fileService: IFileService); protected doCreate(): Promise<Storage>; private prepareWorkspaceStorageFolder; private ensureWorkspaceStorageFolderMeta; } export declare class InMemoryStorageMain extends BaseStorageMain { get path(): string | undefined; protected doCreate(): Promise<Storage>; } export {};