mirror of
https://github.com/zebrajr/express.git
synced 2025-12-06 12:19:51 +01:00
Merge tag '3.21.0'
This commit is contained in:
commit
3d2ecdd5fa
91
History.md
91
History.md
|
|
@ -1,3 +1,34 @@
|
|||
unreleased
|
||||
==========
|
||||
|
||||
* deps: cookie@0.1.3
|
||||
- perf: deduce the scope of try-catch deopt
|
||||
- perf: remove argument reassignments
|
||||
* deps: escape-html@1.0.2
|
||||
* deps: etag@~1.7.0
|
||||
- Always include entity length in ETags for hash length extensions
|
||||
- Generate non-Stats ETags using MD5 only (no longer CRC32)
|
||||
- Improve stat performance by removing hashing
|
||||
- Improve support for JXcore
|
||||
- Remove base64 padding in ETags to shorten
|
||||
- Support "fake" stats objects in environments without fs
|
||||
- Use MD5 instead of MD4 in weak ETags over 1KB
|
||||
* deps: fresh@0.3.0
|
||||
- Add weak `ETag` matching support
|
||||
* deps: send@0.13.0
|
||||
- Allow Node.js HTTP server to set `Date` response header
|
||||
- Fix incorrectly removing `Content-Location` on 304 response
|
||||
- Improve the default redirect response headers
|
||||
- Send appropriate headers on default error response
|
||||
- Use `http-errors` for standard emitted errors
|
||||
- Use `statuses` instead of `http` module for status messages
|
||||
- deps: escape-html@1.0.2
|
||||
- deps: etag@~1.7.0
|
||||
- deps: fresh@0.3.0
|
||||
- deps: on-finished@~2.3.0
|
||||
- perf: enable strict mode
|
||||
- perf: remove unnecessary array allocations
|
||||
|
||||
4.12.4 / 2015-05-17
|
||||
===================
|
||||
|
||||
|
|
@ -771,6 +802,60 @@
|
|||
- `app.route()` - Proxy to the app's `Router#route()` method to create a new route
|
||||
- Router & Route - public API
|
||||
|
||||
3.21.0 / 2015-06-18
|
||||
===================
|
||||
|
||||
* deps: basic-auth@1.0.2
|
||||
- perf: enable strict mode
|
||||
- perf: hoist regular expression
|
||||
- perf: parse with regular expressions
|
||||
- perf: remove argument reassignment
|
||||
* deps: connect@2.30.0
|
||||
- deps: body-parser@~1.13.1
|
||||
- deps: bytes@2.1.0
|
||||
- deps: compression@~1.5.0
|
||||
- deps: cookie@0.1.3
|
||||
- deps: cookie-parser@~1.3.5
|
||||
- deps: csurf@~1.8.3
|
||||
- deps: errorhandler@~1.4.0
|
||||
- deps: express-session@~1.11.3
|
||||
- deps: finalhandler@0.4.0
|
||||
- deps: fresh@0.3.0
|
||||
- deps: morgan@~1.6.0
|
||||
- deps: serve-favicon@~2.3.0
|
||||
- deps: serve-index@~1.7.0
|
||||
- deps: serve-static@~1.10.0
|
||||
- deps: type-is@~1.6.3
|
||||
* deps: cookie@0.1.3
|
||||
- perf: deduce the scope of try-catch deopt
|
||||
- perf: remove argument reassignments
|
||||
* deps: escape-html@1.0.2
|
||||
* deps: etag@~1.7.0
|
||||
- Always include entity length in ETags for hash length extensions
|
||||
- Generate non-Stats ETags using MD5 only (no longer CRC32)
|
||||
- Improve stat performance by removing hashing
|
||||
- Improve support for JXcore
|
||||
- Remove base64 padding in ETags to shorten
|
||||
- Support "fake" stats objects in environments without fs
|
||||
- Use MD5 instead of MD4 in weak ETags over 1KB
|
||||
* deps: fresh@0.3.0
|
||||
- Add weak `ETag` matching support
|
||||
* deps: mkdirp@0.5.1
|
||||
- Work in global strict mode
|
||||
* deps: send@0.13.0
|
||||
- Allow Node.js HTTP server to set `Date` response header
|
||||
- Fix incorrectly removing `Content-Location` on 304 response
|
||||
- Improve the default redirect response headers
|
||||
- Send appropriate headers on default error response
|
||||
- Use `http-errors` for standard emitted errors
|
||||
- Use `statuses` instead of `http` module for status messages
|
||||
- deps: escape-html@1.0.2
|
||||
- deps: etag@~1.7.0
|
||||
- deps: fresh@0.3.0
|
||||
- deps: on-finished@~2.3.0
|
||||
- perf: enable strict mode
|
||||
- perf: remove unnecessary array allocations
|
||||
|
||||
3.20.3 / 2015-05-17
|
||||
===================
|
||||
|
||||
|
|
@ -1620,7 +1705,7 @@
|
|||
* update commander
|
||||
* jsonp: check if callback is a function
|
||||
* router: wrap encodeURIComponent in a try/catch #1735 (@lxe)
|
||||
* res.format: now includes chraset @1747 (@sorribas)
|
||||
* res.format: now includes charset @1747 (@sorribas)
|
||||
* res.links: allow multiple calls @1746 (@sorribas)
|
||||
|
||||
3.4.0 / 2013-09-07
|
||||
|
|
@ -1899,7 +1984,7 @@
|
|||
* Added another example to content-negotiation
|
||||
* Added `fresh` dep
|
||||
* Changed: `res.send()` always checks freshness
|
||||
* Fixed: expose connects mime module. Cloases #1165
|
||||
* Fixed: expose connects mime module. Closes #1165
|
||||
|
||||
3.0.0beta2 / 2012-06-06
|
||||
==================
|
||||
|
|
@ -1981,7 +2066,7 @@
|
|||
* Added `req.ips`
|
||||
* Added `req.fresh`
|
||||
* Added `req.stale`
|
||||
* Added comma-delmited / array support for `req.accepts()`
|
||||
* Added comma-delimited / array support for `req.accepts()`
|
||||
* Added debug instrumentation
|
||||
* Added `res.set(obj)`
|
||||
* Added `res.set(field, value)`
|
||||
|
|
|
|||
12
package.json
12
package.json
|
|
@ -30,14 +30,14 @@
|
|||
"accepts": "~1.2.7",
|
||||
"content-disposition": "0.5.0",
|
||||
"content-type": "~1.0.1",
|
||||
"cookie": "0.1.2",
|
||||
"cookie": "0.1.3",
|
||||
"cookie-signature": "1.0.6",
|
||||
"debug": "~2.2.0",
|
||||
"depd": "~1.0.1",
|
||||
"escape-html": "1.0.1",
|
||||
"etag": "~1.6.0",
|
||||
"escape-html": "1.0.2",
|
||||
"etag": "~1.7.0",
|
||||
"finalhandler": "0.3.6",
|
||||
"fresh": "0.2.4",
|
||||
"fresh": "0.3.0",
|
||||
"merge-descriptors": "1.0.0",
|
||||
"methods": "~1.1.1",
|
||||
"on-finished": "~2.2.1",
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
"proxy-addr": "~1.0.8",
|
||||
"qs": "2.4.2",
|
||||
"range-parser": "~1.0.2",
|
||||
"send": "0.12.3",
|
||||
"send": "0.13.0",
|
||||
"serve-static": "~1.9.3",
|
||||
"type-is": "~1.6.2",
|
||||
"vary": "~1.0.0",
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
"istanbul": "0.3.9",
|
||||
"marked": "0.3.3",
|
||||
"mocha": "2.2.5",
|
||||
"should": "6.0.1",
|
||||
"should": "7.0.1",
|
||||
"supertest": "1.0.1",
|
||||
"body-parser": "~1.12.4",
|
||||
"connect-redis": "~2.3.0",
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ describe('res', function(){
|
|||
|
||||
request(app)
|
||||
.get('/')
|
||||
.expect('ETag', 'W/"3e7-8084ccd1"')
|
||||
.expect('ETag', 'W/"3e7-VYgCBglFKiDVAcpzPNt4Sg"')
|
||||
.expect(200, done);
|
||||
})
|
||||
|
||||
|
|
@ -194,7 +194,7 @@ describe('res', function(){
|
|||
|
||||
request(app)
|
||||
.get('/')
|
||||
.expect('ETag', 'W/"3e7-8084ccd1"')
|
||||
.expect('ETag', 'W/"3e7-VYgCBglFKiDVAcpzPNt4Sg"')
|
||||
.expect(200, done);
|
||||
})
|
||||
|
||||
|
|
@ -358,7 +358,7 @@ describe('res', function(){
|
|||
|
||||
request(app)
|
||||
.get('/')
|
||||
.expect('ETag', 'W/"c-5aee35d8"')
|
||||
.expect('ETag', 'W/"c-ZUfd0NJ26qwjlKF4r8qb2g"')
|
||||
.expect(200, done);
|
||||
});
|
||||
|
||||
|
|
@ -374,7 +374,7 @@ describe('res', function(){
|
|||
|
||||
request(app)
|
||||
[method]('/')
|
||||
.expect('ETag', 'W/"c-5aee35d8"')
|
||||
.expect('ETag', 'W/"c-ZUfd0NJ26qwjlKF4r8qb2g"')
|
||||
.expect(200, done);
|
||||
})
|
||||
});
|
||||
|
|
@ -390,7 +390,7 @@ describe('res', function(){
|
|||
|
||||
request(app)
|
||||
.get('/')
|
||||
.expect('ETag', 'W/"0-0"')
|
||||
.expect('ETag', 'W/"0-1B2M2Y8AsgTpgAmY7PhCfg"')
|
||||
.expect(200, done);
|
||||
})
|
||||
|
||||
|
|
@ -406,7 +406,7 @@ describe('res', function(){
|
|||
|
||||
request(app)
|
||||
.get('/')
|
||||
.expect('ETag', 'W/"3e7-8084ccd1"')
|
||||
.expect('ETag', 'W/"3e7-VYgCBglFKiDVAcpzPNt4Sg"')
|
||||
.expect(200, done);
|
||||
});
|
||||
|
||||
|
|
@ -488,7 +488,7 @@ describe('res', function(){
|
|||
|
||||
request(app)
|
||||
.get('/')
|
||||
.expect('ETag', '"Otu60XkfuuPskIiUxJY4cA=="')
|
||||
.expect('ETag', '"d-Otu60XkfuuPskIiUxJY4cA"')
|
||||
.expect(200, done);
|
||||
})
|
||||
})
|
||||
|
|
@ -505,7 +505,7 @@ describe('res', function(){
|
|||
|
||||
request(app)
|
||||
.get('/')
|
||||
.expect('ETag', 'W/"d-58988d13"')
|
||||
.expect('ETag', 'W/"d-Otu60XkfuuPskIiUxJY4cA"')
|
||||
.expect(200, done)
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -5,23 +5,23 @@ var utils = require('../lib/utils');
|
|||
describe('utils.etag(body, encoding)', function(){
|
||||
it('should support strings', function(){
|
||||
utils.etag('express!')
|
||||
.should.eql('"zZdv4imtWD49AHEviejT6A=="')
|
||||
.should.eql('"8-zZdv4imtWD49AHEviejT6A"')
|
||||
})
|
||||
|
||||
it('should support utf8 strings', function(){
|
||||
utils.etag('express❤', 'utf8')
|
||||
.should.eql('"fsFba4IxwQS6h6Umb+FNxw=="')
|
||||
.should.eql('"a-fsFba4IxwQS6h6Umb+FNxw"')
|
||||
})
|
||||
|
||||
it('should support buffer', function(){
|
||||
var buf = new Buffer('express!')
|
||||
utils.etag(buf)
|
||||
.should.eql('"zZdv4imtWD49AHEviejT6A=="');
|
||||
.should.eql('"8-zZdv4imtWD49AHEviejT6A"');
|
||||
})
|
||||
|
||||
it('should support empty string', function(){
|
||||
utils.etag('')
|
||||
.should.eql('"1B2M2Y8AsgTpgAmY7PhCfg=="');
|
||||
.should.eql('"0-1B2M2Y8AsgTpgAmY7PhCfg"');
|
||||
})
|
||||
})
|
||||
|
||||
|
|
@ -50,23 +50,23 @@ describe('utils.setCharset(type, charset)', function () {
|
|||
describe('utils.wetag(body, encoding)', function(){
|
||||
it('should support strings', function(){
|
||||
utils.wetag('express!')
|
||||
.should.eql('W/"8-b8aabac7"')
|
||||
.should.eql('W/"8-zZdv4imtWD49AHEviejT6A"')
|
||||
})
|
||||
|
||||
it('should support utf8 strings', function(){
|
||||
utils.wetag('express❤', 'utf8')
|
||||
.should.eql('W/"a-686b0af1"')
|
||||
.should.eql('W/"a-fsFba4IxwQS6h6Umb+FNxw"')
|
||||
})
|
||||
|
||||
it('should support buffer', function(){
|
||||
var buf = new Buffer('express!')
|
||||
utils.wetag(buf)
|
||||
.should.eql('W/"8-b8aabac7"');
|
||||
.should.eql('W/"8-zZdv4imtWD49AHEviejT6A"');
|
||||
})
|
||||
|
||||
it('should support empty string', function(){
|
||||
utils.wetag('')
|
||||
.should.eql('W/"0-0"');
|
||||
.should.eql('W/"0-1B2M2Y8AsgTpgAmY7PhCfg"');
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user