UNPKG

@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
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; }