From 087195bc97589786f4adc61f16835b83d6aa8729 Mon Sep 17 00:00:00 2001 From: Cyril Schumacher Date: Thu, 14 Jan 2016 19:34:46 +0100 Subject: [PATCH] Add definition for "express-brute-memcached". --- .../express-brute-memcached-tests.ts | 18 +++ .../express-brute-memcached.d.ts | 114 ++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 express-brute-memcached/express-brute-memcached-tests.ts create mode 100644 express-brute-memcached/express-brute-memcached.d.ts diff --git a/express-brute-memcached/express-brute-memcached-tests.ts b/express-brute-memcached/express-brute-memcached-tests.ts new file mode 100644 index 000000000..a8d777090 --- /dev/null +++ b/express-brute-memcached/express-brute-memcached-tests.ts @@ -0,0 +1,18 @@ +/// +/// +/// + +import express = require("express"); +import ExpressBrute = require("express-brute"); +import MemcachedStore = require("express-brute-memcached"); + +var app = express(); +var store = new MemcachedStore("127.0.0.1"); +var bruteforce = new ExpressBrute(store); + +app.post('/auth', + bruteforce.prevent, // error 403 if we hit this route too often + function (req, res, next) { + res.send('Success!'); + } +); diff --git a/express-brute-memcached/express-brute-memcached.d.ts b/express-brute-memcached/express-brute-memcached.d.ts new file mode 100644 index 000000000..4ef41cd69 --- /dev/null +++ b/express-brute-memcached/express-brute-memcached.d.ts @@ -0,0 +1,114 @@ +// Type definitions for express-brute-memcached +// Project: https://github.com/AdamPflug/express-brute-memcached +// Definitions by: Cyril Schumacher +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module "express-brute-memcached" { + /** + * @summary Memcached options. + * @interface + */ + interface MemcachedStoreOptions { + prefix: string; + + /** + * @summary Maximum key size allowed. + * @type {number} + */ + maxKeySize: number; + + /** + * @summary Maximum expiration time of keys (in seconds). + * @type {number} + */ + maxExpiration: number; + + /** + * @summary Maximum size of a value. + * @type {number} + */ + maxValue: number; + + /** + * @summary Maximum size of the connection pool. + * @type {number} + */ + poolSize: number; + + /** + * @summary Hashing algorithm used to generate the hashRing values + * @type {string} + */ + algorithm: string; + + /** + * @summary Time between reconnection attempts (in milliseconds). + * @type {number} + */ + reconnect: number; + + /** + * @summary Time after which Memcached sends a connection timeout (in milliseconds). + * @type {number} + */ + timeout: number; + + /** + * @summary Number of socket allocation retries per request. + * @type {number} + */ + retries: number; + + /** + * @summary Number of failed-attempts to a server before it is regarded as 'dead'. + * @type {number} + */ + failures: number; + + /** + * @summary Time between a server failure and an attempt to set it up back in service. + * @type {number} + */ + retry: number; + + /** + * @summary If true, authorizes the automatic removal of dead servers from the pool. + * @type {boolean} + */ + remove: boolean; + + /** + * @summary An array of server_locations to replace servers that fail and that are removed from the consistent hashing scheme. + * @type {Array} + */ + failOverServers: Array; + + /** + * @summary True, whether to use md5 as hashing scheme when keys exceed maxKeySize . + * @type + */ + keyCompression: boolean; + + /** + * @summary Idle timeout for the connections. + * @type {number} + */ + idle: number; + } + + /** + * @summary A memcached store adapter. + * @class + */ + export = class MemcachedStore { + /** + * @summary Constructor. + * @constructor + * @param {string|Array} hosts The collection. + * @param {Object} options The otpions. + */ + constructor(hosts: string|Array, options?: MemcachedStoreOptions); + } +}