UNPKG

20.9 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/Utils/createError.ts","webpack:///./src/Plugins/BodyParser/Constants/ParsingOption.ts","webpack:///./src/Plugins/BodyParser/Constants/ErrorTypes.ts","webpack:///./src/Plugins/BodyParser/main.ts","webpack:///./src/Plugins/BodyParser/bodyParser.ts","webpack:///./src/Plugins/BodyParser/json.ts","webpack:///./node_modules/content-type/index.js","webpack:///./src/Plugins/BodyParser/Constants/ContentType.ts","webpack:///./src/Plugins/BodyParser/Constants/RequestHeaders.ts","webpack:///./src/Plugins/BodyParser/Utils/toLowerCaseShallow.ts"],"names":["root","factory","exports","module","define","amd","a","i","global","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","default","errorEvent","ParsingOption","ErrorTypes","createError_1","bodyParser_1","ErrorTypes_1","ParsingOption_1","config","plugin","onRequest","handler","error","includes","type","BODY_PARSER_OPTION_TYPE_INVALID","details","validate","parser","_a","json_1","bodyParser","JSON","contentType","ContentType_1","RequestHeaders_1","toLowerCaseShallow_1","content","request","event","headers","BODY_PARSER_REQUEST_HEADERS_MISSING","parse","e","BODY_PARSER_REQUEST_HEADERS_CONTENT_TYPE_KEY_INVALID","CONTENT_TYPE","source","APPLICATION_JSON","BODY_PARSER_REQUEST_HEADERS_CONTENT_TYPE_VALUE_INVALID","body","BODY_PARSER_JSON_PARSE_FAILED","PARAM_REGEXP","TEXT_REGEXP","TOKEN_REGEXP","QESC_REGEXP","QUOTE_REGEXP","TYPE_REGEXP","qstring","val","str","String","test","length","TypeError","replace","ContentType","this","parameters","format","obj","string","param","params","keys","sort","header","getHeader","getcontenttype","index","indexOf","substr","trim","toLowerCase","match","lastIndex","exec","RequestHeaders","reduce","output","currentKey"],"mappings":"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","file":"plugin-body-parser.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(global, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 16);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar createError = function (errorEvent) {\n return errorEvent;\n};\nexports.default = createError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParsingOption;\n(function (ParsingOption) {\n ParsingOption[\"JSON\"] = \"json\";\n ParsingOption[\"RAW\"] = \"raw\";\n ParsingOption[\"TEXT\"] = \"text\";\n ParsingOption[\"URL_ENCODED\"] = \"urlencoded\";\n})(ParsingOption || (ParsingOption = {}));\nexports.default = ParsingOption;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ErrorTypes;\n(function (ErrorTypes) {\n ErrorTypes[\"BODY_PARSER_OPTION_TYPE_INVALID\"] = \"BODY_PARSER_OPTION_TYPE_INVALID\";\n ErrorTypes[\"BODY_PARSER_REQUEST_HEADERS_MISSING\"] = \"BODY_PARSER_REQUEST_HEADERS_MISSING\";\n ErrorTypes[\"BODY_PARSER_REQUEST_HEADERS_CONTENT_TYPE_KEY_INVALID\"] = \"BODY_PARSER_REQUEST_HEADERS_CONTENT_TYPE_KEY_INVALID\";\n ErrorTypes[\"BODY_PARSER_REQUEST_HEADERS_CONTENT_TYPE_VALUE_INVALID\"] = \"BODY_PARSER_REQUEST_HEADERS_CONTENT_TYPE_VALUE_INVALID\";\n ErrorTypes[\"BODY_PARSER_JSON_PARSE_FAILED\"] = \"BODY_PARSER_JSON_PARSE_FAILED\";\n})(ErrorTypes || (ErrorTypes = {}));\nexports.default = ErrorTypes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar createError_1 = require(\"../../Utils/createError\");\nvar bodyParser_1 = require(\"./bodyParser\");\nvar ErrorTypes_1 = require(\"./Constants/ErrorTypes\");\nvar ParsingOption_1 = require(\"./Constants/ParsingOption\");\nvar validate = function (config) {\n if (!Object['values'](ParsingOption_1.default).includes(config.type)) {\n return createError_1.default({\n type: ErrorTypes_1.default.BODY_PARSER_OPTION_TYPE_INVALID,\n details: 'one of json|raw|text|urlencoded'\n });\n }\n};\nvar bodyParserPlugin = function (config) {\n var pluginManifest = {\n plugin: {\n onRequest: function (handler) {\n var error = validate(config);\n if (error) {\n throw error;\n }\n var parser = bodyParser_1.default[config.type];\n parser(handler);\n }\n }\n };\n return pluginManifest;\n};\nexports.default = bodyParserPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _a;\nvar ParsingOption_1 = require(\"./Constants/ParsingOption\");\nvar json_1 = require(\"./json\");\nvar bodyParser = (_a = {},\n _a[ParsingOption_1.default.JSON] = json_1.default,\n _a);\nexports.default = bodyParser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar contentType = require(\"content-type\");\nvar createError_1 = require(\"../../Utils/createError\");\nvar ContentType_1 = require(\"./Constants/ContentType\");\nvar ErrorTypes_1 = require(\"./Constants/ErrorTypes\");\nvar RequestHeaders_1 = require(\"./Constants/RequestHeaders\");\nvar toLowerCaseShallow_1 = require(\"./Utils/toLowerCaseShallow\");\nvar jsonParser = function (handler) {\n var request = handler.event;\n if (!request.headers) {\n throw createError_1.default({\n type: ErrorTypes_1.default.BODY_PARSER_REQUEST_HEADERS_MISSING\n });\n }\n var content;\n request.headers = toLowerCaseShallow_1.default(request.headers);\n try {\n content = contentType.parse(handler.event);\n }\n catch (e) {\n throw createError_1.default({\n type: ErrorTypes_1.default.BODY_PARSER_REQUEST_HEADERS_CONTENT_TYPE_KEY_INVALID,\n details: RequestHeaders_1.default.CONTENT_TYPE,\n source: e\n });\n }\n if (content.type !== ContentType_1.default.APPLICATION_JSON) {\n throw createError_1.default({\n type: ErrorTypes_1.default.BODY_PARSER_REQUEST_HEADERS_CONTENT_TYPE_VALUE_INVALID,\n details: content.type\n });\n }\n try {\n request.body = JSON.parse(request.body);\n }\n catch (e) {\n throw createError_1.default({\n type: ErrorTypes_1.default.BODY_PARSER_JSON_PARSE_FAILED,\n details: e\n });\n }\n};\nexports.default = jsonParser;\n","/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.substr(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(QESC_REGEXP, '$1')\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ContentType;\n(function (ContentType) {\n ContentType[\"APPLICATION_JSON\"] = \"application/json\";\n})(ContentType || (ContentType = {}));\nexports.default = ContentType;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RequestHeaders;\n(function (RequestHeaders) {\n RequestHeaders[\"CONTENT_TYPE\"] = \"content-type\";\n})(RequestHeaders || (RequestHeaders = {}));\nexports.default = RequestHeaders;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar toLowerCaseShallow = function (obj) {\n return Object.keys(obj).reduce(function (output, currentKey) {\n var key = currentKey.toLowerCase();\n var value = obj[currentKey];\n if (typeof value === 'string')\n value = value.toLowerCase();\n output[key] = value;\n return output;\n }, {});\n};\nexports.default = toLowerCaseShallow;\n"],"sourceRoot":""}
\No newline at end of file