mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
* Added type definitions for apicache * Added type definitions for apicache * Update index.d.ts * Update index.d.ts * fix lint * refactor lint rules * fix lint * add test file
78 lines
2.6 KiB
TypeScript
78 lines
2.6 KiB
TypeScript
// Type definitions for apicache 1.2
|
|
// Project: https://github.com/kwhitley/apicache
|
|
// Definitions by: Daniel Sogl <https://github.com/danielsogl>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
|
|
import { RedisClient } from 'redis';
|
|
|
|
export const id: number;
|
|
|
|
/**
|
|
* clears cache target (key or group), or entire cache if no value passed, returns new index.
|
|
*/
|
|
export function clear(target: string | any[]): any;
|
|
|
|
/** used to create a new ApiCache instance with the same options as the current one */
|
|
export function clone(): any;
|
|
|
|
export function getDuration(duration: string): any;
|
|
|
|
/**
|
|
* returns current cache index [of keys]
|
|
*/
|
|
export function getIndex(): any;
|
|
|
|
/**
|
|
* the actual middleware that will be used in your routes. duration is in the following format
|
|
* "[length] [unit]", as in "10 minutes" or "1 day". A second param is a middleware toggle function,
|
|
* accepting request and response params, and must return truthy to enable cache for the request.
|
|
* Third param is the options that will override global ones and affect this middleware only.
|
|
*/
|
|
export function middleware(
|
|
duration?: string,
|
|
toggleMiddleware?: any,
|
|
localOptions?: Options
|
|
): any;
|
|
|
|
/**
|
|
* used to create a new ApiCache instance (by default, simply requiring this library shares a common instance)
|
|
*/
|
|
export function newInstance(config: Options): any;
|
|
|
|
/**
|
|
* getter/setter for global options. If used as a setter, this function is
|
|
* chainable, allowing you to do things such as... say... return the middleware.
|
|
*/
|
|
export function options(options: Options): any;
|
|
|
|
export function resetIndex(): void;
|
|
|
|
export interface Options {
|
|
/** if true, enables console output */
|
|
debug?: boolean;
|
|
/** should be either a number (in ms) or a string, defaults to 1 hour */
|
|
defaultDuration?: string;
|
|
/** if false, turns off caching globally (useful on dev) */
|
|
enabled?: boolean;
|
|
/**
|
|
* if provided, uses the [node-redis](https://github.com/NodeRedis/node_redis) client instead of [memory-cache](https://github.com/ptarjan/node-cache)
|
|
*/
|
|
redisClient?: RedisClient;
|
|
/** appendKey takes the req/res objects and returns a custom value to extend the cache key */
|
|
appendKey?: any;
|
|
/** list of headers that should never be cached */
|
|
headerBlacklist?: string[];
|
|
statusCodes?: {
|
|
/** list status codes to specifically exclude (e.g. [404, 403] cache all responses unless they had a 404 or 403 status) */
|
|
exclude?: number[];
|
|
/** list status codes to require (e.g. [200] caches ONLY responses with a success/200 code) */
|
|
include?: number[];
|
|
};
|
|
/**
|
|
* 'cache-control': 'no-cache' // example of header overwrite
|
|
*/
|
|
headers?: {
|
|
[key: string]: string;
|
|
};
|
|
}
|