Jelajahi Sumber

Added more tests, renamed some interfaces and classes

sanex3339 5 tahun lalu
induk
melakukan
f333b9d425
21 mengubah file dengan 120 tambahan dan 26850 penghapusan
  1. 0 0
      dist/index.browser.js
  2. 0 13711
      dist/index.cli.js
  3. 0 13070
      dist/index.js
  4. 2 2
      src/container/ServiceIdentifiers.ts
  5. 3 3
      src/container/modules/custom-nodes/CustomNodesModule.ts
  6. 12 12
      src/container/modules/node-transformers/ConvertingTransformersModule.ts
  7. 1 1
      src/custom-nodes/object-expression-keys-transformer-nodes/ObjectExpressionVariableDeclarationHostNode.ts
  8. 2 2
      src/enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode.ts
  9. 1 1
      src/enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor.ts
  10. 0 3
      src/enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractorResult.ts
  11. 4 4
      src/interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractor.ts
  12. 18 0
      src/interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractorResult.ts
  13. 10 10
      src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts
  14. 7 7
      src/node-transformers/converting-transformers/object-expression-extractors/BasePropertiesExtractor.ts
  15. 11 11
      src/node-transformers/converting-transformers/object-expression-extractors/ObjectExpressionToVariableDeclarationExtractor.ts
  16. 6 0
      src/types/container/node-transformers/TObjectExpressionExtractorFactory.ts
  17. 0 5
      src/types/container/node-transformers/TPropertiesExtractorFactory.ts
  18. 0 7
      src/types/node-transformers/TPropertiesExtractorResult.ts
  19. 30 0
      test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/ObjectExpressionKeysTransformer.spec.ts
  20. 7 0
      test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/computed-key-member-expression.js
  21. 6 1
      test/functional-tests/node-transformers/converting-transformers/split-string-transformer/SplitStringTransformer.spec.ts

File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.browser.js


File diff ditekan karena terlalu besar
+ 0 - 13711
dist/index.cli.js


File diff ditekan karena terlalu besar
+ 0 - 13070
dist/index.js


+ 2 - 2
src/container/ServiceIdentifiers.ts

@@ -12,7 +12,7 @@ export enum ServiceIdentifiers {
     Factory__IObfuscatedCode = 'Factory<IObfuscatedCode>',
     Factory__IObfuscatingReplacer = 'Factory<IObfuscatingReplacer>',
     Factory__IObjectExpressionKeysTransformerCustomNode = 'Factory<IObjectExpressionKeysTransformerCustomNode>',
-    Factory__IPropertiesExtractor = 'Factory<IPropertiesExtractor>',
+    Factory__IObjectExpressionExtractor = 'Factory<IObjectExpressionExtractor>',
     Factory__TControlFlowStorage = 'Factory<TControlFlowStorage>',
     IArrayUtils = 'IArrayUtils',
     ICalleeDataExtractor = 'ICalleeDataExtractor',
@@ -37,7 +37,7 @@ export enum ServiceIdentifiers {
     IOptionsNormalizer = 'IOptionsNormalizer',
     IObfuscatingReplacer = 'IObfuscatingReplacer',
     IPrevailingKindOfVariablesAnalyzer = 'IPrevailingKindOfVariablesAnalyzer',
-    IPropertiesExtractor = 'IPropertiesExtractor',
+    IObjectExpressionExtractor = 'IObjectExpressionExtractor',
     IRandomGenerator = 'IRandomGenerator',
     ISourceCode = 'ISourceCode',
     ISourceMapCorrector = 'ISourceMapCorrector',

+ 3 - 3
src/container/modules/custom-nodes/CustomNodesModule.ts

@@ -18,7 +18,7 @@ import { DomainLockCustomNodeGroup } from '../../../custom-nodes/domain-lock-nod
 import { SelfDefendingCustomNodeGroup } from '../../../custom-nodes/self-defending-nodes/group/SelfDefendingCustomNodeGroup';
 import { StringArrayCustomNodeGroup } from '../../../custom-nodes/string-array-nodes/group/StringArrayCustomNodeGroup';
 
-import { BasePropertiesExtractorObjectExpressionHostNode } from '../../../custom-nodes/object-expression-keys-transformer-nodes/BasePropertiesExtractorObjectExpressionHostNode';
+import { ObjectExpressionVariableDeclarationHostNode } from '../../../custom-nodes/object-expression-keys-transformer-nodes/ObjectExpressionVariableDeclarationHostNode';
 import { BinaryExpressionFunctionNode } from '../../../custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode';
 import { BlockStatementControlFlowFlatteningNode } from '../../../custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode';
 import { BlockStatementDeadCodeInjectionNode } from '../../../custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode';
@@ -127,8 +127,8 @@ export const customNodesModule: interfaces.ContainerModule = new ContainerModule
 
     // object expression keys transformer nodes
     bind<interfaces.Newable<ICustomNode>>(ServiceIdentifiers.Newable__ICustomNode)
-        .toConstructor(BasePropertiesExtractorObjectExpressionHostNode)
-        .whenTargetNamed(ObjectExpressionKeysTransformerCustomNode.BasePropertiesExtractorObjectExpressionHostNode);
+        .toConstructor(ObjectExpressionVariableDeclarationHostNode)
+        .whenTargetNamed(ObjectExpressionKeysTransformerCustomNode.ObjectExpressionVariableDeclarationHostNode);
 
     // node groups
     bind<ICustomNodeGroup>(ServiceIdentifiers.ICustomNodeGroup)

+ 12 - 12
src/container/modules/node-transformers/ConvertingTransformersModule.ts

@@ -3,10 +3,10 @@ import { InversifyContainerFacade } from '../../InversifyContainerFacade';
 import { ServiceIdentifiers } from '../../ServiceIdentifiers';
 
 import { INodeTransformer } from '../../../interfaces/node-transformers/INodeTransformer';
-import { IPropertiesExtractor } from '../../../interfaces/node-transformers/converting-transformers/properties-extractors/IPropertiesExtractor';
+import { IObjectExpressionExtractor } from '../../../interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractor';
 
 import { NodeTransformer } from '../../../enums/node-transformers/NodeTransformer';
-import { PropertiesExtractor } from '../../../enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor';
+import { ObjectExpressionExtractor } from '../../../enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor';
 
 import { ObjectExpressionToVariableDeclarationExtractor } from '../../../node-transformers/converting-transformers/object-expression-extractors/ObjectExpressionToVariableDeclarationExtractor';
 import { MemberExpressionTransformer } from '../../../node-transformers/converting-transformers/MemberExpressionTransformer';
@@ -43,19 +43,19 @@ export const convertingTransformersModule: interfaces.ContainerModule = new Cont
         .to(TemplateLiteralTransformer)
         .whenTargetNamed(NodeTransformer.TemplateLiteralTransformer);
 
-    // properties extractors
-    bind<IPropertiesExtractor>(ServiceIdentifiers.IPropertiesExtractor)
+    // object expression extractors
+    bind<IObjectExpressionExtractor>(ServiceIdentifiers.IObjectExpressionExtractor)
         .to(ObjectExpressionToVariableDeclarationExtractor)
-        .whenTargetNamed(PropertiesExtractor.ObjectExpressionToVariableDeclarationExtractor);
+        .whenTargetNamed(ObjectExpressionExtractor.ObjectExpressionToVariableDeclarationExtractor);
 
-    bind<IPropertiesExtractor>(ServiceIdentifiers.IPropertiesExtractor)
+    bind<IObjectExpressionExtractor>(ServiceIdentifiers.IObjectExpressionExtractor)
         .to(BasePropertiesExtractor)
-        .whenTargetNamed(PropertiesExtractor.BasePropertiesExtractor);
+        .whenTargetNamed(ObjectExpressionExtractor.BasePropertiesExtractor);
 
-    // properties extractor factory
-    bind<IPropertiesExtractor>(ServiceIdentifiers.Factory__IPropertiesExtractor)
-        .toFactory<IPropertiesExtractor>(InversifyContainerFacade
-            .getCacheFactory<PropertiesExtractor, IPropertiesExtractor>(
-                ServiceIdentifiers.IPropertiesExtractor
+    // object expression extractor factory
+    bind<IObjectExpressionExtractor>(ServiceIdentifiers.Factory__IObjectExpressionExtractor)
+        .toFactory<IObjectExpressionExtractor>(InversifyContainerFacade
+            .getCacheFactory<ObjectExpressionExtractor, IObjectExpressionExtractor>(
+                ServiceIdentifiers.IObjectExpressionExtractor
             ));
 });

+ 1 - 1
src/custom-nodes/object-expression-keys-transformer-nodes/BasePropertiesExtractorObjectExpressionHostNode.ts → src/custom-nodes/object-expression-keys-transformer-nodes/ObjectExpressionVariableDeclarationHostNode.ts

@@ -14,7 +14,7 @@ import { AbstractCustomNode } from '../AbstractCustomNode';
 import { NodeFactory } from '../../node/NodeFactory';
 
 @injectable()
-export class BasePropertiesExtractorObjectExpressionHostNode extends AbstractCustomNode {
+export class ObjectExpressionVariableDeclarationHostNode extends AbstractCustomNode {
     /**
      * @ type {Property}
      */

+ 2 - 2
src/enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode.ts

@@ -1,4 +1,4 @@
 export enum ObjectExpressionKeysTransformerCustomNode {
-    BasePropertiesExtractorObjectExpressionHostNode =
-        'BasePropertiesExtractorObjectExpressionHostNode'
+    ObjectExpressionVariableDeclarationHostNode =
+        'ObjectExpressionVariableDeclarationHostNode'
 }

+ 1 - 1
src/enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor.ts → src/enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor.ts

@@ -1,4 +1,4 @@
-export enum PropertiesExtractor {
+export enum ObjectExpressionExtractor {
     BasePropertiesExtractor = 'BasePropertiesExtractor',
     ObjectExpressionToVariableDeclarationExtractor = 'ObjectExpressionToVariableDeclarationExtractor'
 }

+ 0 - 3
src/enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractorResult.ts

@@ -1,3 +0,0 @@
-export enum PropertiesExtractorFlag {
-    Skip = 'skip'
-}

+ 4 - 4
src/interfaces/node-transformers/converting-transformers/properties-extractors/IPropertiesExtractor.ts → src/interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractor.ts

@@ -1,15 +1,15 @@
 import * as ESTree from 'estree';
 
-import { TPropertiesExtractorResult } from '../../../../types/node-transformers/TPropertiesExtractorResult';
+import { IObjectExpressionExtractorResult } from './IObjectExpressionExtractorResult';
 
-export interface IPropertiesExtractor {
+export interface IObjectExpressionExtractor {
     /**
      * @param {ObjectExpression} objectExpressionNode
      * @param {Statement} hostStatement
-     * @returns {TPropertiesExtractorResult}
+     * @returns {IObjectExpressionExtractorResult}
      */
     extract (
         objectExpressionNode: ESTree.ObjectExpression,
         hostStatement: ESTree.Statement
-    ): TPropertiesExtractorResult;
+    ): IObjectExpressionExtractorResult;
 }

+ 18 - 0
src/interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractorResult.ts

@@ -0,0 +1,18 @@
+import * as ESTree from 'estree';
+
+export interface IObjectExpressionExtractorResult {
+    /**
+     * @type {Node}
+     */
+    nodeToReplace: ESTree.Node;
+
+    /**
+     * @type {Statement}
+     */
+    objectExpressionHostStatement: ESTree.Statement;
+
+    /**
+     * @type {ObjectExpression}
+     */
+    objectExpressionNode: ESTree.ObjectExpression;
+}

+ 10 - 10
src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts

@@ -4,7 +4,7 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
 import * as estraverse from 'estraverse';
 import * as ESTree from 'estree';
 
-import { TPropertiesExtractorFactory } from '../../types/container/node-transformers/TPropertiesExtractorFactory';
+import { TObjectExpressionExtractorFactory } from '../../types/container/node-transformers/TObjectExpressionExtractorFactory';
 
 import { IOptions } from '../../interfaces/options/IOptions';
 import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
@@ -15,29 +15,29 @@ import { TransformationStage } from '../../enums/node-transformers/Transformatio
 import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
 import { NodeGuards } from '../../node/NodeGuards';
 import { NodeStatementUtils } from '../../node/NodeStatementUtils';
-import { PropertiesExtractor } from '../../enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor';
+import { ObjectExpressionExtractor } from '../../enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor';
 
 @injectable()
 export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
     /**
-     * @type {TPropertiesExtractorFactory}
+     * @type {TObjectExpressionExtractorFactory}
      */
-    private readonly propertiesExtractorFactory: TPropertiesExtractorFactory;
+    private readonly objectExpressionExtractorFactory: TObjectExpressionExtractorFactory;
 
     /**
-     * @param {TPropertiesExtractorFactory} propertiesExtractorFactory
+     * @param {TObjectExpressionExtractorFactory} objectExpressionExtractorFactory
      * @param {IRandomGenerator} randomGenerator
      * @param {IOptions} options
      */
     constructor (
-        @inject(ServiceIdentifiers.Factory__IPropertiesExtractor)
-            propertiesExtractorFactory: TPropertiesExtractorFactory,
+        @inject(ServiceIdentifiers.Factory__IObjectExpressionExtractor)
+            objectExpressionExtractorFactory: TObjectExpressionExtractorFactory,
         @inject(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator,
         @inject(ServiceIdentifiers.IOptions) options: IOptions
     ) {
         super(randomGenerator, options);
 
-        this.propertiesExtractorFactory = propertiesExtractorFactory;
+        this.objectExpressionExtractorFactory = objectExpressionExtractorFactory;
     }
 
     /**
@@ -213,11 +213,11 @@ export class ObjectExpressionKeysTransformer extends AbstractNodeTransformer {
             objectExpressionHostStatement: newObjectExpressionHostStatement,
             objectExpressionNode: newObjectExpressionNode
         } = this
-            .propertiesExtractorFactory(PropertiesExtractor.ObjectExpressionToVariableDeclarationExtractor)
+            .objectExpressionExtractorFactory(ObjectExpressionExtractor.ObjectExpressionToVariableDeclarationExtractor)
             .extract(objectExpressionNode, hostStatement);
 
         this
-            .propertiesExtractorFactory(PropertiesExtractor.BasePropertiesExtractor)
+            .objectExpressionExtractorFactory(ObjectExpressionExtractor.BasePropertiesExtractor)
             .extract(newObjectExpressionNode, newObjectExpressionHostStatement);
 
         return newObjectExpressionIdentifierReference;

+ 7 - 7
src/node-transformers/converting-transformers/object-expression-extractors/BasePropertiesExtractor.ts

@@ -3,9 +3,9 @@ import { injectable } from 'inversify';
 import * as ESTree from 'estree';
 
 import { TNodeWithStatements } from '../../../types/node/TNodeWithStatements';
-import { TPropertiesExtractorResult } from '../../../types/node-transformers/TPropertiesExtractorResult';
+import { IObjectExpressionExtractorResult } from '../../../interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractorResult';
 
-import { IPropertiesExtractor } from '../../../interfaces/node-transformers/converting-transformers/properties-extractors/IPropertiesExtractor';
+import { IObjectExpressionExtractor } from '../../../interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractor';
 
 import { NodeAppender } from '../../../node/NodeAppender';
 import { NodeFactory } from '../../../node/NodeFactory';
@@ -13,7 +13,7 @@ import { NodeGuards } from '../../../node/NodeGuards';
 import { NodeStatementUtils } from '../../../node/NodeStatementUtils';
 
 @injectable()
-export class BasePropertiesExtractor implements IPropertiesExtractor {
+export class BasePropertiesExtractor implements IObjectExpressionExtractor {
     /**
      * @param {Property} propertyNode
      * @returns {string | null}
@@ -64,12 +64,12 @@ export class BasePropertiesExtractor implements IPropertiesExtractor {
      *
      * @param {ObjectExpression} objectExpressionNode
      * @param {Statement} hostStatement
-     * @returns {TPropertiesExtractorResult}
+     * @returns {IObjectExpressionExtractorResult}
      */
     public extract (
         objectExpressionNode: ESTree.ObjectExpression,
         hostStatement: ESTree.Statement
-    ): TPropertiesExtractorResult {
+    ): IObjectExpressionExtractorResult {
         const hostNode: ESTree.Node | undefined = objectExpressionNode.parentNode;
 
         if (
@@ -91,13 +91,13 @@ export class BasePropertiesExtractor implements IPropertiesExtractor {
      * @param {ObjectExpression} objectExpressionNode
      * @param {Statement} hostStatement
      * @param {Expression} memberExpressionHostNode
-     * @returns {TPropertiesExtractorResult}
+     * @returns {IObjectExpressionExtractorResult}
      */
     private transformObjectExpressionNode (
         objectExpressionNode: ESTree.ObjectExpression,
         hostStatement: ESTree.Statement,
         memberExpressionHostNode: ESTree.Expression
-    ): TPropertiesExtractorResult {
+    ): IObjectExpressionExtractorResult {
         const properties: ESTree.Property[] = objectExpressionNode.properties;
         const [expressionStatements, removablePropertyIds]: [ESTree.ExpressionStatement[], number[]] = this
             .extractPropertiesToExpressionStatements(

+ 11 - 11
src/node-transformers/converting-transformers/object-expression-extractors/ObjectExpressionToVariableDeclarationExtractor.ts

@@ -5,23 +5,23 @@ import * as ESTree from 'estree';
 
 import { TNodeWithStatements } from '../../../types/node/TNodeWithStatements';
 import { TObjectExpressionKeysTransformerCustomNodeFactory } from '../../../types/container/custom-nodes/TObjectExpressionKeysTransformerCustomNodeFactory';
-import { TPropertiesExtractorResult } from '../../../types/node-transformers/TPropertiesExtractorResult';
+import { IObjectExpressionExtractorResult } from '../../../interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractorResult';
 import { TStatement } from '../../../types/node/TStatement';
 
 import { ICustomNode } from '../../../interfaces/custom-nodes/ICustomNode';
 import { TInitialData } from '../../../types/TInitialData';
-import { IPropertiesExtractor } from '../../../interfaces/node-transformers/converting-transformers/properties-extractors/IPropertiesExtractor';
+import { IObjectExpressionExtractor } from '../../../interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractor';
 
 import { ObjectExpressionKeysTransformerCustomNode } from '../../../enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode';
 
-import { BasePropertiesExtractorObjectExpressionHostNode } from '../../../custom-nodes/object-expression-keys-transformer-nodes/BasePropertiesExtractorObjectExpressionHostNode';
+import { ObjectExpressionVariableDeclarationHostNode } from '../../../custom-nodes/object-expression-keys-transformer-nodes/ObjectExpressionVariableDeclarationHostNode';
 import { NodeAppender } from '../../../node/NodeAppender';
 import { NodeGuards } from '../../../node/NodeGuards';
 import { NodeStatementUtils } from '../../../node/NodeStatementUtils';
 import { NodeUtils } from '../../../node/NodeUtils';
 
 @injectable()
-export class ObjectExpressionToVariableDeclarationExtractor implements IPropertiesExtractor {
+export class ObjectExpressionToVariableDeclarationExtractor implements IObjectExpressionExtractor {
     /**
      * @type {TObjectExpressionKeysTransformerCustomNodeFactory}
      */
@@ -53,12 +53,12 @@ export class ObjectExpressionToVariableDeclarationExtractor implements IProperti
      *
      * @param {ObjectExpression} objectExpressionNode
      * @param {Statement} hostStatement
-     * @returns {TPropertiesExtractorResult}
+     * @returns {IObjectExpressionExtractorResult}
      */
     public extract (
         objectExpressionNode: ESTree.ObjectExpression,
         hostStatement: ESTree.Statement
-    ): TPropertiesExtractorResult {
+    ): IObjectExpressionExtractorResult {
         return this.transformObjectExpressionToVariableDeclaration(
             objectExpressionNode,
             hostStatement
@@ -73,7 +73,7 @@ export class ObjectExpressionToVariableDeclarationExtractor implements IProperti
     private transformObjectExpressionToVariableDeclaration (
         objectExpressionNode: ESTree.ObjectExpression,
         hostStatement: ESTree.Statement
-    ): TPropertiesExtractorResult {
+    ): IObjectExpressionExtractorResult {
         const properties: ESTree.Property[] = objectExpressionNode.properties;
 
         const newObjectExpressionHostStatement: ESTree.VariableDeclaration = this.getObjectExpressionHostNode(properties);
@@ -99,14 +99,14 @@ export class ObjectExpressionToVariableDeclarationExtractor implements IProperti
      * @returns {VariableDeclaration}
      */
     private getObjectExpressionHostNode (properties: ESTree.Property[]): ESTree.VariableDeclaration {
-        const objectExpressionHostCustomNode: ICustomNode<TInitialData<BasePropertiesExtractorObjectExpressionHostNode>> =
+        const variableDeclarationHostNodeCustomNode: ICustomNode<TInitialData<ObjectExpressionVariableDeclarationHostNode>> =
             this.objectExpressionKeysTransformerCustomNodeFactory(
-                ObjectExpressionKeysTransformerCustomNode.BasePropertiesExtractorObjectExpressionHostNode
+                ObjectExpressionKeysTransformerCustomNode.ObjectExpressionVariableDeclarationHostNode
             );
 
-        objectExpressionHostCustomNode.initialize(properties);
+        variableDeclarationHostNodeCustomNode.initialize(properties);
 
-        const statementNode: TStatement = objectExpressionHostCustomNode.getNode()[0];
+        const statementNode: TStatement = variableDeclarationHostNodeCustomNode.getNode()[0];
 
         if (
             !statementNode

+ 6 - 0
src/types/container/node-transformers/TObjectExpressionExtractorFactory.ts

@@ -0,0 +1,6 @@
+import { IObjectExpressionExtractor } from '../../../interfaces/node-transformers/converting-transformers/object-expression-extractors/IObjectExpressionExtractor';
+
+import { ObjectExpressionExtractor } from '../../../enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor';
+
+export type TObjectExpressionExtractorFactory =
+    (objectExpressionExtractorName: ObjectExpressionExtractor) => IObjectExpressionExtractor;

+ 0 - 5
src/types/container/node-transformers/TPropertiesExtractorFactory.ts

@@ -1,5 +0,0 @@
-import { IPropertiesExtractor } from '../../../interfaces/node-transformers/converting-transformers/properties-extractors/IPropertiesExtractor';
-
-import { PropertiesExtractor } from '../../../enums/node-transformers/converting-transformers/properties-extractors/PropertiesExtractor';
-
-export type TPropertiesExtractorFactory = (propertiesExtractorName: PropertiesExtractor) => IPropertiesExtractor;

+ 0 - 7
src/types/node-transformers/TPropertiesExtractorResult.ts

@@ -1,7 +0,0 @@
-import * as ESTree from 'estree';
-
-export type TPropertiesExtractorResult = {
-    nodeToReplace: ESTree.Node;
-    objectExpressionHostStatement: ESTree.Statement;
-    objectExpressionNode: ESTree.ObjectExpression;
-};

+ 30 - 0
test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/ObjectExpressionKeysTransformer.spec.ts

@@ -1388,5 +1388,35 @@ describe('ObjectExpressionKeysTransformer', () => {
                 assert.match(obfuscatedCode,  regExp);
             });
         });
+
+        describe('Variant #4: member expression node as property key', () => {
+            const match: string = `` +
+                `var ${variableMatch} *= *{};` +
+                `${variableMatch}\\['foo'] *= *'test';` +
+                `var foo *= *${variableMatch};` +
+                `var ${variableMatch} *= *{\\[foo.foo] *: *'1'};` +
+                `${variableMatch}\\['bar'] *= *'2';` +
+                `var bar *= *${variableMatch};` +
+            ``;
+            const regExp: RegExp = new RegExp(match);
+
+            let obfuscatedCode: string;
+
+            before(() => {
+                const code: string = readFileAsString(__dirname + '/fixtures/computed-key-member-expression.js');
+
+                obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                    code,
+                    {
+                        ...NO_ADDITIONAL_NODES_PRESET,
+                        transformObjectKeys: true
+                    }
+                ).getObfuscatedCode();
+            });
+
+            it('shouldn ignore extraction of property with member expression key', () => {
+                assert.match(obfuscatedCode,  regExp);
+            });
+        });
     });
 });

+ 7 - 0
test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/computed-key-member-expression.js

@@ -0,0 +1,7 @@
+var foo = {
+    foo: 'test'
+};
+var bar = {
+    [foo.foo]: '1',
+    bar: '2'
+};

+ 6 - 1
test/functional-tests/node-transformers/converting-transformers/split-string-transformer/SplitStringTransformer.spec.ts

@@ -165,6 +165,11 @@ describe('SplitStringTransformer', () => {
 
     describe('Variant #10: Integration with `transformObjectKeys` option', () => {
         it('should correctly transform string when `transformObjectKeys` option is enabled', () => {
+            const regExp: RegExp = new RegExp(`` +
+                `var _0x[a-f0-9]{4,6} *= *{};` +
+                `*_0x[a-f0-9]{4,6}\\['ab' *\\+ *'cd' *\\+ *'ef' *\\+ *'g'] *= *'ab' *\\+ *'cd' *\\+ *'ef' *\\+ *'g';` +
+                `var test *= *_0x[a-f0-9]{4,6};` +
+            ``);
             const code: string = readFileAsString(__dirname + '/fixtures/object-string-literal.js');
 
             obfuscatedCode = JavaScriptObfuscator.obfuscate(
@@ -179,7 +184,7 @@ describe('SplitStringTransformer', () => {
 
             assert.match(
                 obfuscatedCode,
-                /^var *test *= *{}; *test\['ab' *\+ *'cd' *\+ *'ef' *\+ *'g'] *= *'ab' *\+ *'cd' *\+ *'ef' *\+ *'g';$/
+                regExp
             );
         });
     });

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini