@jbagatta/johnny-locke
Version:
A robust, strongly-consistent distributed locking library that provides atomic operations across multiple processes
33 lines (32 loc) • 1.46 kB
TypeScript
import { NatsConnection } from 'nats';
import { LockConfiguration, Readable, Writable, IDistributedLock } from '../types';
export declare class JetstreamDistributedLock implements IDistributedLock {
private readonly kv;
private readonly config;
private state;
private watch;
private active;
private initialized;
private constructor();
static connect(natsClient: NatsConnection, config: LockConfiguration): Promise<IDistributedLock>;
static create(natsClient: NatsConnection, config: LockConfiguration): Promise<IDistributedLock>;
initialize(resolve: () => void, reject: (reason?: unknown) => void): Promise<void>;
private processEntry;
close(): void;
withLock<T>(key: string, timeoutMs: number, callback: (state: T | null) => Promise<T>, lockDuration?: number): Promise<Readable<T>>;
acquireLock<T>(key: string, timeoutMs: number, lockDuration?: number): Promise<Writable<T>>;
tryAcquireLock<T>(key: string, lockDuration?: number): Promise<{
acquired: boolean;
value: Writable<T> | undefined;
}>;
releaseLock<T>(key: string, lockObj: Writable<T>): Promise<boolean>;
wait<T>(key: string, timeoutMs: number): Promise<Readable<T>>;
delete(key: string): Promise<boolean>;
private createOrUpdateLock;
private resolveOnUnlock;
private isLockActive;
private updateLocalState;
private updateKey;
private checkActive;
private toNamespacedKey;
}