| /*! | 
|  * body-parser | 
|  * Copyright(c) 2014-2015 Douglas Christopher Wilson | 
|  * MIT Licensed | 
|  */ | 
|   | 
| 'use strict' | 
|   | 
| /** | 
|  * Module dependencies. | 
|  * @private | 
|  */ | 
|   | 
| var deprecate = require('depd')('body-parser') | 
|   | 
| /** | 
|  * Cache of loaded parsers. | 
|  * @private | 
|  */ | 
|   | 
| var parsers = Object.create(null) | 
|   | 
| /** | 
|  * @typedef Parsers | 
|  * @type {function} | 
|  * @property {function} json | 
|  * @property {function} raw | 
|  * @property {function} text | 
|  * @property {function} urlencoded | 
|  */ | 
|   | 
| /** | 
|  * Module exports. | 
|  * @type {Parsers} | 
|  */ | 
|   | 
| exports = module.exports = deprecate.function(bodyParser, | 
|   'bodyParser: use individual json/urlencoded middlewares') | 
|   | 
| /** | 
|  * JSON parser. | 
|  * @public | 
|  */ | 
|   | 
| Object.defineProperty(exports, 'json', { | 
|   configurable: true, | 
|   enumerable: true, | 
|   get: createParserGetter('json') | 
| }) | 
|   | 
| /** | 
|  * Raw parser. | 
|  * @public | 
|  */ | 
|   | 
| Object.defineProperty(exports, 'raw', { | 
|   configurable: true, | 
|   enumerable: true, | 
|   get: createParserGetter('raw') | 
| }) | 
|   | 
| /** | 
|  * Text parser. | 
|  * @public | 
|  */ | 
|   | 
| Object.defineProperty(exports, 'text', { | 
|   configurable: true, | 
|   enumerable: true, | 
|   get: createParserGetter('text') | 
| }) | 
|   | 
| /** | 
|  * URL-encoded parser. | 
|  * @public | 
|  */ | 
|   | 
| Object.defineProperty(exports, 'urlencoded', { | 
|   configurable: true, | 
|   enumerable: true, | 
|   get: createParserGetter('urlencoded') | 
| }) | 
|   | 
| /** | 
|  * Create a middleware to parse json and urlencoded bodies. | 
|  * | 
|  * @param {object} [options] | 
|  * @return {function} | 
|  * @deprecated | 
|  * @public | 
|  */ | 
|   | 
| function bodyParser (options) { | 
|   // use default type for parsers | 
|   var opts = Object.create(options || null, { | 
|     type: { | 
|       configurable: true, | 
|       enumerable: true, | 
|       value: undefined, | 
|       writable: true | 
|     } | 
|   }) | 
|   | 
|   var _urlencoded = exports.urlencoded(opts) | 
|   var _json = exports.json(opts) | 
|   | 
|   return function bodyParser (req, res, next) { | 
|     _json(req, res, function (err) { | 
|       if (err) return next(err) | 
|       _urlencoded(req, res, next) | 
|     }) | 
|   } | 
| } | 
|   | 
| /** | 
|  * Create a getter for loading a parser. | 
|  * @private | 
|  */ | 
|   | 
| function createParserGetter (name) { | 
|   return function get () { | 
|     return loadParser(name) | 
|   } | 
| } | 
|   | 
| /** | 
|  * Load a parser module. | 
|  * @private | 
|  */ | 
|   | 
| function loadParser (parserName) { | 
|   var parser = parsers[parserName] | 
|   | 
|   if (parser !== undefined) { | 
|     return parser | 
|   } | 
|   | 
|   // this uses a switch for static require analysis | 
|   switch (parserName) { | 
|     case 'json': | 
|       parser = require('./lib/types/json') | 
|       break | 
|     case 'raw': | 
|       parser = require('./lib/types/raw') | 
|       break | 
|     case 'text': | 
|       parser = require('./lib/types/text') | 
|       break | 
|     case 'urlencoded': | 
|       parser = require('./lib/types/urlencoded') | 
|       break | 
|   } | 
|   | 
|   // store to prevent invoking require() | 
|   return (parsers[parserName] = parser) | 
| } |