UNPKG

@aws-lambda-powertools/parser

Version:
47 lines (46 loc) 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiGatewayEnvelope = void 0; const errors_js_1 = require("../errors.js"); const api_gateway_js_1 = require("../schemas/api-gateway.js"); const envelope_js_1 = require("./envelope.js"); /** * API Gateway envelope to extract data within body key */ exports.ApiGatewayEnvelope = { /** * This is a discriminator to differentiate whether an envelope returns an array or an object * @hidden */ [envelope_js_1.envelopeDiscriminator]: 'object', parse(data, schema) { try { return api_gateway_js_1.APIGatewayProxyEventSchema.extend({ body: schema, }).parse(data).body; } catch (error) { throw new errors_js_1.ParseError('Failed to parse API Gateway body', { cause: error, }); } }, safeParse(data, schema) { const result = api_gateway_js_1.APIGatewayProxyEventSchema.extend({ body: schema, }).safeParse(data); if (!result.success) { return { success: false, error: new errors_js_1.ParseError('Failed to parse API Gateway body', { cause: result.error, }), originalEvent: data, }; } return { success: true, data: result.data.body, }; }, };