Merge pull request #28059 from DimaMukhin/master

Added type definitions for koa-redis-cache
This commit is contained in:
Benjamin Lichtman
2018-08-17 10:44:49 -07:00
committed by GitHub
4 changed files with 152 additions and 0 deletions
+94
View File
@@ -0,0 +1,94 @@
// Type definitions for koa-redis-cache 3.0
// Project: https://github.com/coderhaoxin/koa-redis-cache
// Definitions by: Dima Mukhin <https://github.com/dimamukhin>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.3
import * as Koa from "koa";
import * as Redis from "redis";
type onErrorCallback = (error: Error) => void;
type getPrefixCallback = (ctx: Koa.Context) => string;
declare namespace cache {
interface CacheOptions {
/**
* redis key prefix, default is koa-redis-cache:
* If a function is supplied, its signature should be function(ctx) {} and it should return a string to use as the redis key prefix
*/
prefix?: string | getPrefixCallback;
/**
* redis expire time (second), default is 30 * 60 (30 min)
*/
expire?: number;
/**
* if the passParam exists in the query string, skip the cache
*/
passParam?: string;
/**
* max length of body size (in bytes) to cache.
* if the size of the body exceeds maxLength, the body will not be cached.
* default is: Infinity
*/
maxLength?: number;
/**
* the routes to cache, default is ['(.*)'].
* can be set to an array of routes (string), or an array of RouteOptions
*/
routes?: RouteOptions[] | string[];
/**
* the routes to exclude, default is [].
* example: ['/api/(.*)', '/view/:id']
*/
exclude?: string[];
/**
* callback function for error, default is function() {}
*/
onerror?: onErrorCallback;
/**
* redis options
*/
redis?: RedisOptions;
}
interface RouteOptions {
/**
* the route to cache, example: '/api/(.*)'
*/
route: string;
/**
* expiration time in seconds for cached responses for the route
*/
expire?: number;
}
interface RedisOptions {
/**
* host name of the redis server, default: 'localhost'
*/
host?: string;
/**
* port number of the redis server, default: 6379
*/
port?: number;
/**
* node_redis options
*/
options?: Redis.ClientOpts;
}
}
declare function cache(opts?: cache.CacheOptions): Koa.Middleware;
export = cache;
@@ -0,0 +1,34 @@
import * as Koa from "koa";
import * as cache from 'koa-redis-cache';
const app = new Koa();
const routeOptions: cache.RouteOptions[] = [
{
route: '/api/test',
expire: 60
},
{
route: '/api/users'
}
];
const redisOptions: cache.RedisOptions = {
port: 6379,
host: 'localhost'
};
const options: cache.CacheOptions = {
prefix: (ctx: Koa.Context) => 'koa-redis-cache:',
expire: 30 * 30,
passParam: 'skip',
maxLength: 1024,
routes: routeOptions,
exclude: ['/api/(.*)', '/view/:id'],
onerror: (error: Error) => console.log(error),
redis: redisOptions
};
app.use(cache(options));
app.listen(80);
+23
View File
@@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictFunctionTypes": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"koa-redis-cache-tests.ts"
]
}
+1
View File
@@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }