UNPKG

keyv-file

Version:

File storage adapter for Keyv, using msgpack to serialize data fast and small.

63 lines (62 loc) 2.03 kB
import EventEmitter from 'events'; import type { KeyvStoreAdapter } from 'keyv'; export * from './make-field'; export interface Options { deserialize: (val: string | Buffer) => any; dialect: string; /** milliseconds */ expiredCheckDelay: number; filename: string; serialize: (val: any) => string | Buffer; /** milliseconds */ writeDelay: number; /** create lock file and check if exists */ checkFileLock: boolean; /** * default: false * if true, will store key values in seperated file as `opts.filename+key` */ separatedFile: boolean; } export declare const defaultOpts: Options; export interface WrappedValue<T = any> { value: T; expire?: number; } export declare class KeyvFile extends EventEmitter implements KeyvStoreAdapter { ttlSupport: boolean; namespace?: string; opts: Options; private _data; private _lastExpire; private _separated; constructor(options?: Partial<Options>); private _loadDataSync; private get _lockFile(); acquireFileLock(): void; releaseFileLock(): void; get<Value>(key: string): Promise<Value | undefined>; getSync<Value>(key: string): Value | undefined; getMany<Value>(keys: string[]): Promise<Array<Value | undefined>>; /** * Note: `await kv.set()` will wait <options.writeDelay> millseconds to save to disk, it would be slow. Please remove `await` if you find performance issues. * @param key * @param value * @param ttl * @returns */ set(key: string, value: any, ttl?: number): Promise<any>; delete(key: string): Promise<boolean>; deleteMany(keys: string[]): Promise<boolean>; clear(): Promise<any>; has(key: string): Promise<boolean>; private isExpired; private _getWithExpire; private clearExpire; private saveToDisk; private _savePromise?; private save; disconnect(): Promise<void>; iterator(namespace?: string): AsyncGenerator<any[], void, unknown>; } export default KeyvFile;