From ecf762ff383c2cefa4e49b4a7e2d7af23a255d5d Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Fri, 9 Aug 2024 09:59:53 -0700 Subject: [PATCH 01/14] fix(deps)!: send@^1.0.0 (#5786) --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 7c51a32d8b..00e9182116 100644 --- a/History.md +++ b/History.md @@ -4,6 +4,7 @@ unreleased * `res.status()` accepts only integers, and input must be greater than 99 and less than 1000 * will throw a `RangeError: Invalid status code: ${code}. Status code must be greater than 99 and less than 1000.` for inputs outside this range * will throw a `TypeError: Invalid status code: ${code}. Status code must be an integer.` for non integer inputs + * deps: send@1.0.0 * change: - `res.clearCookie` will ignore user provided `maxAge` and `expires` options diff --git a/package.json b/package.json index 37b0a63ed4..834fa59579 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "range-parser": "~1.2.1", "router": "2.0.0-beta.2", "safe-buffer": "5.2.1", - "send": "1.0.0-beta.2", + "send": "^1.0.0", "serve-static": "2.0.0-beta.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", From 41c054cff1e10f346feb39efe1f66660c0570aab Mon Sep 17 00:00:00 2001 From: Carlos Serrano Date: Sat, 17 Aug 2024 17:20:25 +0200 Subject: [PATCH 02/14] chore: upgrade `debug` dep from 3.10 to 4.3.6 (#5829) * chore: upgrade debug dep from 3.10 to 4.3.6 * docs: add debug dep upgrade to History.md --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 00e9182116..8722c2ec0b 100644 --- a/History.md +++ b/History.md @@ -7,6 +7,7 @@ unreleased * deps: send@1.0.0 * change: - `res.clearCookie` will ignore user provided `maxAge` and `expires` options +* deps: debug@4.3.6 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/package.json b/package.json index 834fa59579..44b885ba1c 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", - "debug": "3.1.0", + "debug": "4.3.6", "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", From 09831580ec64c2b53d712dfbf47a47a5790aa560 Mon Sep 17 00:00:00 2001 From: Carlos Serrano Date: Sat, 17 Aug 2024 17:21:29 +0200 Subject: [PATCH 03/14] refactor: replace 'path-is-absolute' dep with node:path isAbsolute method (#5830) * refactor: replace 'path-is-absolute' dep with node:path isAbsolute method * docs: add path-is-absolute dep removal to History.md --- History.md | 2 ++ lib/response.js | 2 +- package.json | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/History.md b/History.md index 8722c2ec0b..d8306a5d5b 100644 --- a/History.md +++ b/History.md @@ -1,5 +1,7 @@ unreleased ========================= +* remove: + - `path-is-absolute` dependency - use `path.isAbsolute` instead * breaking: * `res.status()` accepts only integers, and input must be greater than 99 and less than 1000 * will throw a `RangeError: Invalid status code: ${code}. Status code must be greater than 99 and less than 1000.` for inputs outside this range diff --git a/lib/response.js b/lib/response.js index a5a33e8609..1f1b7e924a 100644 --- a/lib/response.js +++ b/lib/response.js @@ -21,7 +21,7 @@ var http = require('http'); var onFinished = require('on-finished'); var mime = require('mime-types') var path = require('path'); -var pathIsAbsolute = require('path-is-absolute'); +var pathIsAbsolute = require('path').isAbsolute; var statuses = require('statuses') var merge = require('utils-merge'); var sign = require('cookie-signature').sign; diff --git a/package.json b/package.json index 44b885ba1c..30c9597269 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,6 @@ "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", "range-parser": "~1.2.1", From 0b243b1aee0d8774f2b97da2e8ac4340adaed1b3 Mon Sep 17 00:00:00 2001 From: Anna Bocharova Date: Fri, 23 Aug 2024 22:37:27 +0200 Subject: [PATCH 04/14] 5.x: Upgrading `merge-descriptors` with allowing minors (#5782) * Upgrading `merge-descriptors` with allowing minors in v5 * Using ^2.0.0 as per request * Reflecting in History.md. * Update History.md --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index d8306a5d5b..05730e259e 100644 --- a/History.md +++ b/History.md @@ -10,6 +10,7 @@ unreleased * change: - `res.clearCookie` will ignore user provided `maxAge` and `expires` options * deps: debug@4.3.6 +* deps: merge-descriptors@^2.0.0 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/package.json b/package.json index 30c9597269..e5c8d03d1b 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "^2.0.0", "methods": "~1.1.2", "mime-types": "~2.1.34", "on-finished": "2.4.1", From 65b62065d2b4308212fc3b19ab4986a9fa10ca41 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Fri, 23 Aug 2024 16:07:45 -0500 Subject: [PATCH 05/14] fix(deps) serve-staic@2.0.0 (#5790) --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 05730e259e..4c986606d5 100644 --- a/History.md +++ b/History.md @@ -11,6 +11,7 @@ unreleased - `res.clearCookie` will ignore user provided `maxAge` and `expires` options * deps: debug@4.3.6 * deps: merge-descriptors@^2.0.0 +* deps: serve-static@^2.0.0 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/package.json b/package.json index e5c8d03d1b..b3fe60c872 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "router": "2.0.0-beta.2", "safe-buffer": "5.2.1", "send": "^1.0.0", - "serve-static": "2.0.0-beta.2", + "serve-static": "^2.0.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", From 13e68943935f81aa7301c90d0d709d5153a675c9 Mon Sep 17 00:00:00 2001 From: Carlos Serrano Date: Fri, 23 Aug 2024 23:10:16 +0200 Subject: [PATCH 06/14] chore: qs@6.13.0 (#5847) Co-authored-by: Wes Todd --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 4c986606d5..6ef8b18af7 100644 --- a/History.md +++ b/History.md @@ -12,6 +12,7 @@ unreleased * deps: debug@4.3.6 * deps: merge-descriptors@^2.0.0 * deps: serve-static@^2.0.0 +* deps: qs@6.13.0 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/package.json b/package.json index b3fe60c872..5ab1324310 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "once": "1.4.0", "parseurl": "~1.3.3", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "router": "2.0.0-beta.2", "safe-buffer": "5.2.1", From 91a58b5b0368e91c67971cfb13519c1b5087847d Mon Sep 17 00:00:00 2001 From: S M Mahmudul Hasan Date: Sat, 24 Aug 2024 05:17:12 +0600 Subject: [PATCH 07/14] cookie-signature@^1.2.1 (#5833) * upgraded `cookie-signature` to 1.2.1 * declared cookie-signature deps in history * add caret in version --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 6ef8b18af7..2a563fbab2 100644 --- a/History.md +++ b/History.md @@ -9,6 +9,7 @@ unreleased * deps: send@1.0.0 * change: - `res.clearCookie` will ignore user provided `maxAge` and `expires` options +* deps: cookie-signature@^1.2.1 * deps: debug@4.3.6 * deps: merge-descriptors@^2.0.0 * deps: serve-static@^2.0.0 diff --git a/package.json b/package.json index 5ab1324310..e60aadca36 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", - "cookie-signature": "1.0.6", + "cookie-signature": "^1.2.1", "debug": "4.3.6", "depd": "2.0.0", "encodeurl": "~1.0.2", From 7748475747c3ccabc929dac78ea4eeb34003b245 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Sat, 31 Aug 2024 10:55:04 -0500 Subject: [PATCH 08/14] fix(deps): accepts@^2.0.0 (#5881) --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 2a563fbab2..3d931f2b1d 100644 --- a/History.md +++ b/History.md @@ -14,6 +14,7 @@ unreleased * deps: merge-descriptors@^2.0.0 * deps: serve-static@^2.0.0 * deps: qs@6.13.0 +* deps: accepts@^2.0.0 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/package.json b/package.json index e60aadca36..ec30717031 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "api" ], "dependencies": { - "accepts": "~1.3.8", + "accepts": "^2.0.0", "body-parser": "2.0.0-beta.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", From 4e61d0100d903de94673d4202eaa7edde5888fb4 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Sat, 31 Aug 2024 11:06:25 -0500 Subject: [PATCH 09/14] fix(deps)!: mime-types@^3.0.0 (#5882) --- History.md | 2 ++ package.json | 2 +- test/res.type.js | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/History.md b/History.md index 3d931f2b1d..e2cb5c07c0 100644 --- a/History.md +++ b/History.md @@ -15,6 +15,8 @@ unreleased * deps: serve-static@^2.0.0 * deps: qs@6.13.0 * deps: accepts@^2.0.0 +* deps: mime-types@^3.0.0 + - `application/javascript` => `text/javascript` 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/package.json b/package.json index ec30717031..83080a7b8a 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "http-errors": "2.0.0", "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", diff --git a/test/res.type.js b/test/res.type.js index 980717a6e3..09285af391 100644 --- a/test/res.type.js +++ b/test/res.type.js @@ -14,7 +14,7 @@ describe('res', function(){ request(app) .get('/') - .expect('Content-Type', 'application/javascript; charset=utf-8') + .expect('Content-Type', 'text/javascript; charset=utf-8') .end(done) }) From 402e7f653fd79528df634c3464f2fe929e716ff3 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Sat, 31 Aug 2024 12:31:31 -0500 Subject: [PATCH 10/14] fix(deps): type-is@^2.0.0 (#5883) --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index e2cb5c07c0..69293ecad3 100644 --- a/History.md +++ b/History.md @@ -17,6 +17,7 @@ unreleased * deps: accepts@^2.0.0 * deps: mime-types@^3.0.0 - `application/javascript` => `text/javascript` +* deps: type-is@^2.0.0 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/package.json b/package.json index 83080a7b8a..dc3ba4af87 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "serve-static": "^2.0.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", - "type-is": "~1.6.18", + "type-is": "^2.0.0", "utils-merge": "1.0.1", "vary": "~1.1.2" }, From 05f40f4321fee5235de0159dcd2a826c2532dff1 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Sat, 31 Aug 2024 13:09:21 -0500 Subject: [PATCH 11/14] fix(deps)!: content-disposition@^1.0.0 (#5884) --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 69293ecad3..c4d4045b75 100644 --- a/History.md +++ b/History.md @@ -18,6 +18,7 @@ unreleased * deps: mime-types@^3.0.0 - `application/javascript` => `text/javascript` * deps: type-is@^2.0.0 +* deps: content-disposition@^1.0.0 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/package.json b/package.json index dc3ba4af87..c89c38f49d 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "dependencies": { "accepts": "^2.0.0", "body-parser": "2.0.0-beta.2", - "content-disposition": "0.5.4", + "content-disposition": "^1.0.0", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "^1.2.1", From accafc652eb18162eb7d88273e42db8bd7a2f821 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Mon, 2 Sep 2024 13:36:21 -0500 Subject: [PATCH 12/14] fix(deps): finalhandler@^2.0.0 (#5899) --- History.md | 1 + package.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index c4d4045b75..911423735c 100644 --- a/History.md +++ b/History.md @@ -19,6 +19,7 @@ unreleased - `application/javascript` => `text/javascript` * deps: type-is@^2.0.0 * deps: content-disposition@^1.0.0 +* deps: finalhandler@^2.0.0 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/package.json b/package.json index c89c38f49d..fd3e74cbad 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "^2.0.0", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "^2.0.0", From 4d713d2b767e13bfbd4f91f4dc9fd442e9896bcd Mon Sep 17 00:00:00 2001 From: Jon Church Date: Mon, 9 Sep 2024 18:03:32 -0400 Subject: [PATCH 13/14] update to fresh@2.0.0 (#5916) fixes handling of If-Modified-Since in combination with If-None-Match --- History.md | 3 ++- lib/request.js | 2 +- package.json | 2 +- test/req.fresh.js | 20 ++++++++++++++++++++ 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/History.md b/History.md index 911423735c..0f4515b55c 100644 --- a/History.md +++ b/History.md @@ -1,6 +1,6 @@ unreleased ========================= -* remove: +* remove: - `path-is-absolute` dependency - use `path.isAbsolute` instead * breaking: * `res.status()` accepts only integers, and input must be greater than 99 and less than 1000 @@ -20,6 +20,7 @@ unreleased * deps: type-is@^2.0.0 * deps: content-disposition@^1.0.0 * deps: finalhandler@^2.0.0 +* deps: fresh@^2.0.0 5.0.0-beta.3 / 2024-03-25 ========================= diff --git a/lib/request.js b/lib/request.js index c528186aa1..372a9915e9 100644 --- a/lib/request.js +++ b/lib/request.js @@ -447,7 +447,7 @@ defineGetter(req, 'hostname', function hostname(){ /** * Check if the request is fresh, aka - * Last-Modified and/or the ETag + * Last-Modified or the ETag * still match. * * @return {Boolean} diff --git a/package.json b/package.json index fd3e74cbad..146369258b 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "^2.0.0", - "fresh": "0.5.2", + "fresh": "2.0.0", "http-errors": "2.0.0", "merge-descriptors": "^2.0.0", "methods": "~1.1.2", diff --git a/test/req.fresh.js b/test/req.fresh.js index 9160e2caaf..3bf6a1f65a 100644 --- a/test/req.fresh.js +++ b/test/req.fresh.js @@ -46,5 +46,25 @@ describe('req', function(){ .get('/') .expect(200, 'false', done); }) + + it('should ignore "If-Modified-Since" when "If-None-Match" is present', function(done) { + var app = express(); + const etag = '"FooBar"' + const now = Date.now() + + app.disable('x-powered-by') + app.use(function(req, res) { + res.set('Etag', etag) + res.set('Last-Modified', new Date(now).toUTCString()) + res.send(req.fresh); + }); + + request(app) + .get('/') + .set('If-Modified-Since', new Date(now - 1000).toUTCString) + .set('If-None-Match', etag) + .expect(304, done); + }) + }) }) From 0264908903a64a3edd00fbe77e65c6748cc1b6e9 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Mon, 9 Sep 2024 17:50:11 -0500 Subject: [PATCH 14/14] feat(deps)!: router@^2.0.0 (#5885) --- examples/downloads/index.js | 4 +-- examples/resource/index.js | 2 +- examples/route-separation/index.js | 2 +- package.json | 2 +- test/app.all.js | 2 +- test/app.router.js | 54 +++++++++++++++--------------- test/req.route.js | 4 +-- 7 files changed, 35 insertions(+), 35 deletions(-) diff --git a/examples/downloads/index.js b/examples/downloads/index.js index 5e48ac3970..c47dddd738 100644 --- a/examples/downloads/index.js +++ b/examples/downloads/index.js @@ -23,8 +23,8 @@ app.get('/', function(req, res){ // /files/* is accessed via req.params[0] // but here we name it :file -app.get('/files/:file+', function (req, res, next) { - res.download(req.params.file, { root: FILES_DIR }, function (err) { +app.get('/files/*file', function (req, res, next) { + res.download(req.params.file.join('/'), { root: FILES_DIR }, function (err) { if (!err) return; // file sent if (err.status !== 404) return next(err); // non-404 error // file for download not found diff --git a/examples/resource/index.js b/examples/resource/index.js index ff1f6fe11f..627ab24c5a 100644 --- a/examples/resource/index.js +++ b/examples/resource/index.js @@ -12,7 +12,7 @@ var app = module.exports = express(); app.resource = function(path, obj) { this.get(path, obj.index); - this.get(path + '/:a..:b.:format?', function(req, res){ + this.get(path + '/:a..:b{.:format}', function(req, res){ var a = parseInt(req.params.a, 10); var b = parseInt(req.params.b, 10); var format = req.params.format; diff --git a/examples/route-separation/index.js b/examples/route-separation/index.js index 5d48381111..a471a4b091 100644 --- a/examples/route-separation/index.js +++ b/examples/route-separation/index.js @@ -38,7 +38,7 @@ app.get('/', site.index); // User app.get('/users', user.list); -app.all('/user/:id/:op?', user.load); +app.all('/user/:id{/:op}', user.load); app.get('/user/:id', user.view); app.get('/user/:id/view', user.view); app.get('/user/:id/edit', user.edit); diff --git a/package.json b/package.json index 146369258b..d7600267ca 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "proxy-addr": "~2.0.7", "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", "serve-static": "^2.0.0", diff --git a/test/app.all.js b/test/app.all.js index 185a8332fe..e4afca7d73 100644 --- a/test/app.all.js +++ b/test/app.all.js @@ -26,7 +26,7 @@ describe('app.all()', function(){ var app = express() , n = 0; - app.all('/*', function(req, res, next){ + app.all('/*splat', function(req, res, next){ if (n++) return done(new Error('DELETE called several times')); next(); }); diff --git a/test/app.router.js b/test/app.router.js index d6f3edf1ab..7961aa348d 100644 --- a/test/app.router.js +++ b/test/app.router.js @@ -316,12 +316,12 @@ describe('app.router', function(){ var app = express(); var router = new express.Router({ mergeParams: true }); - router.get('/(.*).(.*)', function (req, res) { + router.get(/^\/(.*)\.(.*)/, function (req, res) { var keys = Object.keys(req.params).sort(); res.send(keys.map(function(k){ return [k, req.params[k]] })); }); - app.use('/user/id:(\\d+)', router); + app.use(/^\/user\/id:(\d+)/, router); request(app) .get('/user/id:10/profile.json') @@ -332,12 +332,12 @@ describe('app.router', function(){ var app = express(); var router = new express.Router({ mergeParams: true }); - router.get('/(.*)', function (req, res) { + router.get(/\/(.*)/, function (req, res) { var keys = Object.keys(req.params).sort(); res.send(keys.map(function(k){ return [k, req.params[k]] })); }); - app.use('/user/id:(\\d+)/name:(\\w+)', router); + app.use(/^\/user\/id:(\d+)\/name:(\w+)/, router); request(app) .get('/user/id:10/name:tj/profile') @@ -348,12 +348,12 @@ describe('app.router', function(){ var app = express(); var router = new express.Router({ mergeParams: true }); - router.get('/name:(\\w+)', function(req, res){ + router.get(/\/name:(\w+)/, function(req, res){ var keys = Object.keys(req.params).sort(); res.send(keys.map(function(k){ return [k, req.params[k]] })); }); - app.use('/user/id:(\\d+)', router); + app.use(/\/user\/id:(\d+)/, router); request(app) .get('/user/id:10/name:tj') @@ -383,11 +383,11 @@ describe('app.router', function(){ var app = express(); var router = new express.Router({ mergeParams: true }); - router.get('/user:(\\w+)/*', function (req, res, next) { + router.get(/\/user:(\w+)\//, function (req, res, next) { next(); }); - app.use('/user/id:(\\d+)', function (req, res, next) { + app.use(/\/user\/id:(\d+)/, function (req, res, next) { router(req, res, function (err) { var keys = Object.keys(req.params).sort(); res.send(keys.map(function(k){ return [k, req.params[k]] })); @@ -610,8 +610,8 @@ describe('app.router', function(){ var app = express(); var cb = after(2, done); - app.get('/user(s?)/:user/:op', function(req, res){ - res.end(req.params.op + 'ing ' + req.params.user + (req.params[0] ? ' (old)' : '')); + app.get('/user{s}/:user/:op', function(req, res){ + res.end(req.params.op + 'ing ' + req.params.user + (req.url.startsWith('/users') ? ' (old)' : '')); }); request(app) @@ -657,7 +657,7 @@ describe('app.router', function(){ it('should denote an optional capture group', function(done){ var app = express(); - app.get('/user/:user/:op?', function(req, res){ + app.get('/user/:user{/:op}', function(req, res){ var op = req.params.op || 'view'; res.end(op + 'ing ' + req.params.user); }); @@ -670,7 +670,7 @@ describe('app.router', function(){ it('should populate the capture group', function(done){ var app = express(); - app.get('/user/:user/:op?', function(req, res){ + app.get('/user/:user{/:op}', function(req, res){ var op = req.params.op || 'view'; res.end(op + 'ing ' + req.params.user); }); @@ -685,8 +685,8 @@ describe('app.router', function(){ it('should match one segment', function (done) { var app = express() - app.get('/user/:user*', function (req, res) { - res.end(req.params.user) + app.get('/user/*user', function (req, res) { + res.end(req.params.user[0]) }) request(app) @@ -697,8 +697,8 @@ describe('app.router', function(){ it('should match many segments', function (done) { var app = express() - app.get('/user/:user*', function (req, res) { - res.end(req.params.user) + app.get('/user/*user', function (req, res) { + res.end(req.params.user.join('/')) }) request(app) @@ -709,7 +709,7 @@ describe('app.router', function(){ it('should match zero segments', function (done) { var app = express() - app.get('/user/:user*', function (req, res) { + app.get('/user{/*user}', function (req, res) { res.end(req.params.user) }) @@ -723,8 +723,8 @@ describe('app.router', function(){ it('should match one segment', function (done) { var app = express() - app.get('/user/:user+', function (req, res) { - res.end(req.params.user) + app.get('/user/*user', function (req, res) { + res.end(req.params.user[0]) }) request(app) @@ -735,8 +735,8 @@ describe('app.router', function(){ it('should match many segments', function (done) { var app = express() - app.get('/user/:user+', function (req, res) { - res.end(req.params.user) + app.get('/user/*user', function (req, res) { + res.end(req.params.user.join('/')) }) request(app) @@ -747,7 +747,7 @@ describe('app.router', function(){ it('should not match zero segments', function (done) { var app = express() - app.get('/user/:user+', function (req, res) { + app.get('/user/*user', function (req, res) { res.end(req.params.user) }) @@ -781,7 +781,7 @@ describe('app.router', function(){ var app = express(); var cb = after(2, done) - app.get('/:name.:format?', function(req, res){ + app.get('/:name{.:format}', function(req, res){ res.end(req.params.name + ' as ' + (req.params.format || 'html')); }); @@ -800,7 +800,7 @@ describe('app.router', function(){ var app = express() , calls = []; - app.get('/foo/:bar?', function(req, res, next){ + app.get('/foo{/:bar}', function(req, res, next){ calls.push('/foo/:bar?'); next(); }); @@ -885,7 +885,7 @@ describe('app.router', function(){ var app = express() , calls = []; - app.get('/foo/:bar?', function(req, res, next){ + app.get('/foo{/:bar}', function(req, res, next){ calls.push('/foo/:bar?'); next(); }); @@ -1096,7 +1096,7 @@ describe('app.router', function(){ var app = express(); var path = []; - app.get('/:path+', function (req, res, next) { + app.get('/*path', function (req, res, next) { path.push(0); next(); }); @@ -1116,7 +1116,7 @@ describe('app.router', function(){ next(); }); - app.get('/(.*)', function (req, res, next) { + app.get('/*splat', function (req, res, next) { path.push(4); next(); }); diff --git a/test/req.route.js b/test/req.route.js index 6c17fbb1c8..9bd7ed923b 100644 --- a/test/req.route.js +++ b/test/req.route.js @@ -8,7 +8,7 @@ describe('req', function(){ it('should be the executed Route', function(done){ var app = express(); - app.get('/user/:id/:op?', function(req, res, next){ + app.get('/user/:id{/:op}', function(req, res, next){ res.header('path-1', req.route.path) next(); }); @@ -20,7 +20,7 @@ describe('req', function(){ request(app) .get('/user/12/edit') - .expect('path-1', '/user/:id/:op?') + .expect('path-1', '/user/:id{/:op}') .expect('path-2', '/user/:id/edit') .expect(200, done) })