Skip to content

Commit d71c4ba

Browse files
author
rubeniskov
committed
split add logic migrating _resolveImports into internal method
1 parent bfadac0 commit d71c4ba

File tree

2 files changed

+65
-34
lines changed

2 files changed

+65
-34
lines changed

index.js

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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
*/
4140
DepperAsync.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
}

sync.js

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,11 @@ function DepperSync(opts) {
3030
* modules.
3131
*
3232
* @param {String} filename The absolute path of this file.
33-
* @param {String} src The shader source for this file.
3433
*
3534
* Returns an array of dependencies discovered so far as its second argument.
3635
*/
3736
DepperSync.prototype.add = function(filename) {
3837
var basedir = path.dirname(filename = path.resolve(filename))
39-
var cache = this._cache
4038
var self = this
4139
var exports = []
4240
var imports = []
@@ -57,20 +55,38 @@ DepperSync.prototype.add = function(filename) {
5755
dep.source = src
5856
extractPreprocessors(dep.source, imports, exports)
5957

60-
resolveImports()
58+
self._resolveImports(imports, {
59+
basedir: basedir,
60+
deps: dep.deps
61+
})
62+
6163
return self._deps
64+
}
65+
66+
/**
67+
* Internal sync method to retrieve dependencies
68+
* resolving imports using the internal cache
69+
*
70+
* @param {string[]} imports
71+
* @param {object} opts extends options for https://www.npmjs.com/package/resolve
72+
* @param {object} opts.deps existing dependencies
73+
* @return {object} resolved dependencies
74+
*/
75+
DepperSync.prototype._resolveImports = function(imports, opts) {
76+
var self = this
77+
var deps = opts && opts.deps || {}
6278

63-
function resolveImports() {
64-
imports.forEach(function (imp) {
65-
var importName = getImportName(imp)
79+
imports.forEach(function (imp) {
80+
var importName = getImportName(imp)
6681

67-
var resolved = self.resolve(importName, { basedir: basedir })
68-
if (cache[resolved]) {
69-
dep.deps[importName] = cache[resolved].id
70-
}
71-
var i = self._i
72-
cache[resolved] = self.add(resolved)[i]
73-
dep.deps[importName] = cache[resolved].id
74-
})
75-
}
82+
var resolved = self.resolve(importName, opts)
83+
if (self._cache[resolved]) {
84+
deps[importName] = self._cache[resolved].id
85+
}
86+
var i = self._i
87+
self._cache[resolved] = self.add(resolved)[i]
88+
deps[importName] = self._cache[resolved].id
89+
})
90+
91+
return deps
7692
}

0 commit comments

Comments
 (0)