@@ -22,6 +22,9 @@ export const PickerImp = function(filterFunction) {
22
22
23
23
PickerImp . prototype . middleware = function ( callback ) {
24
24
this . middlewares . push ( callback ) ;
25
+ for ( const subRouter of this . subRouters ) {
26
+ subRouter . middleware ( callback ) ;
27
+ }
25
28
} ;
26
29
27
30
PickerImp . prototype . route = function ( path , callback ) {
@@ -36,6 +39,9 @@ PickerImp.prototype.route = function(path, callback) {
36
39
PickerImp . prototype . filter = function ( callback ) {
37
40
const subRouter = new PickerImp ( callback ) ;
38
41
this . subRouters . push ( subRouter ) ;
42
+ for ( const middleware of this . middlewares ) {
43
+ subRouter . middleware ( middleware ) ;
44
+ }
39
45
return subRouter ;
40
46
} ;
41
47
@@ -51,12 +57,12 @@ PickerImp.prototype._dispatch = function(req, res, bypass) {
51
57
}
52
58
}
53
59
54
- const processNextMiddleware = ( ) => {
60
+ const processNextMiddleware = ( onDone ) => {
55
61
const middleware = this . middlewares [ currentMiddleware ++ ] ;
56
62
if ( middleware ) {
57
- this . _processMiddleware ( middleware , req , res , processNextMiddleware ) ;
63
+ this . _processMiddleware ( middleware , req , res , ( ) => processNextMiddleware ( onDone ) ) ;
58
64
} else {
59
- processNextRoute ( ) ;
65
+ onDone ( ) ;
60
66
}
61
67
}
62
68
@@ -66,10 +72,12 @@ PickerImp.prototype._dispatch = function(req, res, bypass) {
66
72
const uri = req . url . replace ( / \? .* / , '' ) ;
67
73
const m = uri . match ( route ) ;
68
74
if ( m ) {
69
- const params = this . _buildParams ( route . keys , m ) ;
70
- params . query = parseQuery ( req . _parsedUrl ?. query ) ;
71
- // See https://github.com/meteorhacks/picker/pull/39 for processNextRoute reason in the following method.
72
- this . _processRoute ( route . callback , params , req , res , processNextRoute ) ;
75
+ processNextMiddleware ( ( ) => {
76
+ const params = this . _buildParams ( route . keys , m ) ;
77
+ params . query = parseQuery ( req . _parsedUrl ?. query ) ;
78
+ // See https://github.com/meteorhacks/picker/pull/39 for processNextRoute reason in the following method.
79
+ this . _processRoute ( route . callback , params , req , res , processNextRoute ) ;
80
+ } ) ;
73
81
} else {
74
82
processNextRoute ( ) ;
75
83
}
@@ -86,7 +94,7 @@ PickerImp.prototype._dispatch = function(req, res, bypass) {
86
94
bypass ( ) ;
87
95
}
88
96
}
89
- processNextMiddleware ( ) ;
97
+ processNextRoute ( ) ;
90
98
} ;
91
99
92
100
PickerImp . prototype . _buildParams = function ( keys , m ) {
0 commit comments