import { LambdaProxyHandler, BeforeProcess, MainProcess, AfterProcess, ResponseProcess, OnErrorProcess, IProcessor } from '../types' import { Processor } from '../processor' export namespace PrepareHandlerBuilder { export interface Params { before?: BeforeProcess after?: AfterProcess response?: ResponseProcess onError?: OnErrorProcess } } export interface BuildHandler { (params: IProcessor.Params): LambdaProxyHandler } export const prepareHandlerBuilder: (preparedParams?: PrepareHandlerBuilder.Params) => BuildHandler = (preparedParams: PrepareHandlerBuilder.Params = {}) => (params: IProcessor.Params) => { const _params = Object.assign({}, params, preparedParams) const processor = new Processor(_params) return processor.toHandler() } export const buildHandler: (params: IProcessor.Params) => LambdaProxyHandler = (params: IProcessor.Params) => { return prepareHandlerBuilder()(params) } export const lamprox: (main: MainProcess) => LambdaProxyHandler = (main: MainProcess) => { return buildHandler({ main: main, environments: undefined }) }