voluptasvelit
Version:
JavaScript obfuscator
52 lines (43 loc) • 1.75 kB
text/typescript
import { inject, injectable } from 'inversify';
import { ServiceIdentifiers } from '../../../container/ServiceIdentifiers';
import * as ESTree from 'estree';
import { IOptions } from '../../../interfaces/options/IOptions';
import { IRandomGenerator } from '../../../interfaces/utils/IRandomGenerator';
import { AbstractPropertiesExtractor } from './AbstractPropertiesExtractor';
()
export class AssignmentExpressionPropertiesExtractor extends AbstractPropertiesExtractor {
/**
* @param {IRandomGenerator} randomGenerator
* @param {IOptions} options
*/
constructor (
(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator,
(ServiceIdentifiers.IOptions) options: IOptions
) {
super(randomGenerator, options);
}
/**
* @param {ObjectExpression} objectExpressionNode
* @param {AssignmentExpression} hostNode
* @returns {Node}
*/
public extract (
objectExpressionNode: ESTree.ObjectExpression,
hostNode: ESTree.AssignmentExpression
): ESTree.Node {
const hostParentNode: ESTree.Node | undefined = hostNode.parentNode;
const leftNode: ESTree.MemberExpression | ESTree.Pattern = hostNode.left;
// left node shouldn't be as Pattern node
if (AbstractPropertiesExtractor.isProhibitedPattern(leftNode)) {
return objectExpressionNode;
}
// left node shouldn't be as Pattern node
if (hostParentNode && AbstractPropertiesExtractor.isProhibitedHostParent(hostParentNode)) {
return objectExpressionNode;
}
return this.transformObjectExpressionNode(
objectExpressionNode,
leftNode
);
}
}