UNPKG

dependency-cruiser

Version:

Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.

49 lines (41 loc) 1.3 kB
"use strict"; const walk = require('acorn/dist/walk'); function firstArgumentIsAString(pNodeArguments) { return Boolean(pNodeArguments) && pNodeArguments[0] && pNodeArguments[0].value && typeof pNodeArguments[0].value === "string"; } function isRequireIdentifier(pCallee) { return pCallee.type === "Identifier" && pCallee.name === "require"; } function isRequireCall(pNode){ return isRequireIdentifier(pNode.callee) && firstArgumentIsAString(pNode.arguments); } function pushRequireCallsToDependencies(pDependencies, pModuleSystem) { return pNode => { if (isRequireCall(pNode)) { pNode.arguments[0].value.split("!").forEach( pString => pDependencies.push({ moduleName: pString, moduleSystem: pModuleSystem }) ); } }; } module.exports = (pAST, pDependencies, pModuleSystem) => { pModuleSystem = pModuleSystem || "cjs"; // var/const lalala = require('./lalala'); // require('./lalala'); // require('./lalala').doFunkyStuff(); // require('zoinks!./wappie') walk.simple( pAST, { "CallExpression": pushRequireCallsToDependencies(pDependencies, pModuleSystem) } ); };