"use strict";
const estraverse = require('estraverse');
const NodeObfuscator_1 = require('./NodeObfuscator');
class FunctionObfuscator extends NodeObfuscator_1.NodeObfuscator {
constructor(...args) {
super(...args);
this.functionParams = new Map();
}
obfuscateNode(functionNode) {
this.storeFunctionParams(functionNode);
this.replaceFunctionParams(functionNode);
}
storeFunctionParams(functionNode) {
functionNode.params
.forEach((paramsNode) => {
estraverse.traverse(paramsNode, {
leave: (node) => this.storeIdentifiersNames(node, this.functionParams)
});
});
}
replaceFunctionParams(functionNode) {
let replaceVisitor = {
leave: (node, parentNode) => {
this.replaceIdentifiersWithRandomNames(node, parentNode, this.functionParams);
}
};
functionNode.params
.forEach((paramsNode) => {
estraverse.replace(paramsNode, replaceVisitor);
});
estraverse.replace(functionNode.body, replaceVisitor);
}
}
exports.FunctionObfuscator = FunctionObfuscator;
//# sourceMappingURL=FunctionObfuscator.js.map |