All files / webpack:/src/node-obfuscators LiteralObfuscator.ts

83.33% Statements 10/12
63.64% Branches 7/11
100% Functions 1/1
81.82% Lines 9/11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56          178x                     178x               178x       178x         178x           21x   21x       77x   77x                
import * as escodegen from 'escodegen';
 
import { ILiteralNode } from "../interfaces/nodes/ILiteralNode";
 
import { INode } from "../interfaces/nodes/INode";
import { NodeObfuscator } from './NodeObfuscator';I
import { Nodes } from "../Nodes";
 
export class LiteralObfuscator extends NodeObfuscator {
    /**
     * @param literalNode
     * @param parentNode
     */
    public obfuscateNode (literalNode: ILiteralNode, parentNode: INode): void {
        if (Nodes.isPropertyNode(parentNode) && parentNode.key === literalNode) {
            return;
        }
 
        if (literalNode['x-verbatim-property']) {
            return;
        }
 
        let content: string;
 
        switch (Itypeof literalNode.value) {
            case 'boolean':
                content = this.replaceLiteralBooleanWithJSFuck(<boolean>literalNode.value);
 
                break;I
 
            case 'number':
                content = this.replaceLiteralNumberWithHexadecimalValue(<number>literalNode.value);
 
                break;
 
 
            case 'string':
                content = this.replaceLiteralValueWithUnicodeValue(<string>literalNode.value);
 
                break;
 
            default:
                return;
        }
 
        literalNode['x-verbatim-property'] = {
            content : content,
            precedence: escodegen.Precedence.Primary
        };
    }
}
 
 
 
// WEBPACK FOOTER //
// ./src/node-obfuscators/LiteralObfuscator.ts