/
githubmirror
/
ai-legion
Обзор
Документация
Войти
/
githubmirror
/
ai-legion
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/module/define-module.ts
34 строки
913 B
eumemic
move module state management to module-manager
10 апр 2023, 23:57
10 апр 2023, 23:57
80fabe1
Код
Авторство
О чём код?
import { fromPairs, mapValues, toPairs } from "lodash"; import { PartialActionDefinition } from "./action-definition"; import { ModuleDefinitionInputs1, ModuleDefinitionInputs2, ModuleDefinition, } from "."; export function defineModule<S>(inputs1: ModuleDefinitionInputs1<S>) { return { with: <A extends string>({ actions, ...inputs2 }: ModuleDefinitionInputs2<S, A>): ModuleDefinition<S, A> => ({ ...inputs1, ...inputs2, actions: fromPairs( toPairs<PartialActionDefinition<S, string>>(actions).map( ([name, { parameters = {}, ...definition }]) => [ name, { name, parameters: mapValues(parameters, (parameter) => ({ optional: false, ...parameter, })), ...definition, }, ] ) ) as any, }), }; }