Forráskód Böngészése

extract few transformers to new `converting-transformers` subtype

sanex3339 8 éve
szülő
commit
758277573a
20 módosított fájl, 459 hozzáadás és 379 törlés
  1. 423 313
      dist/index.js
  2. 1 1
      package.json
  3. 10 7
      src/Obfuscator.ts
  4. 18 17
      src/container/modules/node-transformers/NodeTransformersModule.ts
  5. 0 11
      src/node-transformers/converting-transformers/MemberExpressionTransformer.ts
  6. 0 11
      src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts
  7. 0 12
      src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts
  8. 4 4
      src/node-transformers/obfuscation-transformers/ObjectExpressionTransformer.ts
  9. 0 0
      test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts
  10. 0 0
      test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/dot-notation-call.js
  11. 0 0
      test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/square-brackets-call.js
  12. 0 0
      test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/square-brackets-with-identifier-call.js
  13. 0 0
      test/functional-tests/node-transformers/converting-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts
  14. 0 0
      test/functional-tests/node-transformers/converting-transformers/method-definition-transformer/fixtures/input.js
  15. 0 0
      test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/TemplateLiteralTransformer.spec.ts
  16. 0 0
      test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/expression-only.js
  17. 0 0
      test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/literal-inside-expression.js
  18. 0 0
      test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/multiple-expressions.js
  19. 0 0
      test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/simple-input.js
  20. 3 3
      test/index.spec.ts

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 423 - 313
dist/index.js


+ 1 - 1
package.json

@@ -44,7 +44,7 @@
     "@types/esprima": "2.1.33",
     "@types/estraverse": "0.0.6",
     "@types/estree": "0.0.34",
-    "@types/lodash": "4.14.48",
+    "@types/lodash": "4.14.50",
     "@types/mkdirp": "0.3.29",
     "@types/mocha": "2.2.37",
     "@types/node": "7.0.0",

+ 10 - 7
src/Obfuscator.ts

@@ -29,7 +29,7 @@ export class Obfuscator implements IObfuscator {
     /**
      * @type {Map<string, NodeTransformers[]>}
      */
-    private static readonly nodeControlFlowTransformersMap: Map <string, NodeTransformers[]> = new Map([
+    private static readonly controlFlowTransformersMap: Map <string, NodeTransformers[]> = new Map([
         [NodeType.BlockStatement, [NodeTransformers.BlockStatementControlFlowTransformer]],
         [NodeType.FunctionDeclaration, [NodeTransformers.FunctionControlFlowTransformer]],
         [NodeType.FunctionExpression, [NodeTransformers.FunctionControlFlowTransformer]]
@@ -38,7 +38,13 @@ export class Obfuscator implements IObfuscator {
     /**
      * @type {Map<string, NodeTransformers[]>}
      */
-    private static readonly nodeObfuscatorsMap: Map <string, NodeTransformers[]> = new Map([
+    private static readonly nodeTransformersMap: Map <string, NodeTransformers[]> = new Map([
+        // converting transformers
+        [NodeType.MemberExpression, [NodeTransformers.MemberExpressionTransformer]],
+        [NodeType.MethodDefinition, [NodeTransformers.MethodDefinitionTransformer]],
+        [NodeType.TemplateLiteral, [NodeTransformers.TemplateLiteralTransformer]],
+
+        // obfuscation transformers
         [NodeType.ArrowFunctionExpression, [NodeTransformers.FunctionTransformer]],
         [NodeType.ClassDeclaration, [NodeTransformers.FunctionDeclarationTransformer]],
         [NodeType.CatchClause, [NodeTransformers.CatchClauseTransformer]],
@@ -47,12 +53,9 @@ export class Obfuscator implements IObfuscator {
             NodeTransformers.FunctionTransformer
         ]],
         [NodeType.FunctionExpression, [NodeTransformers.FunctionTransformer]],
-        [NodeType.MemberExpression, [NodeTransformers.MemberExpressionTransformer]],
-        [NodeType.MethodDefinition, [NodeTransformers.MethodDefinitionTransformer]],
         [NodeType.ObjectExpression, [NodeTransformers.ObjectExpressionTransformer]],
         [NodeType.VariableDeclaration, [NodeTransformers.VariableDeclarationTransformer]],
         [NodeType.LabeledStatement, [NodeTransformers.LabeledStatementTransformer]],
-        [NodeType.TemplateLiteral, [NodeTransformers.TemplateLiteralTransformer]],
         [NodeType.Literal, [NodeTransformers.LiteralTransformer]] // should be latest in the chain of obfuscators
     ]);
 
@@ -134,7 +137,7 @@ export class Obfuscator implements IObfuscator {
             astTree = this.transformAstTree(
                 astTree,
                 VisitorDirection.leave,
-                this.nodeTransformersFactory(Obfuscator.nodeControlFlowTransformersMap)
+                this.nodeTransformersFactory(Obfuscator.controlFlowTransformersMap)
             );
         }
 
@@ -142,7 +145,7 @@ export class Obfuscator implements IObfuscator {
         astTree = this.transformAstTree(
             astTree,
             VisitorDirection.enter,
-            this.nodeTransformersFactory(Obfuscator.nodeObfuscatorsMap)
+            this.nodeTransformersFactory(Obfuscator.nodeTransformersMap)
         );
 
         this.obfuscationEventEmitter.emit(ObfuscationEvents.AfterObfuscation, astTree, stackTraceData);

+ 18 - 17
src/container/modules/node-transformers/NodeTransformersModule.ts

@@ -13,14 +13,14 @@ import { FunctionDeclarationTransformer } from '../../../node-transformers/obfus
 import { FunctionTransformer } from '../../../node-transformers/obfuscation-transformers/FunctionTransformer';
 import { LabeledStatementTransformer } from '../../../node-transformers/obfuscation-transformers/LabeledStatementTransformer';
 import { LiteralTransformer } from '../../../node-transformers/obfuscation-transformers/LiteralTransformer';
-import { MemberExpressionTransformer } from '../../../node-transformers/obfuscation-transformers/MemberExpressionTransformer';
-import { MethodDefinitionTransformer } from '../../../node-transformers/obfuscation-transformers/MethodDefinitionTransformer';
+import { MemberExpressionTransformer } from '../../../node-transformers/converting-transformers/MemberExpressionTransformer';
+import { MethodDefinitionTransformer } from '../../../node-transformers/converting-transformers/MethodDefinitionTransformer';
 import { ObjectExpressionTransformer } from '../../../node-transformers/obfuscation-transformers/ObjectExpressionTransformer';
-import { TemplateLiteralTransformer } from '../../../node-transformers/obfuscation-transformers/TemplateLiteralTransformer';
+import { TemplateLiteralTransformer } from '../../../node-transformers/converting-transformers/TemplateLiteralTransformer';
 import { VariableDeclarationTransformer } from '../../../node-transformers/obfuscation-transformers/VariableDeclarationTransformer';
 
 export const nodeTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
-    // node control flow transformers
+    // control flow transformers
     bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
         .to(BlockStatementControlFlowTransformer)
         .whenTargetNamed(NodeTransformers.BlockStatementControlFlowTransformer);
@@ -29,7 +29,20 @@ export const nodeTransformersModule: interfaces.ContainerModule = new ContainerM
         .to(FunctionControlFlowTransformer)
         .whenTargetNamed(NodeTransformers.FunctionControlFlowTransformer);
 
-    // node obfuscators
+    // converting transformers
+    bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
+        .to(MemberExpressionTransformer)
+        .whenTargetNamed(NodeTransformers.MemberExpressionTransformer);
+
+    bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
+        .to(MethodDefinitionTransformer)
+        .whenTargetNamed(NodeTransformers.MethodDefinitionTransformer);
+
+    bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
+        .to(TemplateLiteralTransformer)
+        .whenTargetNamed(NodeTransformers.TemplateLiteralTransformer);
+
+    // obfuscation transformers
     bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
         .to(CatchClauseTransformer)
         .whenTargetNamed(NodeTransformers.CatchClauseTransformer);
@@ -50,22 +63,10 @@ export const nodeTransformersModule: interfaces.ContainerModule = new ContainerM
         .to(LiteralTransformer)
         .whenTargetNamed(NodeTransformers.LiteralTransformer);
 
-    bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
-        .to(MemberExpressionTransformer)
-        .whenTargetNamed(NodeTransformers.MemberExpressionTransformer);
-
-    bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
-        .to(MethodDefinitionTransformer)
-        .whenTargetNamed(NodeTransformers.MethodDefinitionTransformer);
-
     bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
         .to(ObjectExpressionTransformer)
         .whenTargetNamed(NodeTransformers.ObjectExpressionTransformer);
 
-    bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
-        .to(TemplateLiteralTransformer)
-        .whenTargetNamed(NodeTransformers.TemplateLiteralTransformer);
-
     bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
         .to(VariableDeclarationTransformer)
         .whenTargetNamed(NodeTransformers.VariableDeclarationTransformer);

+ 0 - 11
src/node-transformers/obfuscation-transformers/MemberExpressionTransformer.ts → src/node-transformers/converting-transformers/MemberExpressionTransformer.ts

@@ -4,9 +4,7 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
 import * as ESTree from 'estree';
 
 import { IOptions } from '../../interfaces/options/IOptions';
-import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfuscationReplacer';
 
-import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers';
 import { NodeType } from '../../enums/NodeType';
 
 import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
@@ -15,21 +13,12 @@ import { Node } from '../../node/Node';
 @injectable()
 export class MemberExpressionTransformer extends AbstractNodeTransformer {
     /**
-     * @type {IObfuscationReplacer}
-     */
-    private readonly stringLiteralReplacer: IObfuscationReplacer;
-
-    /**
-     * @param replacersFactory
      * @param options
      */
     constructor (
-        @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer,
         @inject(ServiceIdentifiers.IOptions) options: IOptions
     ) {
         super(options);
-
-        this.stringLiteralReplacer = replacersFactory(NodeObfuscatorsReplacers.StringLiteralReplacer);
     }
 
     /**

+ 0 - 11
src/node-transformers/obfuscation-transformers/MethodDefinitionTransformer.ts → src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts

@@ -4,9 +4,7 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
 import * as ESTree from 'estree';
 
 import { IOptions } from '../../interfaces/options/IOptions';
-import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfuscationReplacer';
 
-import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers';
 import { NodeType } from '../../enums/NodeType';
 
 import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
@@ -29,21 +27,12 @@ export class MethodDefinitionTransformer extends AbstractNodeTransformer {
     private static readonly ignoredNames: string[] = ['constructor'];
 
     /**
-     * @type {IObfuscationReplacer}
-     */
-    private readonly stringLiteralReplacer: IObfuscationReplacer;
-
-    /**
-     * @param replacersFactory
      * @param options
      */
     constructor (
-        @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer,
         @inject(ServiceIdentifiers.IOptions) options: IOptions
     ) {
         super(options);
-
-        this.stringLiteralReplacer = replacersFactory(NodeObfuscatorsReplacers.StringLiteralReplacer);
     }
 
     /**

+ 0 - 12
src/node-transformers/obfuscation-transformers/TemplateLiteralTransformer.ts → src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts

@@ -4,9 +4,6 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
 import * as ESTree from 'estree';
 
 import { IOptions } from '../../interfaces/options/IOptions';
-import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfuscationReplacer';
-
-import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers';
 
 import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
 import { Node } from '../../node/Node';
@@ -19,21 +16,12 @@ import { Nodes } from '../../node/Nodes';
 @injectable()
 export class TemplateLiteralTransformer extends AbstractNodeTransformer {
     /**
-     * @type {(replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer}
-     */
-    private readonly replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer;
-
-    /**
-     * @param replacersFactory
      * @param options
      */
     constructor (
-        @inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer,
         @inject(ServiceIdentifiers.IOptions) options: IOptions
     ) {
         super(options);
-
-        this.replacersFactory = replacersFactory;
     }
 
     /**

+ 4 - 4
src/node-transformers/obfuscation-transformers/ObjectExpressionTransformer.ts

@@ -37,7 +37,7 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer {
      * @param node
      * @returns {ESTree.Literal}
      */
-    private static obfuscateLiteralPropertyKey (node: ESTree.Literal): ESTree.Literal {
+    private static transformLiteralPropertyKey (node: ESTree.Literal): ESTree.Literal {
         if (typeof node.value === 'string' && !node['x-verbatim-property']) {
             node['x-verbatim-property'] = {
                 content : `'${Utils.stringToUnicodeEscapeSequence(node.value)}'`,
@@ -52,7 +52,7 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer {
      * @param node
      * @returns {ESTree.Literal}
      */
-    private static obfuscateIdentifierPropertyKey (node: ESTree.Identifier): ESTree.Literal {
+    private static transformIdentifierPropertyKey (node: ESTree.Identifier): ESTree.Literal {
         return {
             type: NodeType.Literal,
             value: node.name,
@@ -76,9 +76,9 @@ export class ObjectExpressionTransformer extends AbstractNodeTransformer {
                 }
 
                 if (Node.isLiteralNode(property.key)) {
-                    property.key = ObjectExpressionTransformer.obfuscateLiteralPropertyKey(property.key);
+                    property.key = ObjectExpressionTransformer.transformLiteralPropertyKey(property.key);
                 } else if (Node.isIdentifierNode(property.key)) {
-                    property.key = ObjectExpressionTransformer.obfuscateIdentifierPropertyKey(property.key);
+                    property.key = ObjectExpressionTransformer.transformIdentifierPropertyKey(property.key);
                 }
             });
 

+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts → test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/MemberExpressionTransformer.spec.ts


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/fixtures/dot-notation-call.js → test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/dot-notation-call.js


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/fixtures/square-brackets-call.js → test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/square-brackets-call.js


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/fixtures/square-brackets-with-identifier-call.js → test/functional-tests/node-transformers/converting-transformers/member-expression-transformer/fixtures/square-brackets-with-identifier-call.js


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts → test/functional-tests/node-transformers/converting-transformers/method-definition-transformer/MethodDefinitionTransformer.spec.ts


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/fixtures/input.js → test/functional-tests/node-transformers/converting-transformers/method-definition-transformer/fixtures/input.js


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/TemplateLiteralTransformer.spec.ts → test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/TemplateLiteralTransformer.spec.ts


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/expression-only.js → test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/expression-only.js


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/literal-inside-expression.js → test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/literal-inside-expression.js


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/multiple-expressions.js → test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/multiple-expressions.js


+ 0 - 0
test/functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/fixtures/simple-input.js → test/functional-tests/node-transformers/converting-transformers/template-literal-transformer/fixtures/simple-input.js


+ 3 - 3
test/index.spec.ts

@@ -35,15 +35,15 @@ import './functional-tests/node-transformers/control-flow-transformers/function-
 import './functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/binary-expression-control-flow-replacer/BinaryExpressionControlFlowReplacer.spec';
 import './functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/call-expression-control-flow-replacer/CallExpressionControlFlowReplacer.spec';
 import './functional-tests/node-transformers/control-flow-transformers/control-flow-replacers/logical-expression-control-flow-replacer/LogicalExpressionControlFlowReplacer.spec';
+import './functional-tests/node-transformers/converting-transformers/member-expression-transformer/MemberExpressionTransformer.spec';
+import './functional-tests/node-transformers/converting-transformers/method-definition-transformer/MethodDefinitionTransformer.spec';
+import './functional-tests/node-transformers/converting-transformers/template-literal-transformer/TemplateLiteralTransformer.spec';
 import './functional-tests/node-transformers/obfuscation-transformers/catch-clause-transformer/CatchClauseTransformer.spec';
 import './functional-tests/node-transformers/obfuscation-transformers/function-declaration-transformer/FunctionDeclarationTransformer.spec';
 import './functional-tests/node-transformers/obfuscation-transformers/function-transformer/FunctionTransformer.spec';
 import './functional-tests/node-transformers/obfuscation-transformers/labeled-statement-transformer/LabeledStatementTransformer.spec';
 import './functional-tests/node-transformers/obfuscation-transformers/literal-transformer/LiteralTransformer.spec';
-import './functional-tests/node-transformers/obfuscation-transformers/member-expression-transformer/MemberExpressionTransformer.spec';
-import './functional-tests/node-transformers/obfuscation-transformers/method-definition-transformer/MethodDefinitionTransformer.spec';
 import './functional-tests/node-transformers/obfuscation-transformers/object-expression-transformer/ObjectExpressionTransformer.spec';
-import './functional-tests/node-transformers/obfuscation-transformers/template-literal-transformer/TemplateLiteralTransformer.spec';
 import './functional-tests/node-transformers/obfuscation-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec';
 import './functional-tests/stack-trace-analyzer/stack-trace-analyzer/StackTraceAnalyzer.spec';
 import './functional-tests/templates/custom-nodes/domain-lock-nodes/DomainLockNodeTemplate.spec';

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott