import { ICorePlatform } from '../types/platform.js'; import { MaybePromise } from '../types/utils.js'; import { Logger } from '../utils/logger.js'; /** * Basic storage driver interface, * describing the lifecycle of a storage driver */ export interface IStorageDriver { /** * Load session from some external storage. * Should be used either to load data from file/network/etc * to memory, or to open required connections to fetch data on demand * * May be called more than once, handle this with care * (or use {@link BaseStorageDriver} that handles this for you) */ load?: () => MaybePromise; /** * Save session to some external storage. * Should be used to commit pending changes in the session. * For example, saving session content to file/network/etc, * or committing a database transaction * * It is safe to batch all changes and only commit them here, * unless stated otherwise in the method description */ save?: () => MaybePromise; /** * Cleanup session and release all used resources. * * May be called more than once, handle this with care * (or use {@link BaseStorageDriver} that handles this for you) */ destroy?: () => MaybePromise; /** * Setup the driver, passing the logger instance, * in case your driver needs it */ setup?: (log: Logger, platform: ICorePlatform) => void; } /** * Base storage driver class, implementing {@link IStorageDriver} * and handling the lifecycle for you */ export declare abstract class BaseStorageDriver implements IStorageDriver { abstract _load(): MaybePromise; abstract _destroy(): MaybePromise; abstract _save?(): MaybePromise; private _loadedTimes; private _destroyed; protected _log: Logger; protected _platform: ICorePlatform; setup(log: Logger, platform: ICorePlatform): void; protected get loaded(): boolean; load(): Promise; destroy(): Promise; save(): MaybePromise; }