Merge pull request #5913 from chrootsu/node-cache

node-cache: added definitions and tests
This commit is contained in:
Masahiro Wakame
2015-09-20 21:49:45 +09:00
2 changed files with 361 additions and 0 deletions
+98
View File
@@ -0,0 +1,98 @@
/// <reference path="./node-cache.d.ts" />
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<TypeSample>;
let result: TypeSample;
result = cache.get<TypeSample>(key);
result = cache.get<TypeSample>(key, cb);
}
{
let cache: NodeCache;
let keys: string[];
let cb: Callback<{[key: string]: TypeSample}>;
let result: {[key: string]: TypeSample};
result = cache.mget<TypeSample>(keys);
result = cache.mget<TypeSample>(keys, cb);
}
{
let cache: NodeCache;
let key: string;
let value: TypeSample;
let ttl: number|string;
let cb: Callback<boolean>;
let result: boolean;
result = cache.set<TypeSample>(key, value);
result = cache.set<TypeSample>(key, value, ttl);
result = cache.set<TypeSample>(key, value, ttl, cb);
result = cache.set<TypeSample>(key, value, cb);
}
{
let cache: NodeCache;
let keys: string|string[];
let cb: Callback<number>;
let result: number;
result = cache.del(keys);
result = cache.del(keys, cb);
}
{
let cache: NodeCache;
let key: string;
let ttl: number;
let cb: Callback<boolean>;
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<string[]>;
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();
}
+263
View File
@@ -0,0 +1,263 @@
// Type definitions for node-cache v3.0.0
// Project: https://github.com/tcs-de/nodecache
// Definitions by: Ilya Mochalov <https://github.com/chrootsu>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../node/node.d.ts" />
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<T>(
key: string,
cb?: Callback<T>
): T;
/**
* get multiple cached keys at once and change the stats
*
* @param keys an array of keys
* @param cb Callback function
*/
mget<T>(
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<T>(
key: string,
value: T,
ttl: number|string,
cb?: Callback<boolean>
): boolean;
set<T>(
key: string,
value: T,
cb?: Callback<boolean>
): 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>
): 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>
): boolean;
ttl(
key: string,
cb?: Callback<boolean>,
ttl?: number
): boolean;
/**
* list all keys within this cache
* @param cb Callback function
* @returns An array of all keys
*/
keys(cb?: Callback<string[]>): 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<any>;
}
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<T> {
// ttl
t: number;
// value
v: T;
}
interface Callback<T> {
(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<T>(
key: string,
cb?: Callback<T>
): T;
/**
* get multiple cached keys at once and change the stats
*
* @param keys an array of keys
* @param cb Callback function
*/
mget<T>(
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<T>(
key: string,
value: T,
ttl: number|string,
cb?: Callback<boolean>
): boolean;
set<T>(
key: string,
value: T,
cb?: Callback<boolean>
): 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>
): 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>
): boolean;
ttl(
key: string,
cb?: Callback<boolean>,
ttl?: number
): boolean;
/**
* list all keys within this cache
* @param cb Callback function
* @returns An array of all keys
*/
keys(cb?: Callback<string[]>): 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;
}