Comparing version 4.1.1 to 4.2.0
61
index.js
@@ -1,2 +0,3 @@ | ||
var aparse = require('acorn').parse; | ||
var acorn = require('acorn'); | ||
var walk = require('acorn/dist/walk'); | ||
var escodegen = require('escodegen'); | ||
@@ -9,3 +10,3 @@ var defined = require('defined'); | ||
if (!opts) opts = {}; | ||
return aparse(src, { | ||
return acorn.parse(src, { | ||
ecmaVersion: defined(opts.ecmaVersion, 6), | ||
@@ -23,27 +24,2 @@ sourceType: opts.sourceType, | ||
var traverse = function (node, cb) { | ||
if (Array.isArray(node)) { | ||
for (var i = 0; i < node.length; i++) { | ||
if (node[i] != null) { | ||
node[i].parent = node; | ||
traverse(node[i], cb); | ||
} | ||
} | ||
} | ||
else if (node && typeof node === 'object') { | ||
cb(node); | ||
for (var key in node) { | ||
if (!node.hasOwnProperty(key)) continue; | ||
if (key === 'parent' || !node[key]) continue; | ||
node[key].parent = node; | ||
traverse(node[key], cb); | ||
} | ||
} | ||
}; | ||
var walk = function (src, opts, cb) { | ||
var ast = parse(src, opts); | ||
traverse(ast, cb); | ||
}; | ||
var exports = module.exports = function (src, opts) { | ||
@@ -60,9 +36,6 @@ return exports.find(src, opts).strings; | ||
var isRequire = opts.isRequire || function (node) { | ||
var c = node.callee; | ||
return c | ||
&& node.type === 'CallExpression' | ||
&& c.type === 'Identifier' | ||
&& c.name === word | ||
return node.callee.type === 'Identifier' | ||
&& node.callee.name === word | ||
; | ||
} | ||
}; | ||
@@ -75,13 +48,17 @@ var modules = { strings : [], expressions : [] }; | ||
walk(src, opts.parse, function (node) { | ||
if (!isRequire(node)) return; | ||
if (node.arguments.length) { | ||
if (node.arguments[0].type === 'Literal') { | ||
modules.strings.push(node.arguments[0].value); | ||
var ast = parse(src, opts.parse); | ||
walk.simple(ast, { | ||
CallExpression: function (node) { | ||
if (!isRequire(node)) return; | ||
if (node.arguments.length) { | ||
if (node.arguments[0].type === 'Literal') { | ||
modules.strings.push(node.arguments[0].value); | ||
} | ||
else { | ||
modules.expressions.push(escodegen.generate(node.arguments[0])); | ||
} | ||
} | ||
else { | ||
modules.expressions.push(escodegen.generate(node.arguments[0])); | ||
} | ||
if (opts.nodes) modules.nodes.push(node); | ||
} | ||
if (opts.nodes) modules.nodes.push(node); | ||
}); | ||
@@ -88,0 +65,0 @@ |
{ | ||
"name": "detective", | ||
"description": "find all require() calls by walking the AST", | ||
"version": "4.1.1", | ||
"version": "4.2.0", | ||
"repository": { | ||
@@ -6,0 +6,0 @@ "type": "git", |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
16787
395