|
import {EventEmitter} from 'events'; |
|
|
|
type WithRequiredProperties<T, K extends keyof T> = T & Required<Pick<T, K>>; |
|
|
|
declare class Keyv<Value = any, Options extends Record<string, any> = Record<string, unknown>> extends EventEmitter { |
|
|
|
|
|
|
|
|
|
|
|
opts: WithRequiredProperties< |
|
Keyv.Options<Value>, |
|
'deserialize' | 'namespace' | 'serialize' | 'store' | 'uri' |
|
> & |
|
Options; |
|
|
|
|
|
|
|
|
|
constructor(options?: Keyv.Options<Value> & Options); |
|
|
|
|
|
|
|
|
|
|
|
|
|
constructor(uri?: string, options?: Keyv.Options<Value> & Options); |
|
|
|
|
|
get(key: string, options?: {raw?: false}): Promise<Value | undefined>; |
|
|
|
get(key: string, options: {raw: true}): Promise<Keyv.DeserializedData<Value> | undefined>; |
|
|
|
|
|
get(key: string[], options?: {raw?: false}): Promise<Array<Value | undefined>>; |
|
|
|
get(key: string[], options: {raw: true}): Promise<Array<Keyv.DeserializedData<Value> | undefined>>; |
|
|
|
|
|
|
|
|
|
|
|
|
|
set(key: string, value: Value, ttl?: number): Promise<true>; |
|
|
|
|
|
|
|
|
|
|
|
delete(key: string | string[]): Promise<boolean>; |
|
|
|
clear(): Promise<void>; |
|
|
|
has(key: string): Promise<boolean>; |
|
|
|
iterator(namespace?: string): AsyncGenerator<any, void, any>; |
|
/** |
|
* Closes the connection. |
|
* |
|
* Returns `undefined` when the connection closes. |
|
*/ |
|
disconnect(): Promise<void>; |
|
} |
|
|
|
declare namespace Keyv { |
|
interface Options<Value> { |
|
[key: string]: any; |
|
|
|
|
|
namespace?: string | undefined; |
|
/** A custom serialization function. */ |
|
serialize?: ((data: DeserializedData<Value>) => string) | undefined; |
|
/** A custom deserialization function. */ |
|
deserialize?: ((data: string) => DeserializedData<Value> | undefined) | undefined; |
|
/** The connection string URI. */ |
|
uri?: string | undefined; |
|
/** The storage adapter instance to be used by Keyv. */ |
|
store?: Store<string | undefined> | undefined; |
|
/** Default TTL. Can be overridden by specififying a TTL on `.set()`. */ |
|
ttl?: number | undefined; |
|
/** Specify an adapter to use. e.g `'redis'` or `'mongodb'`. */ |
|
adapter?: 'redis' | 'mongodb' | 'mongo' | 'sqlite' | 'postgresql' | 'postgres' | 'mysql' | undefined; |
|
/** Enable compression option **/ |
|
compression?: CompressionAdapter | undefined; |
|
} |
|
|
|
interface CompressionAdapter { |
|
compress(value: any, options?: any): Promise<any>; |
|
decompress(value: any, options?: any): Promise<any>; |
|
serialize(value: any): Promise<any>; |
|
deserialize(value: any): Promise<any>; |
|
} |
|
|
|
interface DeserializedData<Value> { |
|
value: Value; expires: number | undefined; |
|
} |
|
|
|
type StoredData<Value> = DeserializedData<Value> | string | undefined; |
|
|
|
interface Store<Value> { |
|
get(key: string): Value | Promise<Value | undefined> | undefined; |
|
set(key: string, value: Value, ttl?: number): any; |
|
delete(key: string): boolean | Promise<boolean>; |
|
clear(): void | Promise<void>; |
|
has?(key: string): boolean | Promise<boolean>; |
|
getMany?( |
|
keys: string[] |
|
): Array<StoredData<Value>> | Promise<Array<StoredData<Value>>> | undefined; |
|
} |
|
} |
|
|
|
export = Keyv; |
|
|