forked from mixu/amdetective
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
46 lines (38 loc) · 1.17 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var esprima = require('esprima'),
parse = require('./lib/parse.js');
function find(fileContents, options) {
options = options || {};
//Set up source input
var moduleDeps = [],
moduleList = [],
astRoot = esprima.parse(fileContents);
parse.recurse(astRoot, function (callName, config, name, deps) {
if (!deps) {
deps = [];
}
if (!name) {
//If there is no module name, the dependencies are for
//this file/default module name.
moduleDeps = moduleDeps.concat(deps);
} else {
moduleList.push({
name: name,
deps: deps
});
}
//If define was found, no need to dive deeper, unless
//the config explicitly wants to dig deeper.
return !!options.findNestedDependencies;
}, options);
return {
moduleDeps: moduleDeps,
moduleList: moduleList
};
}
function findSimple(fileContents, options) {
var result = find(fileContents, options);
return result.moduleDeps.concat(result.moduleList);
}
module.exports = findSimple;
module.exports.find = find;
module.exports.parse = parse;