123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- "use strict";
- const escodegen = require('escodegen');
- const estraverse = require('estraverse');
- const NodeType_1 = require("../enums/NodeType");
- const NodeObfuscator_1 = require('./NodeObfuscator');
- const NodeUtils_1 = require("../NodeUtils");
- class MemberExpressionObfuscator extends NodeObfuscator_1.NodeObfuscator {
- obfuscateNode(memberExpressionNode) {
- estraverse.replace(memberExpressionNode.property, {
- leave: (node, parentNode) => {
- if (NodeUtils_1.NodeUtils.isLiteralNode(node)) {
- this.literalNodeController(node);
- return;
- }
- if (NodeUtils_1.NodeUtils.isIdentifierNode(node)) {
- if (memberExpressionNode.computed) {
- return;
- }
- memberExpressionNode.computed = true;
- this.identifierNodeController(node);
- }
- }
- });
- }
- identifierNodeController(node) {
- let nodeValue = node.name, literalNode = {
- raw: `'${nodeValue}'`,
- 'x-verbatim-property': {
- content: this.replaceLiteralStringByArrayElement(nodeValue),
- precedence: escodegen.Precedence.Primary
- },
- type: NodeType_1.NodeType.Literal,
- value: nodeValue
- };
- delete node.name;
- Object.assign(node, literalNode);
- }
- literalNodeController(node) {
- switch (typeof node.value) {
- case 'string':
- if (node['x-verbatim-property']) {
- break;
- }
- node['x-verbatim-property'] = {
- content: this.replaceLiteralStringByArrayElement(node.value),
- precedence: escodegen.Precedence.Primary
- };
- break;
- default:
- break;
- }
- }
- }
- exports.MemberExpressionObfuscator = MemberExpressionObfuscator;
|