@@ -31,7 +31,6 @@ function DepperAsync(opts) {
3131 * modules.
3232 *
3333 * @param {String } filename The absolute path of this file.
34- * @param {String } src The shader source for this file.
3534 * @param {Function } done(err, deps)
3635 *
3736 * The `done` callback will be called when the entire graph has been
@@ -40,7 +39,6 @@ function DepperAsync(opts) {
4039 */
4140DepperAsync . prototype . add = function ( filename , done ) {
4241 var basedir = path . dirname ( filename = path . resolve ( filename ) )
43- var cache = this . _cache
4442 var self = this
4543 var exports = [ ]
4644 var imports = [ ]
@@ -66,7 +64,10 @@ DepperAsync.prototype.add = function(filename, done) {
6664
6765 dep . source = src
6866 extractPreprocessors ( dep . source , imports , exports )
69- resolveImports ( function ( err ) {
67+ self . _resolveImports ( imports , {
68+ deps : dep . deps ,
69+ basedir : basedir
70+ } , function ( err ) {
7071 setTimeout ( function ( ) {
7172 done && done ( err , ! err && self . _deps )
7273 } )
@@ -76,25 +77,39 @@ DepperAsync.prototype.add = function(filename, done) {
7677 } )
7778
7879 return dep
80+ }
7981
80- function resolveImports ( done ) {
81- map ( imports , 10 , function ( imp , next ) {
82- var importName = getImportName ( imp )
82+ /**
83+ * Internal async method to retrieve dependencies
84+ * resolving imports using the internal cache
85+ *
86+ * @param {string[] } imports
87+ * @param {object } opts extends options for https://www.npmjs.com/package/resolve
88+ * @param {object } opts.deps existing dependencies
89+ * @param {(err: Error) } done
90+ * @return {object } resolved dependencies
91+ */
92+ DepperAsync . prototype . _resolveImports = function ( imports , opts , done ) {
93+ var self = this
94+ var deps = opts && opts . deps || { }
95+ map ( imports , 10 , function ( imp , next ) {
96+ var importName = getImportName ( imp )
8397
84- self . resolve ( importName , { basedir : basedir } , function ( err , resolved ) {
85- if ( err ) return next ( err )
98+ self . resolve ( importName , opts , function ( err , resolved ) {
99+ if ( err ) return next ( err )
86100
87- if ( cache [ resolved ] ) {
88- dep . deps [ importName ] = cache [ resolved ] . id
89- return next ( )
90- }
101+ if ( self . _cache [ resolved ] ) {
102+ deps [ importName ] = self . _cache [ resolved ] . id
103+ return next ( )
104+ }
91105
92- cache [ resolved ] = self . add ( resolved , function ( err ) {
93- if ( err ) return next ( err )
94- dep . deps [ importName ] = cache [ resolved ] . id
95- next ( )
96- } )
106+ self . _cache [ resolved ] = self . add ( resolved , function ( err ) {
107+ if ( err ) return next ( err )
108+ deps [ importName ] = self . _cache [ resolved ] . id
109+ next ( )
97110 } )
98- } , done )
99- }
111+ } )
112+ } , done )
113+
114+ return deps
100115}
0 commit comments