@getlarge/nestjs-tools-lock
Version:
A distributed lock manager for NestJS
23 lines (22 loc) • 1 kB
TypeScript
import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import Redlock, { ExecutionResult, Lock, RedlockAbortSignal } from 'redlock';
import { LockServiceOptions } from './types';
export declare class LockService implements OnModuleInit, OnModuleDestroy {
readonly options: LockServiceOptions;
private readonly defaultLockOptions;
private redis;
redlock: Redlock;
constructor(options: LockServiceOptions);
onModuleInit(): Promise<void>;
onModuleDestroy(): Promise<void>;
private waitUntilInitialized;
get isInitialized(): boolean;
checkInitialization(): void;
errorHandler(error: unknown): void;
createConnection(): void;
optimistic<T = unknown>(key: string, ttl: number, cb: (signal: RedlockAbortSignal) => Promise<T>): Promise<T>;
lock(key: string, ttl: number): Promise<Lock>;
get(key: string, lockId: string): Promise<Lock | null>;
unlock(key: string, lockId: string): Promise<ExecutionResult>;
close(): Promise<void>;
}