{"version":3,"sources":["jsdelivr-header.js","/npm/fastify-raw-body@5.0.0/plugin.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,MAAM,GAAK,QAAQ,kBACb,WAAa,QAAQ,YACrB,WAAa,QAAQ,qBAErB,aAAe,OAAO,gCAE5B,SAAS,QAAS,EAAS,EAAM,GAC/B,IAA8B,IAA1B,EAAQ,cAEV,YADA,EAAK,IAAI,MAAM,2CAIjB,MAAM,MAAE,EAAK,SAAE,EAAQ,OAAE,EAAM,SAAE,EAAQ,OAAE,EAAM,iBAAE,GAAqB,OAAO,OAAO,CACpF,MAAO,UACP,SAAU,OACV,QAAQ,EACR,UAAU,EACV,OAAQ,GACR,iBAAkB,CAAC,qBAClB,GAqCH,SAAS,EAAmB,EAAS,EAAO,EAAS,GACnD,MAAM,EAAa,EAAQ,aAAa,UAExC,WAAW,EAAW,EAAQ,IAAM,EAAS,CAC3C,OAAQ,KACR,MAAO,EACP,aACC,SAAU,EAAK,GACZ,IAaJ,EAAQ,GAAS,EACnB,IAEA,EAAK,KAAM,EACb,EA5DiB,IAAb,GACF,EAAQ,qBAAqB,EAC3B,CAAE,QAAS,WA4Df,SAAkC,EAAK,EAAM,GAC3C,GAAoB,IAAhB,EAAK,QAAwB,MAAR,EAAc,CACrC,MAAM,EAAM,IAAI,MAAM,uEAEtB,OADA,EAAI,WAAa,IACV,EAAK,EACd,CAEA,IAKE,EAAK,KAJQ,WAAW,MAAM,EAAK,SAAS,QAAS,CACnD,YAAa,EAAQ,cAAc,iBACnC,kBAAmB,EAAQ,cAAc,yBAG7C,CAAE,MAAO,GAEP,OADA,EAAI,WAAa,IACV,EAAK,EACd,CACF,IAzEA,EAAQ,QAAQ,WAAY,IAC1B,MAAM,EAAmC,QAAxB,EAAa,QAAqB,EAAa,SAA0C,IAAhC,EAAa,OAAO,SAG3F,IAAW,IAAa,EAAO,QAC/B,EAAa,SAA0C,IAAhC,EAAa,OAAO,SAC5C,EAAO,SAAS,EAAa,SAExB,EAAa,WAEP,MAAM,QAAQ,EAAa,YAChC,EACF,EAAa,WAAW,QAAQ,GAEhC,EAAa,WAAW,KAAK,GAI7B,EAAa,WADX,EACwB,CAAC,EAAmB,EAAa,YAEjC,CAAC,EAAa,WAAY,GAXtD,EAAa,WAAa,CAAC,GAc/B,IAGF,EAAQ,eAAgB,EACxB,GA+CF,CAEA,MAAM,OAAS,GAAG,QAAS,CACzB,QAAS,OACT,KAAM,qBAGR,OAAO,QAAU,OACjB,OAAO,QAAQ,QAAU,OACzB,OAAO,QAAQ,eAAiB","file":"/npm/fastify-raw-body@5.0.0/plugin.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.19.2.\n * Original file: /npm/fastify-raw-body@5.0.0/plugin.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict'\n\nconst fp = require('fastify-plugin')\nconst getRawBody = require('raw-body')\nconst secureJson = require('secure-json-parse')\n\nconst kRawBodyHook = Symbol('fastify-raw-body:rawBodyHook')\n\nfunction rawBody (fastify, opts, next) {\n  if (fastify[kRawBodyHook] === true) {\n    next(new Error('Cannot register fastify-raw-body twice'))\n    return\n  }\n\n  const { field, encoding, global, runFirst, routes, jsonContentTypes } = Object.assign({\n    field: 'rawBody',\n    encoding: 'utf8',\n    global: true,\n    runFirst: false,\n    routes: [],\n    jsonContentTypes: ['application/json']\n  }, opts)\n\n  if (encoding === false) {\n    fastify.addContentTypeParser(jsonContentTypes,\n      { parseAs: 'buffer' },\n      almostDefaultJsonParser)\n  }\n\n  fastify.addHook('onRoute', (routeOptions) => {\n    const wantSkip = routeOptions.method === 'GET' || (routeOptions.config && routeOptions.config.rawBody === false)\n\n    if (\n      (global && !wantSkip && !routes.length) ||\n      (routeOptions.config && routeOptions.config.rawBody === true) ||\n      routes.includes(routeOptions.path)\n    ) {\n      if (!routeOptions.preParsing) {\n        routeOptions.preParsing = [preparsingRawBody]\n      } else if (Array.isArray(routeOptions.preParsing)) {\n        if (runFirst) {\n          routeOptions.preParsing.unshift(preparsingRawBody)\n        } else {\n          routeOptions.preParsing.push(preparsingRawBody)\n        }\n      } else {\n        if (runFirst) {\n          routeOptions.preParsing = [preparsingRawBody, routeOptions.preParsing]\n        } else {\n          routeOptions.preParsing = [routeOptions.preParsing, preparsingRawBody]\n        }\n      }\n    }\n  })\n\n  fastify[kRawBodyHook] = true\n  next()\n\n  function preparsingRawBody (request, reply, payload, done) {\n    const applyLimit = request.routeOptions.bodyLimit\n\n    getRawBody(runFirst ? request.raw : payload, {\n      length: null, // avoid content lenght check: fastify will do it\n      limit: applyLimit, // limit to avoid memory leak or DoS\n      encoding\n    }, function (err, string) {\n      if (err) {\n        /**\n         * the error is managed by fastify server\n         * so the request object will not have any\n         * `body` parsed.\n         *\n         * The preparsingRawBody decorates the request\n         * meanwhile the `payload` is processed by\n         * the fastify server.\n         */\n        return\n      }\n\n      request[field] = string\n    })\n\n    done(null, payload)\n  }\n\n  function almostDefaultJsonParser (req, body, done) {\n    if (body.length === 0 || body == null) {\n      const err = new Error(\"Body cannot be empty when content-type is set to 'application/json'\")\n      err.statusCode = 400\n      return done(err)\n    }\n\n    try {\n      const json = secureJson.parse(body.toString('utf8'), {\n        protoAction: fastify.initialConfig.onProtoPoisoning,\n        constructorAction: fastify.initialConfig.onConstructorPoisoning\n      })\n      done(null, json)\n    } catch (err) {\n      err.statusCode = 400\n      return done(err)\n    }\n  }\n}\n\nconst plugin = fp(rawBody, {\n  fastify: '^5.x',\n  name: 'fastify-raw-body'\n})\n\nmodule.exports = plugin\nmodule.exports.default = plugin\nmodule.exports.fastifyRawBody = plugin\n"]}