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

48 lines
1.8 KiB
JavaScript

"use strict";
const NodeObfuscator_1 = require('./NodeObfuscator');
const Utils_1 = require('../Utils');
let escodegen = require('escodegen'), estraverse = require('estraverse');
class ObjectExpressionObfuscator extends NodeObfuscator_1.NodeObfuscator {
obfuscateNode(objectExpressionNode) {
objectExpressionNode.properties.forEach((property) => {
estraverse.replace(property.key, {
leave: (node, parentNode) => {
switch (node.type) {
case 'Literal':
this.literalNodeController(node);
break;
case 'Identifier':
this.identifierNodeController(node);
break;
}
}
});
});
}
literalNodeController(node) {
switch (typeof node.value) {
case 'string':
if (node['x-verbatim-property']) {
break;
}
node['x-verbatim-property'] = {
content: Utils_1.Utils.stringToUnicode(node.value),
precedence: escodegen['Precedence']['Primary']
};
break;
}
}
identifierNodeController(node) {
let nodeValue = node['name'];
node['type'] = 'Literal';
node['value'] = nodeValue;
node['raw'] = `'${nodeValue}'`;
node['x-verbatim-property'] = {
content: Utils_1.Utils.stringToUnicode(nodeValue),
precedence: escodegen['Precedence']['Primary']
};
delete node['name'];
}
}
exports.ObjectExpressionObfuscator = ObjectExpressionObfuscator;
//# sourceMappingURL=ObjectExpressionObfuscator.js.map