mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
43 lines
1.6 KiB
JavaScript
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
|