| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 | /*! * 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)}
 |