JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://esprima.org/esprima.js"></script>
<script id="codeToAnalyze">
function funcA(){
    funcB();
    funcC();
}

function funcB(){
    funcD();
}

function funcC(){
    funcD();
}

function funcD(){
    console.log("This function is called by funcC and funcD");
}

</script>

JavaScript

var code = document.getElementById('codeToAnalyze').innerHTML;
var syntax = esprima.parse(code);

var funcs = [];
_.each(syntax.body, function(i) {
    if (i.type == 'FunctionDeclaration') {
        var func = {name: i.id.name};

        _.each(i.body.body, function(j) {
            if (j.type == 'ExpressionStatement' && j.expression.type == 'CallExpression') {
                func.calls = func.calls || [];
                func.calls.push(j.expression.callee.name);
            }
        });
        
        funcs.push(func);
    }
});

console.log(funcs);