7
7
8
8
'use strict' ;
9
9
10
- var utils = require ( './utils' )
10
+ var utils = require ( './utils' ) ;
11
11
12
12
module . exports = function base ( app , opts ) {
13
13
if ( ! utils . isObject ( app ) && typeof app !== 'function' ) {
14
14
throw new TypeError ( 'use: expect `app` be an object or function' ) ;
15
15
}
16
16
17
- opts = utils . isObject ( opts ) ? opts : { } ;
18
- opts . prop = typeof opts . prop === 'string' ? opts . prop : 'fns' ;
19
- opts . prop = opts . prop . length > 0 ? opts . prop : 'fns' ;
17
+ if ( ! utils . isObject ( opts ) ) {
18
+ opts = { } ;
19
+ }
20
20
21
- if ( ! utils . isArray ( app [ opts . prop ] ) ) {
22
- utils . define ( app , opts . prop , [ ] ) ;
21
+ var prop = utils . isString ( opts . prop ) ? opts . prop : 'fns' ;
22
+ if ( ! utils . isArray ( app [ prop ] ) ) {
23
+ utils . define ( app , prop , [ ] ) ;
23
24
}
24
25
25
26
/**
@@ -68,12 +69,18 @@ module.exports = function base(app, opts) {
68
69
* @api public
69
70
*/
70
71
71
- utils . define ( app , 'run' , function ( val ) {
72
- var self = this || app ;
73
- var fns = self [ opts . prop ] ;
72
+ utils . define ( app , 'run' , function ( val ) {
73
+ if ( ! utils . isObject ( val ) ) return ;
74
74
decorate ( val ) ;
75
- var len = fns . length , i = - 1 ;
76
- while ( ++ i < len ) val . use ( fns [ i ] ) ;
75
+
76
+ var self = this || app ;
77
+ var fns = self [ prop ] ;
78
+ var len = fns . length ;
79
+ var idx = - 1 ;
80
+
81
+ while ( ++ idx < len ) {
82
+ val . use ( fns [ idx ] ) ;
83
+ }
77
84
return val ;
78
85
} ) ;
79
86
@@ -84,17 +91,17 @@ module.exports = function base(app, opts) {
84
91
85
92
function use ( fn , options ) {
86
93
if ( typeof fn !== 'function' ) {
87
- throw new TypeError ( '.use expect `fn` be function' ) ;
94
+ throw new TypeError ( '.use expects `fn` be a function' ) ;
88
95
}
89
- var self = this || app ;
90
96
97
+ var self = this || app ;
91
98
if ( typeof opts . fn === 'function' ) {
92
99
opts . fn . call ( self , self , options ) ;
93
100
}
94
101
95
102
var plugin = fn . call ( self , self ) ;
96
103
if ( typeof plugin === 'function' ) {
97
- var fns = self [ opts . prop ] ;
104
+ var fns = self [ prop ] ;
98
105
fns . push ( plugin ) ;
99
106
}
100
107
return self ;
@@ -105,7 +112,7 @@ module.exports = function base(app, opts) {
105
112
*/
106
113
107
114
function decorate ( val ) {
108
- if ( utils . isObject ( val ) && ( ! val . use || ! val . run ) ) {
115
+ if ( ! val . use || ! val . run ) {
109
116
base ( val ) ;
110
117
}
111
118
}
0 commit comments