Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 1x 1x 2x 2x 1x 2x 2x 2x 26x 6x 1x 1x 20x 1x 1x 2x 1x 1x 1x | import { Express, Request, Response, NextFunction } from 'express' import methods, { Method } from './methods' interface LooseObject { [key: string]: any } declare global { namespace Express { interface Response { formatter: LooseObject } } } const responseEnhancer = () => ( req: Request, res: Response, next: NextFunction, ): void => { res.formatter = _generateFormatters(res) next() } const _generateFormatters = (res: Response) => { const formatter: LooseObject = {} let responseBody = {} methods.map((method: Method) => { if (method.isSuccess) { formatter[method.name] = (data: any, meta: any) => { responseBody = _generateSuccessResponse({ data, meta }) res.status(parseInt(method.code)).json(responseBody) } } else { formatter[method.name] = (error: any, meta: any) => { responseBody = _generateErrorResponse({ error, meta }) res.status(parseInt(method.code)).json(responseBody) } } }) return formatter } interface SuccessInput { data: any meta: any } const _generateSuccessResponse = ({ data, meta }: SuccessInput) => ({ data, meta, }) interface ErrorsInput { error: any meta: any } const _generateErrorResponse = ({ error, meta }: ErrorsInput) => ({ error, meta, }) export { responseEnhancer } |