summaryrefslogtreecommitdiff
path: root/packages/frontend/src/scripts/test-utils.ts
blob: a32315f4df58c4cb14837e5d00ab27f27a199995 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
 * SPDX-FileCopyrightText: syuilo and misskey-project
 * SPDX-License-Identifier: AGPL-3.0-only
 */

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()?.(),
	};
}