node-cache: Provides its own types (#39479)

This commit is contained in:
Alexander T
2019-11-01 19:40:48 +02:00
committed by Jesse Trinity
parent e3f4ee3b8e
commit 6d76537bf8
5 changed files with 6 additions and 415 deletions

View File

@@ -2586,6 +2586,12 @@
"sourceRepoURL": "https://github.com/nock/nock",
"asOfVersion": "11.1.0"
},
{
"libraryName": "node-cache",
"typingsPackageName": "node-cache",
"sourceRepoURL": "https://github.com/mpneuried/nodecache",
"asOfVersion": "4.2.0"
},
{
"libraryName": "node-pg-migrate",
"typingsPackageName": "node-pg-migrate",

View File

@@ -1,286 +0,0 @@
// Type definitions for node-cache 4.1
// Project: https://github.com/mpneuried/nodecache
// Definitions by: Ilya Mochalov <https://github.com/chrootsu>
// Daniel Thunell <https://github.com/dthunell>
// Ulf Seltmann <https://github.com/useltmann>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
/**
* Since 4.1.0: Key-validation: The keys can be given as either string or number,
* but are casted to a string internally anyway.
*/
type Key = string | number;
declare namespace NodeCache {
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: Key,
cb?: Callback<T>
): T | undefined;
/**
* get multiple cached keys at once and change the stats
*
* @param keys an array of keys
* @param cb Callback function
*/
mget<T>(
keys: Key[],
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: Key,
value: T,
ttl: number | string,
cb?: Callback<boolean>
): boolean;
set<T>(
key: Key,
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: Key | Key[],
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: Key,
ttl: number,
cb?: Callback<boolean>
): boolean;
ttl(
key: Key,
cb?: Callback<boolean>
): boolean;
getTtl(
key: Key,
): number|undefined;
getTtl(
key: Key,
cb?: Callback<boolean>
): 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;
errorOnMissing?: boolean;
deleteOnExpire?: boolean;
}
interface Stats {
hits: number;
misses: number;
keys: number;
ksize: number;
vsize: number;
}
interface WrappedValue<T> {
// ttl
t: number;
// value
v: T;
}
type Callback<T> = (err: any, data: T | undefined) => void;
}
import events = require("events");
import Data = NodeCache.Data;
import Options = NodeCache.Options;
import Stats = NodeCache.Stats;
import Callback = NodeCache.Callback;
declare class NodeCache extends events.EventEmitter implements NodeCache.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: Key,
cb?: Callback<T>
): T | undefined;
/**
* get multiple cached keys at once and change the stats
*
* @param keys an array of keys
* @param cb Callback function
*/
mget<T>(
keys: Key[],
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: Key,
value: T,
ttl: number | string,
cb?: Callback<boolean>
): boolean;
set<T>(
key: Key,
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: Key | Key[],
cb?: Callback<number>
): number;
/**
* reset or redefine the ttl of a key. If `ttl` is not passed or set to 0 `stdTtl` is used. if set lt 0 it's similar to `.del()`
*/
ttl(
key: Key,
ttl: number,
cb?: Callback<boolean>
): boolean;
ttl(
key: Key,
cb?: Callback<boolean>
): boolean;
getTtl(
key: Key
): number|undefined;
getTtl(
key: Key,
cb?: Callback<boolean>,
): 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;
export as namespace NodeCache;

View File

@@ -1,98 +0,0 @@
import NodeCache = require('node-cache');
import Options = NodeCache.Options;
import Stats = NodeCache.Stats;
import Callback = NodeCache.Callback;
interface TypeSample {
a: number;
b: string;
c: boolean;
}
{
let options: Options;
let cache: NodeCache.NodeCache;
cache = new NodeCache();
cache = new NodeCache(options);
}
{
let cache: NodeCache;
let key: string;
let cb: Callback<TypeSample>;
let result: TypeSample | undefined;
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();
}
/* tslint-:disable void-return no-void-expression
{
let cache: NodeCache;
let result: void;
result = cache.flushAll();
}
{
let cache: NodeCache;
let result: void;
result = cache.close();
}
tslint-:enable void-return */

View File

@@ -1,23 +0,0 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": false,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"node-cache-tests.ts"
]
}

View File

@@ -1,8 +0,0 @@
{
"extends": "dtslint/dt.json",
"rules": {
// TODO
"prefer-const": false,
"no-unnecessary-generics": false
}
}