directus

Форк
0
25 строк · 935.0 Байт
1
import type { ActionHandler, PromiseCallback } from '@directus/types';
2
import type { Reference } from 'isolated-vm';
3
import emitter from '../../../../emitter.js';
4
import { callReference } from './call-reference.js';
5

6
export function registerActionGenerator() {
7
	const unregisterFunctions: PromiseCallback[] = [];
8

9
	const registerAction = (event: Reference<string>, cb: Reference<(payload: unknown) => void | Promise<void>>) => {
10
		if (event.typeof !== 'string') throw new TypeError('Action event has to be of type string');
11
		if (cb.typeof !== 'function') throw new TypeError('Action handler has to be of type function');
12

13
		const eventCopied = event.copySync();
14

15
		const handler: ActionHandler = (payload) => callReference(cb, [payload]);
16

17
		emitter.onAction(eventCopied, handler);
18

19
		unregisterFunctions.push(() => {
20
			emitter.offAction(eventCopied, handler);
21
		});
22
	};
23

24
	return { register: registerAction, unregisterFunctions };
25
}
26

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.