Files
javascript-obfuscator-javas…/src/node-obfuscators/VariableDeclarationObfuscator.js
T
2016-05-09 17:41:55 +03:00

43 lines
1.6 KiB
JavaScript

"use strict";
const NodeObfuscator_1 = require('./NodeObfuscator');
const Utils_1 = require('../Utils');
let estraverse = require('estraverse');
class VariableDeclarationObfuscator extends NodeObfuscator_1.NodeObfuscator {
constructor(...args) {
super(...args);
this.variableName = new Map();
}
obfuscateNode(variableDeclarationNode, parentNode) {
if (parentNode.type === 'Program') {
return;
}
this.replaceVariableName(variableDeclarationNode);
this.replaceVariableCalls(parentNode);
}
replaceVariableName(variableDeclarationNode) {
variableDeclarationNode.declarations.forEach((declarationNode) => {
estraverse.replace(declarationNode, {
leave: (node) => {
if (node.type !== 'VariableDeclarator') {
return;
}
estraverse.replace(node.id, {
leave: (node) => {
this.variableName.set(node.name, Utils_1.Utils.getRandomVariableName());
node.name = this.variableName.get(node.name);
}
});
}
});
});
}
replaceVariableCalls(variableParentNode) {
estraverse.replace(variableParentNode, {
leave: (node, parentNode) => {
this.replaceNodeIdentifierByNewValue(node, parentNode, this.variableName);
}
});
}
}
exports.VariableDeclarationObfuscator = VariableDeclarationObfuscator;
//# sourceMappingURL=VariableDeclarationObfuscator.js.map