From c2b9357fe98d2732df6f2066abee87e8a03c3c52 Mon Sep 17 00:00:00 2001 From: Hayko Koryun Date: Sun, 3 Dec 2017 18:14:43 +0400 Subject: [PATCH 1/5] replaced slasher functionality --- lib/middleware/redirects.js | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/middleware/redirects.js b/lib/middleware/redirects.js index 1a242d53..f593aa31 100644 --- a/lib/middleware/redirects.js +++ b/lib/middleware/redirects.js @@ -11,7 +11,6 @@ var _ = require('lodash'); var minimatch = require('minimatch'); var pathToRegexp = require('path-to-regexp'); -var slasher = require('glob-slasher'); function formatExternalUrl(u) { var cleaned = u @@ -32,10 +31,28 @@ function addQuery(url, qs) { var Redirect = function(source, destination, type) { this.type = type || 301; - this.source = slasher(source); + + // no leading slash + if(source[0] != '/') + { + // glob pattern but no leading slash + if(source[0] == '!' && source[1] != '/') + { + this.source = '!/' + source.substring(2); + } + else + { + this.source = '/' + source; + } + } + else + { + this.source = source; + } + this.destination = destination; - if (this.destination.match(/(?:^|\/):/)) { + if (this.source.match(/(?:^|\/):/)) { this.captureKeys = []; this.capture = pathToRegexp(this.source, this.captureKeys); this.compileDestination = pathToRegexp.compile(this.destination); @@ -51,9 +68,11 @@ Redirect.prototype.test = function(url) { } var match; + if (this.capture) { match = this.capture.exec(url); } + if (match) { var params = {}; for (var i = 0; i < this.captureKeys.length; i++) { @@ -121,4 +140,4 @@ module.exports = function() { status: match.type }); }; -}; +}; \ No newline at end of file From be84f6dc7a4aad98be0bbd49f43f1e50c4875af9 Mon Sep 17 00:00:00 2001 From: Hayko Koryun Date: Sun, 3 Dec 2017 18:36:38 +0400 Subject: [PATCH 2/5] fixed formatting --- lib/middleware/redirects.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/middleware/redirects.js b/lib/middleware/redirects.js index f593aa31..97d7f09d 100644 --- a/lib/middleware/redirects.js +++ b/lib/middleware/redirects.js @@ -33,15 +33,12 @@ var Redirect = function(source, destination, type) { this.type = type || 301; // no leading slash - if(source[0] != '/') - { + if (source[0] != '/') { // glob pattern but no leading slash - if(source[0] == '!' && source[1] != '/') - { + if (source[0] == '!' && source[1] != '/') { this.source = '!/' + source.substring(2); } - else - { + else { this.source = '/' + source; } } @@ -140,4 +137,4 @@ module.exports = function() { status: match.type }); }; -}; \ No newline at end of file +}; From 3b0a8ed30743428fade8f8fafc5b3d6d8278576f Mon Sep 17 00:00:00 2001 From: Hayko Koryun Date: Sun, 3 Dec 2017 18:42:14 +0400 Subject: [PATCH 3/5] fixed remaining formatting issues --- lib/middleware/redirects.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/middleware/redirects.js b/lib/middleware/redirects.js index 97d7f09d..e5dd86e3 100644 --- a/lib/middleware/redirects.js +++ b/lib/middleware/redirects.js @@ -33,12 +33,11 @@ var Redirect = function(source, destination, type) { this.type = type || 301; // no leading slash - if (source[0] != '/') { + if (source[0] !== '/') { // glob pattern but no leading slash - if (source[0] == '!' && source[1] != '/') { + if (source[0] === '!' && source[1] !== '/') { this.source = '!/' + source.substring(2); - } - else { + } else { this.source = '/' + source; } } From 01c1117eccaa1bc555d9a330bcc46bec62326aea Mon Sep 17 00:00:00 2001 From: Hayko Koryun Date: Sun, 3 Dec 2017 18:49:51 +0400 Subject: [PATCH 4/5] fixed remaining formatting issues --- lib/middleware/redirects.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/middleware/redirects.js b/lib/middleware/redirects.js index e5dd86e3..6b82bda6 100644 --- a/lib/middleware/redirects.js +++ b/lib/middleware/redirects.js @@ -40,9 +40,7 @@ var Redirect = function(source, destination, type) { } else { this.source = '/' + source; } - } - else - { + } else { this.source = source; } From 9757d2ecf5d70e05791e4c6c1cc2d5a360aa6ad6 Mon Sep 17 00:00:00 2001 From: Hayko Koryun Date: Sun, 3 Dec 2017 19:15:22 +0400 Subject: [PATCH 5/5] should take care of source being just '/' --- lib/middleware/redirects.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/middleware/redirects.js b/lib/middleware/redirects.js index 6b82bda6..2bfa676e 100644 --- a/lib/middleware/redirects.js +++ b/lib/middleware/redirects.js @@ -35,7 +35,7 @@ var Redirect = function(source, destination, type) { // no leading slash if (source[0] !== '/') { // glob pattern but no leading slash - if (source[0] === '!' && source[1] !== '/') { + if (source[0] === '!' && source[1] && source[1] !== '/') { this.source = '!/' + source.substring(2); } else { this.source = '/' + source;