diff --git a/redis-rate-limiter/redis-rate-limiter-tests.ts b/redis-rate-limiter/redis-rate-limiter-tests.ts
new file mode 100644
index 0000000000..8fb68941ac
--- /dev/null
+++ b/redis-rate-limiter/redis-rate-limiter-tests.ts
@@ -0,0 +1,41 @@
+///
+///
+///
+
+import * as express from 'express';
+import * as redis from 'redis';
+import * as rateLimiter from 'redis-rate-limiter';
+
+var num: number;
+var str: string;
+var options: redis.ClientOpts;
+var redisClient = redis.createClient(num, str, options);
+
+var limit = rateLimiter.create({
+ redis: redisClient,
+ key: function(x) { return x.ip },
+ rate: '100/minute'
+});
+
+var request = {} as express.Request;
+limit(request, function(err, rate) {
+ if (err) {
+ console.warn('Rate limiting not available');
+ } else {
+ console.log('Rate window: ' + rate.window); // 60
+ console.log('Rate limit: ' + rate.limit); // 100
+ console.log('Rate current: ' + rate.current); // 74
+ if (rate.over) {
+ console.error('Over the limit!');
+ }
+ }
+});
+
+var middleware = rateLimiter.middleware({
+ redis: redisClient,
+ key: 'ip',
+ rate: '100/minute'
+});
+
+var app = express();
+app.use(middleware);
diff --git a/redis-rate-limiter/redis-rate-limiter.d.ts b/redis-rate-limiter/redis-rate-limiter.d.ts
new file mode 100644
index 0000000000..6fa9998a0a
--- /dev/null
+++ b/redis-rate-limiter/redis-rate-limiter.d.ts
@@ -0,0 +1,44 @@
+// Type definitions for redis-rate-limiter 1.0.3
+// Project: https://github.com/TabDigital/redis-rate-limiter
+// Definitions by: Seth Westphal
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+///
+///
+
+declare module "redis-rate-limiter" {
+
+ import * as express from 'express';
+ import * as redis from 'redis';
+
+ class RedisRateLimiter {
+
+ public static create(options: RedisRateLimiter.Options):
+ (req: express.Request, callback: (err: Error, res: RedisRateLimiter.Response) => void) => void;
+ public static middleware(options: RedisRateLimiter.Options): express.RequestHandler;
+
+ }
+
+ namespace RedisRateLimiter {
+
+ export interface Options {
+ redis: redis.RedisClient;
+ key: 'ip' | ((req: express.Request) => string);
+ window?: number;
+ limit?: number;
+ rate?: string;
+ }
+
+ export interface Response {
+ key: string;
+ current: number;
+ limit: number;
+ window: number;
+ over: boolean;
+ }
+
+ }
+
+ export = RedisRateLimiter;
+
+}