"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(module, "exports", { enumerable: true, get: function() { return _default; } }); const _util = require("@middy/util"); const _parse = /*#__PURE__*/ _interop_require_default(require("qs/lib/parse.js")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const mimePattern = /^application\/x-www-form-urlencoded(;.*)?$/; const defaults = { disableContentTypeError: true }; const httpUrlencodeBodyParserMiddleware = (opts = {})=>{ const options = { ...defaults, ...opts }; const httpUrlencodeBodyParserMiddlewareBefore = async (request)=>{ const { headers, body } = request.event; const contentType = headers?.['Content-Type'] ?? headers?.['content-type']; if (!mimePattern.test(contentType)) { if (options.disableContentTypeError) { return; } throw (0, _util.createError)(415, 'Unsupported Media Type', { cause: contentType }); } const data = request.event.isBase64Encoded ? Buffer.from(body, 'base64').toString() : body; const rawBody = body; request.event.body = (0, _parse.default)(data); if (request.event.body?.[rawBody] === '') { // UnprocessableEntity throw (0, _util.createError)(415, 'Invalid or malformed URL encoded form was provided', { cause: '@middy/http-urlencode-body-parser unable to parse body' }); } }; return { before: httpUrlencodeBodyParserMiddlewareBefore }; }; const _default = httpUrlencodeBodyParserMiddleware;