...**/!(*.map|*.min.js)Size
Gzip
Dependencies
Publish
Install
Publish
Install
@@ -16,8 +16,7 @@ | ||
| 16 | 16 | var EventEmitter = require('events').EventEmitter; |
| 17 | 17 | var mixin = require('merge-descriptors'); |
| 18 | 18 | var proto = require('./application'); |
| 19 | var Route = require('./router/route'); | |
| 20 | var Router = require('./router'); | |
| 19 | var Router = require('router'); | |
| 21 | 20 | var req = require('./request'); |
| 22 | 21 | var res = require('./response'); |
| 23 | 22 | |
@@ -68,7 +67,7 @@ | ||
| 68 | 67 | * Expose constructors. |
| 69 | 68 | */ |
| 70 | 69 | |
| 71 | exports.Route = Route; | |
| 70 | exports.Route = Router.Route; | |
| 72 | 71 | exports.Router = Router; |
| 73 | 72 | |
| 74 | 73 | /** |
@@ -76,41 +75,7 @@ | ||
| 76 | 75 | */ |
| 77 | 76 | |
| 78 | 77 | exports.json = bodyParser.json |
| 79 | exports.query = require('./middleware/query'); | |
| 80 | 78 | exports.raw = bodyParser.raw |
| 81 | 79 | exports.static = require('serve-static'); |
| 82 | 80 | exports.text = bodyParser.text |
| 83 | 81 | exports.urlencoded = bodyParser.urlencoded |
| 84 | ||
| 85 | /** | |
| 86 | * Replace removed middleware with an appropriate error message. | |
| 87 | */ | |
| 88 | ||
| 89 | var removedMiddlewares = [ | |
| 90 | 'bodyParser', | |
| 91 | 'compress', | |
| 92 | 'cookieSession', | |
| 93 | 'session', | |
| 94 | 'logger', | |
| 95 | 'cookieParser', | |
| 96 | 'favicon', | |
| 97 | 'responseTime', | |
| 98 | 'errorHandler', | |
| 99 | 'timeout', | |
| 100 | 'methodOverride', | |
| 101 | 'vhost', | |
| 102 | 'csrf', | |
| 103 | 'directory', | |
| 104 | 'limit', | |
| 105 | 'multipart', | |
| 106 | 'staticCache' | |
| 107 | ] | |
| 108 | ||
| 109 | removedMiddlewares.forEach(function (name) { | |
| 110 | Object.defineProperty(exports, name, { | |
| 111 | get: function () { | |
| 112 | throw new Error('Most middleware (like ' + name + ') is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.'); | |
| 113 | }, | |
| 114 | configurable: true | |
| 115 | }); | |
| 116 | }); | |
@@ -13,12 +13,9 @@ | ||
| 13 | 13 | */ |
| 14 | 14 | |
| 15 | 15 | var Buffer = require('safe-buffer').Buffer |
| 16 | var contentDisposition = require('content-disposition'); | |
| 17 | 16 | var contentType = require('content-type'); |
| 18 | var deprecate = require('depd')('express'); | |
| 19 | var flatten = require('array-flatten'); | |
| 20 | var mime = require('send').mime; | |
| 21 | 17 | var etag = require('etag'); |
| 18 | var mime = require('mime-types') | |
| 22 | 19 | var proxyaddr = require('proxy-addr'); |
| 23 | 20 | var qs = require('qs'); |
| 24 | 21 | var querystring = require('querystring'); |
@@ -46,31 +43,6 @@ | ||
| 46 | 43 | exports.wetag = createETagGenerator({ weak: true }) |
| 47 | 44 | |
| 48 | 45 | /** |
| 49 | * Check if `path` looks absolute. | |
| 50 | * | |
| 51 | * @param {String} path | |
| 52 | * @return {Boolean} | |
| 53 | * @api private | |
| 54 | */ | |
| 55 | ||
| 56 | exports.isAbsolute = function(path){ | |
| 57 | if ('/' === path[0]) return true; | |
| 58 | if (':' === path[1] && ('\\' === path[2] || '/' === path[2])) return true; // Windows device path | |
| 59 | if ('\\\\' === path.substring(0, 2)) return true; // Microsoft Azure absolute path | |
| 60 | }; | |
| 61 | ||
| 62 | /** | |
| 63 | * Flatten the given `arr`. | |
| 64 | * | |
| 65 | * @param {Array} arr | |
| 66 | * @return {Array} | |
| 67 | * @api private | |
| 68 | */ | |
| 69 | ||
| 70 | exports.flatten = deprecate.function(flatten, | |
| 71 | 'utils.flatten: use array-flatten npm module instead'); | |
| 72 | ||
| 73 | /** | |
| 74 | 46 | * Normalize the given `type`, for example "html" becomes "text/html". |
| 75 | 47 | * |
| 76 | 48 | * @param {String} type |
@@ -81,7 +53,7 @@ | ||
| 81 | 53 | exports.normalizeType = function(type){ |
| 82 | 54 | return ~type.indexOf('/') |
| 83 | 55 | ? acceptParams(type) |
| 84 | : { value: mime.lookup(type), params: {} }; | |
| 56 | : { value: (mime.lookup(type) || 'application/octet-stream'), params: {} } | |
| 85 | 57 | }; |
| 86 | 58 | |
| 87 | 59 | /** |
@@ -103,18 +75,6 @@ | ||
| 103 | 75 | }; |
| 104 | 76 | |
| 105 | 77 | /** |
| 106 | * Generate Content-Disposition header appropriate for the filename. | |
| 107 | * non-ascii filenames are urlencoded and a filename* parameter is added | |
| 108 | * | |
| 109 | * @param {String} filename | |
| 110 | * @return {String} | |
| 111 | * @api private | |
| 112 | */ | |
| 113 | ||
| 114 | exports.contentDisposition = deprecate.function(contentDisposition, | |
| 115 | 'utils.contentDisposition: use content-disposition npm module instead'); | |
| 116 | ||
| 117 | /** | |
| 118 | 78 | * Parse accept params `str` returning an |
| 119 | 79 | * object with `.value`, `.quality` and `.params`. |
| 120 | 80 | * |
@@ -192,7 +152,6 @@ | ||
| 192 | 152 | fn = querystring.parse; |
| 193 | 153 | break; |
| 194 | 154 | case false: |
| 195 | fn = newObject; | |
| 196 | 155 | break; |
| 197 | 156 | case 'extended': |
| 198 | 157 | fn = parseExtendedQueryString; |
@@ -290,14 +249,3 @@ | ||
| 290 | 249 | allowPrototypes: true |
| 291 | 250 | }); |
| 292 | 251 | } |
| 293 | ||
| 294 | /** | |
| 295 | * Return new empty object. | |
| 296 | * | |
| 297 | * @return {Object} | |
| 298 | * @api private | |
| 299 | */ | |
| 300 | ||
| 301 | function newObject() { | |
| 302 | return {}; | |
| 303 | } | |
@@ -131,8 +131,31 @@ | ||
| 131 | 131 | */ |
| 132 | 132 | |
| 133 | 133 | View.prototype.render = function render(options, callback) { |
| 134 | var sync = true; | |
| 135 | ||
| 134 | 136 | debug('render "%s"', this.path); |
| 135 | this.engine(this.path, options, callback); | |
| 137 | ||
| 138 | // render, normalizing sync callbacks | |
| 139 | this.engine(this.path, options, function onRender() { | |
| 140 | if (!sync) { | |
| 141 | return callback.apply(this, arguments); | |
| 142 | } | |
| 143 | ||
| 144 | // copy arguments | |
| 145 | var args = new Array(arguments.length); | |
| 146 | var cntx = this; | |
| 147 | ||
| 148 | for (var i = 0; i < arguments.length; i++) { | |
| 149 | args[i] = arguments[i]; | |
| 150 | } | |
| 151 | ||
| 152 | // force callback to be async | |
| 153 | return process.nextTick(function renderTick() { | |
| 154 | return callback.apply(cntx, args); | |
| 155 | }); | |
| 156 | }); | |
| 157 | ||
| 158 | sync = false; | |
| 136 | 159 | }; |
| 137 | 160 | |
| 138 | 161 | /** |
@@ -1,7 +1,7 @@ | ||
| 1 | 1 | { |
| 2 | 2 | "name": "express", |
| 3 | 3 | "description": "Fast, unopinionated, minimalist web framework", |
| 4 | "version": "4.22.1", | |
| 4 | "version": "5.0.0", | |
| 5 | 5 | "author": "TJ Holowaychuk <tj@vision-media.ca>", |
| 6 | 6 | "contributors": [ |
| 7 | 7 | "Aaron Heckmann <aaron.heckmann+github@gmail.com>", |
@@ -15,10 +15,6 @@ | ||
| 15 | 15 | "license": "MIT", |
| 16 | 16 | "repository": "expressjs/express", |
| 17 | 17 | "homepage": "http://expressjs.com/", |
| 18 | "funding": { | |
| 19 | "type": "opencollective", | |
| 20 | "url": "https://opencollective.com/express" | |
| 21 | }, | |
| 22 | 18 | "keywords": [ |
| 23 | 19 | "express", |
| 24 | 20 | "framework", |
@@ -32,35 +28,36 @@ | ||
| 32 | 28 | "api" |
| 33 | 29 | ], |
| 34 | 30 | "dependencies": { |
| 35 | "accepts": "~1.3.8", | |
| 36 | "array-flatten": "1.1.1", | |
| 37 | "body-parser": "~1.20.3", | |
| 38 | "content-disposition": "~0.5.4", | |
| 31 | "accepts": "^2.0.0", | |
| 32 | "body-parser": "^2.0.1", | |
| 33 | "content-disposition": "^1.0.0", | |
| 39 | 34 | "content-type": "~1.0.4", |
| 40 | "cookie": "~0.7.1", | |
| 41 | "cookie-signature": "~1.0.6", | |
| 42 | "debug": "2.6.9", | |
| 35 | "cookie": "0.6.0", | |
| 36 | "cookie-signature": "^1.2.1", | |
| 37 | "debug": "4.3.6", | |
| 43 | 38 | "depd": "2.0.0", |
| 44 | 39 | "encodeurl": "~2.0.0", |
| 45 | 40 | "escape-html": "~1.0.3", |
| 46 | 41 | "etag": "~1.8.1", |
| 47 | "finalhandler": "~1.3.1", | |
| 48 | "fresh": "~0.5.2", | |
| 49 | "http-errors": "~2.0.0", | |
| 50 | "merge-descriptors": "1.0.3", | |
| 42 | "finalhandler": "^2.0.0", | |
| 43 | "fresh": "2.0.0", | |
| 44 | "http-errors": "2.0.0", | |
| 45 | "merge-descriptors": "^2.0.0", | |
| 51 | 46 | "methods": "~1.1.2", |
| 52 | "on-finished": "~2.4.1", | |
| 47 | "mime-types": "^3.0.0", | |
| 48 | "on-finished": "2.4.1", | |
| 49 | "once": "1.4.0", | |
| 53 | 50 | "parseurl": "~1.3.3", |
| 54 | "path-to-regexp": "~0.1.12", | |
| 55 | 51 | "proxy-addr": "~2.0.7", |
| 56 | "qs": "~6.14.0", | |
| 52 | "qs": "6.13.0", | |
| 57 | 53 | "range-parser": "~1.2.1", |
| 54 | "router": "^2.0.0", | |
| 58 | 55 | "safe-buffer": "5.2.1", |
| 59 | "send": "~0.19.0", | |
| 60 | "serve-static": "~1.16.2", | |
| 56 | "send": "^1.1.0", | |
| 57 | "serve-static": "^2.1.0", | |
| 61 | 58 | "setprototypeof": "1.2.0", |
| 62 | "statuses": "~2.0.1", | |
| 63 | "type-is": "~1.6.18", | |
| 59 | "statuses": "2.0.1", | |
| 60 | "type-is": "^2.0.0", | |
| 64 | 61 | "utils-merge": "1.0.1", |
| 65 | 62 | "vary": "~1.1.2" |
| 66 | 63 | }, |
@@ -75,15 +72,15 @@ | ||
| 75 | 72 | "hbs": "4.2.0", |
| 76 | 73 | "marked": "0.7.0", |
| 77 | 74 | "method-override": "3.0.0", |
| 78 | "mocha": "^6.2.2", | |
| 75 | "mocha": "10.2.0", | |
| 79 | 76 | "morgan": "1.10.0", |
| 80 | "nyc": "^14.1.1", | |
| 77 | "nyc": "15.1.0", | |
| 81 | 78 | "pbkdf2-password": "1.2.1", |
| 82 | "supertest": "^6.1.6", | |
| 79 | "supertest": "6.3.0", | |
| 83 | 80 | "vhost": "~3.0.2" |
| 84 | 81 | }, |
| 85 | 82 | "engines": { |
| 86 | "node": ">= 0.10.0" | |
| 83 | "node": ">= 18" | |
| 87 | 84 | }, |
| 88 | 85 | "files": [ |
| 89 | 86 | "LICENSE", |