node/typings/internalBinding/locks.d.ts
ishabi 062e8b5a74 worker: add web locks api
PR-URL: https://github.com/nodejs/node/pull/58666
Fixes: https://github.com/nodejs/node/pull/36502
Refs: https://w3c.github.io/web-locks
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
2025-07-18 07:55:10 -07:00

31 lines
769 B
TypeScript

declare namespace InternalLocksBinding {
interface LockInfo {
readonly name: string;
readonly mode: 'shared' | 'exclusive';
readonly clientId: string;
}
interface LockManagerSnapshot {
readonly held: LockInfo[];
readonly pending: LockInfo[];
}
type LockGrantedCallback = (lock: LockInfo | null) => Promise<any> | any;
}
export interface LocksBinding {
readonly LOCK_MODE_SHARED: 'shared';
readonly LOCK_MODE_EXCLUSIVE: 'exclusive';
readonly LOCK_STOLEN_ERROR: 'LOCK_STOLEN';
request(
name: string,
clientId: string,
mode: string,
steal: boolean,
ifAvailable: boolean,
callback: InternalLocksBinding.LockGrantedCallback
): Promise<any>;
query(): Promise<InternalLocksBinding.LockManagerSnapshot>;
}