DefinitelyTyped/types/web-locks-api/index.d.ts
Joël Charles 28689d220a
New package for Web Locks API definitions (#43541)
* [web-locks-api] new package

* add missing files
2020-04-01 11:38:07 -07:00

36 lines
967 B
TypeScript

// Type definitions for non-npm package web-locks-api-browser 0.0
// Project: https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API
// Definitions by: Joël Charles <https://github.com/magne4000>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
interface Lock {
readonly mode: 'exclusive' | 'shared';
readonly name: string;
}
interface LockManagerSnapshot {
held: Lock[];
pending: Lock[];
}
interface LockManagerRequestOptions {
mode?: 'exclusive' | 'shared';
ifAvailable?: boolean;
steal?: boolean;
signal?: AbortSignal;
}
interface LockManager {
request(name: string, callback: (lock: Lock) => Promise<any>): Promise<undefined>;
request<T extends LockManagerRequestOptions>(
name: string,
options: T,
callback: (lock: T['ifAvailable'] extends true ? Lock | null : Lock) => Promise<any>,
): Promise<undefined>;
query(): Promise<LockManagerSnapshot>;
}
interface Navigator {
locks: LockManager;
}