diff --git a/cache-manager/cache-manager-tests.ts b/cache-manager/cache-manager-tests.ts new file mode 100644 index 0000000000..36eeb4c141 --- /dev/null +++ b/cache-manager/cache-manager-tests.ts @@ -0,0 +1,51 @@ +/// + +import * as cacheManager from 'cache-manager' + +const memoryCache = cacheManager.caching({ store: 'memory', max: 100, ttl: 10/*seconds*/ }); +const ttl = 5; + +memoryCache.set('foo', 'bar', { ttl: ttl }, (err) => { + + if (err) { + throw err; + } + + memoryCache.get('foo', (err, result) => { + + // console.log(result); + + memoryCache.del('foo', (err) => { + }); + + }); +}); + +function getUser(id: number, cb: Function) { + + cb(null, { id: id, name: 'Bob' }); +} + +const userId = 123; +const key = 'user_' + userId; + +// Note: ttl is optional in wrap() +memoryCache.wrap<{ id: number, name: string }>(key, (cb) => { + + getUser(userId, cb); + +}, { ttl: ttl }, (err, user) => { + + //console.log(user); + + // Second time fetches user from memoryCache + memoryCache.wrap<{ id: number, name: string }>(key, (cb) => { + + getUser(userId, cb); + + }, (err, user) => { + + //console.log(user); + + }); +}); diff --git a/cache-manager/cache-manager.d.ts b/cache-manager/cache-manager.d.ts new file mode 100644 index 0000000000..9570857f01 --- /dev/null +++ b/cache-manager/cache-manager.d.ts @@ -0,0 +1,36 @@ +// Type definitions for cache-manager v1.2.0 +// Project: https://github.com/BryanDonovan/node-cache-manager +// Definitions by: Simon Gausmann +// Definitions: https://github.com/borisyankov/DefinitelyTyped +declare module 'cache-manager' { + + + interface CachingConfig { + ttl: number; + } + interface StoreConfig extends CachingConfig { + store: string; + max?: number; + isCacheableValue?: (value: any) => boolean; + } + interface Cache { + set(key: string, value: T, options: CachingConfig, callback?: (error: any) => void): void; + set(key: string, value: T, ttl: number, callback?: (error: any) => void): void; + + wrap(key: string, wrapper: (callback: (error: any, result: T) => void) => void, options: CachingConfig, callback: (error: any, result: T) => void): void; + wrap(key: string, wrapper: (callback: (error: any, result: T) => void) => void, callback: (error: any, result: T) => void): void; + + get(key: string, callback: (error: any, result: T) => void): void; + + del(key: string, callback?: (error: any) => void): void; + } + + + + module cacheManager { + function caching(ICongig: StoreConfig): Cache; + function multiCaching(Caches: Cache[]): Cache; + } + + export = cacheManager; +}