123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { inject, injectable, } from 'inversify';
- import { ServiceIdentifiers } from '../../../../container/ServiceIdentifiers';
- import * as ESTree from 'estree';
- import { IOptions } from '../../../../interfaces/options/IOptions';
- import { AbstractObfuscatingReplacer } from '../AbstractObfuscatingReplacer';
- import { NodeFactory } from '../../../../node/NodeFactory';
- @injectable()
- export class BooleanLiteralObfuscatingReplacer extends AbstractObfuscatingReplacer {
- /**
- * @param {IOptions} options
- */
- public constructor (
- @inject(ServiceIdentifiers.IOptions) options: IOptions
- ) {
- super(options);
- }
- /**
- * @return {ESTree.UnaryExpression}
- */
- private static getTrueUnaryExpressionNode (): ESTree.UnaryExpression {
- return NodeFactory.unaryExpressionNode(
- '!',
- BooleanLiteralObfuscatingReplacer.getFalseUnaryExpressionNode()
- );
- }
- /**
- * @return {ESTree.UnaryExpression}
- */
- private static getFalseUnaryExpressionNode (): ESTree.UnaryExpression {
- return NodeFactory.unaryExpressionNode(
- '!',
- NodeFactory.arrayExpressionNode()
- );
- }
- /**
- * @param {SimpleLiteral} literalNode
- * @returns {Node}
- */
- public replace (literalNode: ESTree.SimpleLiteral): ESTree.Node {
- const literalValue: ESTree.SimpleLiteral['value'] = literalNode.value;
- if (typeof literalValue !== 'boolean') {
- throw new Error('`BooleanLiteralObfuscatingReplacer` should accept only literals with `boolean` value');
- }
- return literalValue
- ? BooleanLiteralObfuscatingReplacer.getTrueUnaryExpressionNode()
- : BooleanLiteralObfuscatingReplacer.getFalseUnaryExpressionNode();
- }
- }
|