diff --git a/redlock/redlock.d.ts b/redlock/redlock.d.ts new file mode 100644 index 000000000..a5dd01be3 --- /dev/null +++ b/redlock/redlock.d.ts @@ -0,0 +1,63 @@ +// Type definitions for Redlock +// Project: https://github.com/mike-marcacci/node-redlock +// Definitions by: Ilya Mochalov +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module RedlockTypes { + interface LockError extends Error {} + + interface NodeifyCallback { + (err: any, value?: T): void; + } + + interface Lock { + redlock: Redlock; + resource: string; + value: any; + expiration: number; + + unlock(callback?: NodeifyCallback): void; + + extend(ttl: number, callback?: NodeifyCallback): Promise; + } + + interface RedlockOptions { + driftFactor?: number; + retryCount?: number; + retryDelay?: number; + } + + class Redlock { + LockError: LockError; + + driftFactor: number; + retryCount: number; + retryDelay: number; + + servers: any[]; // array of redis.RedisClient + + constructor(clients: any[], options?: RedlockOptions); + //new (clients: any[], options?: IRedlockOptions); + + acquire(resource: string, ttl: number, callback?: NodeifyCallback): Promise; + lock(resource: string, ttl: number, callback?: NodeifyCallback): Promise; + + disposer(resource: string, ttl: number): any; // return bluebird.Disposer + + release(lock: Lock, callback?: NodeifyCallback): Promise; + unlock(lock: Lock, callback?: NodeifyCallback): Promise; + + extend(lock: Lock, ttl: number, callback?: NodeifyCallback): Promise; + + _lock(resource: string, value: string, ttl: number, callback?: NodeifyCallback): Promise; + + _random(): string; + } +} + +declare module "redlock" { + import Redlock = RedlockTypes.Redlock; + export = Redlock; +}