Browse Source

nodeTransformers factory

sanex3339 8 years ago
parent
commit
cc6f422370

File diff suppressed because it is too large
+ 268 - 141
dist/index.js


+ 49 - 0
src/node-transformers/AbstractNodeTransformersFactory.ts

@@ -0,0 +1,49 @@
+import { TNodeTransformer } from '../types/TNodeTransformer';
+
+import { ICustomNode } from '../interfaces/custom-nodes/ICustomNode';
+import { INodeTransformer } from '../interfaces/INodeTransformer';
+import { INodeTransformersFactory } from '../interfaces/INodeTransformersFactory';
+import { IOptions } from '../interfaces/IOptions';
+
+export abstract class AbstractNodeTransformersFactory implements INodeTransformersFactory {
+    /**
+     * @type {Map<string, TNodeTransformer[]>}
+     */
+    protected abstract readonly nodeTransformers: Map <string, TNodeTransformer[]>;
+
+    /**
+     * @type Map <string, AbstractCustomNode>
+     */
+    protected readonly customNodes: Map <string, ICustomNode>;
+
+    /**
+     * @type {IOptions}
+     */
+    protected readonly options: IOptions;
+
+    /**
+     * @param customNodes
+     * @param options
+     */
+    constructor(customNodes: Map <string, ICustomNode>, options: IOptions) {
+        this.customNodes = customNodes;
+        this.options = options;
+    }
+
+    /**
+     * @param nodeType
+     * @returns {INodeTransformer[]}
+     */
+    public initializeNodeTransformers (nodeType: string): INodeTransformer[] {
+        const nodeTransformers: TNodeTransformer[] = this.nodeTransformers.get(nodeType) || [];
+        const instancesArray: INodeTransformer[] = [];
+
+        nodeTransformers.forEach((transformer: TNodeTransformer) => {
+            instancesArray.push(
+                new transformer(this.customNodes, this.options)
+            );
+        });
+
+        return instancesArray;
+    }
+}

+ 3 - 43
src/node-transformers/NodeControlFlowTransformersFactory.ts

@@ -1,56 +1,16 @@
 import { TNodeTransformer } from '../types/TNodeTransformer';
 
-import { ICustomNode } from '../interfaces/custom-nodes/ICustomNode';
-import { INodeTransformer } from '../interfaces/INodeTransformer';
-import { INodeTransformersFactory } from '../interfaces/INodeTransformersFactory';
-import { IOptions } from '../interfaces/IOptions';
-
 import { NodeType } from '../enums/NodeType';
 
 import { FunctionControlFlowTransformer } from './node-control-flow-transformers/FunctionControlFlowTransformer';
+import { AbstractNodeTransformersFactory } from './AbstractNodeTransformersFactory';
 
-export class NodeControlFlowTransformersFactory implements INodeTransformersFactory {
+export class NodeControlFlowTransformersFactory extends AbstractNodeTransformersFactory {
     /**
      * @type {Map<string, TNodeTransformer[]>}
      */
-    private static readonly nodeControlFlowChangers: Map <string, TNodeTransformer[]> = new Map <string, TNodeTransformer[]> ([
+    protected readonly nodeTransformers: Map <string, TNodeTransformer[]> = new Map <string, TNodeTransformer[]> ([
         [NodeType.FunctionDeclaration, [FunctionControlFlowTransformer]],
         [NodeType.FunctionExpression, [FunctionControlFlowTransformer]]
     ]);
-
-    /**
-     * @type Map <string, AbstractCustomNode>
-     */
-    protected customNodes: Map <string, ICustomNode>;
-
-    /**
-     * @type {IOptions}
-     */
-    protected options: IOptions;
-
-    /**
-     * @param customNodes
-     * @param options
-     */
-    constructor(customNodes: Map <string, ICustomNode>, options: IOptions) {
-        this.customNodes = customNodes;
-        this.options = options;
-    }
-
-    /**
-     * @param nodeType
-     * @returns {INodeTransformer[]}
-     */
-    public initializeNodeTransformers (nodeType: string): INodeTransformer[] {
-        const nodeObfuscators: TNodeTransformer[] = NodeControlFlowTransformersFactory.nodeControlFlowChangers.get(nodeType) || [];
-        const instancesArray: INodeTransformer[] = [];
-
-        nodeObfuscators.forEach((transformer: TNodeTransformer) => {
-            instancesArray.push(
-                new transformer(this.customNodes, this.options)
-            );
-        });
-
-        return instancesArray;
-    }
 }

+ 3 - 43
src/node-transformers/NodeObfuscatorsFactory.ts

@@ -1,10 +1,5 @@
 import { TNodeTransformer } from '../types/TNodeTransformer';
 
-import { ICustomNode } from '../interfaces/custom-nodes/ICustomNode';
-import { INodeTransformer } from '../interfaces/INodeTransformer';
-import { INodeTransformersFactory } from '../interfaces/INodeTransformersFactory';
-import { IOptions } from '../interfaces/IOptions';
-
 import { NodeType } from '../enums/NodeType';
 
 import { CatchClauseObfuscator } from './node-obfuscators/CatchClauseObfuscator';
@@ -16,12 +11,13 @@ import { MemberExpressionObfuscator } from './node-obfuscators/MemberExpressionO
 import { MethodDefinitionObfuscator } from './node-obfuscators/MethodDefinitionObfuscator';
 import { ObjectExpressionObfuscator } from './node-obfuscators/ObjectExpressionObfuscator';
 import { VariableDeclarationObfuscator } from './node-obfuscators/VariableDeclarationObfuscator';
+import { AbstractNodeTransformersFactory } from './AbstractNodeTransformersFactory';
 
-export class NodeObfuscatorsFactory implements INodeTransformersFactory {
+export class NodeObfuscatorsFactory extends AbstractNodeTransformersFactory {
     /**
      * @type {Map<string, TNodeTransformer[]>}
      */
-    private static readonly nodeObfuscators: Map <string, TNodeTransformer[]> = new Map <string, TNodeTransformer[]> ([
+    protected readonly nodeTransformers: Map <string, TNodeTransformer[]> = new Map <string, TNodeTransformer[]> ([
         [NodeType.ArrowFunctionExpression, [FunctionObfuscator]],
         [NodeType.ClassDeclaration, [FunctionDeclarationObfuscator]],
         [NodeType.CatchClause, [CatchClauseObfuscator]],
@@ -37,40 +33,4 @@ export class NodeObfuscatorsFactory implements INodeTransformersFactory {
         [NodeType.LabeledStatement, [LabeledStatementObfuscator]],
         [NodeType.Literal, [LiteralObfuscator]]
     ]);
-
-    /**
-     * @type Map <string, AbstractCustomNode>
-     */
-    protected customNodes: Map <string, ICustomNode>;
-
-    /**
-     * @type {IOptions}
-     */
-    protected options: IOptions;
-
-    /**
-     * @param customNodes
-     * @param options
-     */
-    constructor(customNodes: Map <string, ICustomNode>, options: IOptions) {
-        this.customNodes = customNodes;
-        this.options = options;
-    }
-
-    /**
-     * @param nodeType
-     * @returns {INodeTransformer[]}
-     */
-    public initializeNodeTransformers (nodeType: string): INodeTransformer[] {
-        const nodeObfuscators: TNodeTransformer[] = NodeObfuscatorsFactory.nodeObfuscators.get(nodeType) || [];
-        const instancesArray: INodeTransformer[] = [];
-
-        nodeObfuscators.forEach((transformer: TNodeTransformer) => {
-            instancesArray.push(
-                new transformer(this.customNodes, this.options)
-            );
-        });
-
-        return instancesArray;
-    }
 }

Some files were not shown because too many files changed in this diff