@apiratorjs/locking
Version:
A lightweight library providing both local and distributed locking primitives (mutexes and semaphores) for managing concurrency in Node.js.
53 lines • 1.89 kB
TypeScript
export interface IDeferred {
resolve: (...args: any[]) => void;
reject: (error: Error) => void;
timer?: NodeJS.Timeout | null;
}
export type AcquireParams = {
timeoutMs?: number;
};
export interface ISemaphore {
maxCount: number;
freeCount(): Promise<number>;
acquire(params?: AcquireParams): Promise<IReleaser>;
cancelAll(errMessage?: string): Promise<void>;
isLocked(): Promise<boolean>;
runExclusive<T>(fn: () => Promise<T> | T): Promise<T>;
runExclusive<T>(params: AcquireParams, fn: () => Promise<T> | T): Promise<T>;
}
export interface IMutex {
acquire(params?: AcquireParams): Promise<IReleaser>;
cancel(errMessage?: string): Promise<void>;
isLocked(): Promise<boolean>;
runExclusive<T>(fn: () => Promise<T> | T): Promise<T>;
runExclusive<T>(params: AcquireParams, fn: () => Promise<T> | T): Promise<T>;
}
export interface IReleaser {
release(): Promise<void>;
getToken(): AcquireToken;
}
export type AcquireToken = string;
export interface IDistributedSemaphore extends Omit<ISemaphore, "acquire"> {
name: string;
implementation: string;
destroy(): Promise<void>;
isDestroyed: boolean;
acquire(params?: AcquireParams): Promise<IReleaser>;
}
export interface IDistributedMutex extends Omit<IMutex, "acquire"> {
name: string;
implementation: string;
destroy(): Promise<void>;
isDestroyed: boolean;
acquire(params?: AcquireParams): Promise<IReleaser>;
}
export type DistributedSemaphoreConstructorProps = {
maxCount: number;
name: string;
};
export type DistributedMutexConstructorProps = {
name: string;
};
export type DistributedSemaphoreFactory = (props: DistributedSemaphoreConstructorProps) => IDistributedSemaphore;
export type DistributedMutexFactory = (props: DistributedMutexConstructorProps) => IDistributedMutex;
//# sourceMappingURL=types.d.ts.map