У меня есть следующий файл javascript для анализа с babel:
b(a)
У меня есть следующий файл javascript, который я использую для обнаружения вызовов функций в предыдущем файле и замены их функцией, которая получает предыдущую функцию и ее параметры для ее вызова.
const t = require("babel-types")
module.exports = function (babel) {
return {
visitor: WrapperVisitor
}
}
const WrapperVisitor = {
Program(path) {
path.traverse(CallVisitor)
}
}
let cont = 0
const CallVisitor = {
CallExpression(path) {
if (path.node.callee.name){
let cam = path.node.arguments.slice()
path.node.arguments.push(t.identifier(path.node.callee.name))
path.replaceWith(
t.functionDeclaration(
t.identifier("T"),
path.node.arguments,
t.blockStatement(
[
t.expressionStatement(
t.callExpression(
t.memberExpression(
t.identifier(path.node.callee.name),
t.identifier("apply")
),
cam
)
)
]
)
)
)
}
}
}
Создает следующий выходной файл
(function () {
function T(a, b) {
return b.apply(a);
}
})();
Вопрос заключается в следующем: как предотвратить перенос функции T в анонимную функцию и в эти скобки, и где я могу найти дополнительную документацию по объекту path?