keyv-file
Version:
File storage adapter for Keyv, using msgpack to serialize data fast and small.
63 lines (62 loc) • 2.03 kB
TypeScript
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;