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>
31 lines
769 B
TypeScript
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>;
|
|
}
|