directus

Форк
0
35 строк · 1.1 Кб
1
import type { OperationHandler } from '@directus/extensions';
2
import type { PromiseCallback } from '@directus/types';
3
import type { Reference } from 'isolated-vm';
4
import { getFlowManager } from '../../../../flows.js';
5
import { callReference } from './call-reference.js';
6

7
export function registerOperationGenerator() {
8
	const flowManager = getFlowManager();
9

10
	const unregisterFunctions: PromiseCallback[] = [];
11

12
	const registerOperation = (
13
		id: Reference<string>,
14
		cb: Reference<(options: Record<string, unknown>) => unknown | Promise<unknown> | void>,
15
	) => {
16
		if (id.typeof !== 'string') throw new TypeError('Operation config id has to be of type string');
17
		if (cb.typeof !== 'function') throw new TypeError('Operation config handler has to be of type function');
18

19
		const idCopied = id.copySync();
20

21
		const handler: OperationHandler = async (options) => {
22
			const response = await callReference(cb, [options]);
23

24
			return response.copy();
25
		};
26

27
		flowManager.addOperation(idCopied, handler);
28

29
		unregisterFunctions.push(() => {
30
			flowManager.removeOperation(idCopied);
31
		});
32
	};
33

34
	return { register: registerOperation, unregisterFunctions };
35
}
36

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

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

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

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