|
@@ -4,14 +4,14 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
|
|
import * as estraverse from 'estraverse';
|
|
import * as estraverse from 'estraverse';
|
|
import * as ESTree from 'estree';
|
|
import * as ESTree from 'estree';
|
|
|
|
|
|
|
|
+import { TIdentifierObfuscatingReplacerFactory } from '../../types/container/node-transformers/TIdentifierObfuscatingReplacerFactory';
|
|
import { TNodeWithBlockStatement } from '../../types/node/TNodeWithBlockStatement';
|
|
import { TNodeWithBlockStatement } from '../../types/node/TNodeWithBlockStatement';
|
|
-import { TObfuscatingReplacerFactory } from '../../types/container/TObfuscatingReplacerFactory';
|
|
|
|
|
|
|
|
import { IOptions } from '../../interfaces/options/IOptions';
|
|
import { IOptions } from '../../interfaces/options/IOptions';
|
|
-import { IIdentifierReplacer } from '../../interfaces/node-transformers/obfuscating-transformers/IIdentifierReplacer';
|
|
|
|
|
|
+import { IIdentifierObfuscatingReplacer } from '../../interfaces/node-transformers/obfuscating-transformers/IIdentifierObfuscatingReplacer';
|
|
import { IVisitor } from '../../interfaces/IVisitor';
|
|
import { IVisitor } from '../../interfaces/IVisitor';
|
|
|
|
|
|
-import { ObfuscatingReplacers } from '../../enums/container/ObfuscatingReplacers';
|
|
|
|
|
|
+import { IdentifierObfuscatingReplacers } from "../../enums/container/node-transformers/IdentifierObfuscatingReplacers";
|
|
import { NodeType } from '../../enums/NodeType';
|
|
import { NodeType } from '../../enums/NodeType';
|
|
|
|
|
|
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
|
|
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
|
|
@@ -31,9 +31,9 @@ import { NodeUtils } from '../../node/NodeUtils';
|
|
@injectable()
|
|
@injectable()
|
|
export class VariableDeclarationTransformer extends AbstractNodeTransformer {
|
|
export class VariableDeclarationTransformer extends AbstractNodeTransformer {
|
|
/**
|
|
/**
|
|
- * @type {IIdentifierReplacer}
|
|
|
|
|
|
+ * @type {IIdentifierObfuscatingReplacer}
|
|
*/
|
|
*/
|
|
- private readonly identifierReplacer: IIdentifierReplacer;
|
|
|
|
|
|
+ private readonly identifierObfuscatingReplacer: IIdentifierObfuscatingReplacer;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @type {Map<ESTree.Node, ESTree.Identifier[]>}
|
|
* @type {Map<ESTree.Node, ESTree.Identifier[]>}
|
|
@@ -41,16 +41,19 @@ export class VariableDeclarationTransformer extends AbstractNodeTransformer {
|
|
private readonly replaceableIdentifiers: Map <ESTree.Node, ESTree.Identifier[]> = new Map();
|
|
private readonly replaceableIdentifiers: Map <ESTree.Node, ESTree.Identifier[]> = new Map();
|
|
|
|
|
|
/**
|
|
/**
|
|
- * @param obfuscatingReplacerFactory
|
|
|
|
|
|
+ * @param identifierObfuscatingReplacerFactory
|
|
* @param options
|
|
* @param options
|
|
*/
|
|
*/
|
|
constructor (
|
|
constructor (
|
|
- @inject(ServiceIdentifiers.Factory__IObfuscatingReplacer) obfuscatingReplacerFactory: TObfuscatingReplacerFactory,
|
|
|
|
|
|
+ @inject(ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)
|
|
|
|
+ identifierObfuscatingReplacerFactory: TIdentifierObfuscatingReplacerFactory,
|
|
@inject(ServiceIdentifiers.IOptions) options: IOptions
|
|
@inject(ServiceIdentifiers.IOptions) options: IOptions
|
|
) {
|
|
) {
|
|
super(options);
|
|
super(options);
|
|
|
|
|
|
- this.identifierReplacer = <IIdentifierReplacer>obfuscatingReplacerFactory(ObfuscatingReplacers.IdentifierReplacer);
|
|
|
|
|
|
+ this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(
|
|
|
|
+ IdentifierObfuscatingReplacers.IdentifierObfuscatingReplacer
|
|
|
|
+ );
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -108,7 +111,7 @@ export class VariableDeclarationTransformer extends AbstractNodeTransformer {
|
|
}
|
|
}
|
|
|
|
|
|
NodeUtils.typedTraverse(declarationNode.id, NodeType.Identifier, {
|
|
NodeUtils.typedTraverse(declarationNode.id, NodeType.Identifier, {
|
|
- enter: (node: ESTree.Identifier) => this.identifierReplacer.storeNames(node.name, nodeIdentifier)
|
|
|
|
|
|
+ enter: (node: ESTree.Identifier) => this.identifierObfuscatingReplacer.storeNames(node.name, nodeIdentifier)
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
}
|
|
@@ -121,7 +124,7 @@ export class VariableDeclarationTransformer extends AbstractNodeTransformer {
|
|
const cachedReplaceableIdentifiers: ESTree.Identifier[] = <ESTree.Identifier[]>this.replaceableIdentifiers.get(scopeNode);
|
|
const cachedReplaceableIdentifiers: ESTree.Identifier[] = <ESTree.Identifier[]>this.replaceableIdentifiers.get(scopeNode);
|
|
|
|
|
|
cachedReplaceableIdentifiers.forEach((replaceableIdentifier: ESTree.Identifier) => {
|
|
cachedReplaceableIdentifiers.forEach((replaceableIdentifier: ESTree.Identifier) => {
|
|
- const newReplaceableIdentifier: ESTree.Identifier = this.identifierReplacer.replace(replaceableIdentifier.name, nodeIdentifier);
|
|
|
|
|
|
+ const newReplaceableIdentifier: ESTree.Identifier = this.identifierObfuscatingReplacer.replace(replaceableIdentifier.name, nodeIdentifier);
|
|
|
|
|
|
replaceableIdentifier.name = newReplaceableIdentifier.name;
|
|
replaceableIdentifier.name = newReplaceableIdentifier.name;
|
|
});
|
|
});
|
|
@@ -137,7 +140,7 @@ export class VariableDeclarationTransformer extends AbstractNodeTransformer {
|
|
estraverse.replace(scopeNode, {
|
|
estraverse.replace(scopeNode, {
|
|
enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
|
|
enter: (node: ESTree.Node, parentNode: ESTree.Node): any => {
|
|
if (!node.obfuscatedNode && Node.isReplaceableIdentifierNode(node, parentNode)) {
|
|
if (!node.obfuscatedNode && Node.isReplaceableIdentifierNode(node, parentNode)) {
|
|
- const newIdentifier: ESTree.Identifier = this.identifierReplacer.replace(node.name, nodeIdentifier);
|
|
|
|
|
|
+ const newIdentifier: ESTree.Identifier = this.identifierObfuscatingReplacer.replace(node.name, nodeIdentifier);
|
|
const newIdentifierName: string = newIdentifier.name;
|
|
const newIdentifierName: string = newIdentifier.name;
|
|
|
|
|
|
if (node.name !== newIdentifierName) {
|
|
if (node.name !== newIdentifierName) {
|