diff options
Diffstat (limited to 'packages/frontend/src/scripts/test-utils.ts')
| -rw-r--r-- | packages/frontend/src/scripts/test-utils.ts | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/packages/frontend/src/scripts/test-utils.ts b/packages/frontend/src/scripts/test-utils.ts index 52bb2d94e0..a32315f4df 100644 --- a/packages/frontend/src/scripts/test-utils.ts +++ b/packages/frontend/src/scripts/test-utils.ts @@ -7,3 +7,13 @@ export async function tick(): Promise<void> { // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition await new Promise((globalThis.requestIdleCallback ?? setTimeout) as never); } + +/** + * @see https://github.com/misskey-dev/misskey/issues/11267 + */ +export function semaphore(counter = 0, waiting: (() => void)[] = []) { + return { + acquire: () => ++counter > 1 && new Promise<void>(resolve => waiting.push(resolve)), + release: () => --counter && waiting.pop()?.(), + }; +} |