Comparing version 5.0.0-beta.3 to 5.0.0
@@ -24,5 +24,5 @@ /*! | ||
var compileTrust = require('./utils').compileTrust; | ||
var flatten = require('array-flatten').flatten | ||
var merge = require('utils-merge'); | ||
var resolve = require('path').resolve; | ||
var once = require('once') | ||
var Router = require('router'); | ||
@@ -36,4 +36,4 @@ var setPrototypeOf = require('setprototypeof') | ||
var hasOwnProperty = Object.prototype.hasOwnProperty | ||
var slice = Array.prototype.slice; | ||
var flatten = Array.prototype.flat; | ||
@@ -66,5 +66,5 @@ /** | ||
this.cache = {}; | ||
this.engines = {}; | ||
this.settings = {}; | ||
this.cache = Object.create(null); | ||
this.engines = Object.create(null); | ||
this.settings = Object.create(null); | ||
@@ -215,3 +215,3 @@ this.defaultConfiguration(); | ||
var fns = flatten(slice.call(arguments, offset)); | ||
var fns = flatten.call(slice.call(arguments, offset), Infinity); | ||
@@ -360,13 +360,3 @@ if (fns.length === 0) { | ||
// app.get(setting) | ||
var settings = this.settings | ||
while (settings && settings !== Object.prototype) { | ||
if (hasOwnProperty.call(settings, setting)) { | ||
return settings[setting] | ||
} | ||
settings = Object.getPrototypeOf(settings) | ||
} | ||
return undefined | ||
return this.settings[setting]; | ||
} | ||
@@ -624,6 +614,11 @@ | ||
app.listen = function listen() { | ||
var server = http.createServer(this); | ||
return server.listen.apply(server, arguments); | ||
}; | ||
app.listen = function listen () { | ||
var server = http.createServer(this) | ||
var args = Array.prototype.slice.call(arguments) | ||
if (typeof args[args.length - 1] === 'function') { | ||
var done = args[args.length - 1] = once(args[args.length - 1]) | ||
server.once('error', done) | ||
} | ||
return server.listen.apply(server, args) | ||
} | ||
@@ -630,0 +625,0 @@ /** |
@@ -450,3 +450,3 @@ /*! | ||
* Check if the request is fresh, aka | ||
* Last-Modified and/or the ETag | ||
* Last-Modified or the ETag | ||
* still match. | ||
@@ -453,0 +453,0 @@ * |
@@ -18,3 +18,2 @@ /*! | ||
var createError = require('http-errors') | ||
var deprecate = require('depd')('express'); | ||
var encodeUrl = require('encodeurl'); | ||
@@ -26,3 +25,3 @@ var escapeHtml = require('escape-html'); | ||
var path = require('path'); | ||
var pathIsAbsolute = require('path-is-absolute'); | ||
var pathIsAbsolute = require('path').isAbsolute; | ||
var statuses = require('statuses') | ||
@@ -55,13 +54,11 @@ var merge = require('utils-merge'); | ||
/** | ||
* Module variables. | ||
* @private | ||
*/ | ||
var schemaAndHostRegExp = /^(?:[a-zA-Z][a-zA-Z0-9+.-]*:)?\/\/[^\\\/\?]+/; | ||
/** | ||
* Set status `code`. | ||
* Set the HTTP status code for the response. | ||
* | ||
* @param {Number} code | ||
* @return {ServerResponse} | ||
* Expects an integer value between 100 and 999 inclusive. | ||
* Throws an error if the provided status code is not an integer or if it's outside the allowable range. | ||
* | ||
* @param {number} code - The HTTP status code to set. | ||
* @return {ServerResponse} - Returns itself for chaining methods. | ||
* @throws {TypeError} If `code` is not an integer. | ||
* @throws {RangeError} If `code` is outside the range 100 to 999. | ||
* @public | ||
@@ -71,5 +68,11 @@ */ | ||
res.status = function status(code) { | ||
if ((typeof code === 'string' || Math.floor(code) !== code) && code > 99 && code < 1000) { | ||
deprecate('res.status(' + JSON.stringify(code) + '): use res.status(' + Math.floor(code) + ') instead') | ||
// Check if the status code is not an integer | ||
if (!Number.isInteger(code)) { | ||
throw new TypeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be an integer.`); | ||
} | ||
// Check if the status code is outside of Node's valid range | ||
if (code < 100 || code > 999) { | ||
throw new RangeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be greater than 99 and less than 1000.`); | ||
} | ||
this.statusCode = code; | ||
@@ -189,3 +192,3 @@ return this; | ||
// freshness | ||
if (req.fresh) this.statusCode = 304; | ||
if (req.fresh) this.status(304); | ||
@@ -322,3 +325,3 @@ // strip irrelevant headers | ||
this.statusCode = statusCode; | ||
this.status(statusCode); | ||
this.type('txt'); | ||
@@ -706,3 +709,6 @@ | ||
res.clearCookie = function clearCookie(name, options) { | ||
var opts = merge({ expires: new Date(1), path: '/' }, options); | ||
// Force cookie expiration by setting expires to the past | ||
const opts = { path: '/', ...options, expires: new Date(1)}; | ||
// ensure maxAge is not passed | ||
delete opts.maxAge | ||
@@ -789,19 +795,3 @@ return this.cookie(name, '', opts); | ||
res.location = function location(url) { | ||
var loc; | ||
// "back" is an alias for the referrer | ||
if (url === 'back') { | ||
loc = this.req.get('Referrer') || '/'; | ||
} else { | ||
loc = String(url); | ||
} | ||
var m = schemaAndHostRegExp.exec(loc); | ||
var pos = m ? m[0].length + 1 : 0; | ||
// Only encode after host to avoid invalid encoding which can introduce | ||
// vulnerabilities (e.g. `\\` to `%5C`). | ||
loc = loc.slice(0, pos) + encodeUrl(loc.slice(pos)); | ||
return this.set('Location', loc); | ||
return this.set('Location', encodeUrl(url)); | ||
}; | ||
@@ -813,6 +803,2 @@ | ||
* | ||
* The resulting `url` is determined by `res.location()`, so | ||
* it will play nicely with mounted apps, relative paths, | ||
* `"back"` etc. | ||
* | ||
* Examples: | ||
@@ -850,3 +836,3 @@ * | ||
var u = escapeHtml(address); | ||
body = '<p>' + statuses.message[status] + '. Redirecting to <a href="' + u + '">' + u + '</a></p>' | ||
body = '<p>' + statuses.message[status] + '. Redirecting to ' + u + '</p>' | ||
}, | ||
@@ -860,3 +846,3 @@ | ||
// Respond | ||
this.statusCode = status; | ||
this.status(status); | ||
this.set('Content-Length', Buffer.byteLength(body)); | ||
@@ -863,0 +849,0 @@ |
{ | ||
"name": "express", | ||
"description": "Fast, unopinionated, minimalist web framework", | ||
"version": "5.0.0-beta.3", | ||
"version": "5.0.0", | ||
"author": "TJ Holowaychuk <tj@vision-media.ca>", | ||
@@ -31,33 +31,32 @@ "contributors": [ | ||
"dependencies": { | ||
"accepts": "~1.3.8", | ||
"array-flatten": "3.0.0", | ||
"body-parser": "2.0.0-beta.2", | ||
"content-disposition": "0.5.4", | ||
"accepts": "^2.0.0", | ||
"body-parser": "^2.0.1", | ||
"content-disposition": "^1.0.0", | ||
"content-type": "~1.0.4", | ||
"cookie": "0.6.0", | ||
"cookie-signature": "1.0.6", | ||
"debug": "3.1.0", | ||
"cookie-signature": "^1.2.1", | ||
"debug": "4.3.6", | ||
"depd": "2.0.0", | ||
"encodeurl": "~1.0.2", | ||
"encodeurl": "~2.0.0", | ||
"escape-html": "~1.0.3", | ||
"etag": "~1.8.1", | ||
"finalhandler": "1.2.0", | ||
"fresh": "0.5.2", | ||
"finalhandler": "^2.0.0", | ||
"fresh": "2.0.0", | ||
"http-errors": "2.0.0", | ||
"merge-descriptors": "1.0.1", | ||
"merge-descriptors": "^2.0.0", | ||
"methods": "~1.1.2", | ||
"mime-types": "~2.1.34", | ||
"mime-types": "^3.0.0", | ||
"on-finished": "2.4.1", | ||
"once": "1.4.0", | ||
"parseurl": "~1.3.3", | ||
"path-is-absolute": "1.0.1", | ||
"proxy-addr": "~2.0.7", | ||
"qs": "6.11.0", | ||
"qs": "6.13.0", | ||
"range-parser": "~1.2.1", | ||
"router": "2.0.0-beta.2", | ||
"router": "^2.0.0", | ||
"safe-buffer": "5.2.1", | ||
"send": "1.0.0-beta.2", | ||
"serve-static": "2.0.0-beta.2", | ||
"send": "^1.1.0", | ||
"serve-static": "^2.1.0", | ||
"setprototypeof": "1.2.0", | ||
"statuses": "2.0.1", | ||
"type-is": "~1.6.18", | ||
"type-is": "^2.0.0", | ||
"utils-merge": "1.0.1", | ||
@@ -85,3 +84,3 @@ "vary": "~1.1.2" | ||
"engines": { | ||
"node": ">= 4" | ||
"node": ">= 18" | ||
}, | ||
@@ -98,6 +97,6 @@ "files": [ | ||
"test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/", | ||
"test-ci": "nyc --reporter=lcovonly --reporter=text npm test", | ||
"test-cov": "nyc --reporter=html --reporter=text npm test", | ||
"test-ci": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=lcovonly --reporter=text npm test", | ||
"test-cov": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=html --reporter=text npm test", | ||
"test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/" | ||
} | ||
} |
106
Readme.md
[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](http://expressjs.com/) | ||
Fast, unopinionated, minimalist web framework for [Node.js](http://nodejs.org). | ||
**Fast, unopinionated, minimalist web framework for [Node.js](http://nodejs.org).** | ||
[![NPM Version][npm-version-image]][npm-url] | ||
[![NPM Install Size][npm-install-size-image]][npm-install-size-url] | ||
[![NPM Downloads][npm-downloads-image]][npm-downloads-url] | ||
**This project has a [Code of Conduct][].** | ||
## Table of contents | ||
* [Installation](#Installation) | ||
* [Features](#Features) | ||
* [Docs & Community](#docs--community) | ||
* [Quick Start](#Quick-Start) | ||
* [Running Tests](#Running-Tests) | ||
* [Philosophy](#Philosophy) | ||
* [Examples](#Examples) | ||
* [Contributing to Express](#Contributing) | ||
* [TC (Technical Committee)](#tc-technical-committee) | ||
* [Triagers](#triagers) | ||
* [License](#license) | ||
[![NPM Version][npm-version-image]][npm-url] | ||
[![NPM Install Size][npm-install-size-image]][npm-install-size-url] | ||
[![NPM Downloads][npm-downloads-image]][npm-downloads-url] | ||
[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] | ||
```js | ||
@@ -147,6 +166,78 @@ const express = require('express') | ||
The current lead maintainer is [Douglas Christopher Wilson](https://github.com/dougwilson) | ||
[List of all contributors](https://github.com/expressjs/express/graphs/contributors) | ||
### TC (Technical Committee) | ||
* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) | ||
* [jonchurch](https://github.com/jonchurch) - **Jon Church** | ||
* [wesleytodd](https://github.com/wesleytodd) - **Wes Todd** | ||
* [LinusU](https://github.com/LinusU) - **Linus Unnebäck** | ||
* [blakeembrey](https://github.com/blakeembrey) - **Blake Embrey** | ||
* [sheplu](https://github.com/sheplu) - **Jean Burellier** | ||
* [crandmck](https://github.com/crandmck) - **Rand McKinney** | ||
* [ctcpip](https://github.com/ctcpip) - **Chris de Almeida** | ||
<details> | ||
<summary>TC emeriti members</summary> | ||
#### TC emeriti members | ||
* [dougwilson](https://github.com/dougwilson) - **Douglas Wilson** | ||
* [hacksparrow](https://github.com/hacksparrow) - **Hage Yaapa** | ||
* [jonathanong](https://github.com/jonathanong) - **jongleberry** | ||
* [niftylettuce](https://github.com/niftylettuce) - **niftylettuce** | ||
* [troygoode](https://github.com/troygoode) - **Troy Goode** | ||
</details> | ||
### Triagers | ||
* [aravindvnair99](https://github.com/aravindvnair99) - **Aravind Nair** | ||
* [carpasse](https://github.com/carpasse) - **Carlos Serrano** | ||
* [CBID2](https://github.com/CBID2) - **Christine Belzie** | ||
* [enyoghasim](https://github.com/enyoghasim) - **David Enyoghasim** | ||
* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) | ||
* [mertcanaltin](https://github.com/mertcanaltin) - **Mert Can Altin** | ||
* [0ss](https://github.com/0ss) - **Salah** | ||
* [import-brain](https://github.com/import-brain) - **Eric Cheng** (he/him) | ||
* [3imed-jaberi](https://github.com/3imed-jaberi) - **Imed Jaberi** | ||
* [dakshkhetan](https://github.com/dakshkhetan) - **Daksh Khetan** (he/him) | ||
* [lucasraziel](https://github.com/lucasraziel) - **Lucas Soares Do Rego** | ||
* [IamLizu](https://github.com/IamLizu) - **S M Mahmudul Hasan** (he/him) | ||
* [Sushmeet](https://github.com/Sushmeet) - **Sushmeet Sunger** | ||
<details> | ||
<summary>Triagers emeriti members</summary> | ||
#### Emeritus Triagers | ||
* [AuggieH](https://github.com/AuggieH) - **Auggie Hudak** | ||
* [G-Rath](https://github.com/G-Rath) - **Gareth Jones** | ||
* [MohammadXroid](https://github.com/MohammadXroid) - **Mohammad Ayashi** | ||
* [NawafSwe](https://github.com/NawafSwe) - **Nawaf Alsharqi** | ||
* [NotMoni](https://github.com/NotMoni) - **Moni** | ||
* [VigneshMurugan](https://github.com/VigneshMurugan) - **Vignesh Murugan** | ||
* [davidmashe](https://github.com/davidmashe) - **David Ashe** | ||
* [digitaIfabric](https://github.com/digitaIfabric) - **David** | ||
* [e-l-i-s-e](https://github.com/e-l-i-s-e) - **Elise Bonner** | ||
* [fed135](https://github.com/fed135) - **Frederic Charette** | ||
* [firmanJS](https://github.com/firmanJS) - **Firman Abdul Hakim** | ||
* [getspooky](https://github.com/getspooky) - **Yasser Ameur** | ||
* [ghinks](https://github.com/ghinks) - **Glenn** | ||
* [ghousemohamed](https://github.com/ghousemohamed) - **Ghouse Mohamed** | ||
* [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil** | ||
* [jake32321](https://github.com/jake32321) - **Jake Reed** | ||
* [jonchurch](https://github.com/jonchurch) - **Jon Church** | ||
* [lekanikotun](https://github.com/lekanikotun) - **Troy Goode** | ||
* [marsonya](https://github.com/marsonya) - **Lekan Ikotun** | ||
* [mastermatt](https://github.com/mastermatt) - **Matt R. Wilson** | ||
* [maxakuru](https://github.com/maxakuru) - **Max Edell** | ||
* [mlrawlings](https://github.com/mlrawlings) - **Michael Rawlings** | ||
* [rodion-arr](https://github.com/rodion-arr) - **Rodion Abdurakhimov** | ||
* [sheplu](https://github.com/sheplu) - **Jean Burellier** | ||
* [tarunyadav1](https://github.com/tarunyadav1) - **Tarun yadav** | ||
* [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe** | ||
</details> | ||
## License | ||
@@ -168,1 +259,4 @@ | ||
[npm-version-image]: https://badgen.net/npm/v/express | ||
[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/express/badge | ||
[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/express | ||
[Code of Conduct]: https://github.com/expressjs/express/blob/master/Code-Of-Conduct.md |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
195793
32
0
261
2314
+ Addedonce@1.4.0
+ Addedaccepts@2.0.0(transitive)
+ Addedbody-parser@2.0.1(transitive)
+ Addedcontent-disposition@1.0.0(transitive)
+ Addedcookie-signature@1.2.1(transitive)
+ Addeddebug@4.3.6(transitive)
+ Addedencodeurl@2.0.0(transitive)
+ Addedfinalhandler@2.0.0(transitive)
+ Addedfresh@2.0.0(transitive)
+ Addediconv-lite@0.6.3(transitive)
+ Addedmedia-typer@1.1.0(transitive)
+ Addedmerge-descriptors@2.0.0(transitive)
+ Addedmime-db@1.53.0(transitive)
+ Addedmime-types@3.0.0(transitive)
+ Addedms@2.1.2(transitive)
+ Addednegotiator@1.0.0(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedpath-to-regexp@8.1.0(transitive)
+ Addedqs@6.13.0(transitive)
+ Addedraw-body@3.0.0(transitive)
+ Addedrouter@2.0.0(transitive)
+ Addedsend@1.1.0(transitive)
+ Addedserve-static@2.1.0(transitive)
+ Addedtype-is@2.0.0(transitive)
+ Addedwrappy@1.0.2(transitive)
- Removedarray-flatten@3.0.0
- Removedpath-is-absolute@1.0.1
- Removedaccepts@1.3.8(transitive)
- Removedbody-parser@2.0.0-beta.2(transitive)
- Removedcontent-disposition@0.5.4(transitive)
- Removedcookie-signature@1.0.6(transitive)
- Removedfinalhandler@1.2.0(transitive)
- Removedmerge-descriptors@1.0.1(transitive)
- Removednegotiator@0.6.3(transitive)
- Removedpath-is-absolute@1.0.1(transitive)
- Removedpath-to-regexp@3.2.0(transitive)
- Removedqs@6.11.0(transitive)
- Removedraw-body@3.0.0-beta.1(transitive)
- Removedrouter@2.0.0-beta.2(transitive)
- Removedsend@1.0.0-beta.2(transitive)
- Removedserve-static@2.0.0-beta.2(transitive)
Updatedaccepts@^2.0.0
Updatedbody-parser@^2.0.1
Updatedcontent-disposition@^1.0.0
Updatedcookie-signature@^1.2.1
Updateddebug@4.3.6
Updatedencodeurl@~2.0.0
Updatedfinalhandler@^2.0.0
Updatedfresh@2.0.0
Updatedmerge-descriptors@^2.0.0
Updatedmime-types@^3.0.0
Updatedqs@6.13.0
Updatedrouter@^2.0.0
Updatedsend@^1.1.0
Updatedserve-static@^2.1.0
Updatedtype-is@^2.0.0