UNPKG

780 BJavaScriptView Raw
1import { createError } from '@middy/util'
2
3const defaults = {
4 reviver: undefined
5}
6
7const wsJsonBodyParserMiddleware = (opts = {}) => {
8 const options = { ...defaults, ...opts }
9 const wsJsonBodyParserMiddlewareBefore = async (request) => {
10 const { body } = request.event
11
12 try {
13 const data = request.event.isBase64Encoded
14 ? Buffer.from(body, 'base64').toString()
15 : body
16
17 request.event.body = JSON.parse(data, options.reviver)
18 } catch (err) {
19 // UnprocessableEntity
20 throw createError(422, 'Invalid or malformed JSON was provided', {
21 cause: { package: '@middy/ws-json-body-parser', data: err }
22 })
23 }
24 }
25
26 return {
27 before: wsJsonBodyParserMiddlewareBefore
28 }
29}
30export default wsJsonBodyParserMiddleware