import type { Process } from '../types'; import { useProcessContext } from './common'; import * as addProduct from '@/process/add-product'; import * as bonuses from '@/process/bonuses'; import * as calculate from '@/process/calculate'; import * as configurator from '@/process/configurator'; import * as createKP from '@/process/create-kp'; import * as elt from '@/process/elt'; import * as fingap from '@/process/fingap'; import * as gibdd from '@/process/gibdd'; import * as insurance from '@/process/insurance'; import * as leadOpportunity from '@/process/lead-opportunity'; import * as leasingObject from '@/process/leasing-object'; import * as leasingWithoutKasko from '@/process/leasing-without-kasko'; import * as loadKP from '@/process/load-kp'; import * as payments from '@/process/payments'; import * as price from '@/process/price'; import * as recalc from '@/process/recalc'; import * as subsidy from '@/process/subsidy'; import * as subsidyImportProgram from '@/process/subsidy-import-program'; import * as supplierAgent from '@/process/supplier-agent'; import * as usedPl from '@/process/used-pl'; type Config = { prune: string[]; }; function useProcess({ reactions }: Process, config?: Config) { const context = useProcessContext(); Object.keys(reactions).forEach((name) => { if (!config?.prune.includes(name)) { const injector = reactions[name]; injector(context); } }); } export function useReactions(config: Config) { useProcess(leadOpportunity, config); useProcess(loadKP, config); useProcess(calculate, config); useProcess(supplierAgent, config); useProcess(price, config); useProcess(fingap, config); useProcess(leasingWithoutKasko, config); useProcess(subsidy, config); useProcess(leasingObject, config); useProcess(configurator, config); useProcess(createKP, config); useProcess(bonuses, config); useProcess(usedPl, config); useProcess(subsidyImportProgram, config); useProcess(payments, config); useProcess(gibdd, config); useProcess(addProduct, config); useProcess(insurance, config); useProcess(recalc, config); useProcess(elt, config); }