// Type definitions for keyv 3.1 // Project: https://github.com/lukechilds/keyv // Definitions by: AryloYeung // BendingBender // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 /// import { EventEmitter } from 'events'; type WithRequiredProperties = T & Required>; declare class Keyv extends EventEmitter { /** * `this.opts` is an object containing at least the properties listed * below. However, `Keyv.Options` allows arbitrary properties as well. * These properties can be specified as the second type parameter to `Keyv`. */ opts: WithRequiredProperties< Keyv.Options, 'deserialize' | 'namespace' | 'serialize' | 'store' | 'uri' > & TOpts; /** * @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options. */ constructor(opts?: Keyv.Options & TOpts); /** * @param uri The connection string URI. * * Merged into the options object as options.uri. * @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options. */ constructor(uri?: string, opts?: Keyv.Options & TOpts); /** Returns the value. */ get(key: string, options?: { raw?: TRaw }): Promise<(TRaw extends false ? TValue : Keyv.DeserializedData) | undefined>; /** * Set a value. * * By default keys are persistent. You can set an expiry TTL in milliseconds. */ set(key: string, value: TValue, ttl?: number): Promise; /** * Deletes an entry. * * Returns `true` if the key existed, `false` if not. */ delete(key: string): Promise; /** Delete all entries in the current namespace. */ clear(): Promise; } declare namespace Keyv { interface Options { /** Namespace for the current instance. */ namespace?: string | undefined; /** A custom serialization function. */ serialize?: ((data: DeserializedData) => string) | undefined; /** A custom deserialization function. */ deserialize?: ((data: string) => DeserializedData | undefined) | undefined; /** The connection string URI. */ uri?: string | undefined; /** The storage adapter instance to be used by Keyv. */ store?: Store | 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; [key: string]: any; } interface DeserializedData { value: TValue; expires: number | null; } interface Store { get(key: string): TValue | Promise | undefined; set(key: string, value: TValue, ttl?: number): any; delete(key: string): boolean | Promise; clear(): void | Promise; } } export = Keyv;