From 0123e36aad5be2f46f050e32fe843a772230c3f0 Mon Sep 17 00:00:00 2001 From: Ilya Mochalov Date: Sun, 20 Sep 2015 03:01:39 +0500 Subject: [PATCH 1/2] node-cache: added definitions --- node-cache/node-cache.d.ts | 263 +++++++++++++++++++++++++++++++++++++ 1 file changed, 263 insertions(+) create mode 100644 node-cache/node-cache.d.ts 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; +} From 0f5d7e0862a4ff5f9fe017b9a39eac8792e8e78b Mon Sep 17 00:00:00 2001 From: Ilya Mochalov Date: Sun, 20 Sep 2015 03:05:17 +0500 Subject: [PATCH 2/2] node-cache: added tests --- node-cache/node-cache-tests.ts | 98 ++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 node-cache/node-cache-tests.ts diff --git a/node-cache/node-cache-tests.ts b/node-cache/node-cache-tests.ts new file mode 100644 index 0000000000..a61ec6c897 --- /dev/null +++ b/node-cache/node-cache-tests.ts @@ -0,0 +1,98 @@ +/// + +import NodeCache = require('node-cache'); + +import Options = NodeCacheTypes.Options; +import Stats = NodeCacheTypes.Stats; +import Callback = NodeCacheTypes.Callback; + +interface TypeSample { + a: number; + b: string; + c: boolean; +} + +{ + let options: Options; + let cache: NodeCacheTypes.NodeCache; + cache = new NodeCache(); + cache = new NodeCache(options); +} + +{ + let cache: NodeCache; + let key: string; + let cb: Callback; + let result: TypeSample; + result = cache.get(key); + result = cache.get(key, cb); +} + +{ + let cache: NodeCache; + let keys: string[]; + let cb: Callback<{[key: string]: TypeSample}>; + let result: {[key: string]: TypeSample}; + result = cache.mget(keys); + result = cache.mget(keys, cb); +} + +{ + let cache: NodeCache; + let key: string; + let value: TypeSample; + let ttl: number|string; + let cb: Callback; + let result: boolean; + result = cache.set(key, value); + result = cache.set(key, value, ttl); + result = cache.set(key, value, ttl, cb); + result = cache.set(key, value, cb); +} + +{ + let cache: NodeCache; + let keys: string|string[]; + let cb: Callback; + let result: number; + result = cache.del(keys); + result = cache.del(keys, cb); +} + +{ + let cache: NodeCache; + let key: string; + let ttl: number; + let cb: Callback; + let result: boolean; + result = cache.ttl(key); + result = cache.ttl(key, ttl); + result = cache.ttl(key, ttl, cb); + result = cache.ttl(key, cb); +} + +{ + let cache: NodeCache; + let cb: Callback; + let result: string[]; + result = cache.keys(); + result = cache.keys(cb); +} + +{ + let cache: NodeCache; + let result: Stats; + result = cache.getStats(); +} + +{ + let cache: NodeCache; + let result: void; + result = cache.flushAll(); +} + +{ + let cache: NodeCache; + let result: void; + result = cache.close(); +}