Comparar commits
16 Commits
| Autor | SHA1 | Data | |
|---|---|---|---|
| 0b09c8981f | |||
| a1d5676ecb | |||
| f862ad29f5 | |||
| 15496da8fd | |||
| 802fb1632c | |||
| 9f06d9b03f | |||
| 3fb7c4e1db | |||
| d0e49f1a8a | |||
| ea2664a4b8 | |||
| da6524bd06 | |||
| a231406931 | |||
| 6d39ed8ef7 | |||
| f2563f4dde | |||
| 3df265b36a | |||
| e382e6adc7 | |||
| 91c71d6c2e |
@@ -1,4 +1,22 @@
|
||||
|
||||
3.2.3 / 2013-05-07
|
||||
==================
|
||||
|
||||
* update connect / qs
|
||||
|
||||
3.2.2 / 2013-05-03
|
||||
==================
|
||||
|
||||
* update qs
|
||||
|
||||
3.2.1 / 2013-04-29
|
||||
==================
|
||||
|
||||
* add app.VERB() paths array deprecation warning
|
||||
* update connect
|
||||
* update qs and remove all ~ semver crap
|
||||
* fix: accept number as value of Signed Cookie
|
||||
|
||||
3.2.0 / 2013-04-15
|
||||
==================
|
||||
|
||||
|
||||
+1
-1
@@ -334,7 +334,7 @@ function createApplicationAt(path) {
|
||||
|
||||
// Session support
|
||||
app = app.replace('{sess}', program.sessions
|
||||
? eol + ' app.use(express.cookieParser(\'your secret here\'));' + eol + ' app.use(express.session());'
|
||||
? eol + 'app.use(express.cookieParser(\'your secret here\'));' + eol + 'app.use(express.session());'
|
||||
: '');
|
||||
|
||||
// Template support
|
||||
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
|
||||
var http = require('http');
|
||||
|
||||
var times = 50;
|
||||
|
||||
while (times--) {
|
||||
var req = http.request({
|
||||
port: 3000
|
||||
, method: 'POST'
|
||||
, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
|
||||
});
|
||||
|
||||
req.on('response', function(res){
|
||||
console.log(res.statusCode);
|
||||
});
|
||||
|
||||
var n = 500000;
|
||||
while (n--) {
|
||||
req.write('foo=bar&bar=baz&');
|
||||
}
|
||||
|
||||
req.write('foo=bar&bar=baz');
|
||||
|
||||
req.end();
|
||||
}
|
||||
@@ -402,6 +402,11 @@ methods.forEach(function(method){
|
||||
app[method] = function(path){
|
||||
if ('get' == method && 1 == arguments.length) return this.set(path);
|
||||
|
||||
// deprecated
|
||||
if (Array.isArray(path)) {
|
||||
console.trace('passing an array to app.VERB() is deprecated and will be removed in 4.0');
|
||||
}
|
||||
|
||||
// if no router attached yet, attach the router
|
||||
if (!this._usedRouter) this.use(this.router);
|
||||
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ exports = module.exports = createApplication;
|
||||
* Framework version.
|
||||
*/
|
||||
|
||||
exports.version = '3.2.0';
|
||||
exports.version = '3.2.3';
|
||||
|
||||
/**
|
||||
* Expose mime.
|
||||
|
||||
@@ -580,6 +580,7 @@ res.cookie = function(name, val, options){
|
||||
var secret = this.req.secret;
|
||||
var signed = options.signed;
|
||||
if (signed && !secret) throw new Error('connect.cookieParser("secret") required for signed cookies');
|
||||
if ('number' == typeof val) val = val.toString();
|
||||
if ('object' == typeof val) val = 'j:' + JSON.stringify(val);
|
||||
if (signed) val = 's:' + sign(val, secret);
|
||||
if ('maxAge' in options) {
|
||||
|
||||
+7
-6
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "express",
|
||||
"description": "Sinatra inspired web development framework",
|
||||
"version": "3.2.0",
|
||||
"version": "3.2.3",
|
||||
"author": "TJ Holowaychuk <tj@vision-media.ca>",
|
||||
"contributors": [
|
||||
{
|
||||
@@ -22,17 +22,18 @@
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"connect": "2.7.6",
|
||||
"connect": "2.7.9",
|
||||
"commander": "0.6.1",
|
||||
"range-parser": "0.0.4",
|
||||
"mkdirp": "~0.3.4",
|
||||
"mkdirp": "0.3.4",
|
||||
"cookie": "0.0.5",
|
||||
"buffer-crc32": "~0.2.1",
|
||||
"buffer-crc32": "0.2.1",
|
||||
"fresh": "0.1.0",
|
||||
"methods": "0.0.1",
|
||||
"send": "0.1.0",
|
||||
"cookie-signature": "1.0.1",
|
||||
"debug": "*"
|
||||
"debug": "*",
|
||||
"qs": "0.6.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ejs": "*",
|
||||
@@ -43,7 +44,7 @@
|
||||
"should": "*",
|
||||
"connect-redis": "*",
|
||||
"github-flavored-markdown": "*",
|
||||
"supertest": "0.0.1"
|
||||
"supertest": "0.6.0"
|
||||
},
|
||||
"keywords": [
|
||||
"express",
|
||||
|
||||
+25
-43
@@ -48,7 +48,7 @@ describe('app.router', function(){
|
||||
calls.push('before');
|
||||
next();
|
||||
});
|
||||
|
||||
|
||||
app.use(app.router);
|
||||
|
||||
app.use(function(req, res, next){
|
||||
@@ -68,7 +68,7 @@ describe('app.router', function(){
|
||||
done();
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
it('should be auto .use()d on the first app.VERB() call', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -78,7 +78,7 @@ describe('app.router', function(){
|
||||
calls.push('before');
|
||||
next();
|
||||
});
|
||||
|
||||
|
||||
app.get('/', function(req, res, next){
|
||||
calls.push('GET /')
|
||||
next();
|
||||
@@ -109,7 +109,7 @@ describe('app.router', function(){
|
||||
.get('/user/12?foo=bar')
|
||||
.expect('user', done);
|
||||
})
|
||||
|
||||
|
||||
it('should populate req.params with the captures', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -124,24 +124,6 @@ describe('app.router', function(){
|
||||
.expect('editing user 10', done);
|
||||
})
|
||||
})
|
||||
|
||||
describe('when given an array', function(){
|
||||
it('should match all paths in the array', function(done){
|
||||
var app = express();
|
||||
|
||||
app.get(['/one', '/two'], function(req, res){
|
||||
res.end('works');
|
||||
});
|
||||
|
||||
request(app)
|
||||
.get('/one')
|
||||
.expect('works', function() {
|
||||
request(app)
|
||||
.get('/two')
|
||||
.expect('works', done);
|
||||
});
|
||||
})
|
||||
})
|
||||
|
||||
describe('case sensitivity', function(){
|
||||
it('should be disabled by default', function(done){
|
||||
@@ -155,7 +137,7 @@ describe('app.router', function(){
|
||||
.get('/USER')
|
||||
.expect('tj', done);
|
||||
})
|
||||
|
||||
|
||||
describe('when "case sensitive routing" is enabled', function(){
|
||||
it('should match identical casing', function(done){
|
||||
var app = express();
|
||||
@@ -170,7 +152,7 @@ describe('app.router', function(){
|
||||
.get('/uSer')
|
||||
.expect('tj', done);
|
||||
})
|
||||
|
||||
|
||||
it('should not match otherwise', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -199,7 +181,7 @@ describe('app.router', function(){
|
||||
.get('/user/')
|
||||
.expect('tj', done);
|
||||
})
|
||||
|
||||
|
||||
describe('when "strict routing" is enabled', function(){
|
||||
it('should match trailing slashes', function(done){
|
||||
var app = express();
|
||||
@@ -214,7 +196,7 @@ describe('app.router', function(){
|
||||
.get('/user/')
|
||||
.expect('tj', done);
|
||||
})
|
||||
|
||||
|
||||
it('should match no slashes', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -228,7 +210,7 @@ describe('app.router', function(){
|
||||
.get('/user')
|
||||
.expect('tj', done);
|
||||
})
|
||||
|
||||
|
||||
it('should fail when omitting the trailing slash', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -242,7 +224,7 @@ describe('app.router', function(){
|
||||
.get('/user')
|
||||
.expect(404, done);
|
||||
})
|
||||
|
||||
|
||||
it('should fail when adding the trailing slash', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -275,7 +257,7 @@ describe('app.router', function(){
|
||||
.expect(404, done);
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
it('should allow literal "."', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -303,7 +285,7 @@ describe('app.router', function(){
|
||||
.get('/user/tj.json')
|
||||
.expect('tj', done);
|
||||
})
|
||||
|
||||
|
||||
it('should work with several', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -346,7 +328,7 @@ describe('app.router', function(){
|
||||
.get('/api/users/0.json')
|
||||
.expect('users/0.json', done);
|
||||
})
|
||||
|
||||
|
||||
it('should not be greedy immediately after param', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -370,7 +352,7 @@ describe('app.router', function(){
|
||||
.get('/user/122/aaa')
|
||||
.expect('122', done);
|
||||
})
|
||||
|
||||
|
||||
it('should span multiple segments', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -382,7 +364,7 @@ describe('app.router', function(){
|
||||
.get('/file/javascripts/jquery.js')
|
||||
.expect('javascripts/jquery.js', done);
|
||||
})
|
||||
|
||||
|
||||
it('should be optional', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -394,7 +376,7 @@ describe('app.router', function(){
|
||||
.get('/file/')
|
||||
.expect('', done);
|
||||
})
|
||||
|
||||
|
||||
it('should require a preceeding /', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -420,7 +402,7 @@ describe('app.router', function(){
|
||||
.get('/user/tj')
|
||||
.expect('tj', done);
|
||||
})
|
||||
|
||||
|
||||
it('should match a single segment only', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -432,7 +414,7 @@ describe('app.router', function(){
|
||||
.get('/user/tj/edit')
|
||||
.expect(404, done);
|
||||
})
|
||||
|
||||
|
||||
it('should allow several capture groups', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -459,7 +441,7 @@ describe('app.router', function(){
|
||||
.get('/user/tj')
|
||||
.expect('viewing tj', done);
|
||||
})
|
||||
|
||||
|
||||
it('should populate the capture group', function(done){
|
||||
var app = express();
|
||||
|
||||
@@ -473,7 +455,7 @@ describe('app.router', function(){
|
||||
.expect('editing tj', done);
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
describe('.:name', function(){
|
||||
it('should denote a format', function(done){
|
||||
var app = express();
|
||||
@@ -491,7 +473,7 @@ describe('app.router', function(){
|
||||
});
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
describe('.:name?', function(){
|
||||
it('should denote an optional format', function(done){
|
||||
var app = express();
|
||||
@@ -509,7 +491,7 @@ describe('app.router', function(){
|
||||
});
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
describe('when next() is called', function(){
|
||||
it('should continue lookup', function(done){
|
||||
var app = express()
|
||||
@@ -528,7 +510,7 @@ describe('app.router', function(){
|
||||
calls.push('/foo');
|
||||
next();
|
||||
});
|
||||
|
||||
|
||||
app.get('/foo', function(req, res, next){
|
||||
calls.push('/foo 2');
|
||||
res.end('done');
|
||||
@@ -542,7 +524,7 @@ describe('app.router', function(){
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
describe('when next(err) is called', function(){
|
||||
it('should break out of app.router', function(done){
|
||||
var app = express()
|
||||
@@ -561,7 +543,7 @@ describe('app.router', function(){
|
||||
calls.push('/foo');
|
||||
next(new Error('fail'));
|
||||
});
|
||||
|
||||
|
||||
app.get('/foo', function(req, res, next){
|
||||
assert(0);
|
||||
});
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário