directus
16 строк · 655.0 Байт
1import type { ExtensionSandboxRequestedScopes } from '@directus/extensions';
2import type { Reference } from 'isolated-vm';
3import { setTimeout } from 'node:timers/promises';
4
5export function sleepGenerator(
6requestedScopes: ExtensionSandboxRequestedScopes,
7): (milliseconds: Reference<number>) => Promise<void> {
8return async (milliseconds) => {
9if (requestedScopes.sleep === undefined) throw new Error('No permission to access "sleep"');
10if (milliseconds.typeof !== 'number') throw new TypeError('Sleep milliseconds has to be of type number');
11
12const millisecondsCopied = await milliseconds.copy();
13
14await setTimeout(millisecondsCopied);
15};
16}
17