diff --git a/node-cache/node-cache.d.ts b/node-cache/node-cache.d.ts new file mode 100644 index 0000000000..8e2710a427 --- /dev/null +++ b/node-cache/node-cache.d.ts @@ -0,0 +1,263 @@ +// Type definitions for node-cache v3.0.0 +// Project: https://github.com/tcs-de/nodecache +// Definitions by: Ilya Mochalov +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module NodeCacheTypes { + interface NodeCache { + /** container for cached data */ + data: Data; + + /** module options */ + options: Options; + + /** statistics container */ + stats: Stats; + + /** + * get a cached key and change the stats + * + * @param key cache key or an array of keys + * @param cb Callback function + */ + get( + key: string, + cb?: Callback + ): T; + + /** + * get multiple cached keys at once and change the stats + * + * @param keys an array of keys + * @param cb Callback function + */ + mget( + keys: string[], + cb?: Callback<{[key: string]: T}> + ): {[key: string]: T}; + + /** + * set a cached key and change the stats + * + * @param key cache key + * @param value A element to cache. If the option `option.forceString` is `true` the module trys to translate + * it to a serialized JSON + * @param ttl The time to live in seconds. + * @param cb Callback function + */ + set( + key: string, + value: T, + ttl: number|string, + cb?: Callback + ): boolean; + + set( + key: string, + value: T, + cb?: Callback + ): boolean; + + /** + * remove keys + * @param keys cache key to delete or a array of cache keys + * @param cb Callback function + * @returns Number of deleted keys + */ + del( + keys: string|string[], + cb?: Callback + ): number; + + /** + * reset or redefine the ttl of a key. If `ttl` is not passed or set to 0 it's similar to `.del()` + */ + ttl( + key: string, + ttl: number, + cb?: Callback + ): boolean; + + ttl( + key: string, + cb?: Callback, + ttl?: number + ): boolean; + + /** + * list all keys within this cache + * @param cb Callback function + * @returns An array of all keys + */ + keys(cb?: Callback): string[]; + + /** + * get the stats + * + * @returns Stats data + */ + getStats(): Stats; + + /** + * flush the hole data and reset the stats + */ + flushAll(): void; + + /** + * This will clear the interval timeout which is set on checkperiod option. + */ + close(): void; + } + + interface Data { + [key: string]: WrappedValue; + } + + interface Options { + forceString: boolean; + objectValueSize: number; + arrayValueSize: number; + stdTTL: number; + checkperiod: number; + useClones: boolean; + } + + interface Stats { + hits: number; + misses: number; + keys: number; + ksize: number; + vsize: number; + } + + interface WrappedValue { + // ttl + t: number; + // value + v: T; + } + + interface Callback { + (err: any, data: T): void; + } +} + +declare module "node-cache" { + import events = require("events"); + + import Data = NodeCacheTypes.Data; + import Options = NodeCacheTypes.Options; + import Stats = NodeCacheTypes.Stats; + import Callback = NodeCacheTypes.Callback; + + class NodeCache extends events.EventEmitter implements NodeCacheTypes.NodeCache { + /** container for cached data */ + data: Data; + + /** module options */ + options: Options; + + /** statistics container */ + stats: Stats; + + constructor(options?: Options); + + /** + * get a cached key and change the stats + * + * @param key cache key or an array of keys + * @param cb Callback function + */ + get( + key: string, + cb?: Callback + ): T; + + /** + * get multiple cached keys at once and change the stats + * + * @param keys an array of keys + * @param cb Callback function + */ + mget( + keys: string[], + cb?: Callback<{[key: string]: T}> + ): {[key: string]: T}; + + /** + * set a cached key and change the stats + * + * @param key cache key + * @param value A element to cache. If the option `option.forceString` is `true` the module trys to translate + * it to a serialized JSON + * @param ttl The time to live in seconds. + * @param cb Callback function + */ + set( + key: string, + value: T, + ttl: number|string, + cb?: Callback + ): boolean; + + set( + key: string, + value: T, + cb?: Callback + ): boolean; + + /** + * remove keys + * @param keys cache key to delete or a array of cache keys + * @param cb Callback function + * @returns Number of deleted keys + */ + del( + keys: string|string[], + cb?: Callback + ): number; + + /** + * reset or redefine the ttl of a key. If `ttl` is not passed or set to 0 it's similar to `.del()` + */ + ttl( + key: string, + ttl: number, + cb?: Callback + ): boolean; + + ttl( + key: string, + cb?: Callback, + ttl?: number + ): boolean; + + /** + * list all keys within this cache + * @param cb Callback function + * @returns An array of all keys + */ + keys(cb?: Callback): string[]; + + /** + * get the stats + * + * @returns Stats data + */ + getStats(): Stats; + + /** + * flush the hole data and reset the stats + */ + flushAll(): void; + + /** + * This will clear the interval timeout which is set on checkperiod option. + */ + close(): void; + } + + export = NodeCache; +}