UNPKG

durable-locks

Version:

A distributed locking mechanism using Cloudflare Durable Objects.

34 lines (31 loc) 970 B
import { DurableObject } from 'cloudflare:workers'; type Lock = { lease: number; deadline: number; }; type Success = { success: true; } & Lock; type Failed = { success: false; reason: "NO_LONGER_VALID" | "BORROWED"; }; type Result = Success | Failed; declare class DurableLock extends DurableObject { alarm(): Promise<void>; fetch(request: Request): Promise<Response>; acquire(ttl: number, lease?: number): Promise<Result>; release(lease: number): Promise<Failed | { success: true; }>; isLocked(): Promise<boolean>; private hardDeadline; } declare function useDurableLock(namespace: DurableObjectNamespace<DurableLock>, id: string): { acquire: (ttl: number, lease?: number) => Promise<Result>; release: (lease: number) => Promise<Failed | { success: true; }>; isLocked: () => Promise<boolean>; }; export { DurableLock, type Failed, type Lock, type Result, type Success, useDurableLock };