Spaces:
Runtime error
Runtime error
| /*! | |
| * body-parser | |
| * Copyright(c) 2014-2015 Douglas Christopher Wilson | |
| * MIT Licensed | |
| */ | |
| /** | |
| * 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) | |
| } | |