import { APIGatewayEvent, Context } from 'aws-lambda' import { HttpError } from './error' export const lfunction = (fn: (event: APIGatewayEvent, context: Context) => Promise) => async (event: APIGatewayEvent, context: Context) => { try { console.log('Received request on path', event.path, 'with method', event.httpMethod) console.log('Headers of the request', event.headers) console.log('Body of the request', event.body) const result = await fn(event, context) if (result) { if (typeof result === 'object' && result?.statusCode) { return result } else { return { statusCode: 200, body: JSON.stringify(result), } } } else { return { statusCode: 200 } } } catch (err) { console.error(err) if (err instanceof HttpError) { return { statusCode: err.statusCode, body: JSON.stringify({ message: err.message }), } } else { return { statusCode: 500, body: JSON.stringify({ error: typeof err === 'string' ? err : (err).message }), } } } }