diff --git a/CHANGELOG.md b/CHANGELOG.md index ba5c1177..0c08840f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ Change Log +v2.10.0 +--- +* Some internal refactoring related to node append events + v2.9.4 --- * Fixed missing prefix of root identifiers added by `stringArrayWrappersCount` option when `identifiersPrefix` option is set diff --git a/package.json b/package.json index 075e7a02..038897a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "javascript-obfuscator", - "version": "2.9.4", + "version": "2.10.0", "description": "JavaScript obfuscator", "keywords": [ "obfuscator", @@ -31,7 +31,6 @@ "commander": "6.2.1", "eslint-scope": "5.1.1", "estraverse": "5.2.0", - "eventemitter3": "4.0.7", "fast-deep-equal": "3.1.3", "inversify": "5.0.5", "js-string-escape": "1.0.1", diff --git a/src/container/InversifyContainerFacade.ts b/src/container/InversifyContainerFacade.ts index 2347c148..d03402c2 100644 --- a/src/container/InversifyContainerFacade.ts +++ b/src/container/InversifyContainerFacade.ts @@ -28,7 +28,6 @@ import { ICodeTransformersRunner } from '../interfaces/code-transformers/ICodeTr import { IInversifyContainerFacade } from '../interfaces/container/IInversifyContainerFacade'; import { IJavaScriptObfuscator } from '../interfaces/IJavaScriptObfsucator'; import { ILogger } from '../interfaces/logger/ILogger'; -import { IObfuscationEventEmitter } from '../interfaces/event-emitters/IObfuscationEventEmitter'; import { IObfuscatedCode } from '../interfaces/source-code/IObfuscatedCode'; import { ISourceCode } from '../interfaces/source-code/ISourceCode'; import { INodeTransformersRunner } from '../interfaces/node-transformers/INodeTransformersRunner'; @@ -37,7 +36,6 @@ import { CodeTransformersRunner } from '../code-transformers/CodeTransformersRun import { JavaScriptObfuscator } from '../JavaScriptObfuscator'; import { Logger } from '../logger/Logger'; import { NodeTransformersRunner } from '../node-transformers/NodeTransformersRunner'; -import { ObfuscationEventEmitter } from '../event-emitters/ObfuscationEventEmitter'; import { ObfuscatedCode } from '../source-code/ObfuscatedCode'; import { SourceCode } from '../source-code/SourceCode'; @@ -199,11 +197,6 @@ export class InversifyContainerFacade implements IInversifyContainerFacade { }; }); - this.container - .bind(ServiceIdentifiers.IObfuscationEventEmitter) - .to(ObfuscationEventEmitter) - .inSingletonScope(); - // modules this.container.load(analyzersModule); this.container.load(codeTransformersModule); diff --git a/src/container/ServiceIdentifiers.ts b/src/container/ServiceIdentifiers.ts index 52ee4756..efe446ac 100644 --- a/src/container/ServiceIdentifiers.ts +++ b/src/container/ServiceIdentifiers.ts @@ -40,7 +40,6 @@ export enum ServiceIdentifiers { INodeTransformerNamesGroupsBuilder = 'INodeTransformerNamesGroupsBuilder', INodeTransformersRunner = 'INodeTransformersRunner', INumberNumericalExpressionAnalyzer = 'INumberNumericalExpressionAnalyzer', - IObfuscationEventEmitter = 'IObfuscationEventEmitter', IObfuscatedCode = 'IObfuscatedCode', IOptions = 'IOptions', IOptionsNormalizer = 'IOptionsNormalizer', diff --git a/src/custom-code-helpers/AbstractCustomCodeHelperGroup.ts b/src/custom-code-helpers/AbstractCustomCodeHelperGroup.ts index ddffa360..5b6e8682 100644 --- a/src/custom-code-helpers/AbstractCustomCodeHelperGroup.ts +++ b/src/custom-code-helpers/AbstractCustomCodeHelperGroup.ts @@ -2,9 +2,7 @@ import { inject, injectable } from 'inversify'; import { ServiceIdentifiers } from '../container/ServiceIdentifiers'; import { TIdentifierNamesGeneratorFactory } from '../types/container/generators/TIdentifierNamesGeneratorFactory'; -import { TNodeWithStatements } from '../types/node/TNodeWithStatements'; -import { ICallsGraphData } from '../interfaces/analyzers/calls-graph-analyzer/ICallsGraphData'; import { ICustomCodeHelper } from '../interfaces/custom-code-helpers/ICustomCodeHelper'; import { ICustomCodeHelperGroup } from '../interfaces/custom-code-helpers/ICustomCodeHelperGroup'; import { IIdentifierNamesGenerator } from '../interfaces/generators/identifier-names-generators/IIdentifierNamesGenerator'; @@ -12,7 +10,6 @@ import { IOptions } from '../interfaces/options/IOptions'; import { IRandomGenerator } from '../interfaces/utils/IRandomGenerator'; import { CustomCodeHelper } from '../enums/custom-code-helpers/CustomCodeHelper'; -import { ObfuscationEvent } from '../enums/event-emitters/ObfuscationEvent'; @injectable() export abstract class AbstractCustomCodeHelperGroup implements ICustomCodeHelperGroup { @@ -31,11 +28,6 @@ export abstract class AbstractCustomCodeHelperGroup implements ICustomCodeHelper */ protected readonly randomGenerator: IRandomGenerator; - /** - * @type {ObfuscationEvent} - */ - protected abstract readonly appendEvent: ObfuscationEvent; - /** * @type {Map} */ @@ -57,13 +49,6 @@ export abstract class AbstractCustomCodeHelperGroup implements ICustomCodeHelper this.options = options; } - /** - * @returns {ObfuscationEvent} - */ - public getAppendEvent (): ObfuscationEvent { - return this.appendEvent; - } - /** * @returns {Map} */ @@ -94,11 +79,5 @@ export abstract class AbstractCustomCodeHelperGroup implements ICustomCodeHelper return this.randomGenerator.getRandomInteger(0, Math.max(0, Math.round(callsGraphLength - 1))); } - /** - * @param {TNodeWithStatements} nodeWithStatements - * @param {ICallsGraphData[]} callsGraphData - */ - public abstract appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void; - public abstract initialize (): void; } diff --git a/src/custom-code-helpers/calls-controller/CallsControllerFunctionCodeHelper.ts b/src/custom-code-helpers/calls-controller/CallsControllerFunctionCodeHelper.ts index a134f904..bb7c7a38 100644 --- a/src/custom-code-helpers/calls-controller/CallsControllerFunctionCodeHelper.ts +++ b/src/custom-code-helpers/calls-controller/CallsControllerFunctionCodeHelper.ts @@ -9,7 +9,7 @@ import { ICustomCodeHelperFormatter } from '../../interfaces/custom-code-helpers import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { ObfuscationEvent } from '../../enums/event-emitters/ObfuscationEvent'; +import { NodeTransformationStage } from '../../enums/node-transformers/NodeTransformationStage'; import { initializable } from '../../decorators/Initializable'; @@ -27,10 +27,10 @@ export class CallsControllerFunctionCodeHelper extends AbstractCustomCodeHelper protected callsControllerFunctionName!: string; /** - * @type {ObfuscationEvent} + * @type {NodeTransformationStage} */ @initializable() - private appendEvent!: ObfuscationEvent; + private nodeTransformationStage!: NodeTransformationStage; /** * @param {TIdentifierNamesGeneratorFactory} identifierNamesGeneratorFactory @@ -57,12 +57,12 @@ export class CallsControllerFunctionCodeHelper extends AbstractCustomCodeHelper } /** - * @param {ObfuscationEvent} appendEvent + * @param {NodeTransformationStage} nodeTransformationStage * @param {string} callsControllerFunctionName */ - public initialize (appendEvent: ObfuscationEvent, callsControllerFunctionName: string): void { - this.appendEvent = appendEvent; - this.callsControllerFunctionName = callsControllerFunctionName; + public initialize (nodeTransformationStage: NodeTransformationStage, callsControllerFunctionName: string): void { + this.nodeTransformationStage = nodeTransformationStage; + this.callsControllerFunctionName = nodeTransformationStage; } /** @@ -77,7 +77,7 @@ export class CallsControllerFunctionCodeHelper extends AbstractCustomCodeHelper * @returns {string} */ protected getCodeHelperTemplate (): string { - if (this.appendEvent === ObfuscationEvent.AfterObfuscation) { + if (this.nodeTransformationStage === NodeTransformationStage.Finalizing) { return this.customCodeHelperObfuscator.obfuscateTemplate( this.customCodeHelperFormatter.formatTemplate(SingleCallControllerTemplate(), { callControllerFunctionName: this.callsControllerFunctionName diff --git a/src/custom-code-helpers/console-output/group/ConsoleOutputCodeHelperGroup.ts b/src/custom-code-helpers/console-output/group/ConsoleOutputCodeHelperGroup.ts index 70d8dc88..82013e3a 100644 --- a/src/custom-code-helpers/console-output/group/ConsoleOutputCodeHelperGroup.ts +++ b/src/custom-code-helpers/console-output/group/ConsoleOutputCodeHelperGroup.ts @@ -15,7 +15,7 @@ import { ICallsGraphData } from '../../../interfaces/analyzers/calls-graph-analy import { initializable } from '../../../decorators/Initializable'; import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper'; -import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent'; +import { NodeTransformationStage } from '../../../enums/node-transformers/NodeTransformationStage'; import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup'; import { CallsControllerFunctionCodeHelper } from '../../calls-controller/CallsControllerFunctionCodeHelper'; @@ -31,11 +31,6 @@ export class ConsoleOutputCodeHelperGroup extends AbstractCustomCodeHelperGroup @initializable() protected customCodeHelpers!: Map ; - /** - * @type {ObfuscationEvent} - */ - protected readonly appendEvent: ObfuscationEvent = ObfuscationEvent.BeforeObfuscation; - /** * @type {TCustomCodeHelperFactory} */ @@ -63,7 +58,7 @@ export class ConsoleOutputCodeHelperGroup extends AbstractCustomCodeHelperGroup * @param {TNodeWithStatements} nodeWithStatements * @param {ICallsGraphData[]} callsGraphData */ - public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { + public appendOnPreparing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { if (!this.options.disableConsoleOutput) { return; } @@ -101,7 +96,7 @@ export class ConsoleOutputCodeHelperGroup extends AbstractCustomCodeHelperGroup this.appendCustomNodeIfExist( CustomCodeHelper.CallsControllerFunction, (customCodeHelper: ICustomCodeHelper>) => { - customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName); + customCodeHelper.initialize(NodeTransformationStage.Preparing, callsControllerFunctionName); NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode()); } diff --git a/src/custom-code-helpers/debug-protection/group/DebugProtectionCodeHelperGroup.ts b/src/custom-code-helpers/debug-protection/group/DebugProtectionCodeHelperGroup.ts index 2d1aa360..5557c195 100644 --- a/src/custom-code-helpers/debug-protection/group/DebugProtectionCodeHelperGroup.ts +++ b/src/custom-code-helpers/debug-protection/group/DebugProtectionCodeHelperGroup.ts @@ -15,7 +15,7 @@ import { ICallsGraphData } from '../../../interfaces/analyzers/calls-graph-analy import { initializable } from '../../../decorators/Initializable'; import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper'; -import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent'; +import { NodeTransformationStage } from '../../../enums/node-transformers/NodeTransformationStage'; import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup'; import { CallsControllerFunctionCodeHelper } from '../../calls-controller/CallsControllerFunctionCodeHelper'; @@ -34,11 +34,6 @@ export class DebugProtectionCodeHelperGroup extends AbstractCustomCodeHelperGrou @initializable() protected customCodeHelpers!: Map ; - /** - * @type {ObfuscationEvent} - */ - protected readonly appendEvent: ObfuscationEvent = ObfuscationEvent.BeforeObfuscation; - /** * @type {TCustomCodeHelperFactory} */ @@ -66,7 +61,7 @@ export class DebugProtectionCodeHelperGroup extends AbstractCustomCodeHelperGrou * @param {TNodeWithStatements} nodeWithStatements * @param {ICallsGraphData[]} callsGraphData */ - public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { + public appendOnPreparing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { if (!this.options.debugProtection) { return; } @@ -104,7 +99,7 @@ export class DebugProtectionCodeHelperGroup extends AbstractCustomCodeHelperGrou this.appendCustomNodeIfExist( CustomCodeHelper.CallsControllerFunction, (customCodeHelper: ICustomCodeHelper>) => { - customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName); + customCodeHelper.initialize(NodeTransformationStage.Preparing, callsControllerFunctionName); NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode()); } diff --git a/src/custom-code-helpers/domain-lock/group/DomainLockCustomCodeHelperGroup.ts b/src/custom-code-helpers/domain-lock/group/DomainLockCustomCodeHelperGroup.ts index ab3a0a15..d9691dd2 100644 --- a/src/custom-code-helpers/domain-lock/group/DomainLockCustomCodeHelperGroup.ts +++ b/src/custom-code-helpers/domain-lock/group/DomainLockCustomCodeHelperGroup.ts @@ -15,7 +15,7 @@ import { ICallsGraphData } from '../../../interfaces/analyzers/calls-graph-analy import { initializable } from '../../../decorators/Initializable'; import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper'; -import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent'; +import { NodeTransformationStage } from '../../../enums/node-transformers/NodeTransformationStage'; import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup'; import { CallsControllerFunctionCodeHelper } from '../../calls-controller/CallsControllerFunctionCodeHelper'; @@ -31,11 +31,6 @@ export class DomainLockCustomCodeHelperGroup extends AbstractCustomCodeHelperGro @initializable() protected customCodeHelpers!: Map ; - /** - * @type {ObfuscationEvent} - */ - protected readonly appendEvent: ObfuscationEvent = ObfuscationEvent.BeforeObfuscation; - /** * @type {TCustomCodeHelperFactory} */ @@ -63,7 +58,7 @@ export class DomainLockCustomCodeHelperGroup extends AbstractCustomCodeHelperGro * @param {TNodeWithStatements} nodeWithStatements * @param {ICallsGraphData[]} callsGraphData */ - public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { + public appendOnPreparing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { if (!this.options.domainLock.length) { return; } @@ -101,7 +96,7 @@ export class DomainLockCustomCodeHelperGroup extends AbstractCustomCodeHelperGro this.appendCustomNodeIfExist( CustomCodeHelper.CallsControllerFunction, (customCodeHelper: ICustomCodeHelper>) => { - customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName); + customCodeHelper.initialize(NodeTransformationStage.Preparing, callsControllerFunctionName); NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode()); } diff --git a/src/custom-code-helpers/self-defending/group/SelfDefendingCodeHelperGroup.ts b/src/custom-code-helpers/self-defending/group/SelfDefendingCodeHelperGroup.ts index 46be4cb1..d62dbdd4 100644 --- a/src/custom-code-helpers/self-defending/group/SelfDefendingCodeHelperGroup.ts +++ b/src/custom-code-helpers/self-defending/group/SelfDefendingCodeHelperGroup.ts @@ -15,7 +15,7 @@ import { ICallsGraphData } from '../../../interfaces/analyzers/calls-graph-analy import { initializable } from '../../../decorators/Initializable'; import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper'; -import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent'; +import { NodeTransformationStage } from '../../../enums/node-transformers/NodeTransformationStage'; import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup'; import { CallsControllerFunctionCodeHelper } from '../../calls-controller/CallsControllerFunctionCodeHelper'; @@ -31,11 +31,6 @@ export class SelfDefendingCodeHelperGroup extends AbstractCustomCodeHelperGroup @initializable() protected customCodeHelpers!: Map ; - /** - * @type {ObfuscationEvent} - */ - protected appendEvent: ObfuscationEvent = ObfuscationEvent.BeforeObfuscation; - /** * @type {TCustomCodeHelperFactory} */ @@ -63,7 +58,7 @@ export class SelfDefendingCodeHelperGroup extends AbstractCustomCodeHelperGroup * @param {TNodeWithStatements} nodeWithStatements * @param {ICallsGraphData[]} callsGraphData */ - public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { + public appendOnPreparing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { if (!this.options.selfDefending) { return; } @@ -101,7 +96,7 @@ export class SelfDefendingCodeHelperGroup extends AbstractCustomCodeHelperGroup this.appendCustomNodeIfExist( CustomCodeHelper.CallsControllerFunction, (customCodeHelper: ICustomCodeHelper>) => { - customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName); + customCodeHelper.initialize(NodeTransformationStage.Preparing, callsControllerFunctionName); NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode()); } diff --git a/src/custom-code-helpers/string-array/group/StringArrayCodeHelperGroup.ts b/src/custom-code-helpers/string-array/group/StringArrayCodeHelperGroup.ts index 8bea9066..755cf871 100644 --- a/src/custom-code-helpers/string-array/group/StringArrayCodeHelperGroup.ts +++ b/src/custom-code-helpers/string-array/group/StringArrayCodeHelperGroup.ts @@ -16,7 +16,6 @@ import { IStringArrayStorage } from '../../../interfaces/storages/string-array-t import { initializable } from '../../../decorators/Initializable'; import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper'; -import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent'; import { StringArrayEncoding } from '../../../enums/node-transformers/string-array-transformers/StringArrayEncoding'; import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup'; @@ -42,11 +41,6 @@ export class StringArrayCodeHelperGroup extends AbstractCustomCodeHelperGroup { @initializable() protected customCodeHelpers!: Map ; - /** - * @type {ObfuscationEvent} - */ - protected appendEvent: ObfuscationEvent = ObfuscationEvent.AfterObfuscation; - /** * @type {TCustomCodeHelperFactory} */ @@ -82,7 +76,7 @@ export class StringArrayCodeHelperGroup extends AbstractCustomCodeHelperGroup { * @param {TNodeWithStatements} nodeWithStatements * @param {ICallsGraphData[]} callsGraphData */ - public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { + public appendOnFinalizing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void { if (!this.stringArrayStorage.getLength()) { return; } diff --git a/src/enums/event-emitters/ObfuscationEvent.ts b/src/enums/event-emitters/ObfuscationEvent.ts deleted file mode 100644 index 2a3b8b0e..00000000 --- a/src/enums/event-emitters/ObfuscationEvent.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum ObfuscationEvent { - AfterObfuscation = 'afterObfuscation', - BeforeObfuscation = 'beforeObfuscation' -} diff --git a/src/event-emitters/ObfuscationEventEmitter.ts b/src/event-emitters/ObfuscationEventEmitter.ts deleted file mode 100644 index 7210ea34..00000000 --- a/src/event-emitters/ObfuscationEventEmitter.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { decorate, injectable } from 'inversify'; -import EventEmitter from 'eventemitter3'; - -import { IObfuscationEventEmitter } from '../interfaces/event-emitters/IObfuscationEventEmitter'; - -decorate(injectable(), EventEmitter); - -@injectable() -export class ObfuscationEventEmitter extends EventEmitter implements IObfuscationEventEmitter {} diff --git a/src/interfaces/custom-code-helpers/ICustomCodeHelperGroup.ts b/src/interfaces/custom-code-helpers/ICustomCodeHelperGroup.ts index 4301a649..07df4266 100644 --- a/src/interfaces/custom-code-helpers/ICustomCodeHelperGroup.ts +++ b/src/interfaces/custom-code-helpers/ICustomCodeHelperGroup.ts @@ -1,24 +1,11 @@ -import { TNodeWithStatements } from '../../types/node/TNodeWithStatements'; +import { TCustomCodeHelpersGroupAppendMethods } from '../../types/custom-code-helpers/TCustomCodeHelpersGroupAppendMethods'; import { ICustomCodeHelper } from './ICustomCodeHelper'; import { IInitializable } from '../IInitializable'; -import { ICallsGraphData } from '../analyzers/calls-graph-analyzer/ICallsGraphData'; import { CustomCodeHelper } from '../../enums/custom-code-helpers/CustomCodeHelper'; -import { ObfuscationEvent } from '../../enums/event-emitters/ObfuscationEvent'; - -export interface ICustomCodeHelperGroup extends IInitializable { - /** - * @param nodeWithStatements - * @param callsGraphData - */ - appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void; - - /** - * @returns {ObfuscationEvent} - */ - getAppendEvent (): ObfuscationEvent; +export interface ICustomCodeHelperGroup extends IInitializable, TCustomCodeHelpersGroupAppendMethods { /** * @type {Map } */ diff --git a/src/interfaces/event-emitters/IObfuscationEventEmitter.ts b/src/interfaces/event-emitters/IObfuscationEventEmitter.ts deleted file mode 100644 index 4830e353..00000000 --- a/src/interfaces/event-emitters/IObfuscationEventEmitter.ts +++ /dev/null @@ -1,28 +0,0 @@ -import * as ESTree from 'estree'; - -import { ICallsGraphData } from '../analyzers/calls-graph-analyzer/ICallsGraphData'; - -import { ObfuscationEvent } from '../../enums/event-emitters/ObfuscationEvent'; - -export interface IObfuscationEventEmitter { - /** - * @param {ObfuscationEvent} event - * @param args - * @returns {boolean} - */ - emit (event: ObfuscationEvent, ...args: [ESTree.Program, ICallsGraphData[]]): boolean; - - /** - * @param event - * @param listener - * @returns this - */ - on (event: ObfuscationEvent, listener: Function): this; - - /** - * @param event - * @param listener - * @returns this - */ - once (event: ObfuscationEvent, listener: Function): this; -} diff --git a/src/node-transformers/preparing-transformers/CustomCodeHelpersTransformer.ts b/src/node-transformers/preparing-transformers/CustomCodeHelpersTransformer.ts index 727ee8ec..83cb1f93 100644 --- a/src/node-transformers/preparing-transformers/CustomCodeHelpersTransformer.ts +++ b/src/node-transformers/preparing-transformers/CustomCodeHelpersTransformer.ts @@ -6,7 +6,6 @@ import * as ESTree from 'estree'; import { TCustomCodeHelperGroupStorage } from '../../types/storages/TCustomCodeHelperGroupStorage'; import { ICustomCodeHelperGroup } from '../../interfaces/custom-code-helpers/ICustomCodeHelperGroup'; -import { IObfuscationEventEmitter } from '../../interfaces/event-emitters/IObfuscationEventEmitter'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { ICallsGraphAnalyzer } from '../../interfaces/analyzers/calls-graph-analyzer/ICallsGraphAnalyzer'; @@ -15,7 +14,6 @@ import { IPrevailingKindOfVariablesAnalyzer } from '../../interfaces/analyzers/c import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { NodeTransformer } from '../../enums/node-transformers/NodeTransformer'; -import { ObfuscationEvent } from '../../enums/event-emitters/ObfuscationEvent'; import { NodeTransformationStage } from '../../enums/node-transformers/NodeTransformationStage'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; @@ -39,11 +37,6 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer { */ private readonly customCodeHelperGroupStorage: TCustomCodeHelperGroupStorage; - /** - * @type {IObfuscationEventEmitter} - */ - private readonly obfuscationEventEmitter: IObfuscationEventEmitter; - /** * @type {ICallsGraphAnalyzer} */ @@ -62,7 +55,6 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer { /** * @param {ICallsGraphAnalyzer} callsGraphAnalyzer * @param {IPrevailingKindOfVariablesAnalyzer} prevailingKindOfVariablesAnalyzer - * @param {IObfuscationEventEmitter} obfuscationEventEmitter * @param {TCustomCodeHelperGroupStorage} customCodeHelperGroupStorage * @param {IRandomGenerator} randomGenerator * @param {IOptions} options @@ -71,7 +63,6 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer { @inject(ServiceIdentifiers.ICallsGraphAnalyzer) callsGraphAnalyzer: ICallsGraphAnalyzer, @inject(ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer) prevailingKindOfVariablesAnalyzer: IPrevailingKindOfVariablesAnalyzer, - @inject(ServiceIdentifiers.IObfuscationEventEmitter) obfuscationEventEmitter: IObfuscationEventEmitter, @inject(ServiceIdentifiers.TCustomNodeGroupStorage) customCodeHelperGroupStorage: TCustomCodeHelperGroupStorage, @inject(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator, @inject(ServiceIdentifiers.IOptions) options: IOptions @@ -80,7 +71,6 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer { this.callsGraphAnalyzer = callsGraphAnalyzer; this.prevailingKindOfVariablesAnalyzer = prevailingKindOfVariablesAnalyzer; - this.obfuscationEventEmitter = obfuscationEventEmitter; this.customCodeHelperGroupStorage = customCodeHelperGroupStorage; } @@ -95,24 +85,23 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer { leave: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node | undefined => { if (NodeGuards.isProgramNode(node)) { this.prepareNode(node, parentNode); - this.appendCustomNodesBeforeObfuscation(node, parentNode); + this.appendCustomNodesForPreparingStage(node, parentNode); return this.transformNode(node, parentNode); } } }; - case NodeTransformationStage.Finalizing: + default: return { - leave: (node: ESTree.Node, parentNode: ESTree.Node | null): void => { + leave: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node | undefined => { if (NodeGuards.isProgramNode(node)) { - this.appendCustomNodesAfterObfuscation(node, parentNode); + this.appendCustomNodesForStage(nodeTransformationStage, node, parentNode); } + + return node; } }; - - default: - return null; } } @@ -138,26 +127,29 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer { * @param {Program} node * @param {Node | null} parentNode */ - private appendCustomNodesBeforeObfuscation (node: ESTree.Program, parentNode: ESTree.Node | null): void { + private appendCustomNodesForPreparingStage (node: ESTree.Program, parentNode: ESTree.Node | null): void { this.customCodeHelperGroupStorage .getStorage() .forEach((customCodeHelperGroup: ICustomCodeHelperGroup) => { customCodeHelperGroup.initialize(); - - this.obfuscationEventEmitter.once( - customCodeHelperGroup.getAppendEvent(), - customCodeHelperGroup.appendNodes.bind(customCodeHelperGroup) - ); + customCodeHelperGroup.appendOnPreparing?.(node, this.callsGraphData); }); - - this.obfuscationEventEmitter.emit(ObfuscationEvent.BeforeObfuscation, node, this.callsGraphData); } /** + * @param {NodeTransformationStage} nodeTransformationStage * @param {Program} node * @param {Node | null} parentNode */ - private appendCustomNodesAfterObfuscation (node: ESTree.Program, parentNode: ESTree.Node | null): void { - this.obfuscationEventEmitter.emit(ObfuscationEvent.AfterObfuscation, node, this.callsGraphData); + private appendCustomNodesForStage ( + nodeTransformationStage: NodeTransformationStage, + node: ESTree.Program, + parentNode: ESTree.Node | null + ): void { + this.customCodeHelperGroupStorage + .getStorage() + .forEach((customCodeHelperGroup: ICustomCodeHelperGroup) => { + customCodeHelperGroup[`appendOn${nodeTransformationStage}`]?.(node, this.callsGraphData); + }); } } diff --git a/src/types/custom-code-helpers/TCustomCodeHelpersGroupAppendMethods.ts b/src/types/custom-code-helpers/TCustomCodeHelpersGroupAppendMethods.ts new file mode 100644 index 00000000..097b39ce --- /dev/null +++ b/src/types/custom-code-helpers/TCustomCodeHelpersGroupAppendMethods.ts @@ -0,0 +1,16 @@ +import { TNodeWithStatements } from '../node/TNodeWithStatements'; + +import { ICallsGraphData } from '../../interfaces/analyzers/calls-graph-analyzer/ICallsGraphData'; + +import { NodeTransformationStage } from '../../enums/node-transformers/NodeTransformationStage'; + +export type TCustomCodeHelpersGroupAppendMethods = { + /** + * @param nodeWithStatements + * @param callsGraphData + */ + [key in `appendOn${Capitalize}`]?: ( + nodeWithStatements: TNodeWithStatements, + callsGraphData: ICallsGraphData[] + ) => void; +}; diff --git a/test/dev/dev.ts b/test/dev/dev.ts index 2e5ca1b1..e9c0c02a 100644 --- a/test/dev/dev.ts +++ b/test/dev/dev.ts @@ -7,14 +7,17 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo let obfuscatedCode: string = JavaScriptObfuscator.obfuscate( ` - const test = () => ({ - foo: 'bar' - }); + function hi() { + console.log("Hello World!"); + } + hi(); `, { ...NO_ADDITIONAL_NODES_PRESET, compact: false, - transformObjectKeys: true + stringArray: true, + stringArrayThreshold: 1, + rotateStringArray: true } ).getObfuscatedCode(); diff --git a/yarn.lock b/yarn.lock index a5393c41..2445d2f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -530,10 +530,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d" integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA== -"@types/node@14.14.14": - version "14.14.14" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae" - integrity sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ== +"@types/node@14.14.16": + version "14.14.16" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.16.tgz#3cc351f8d48101deadfed4c9e4f116048d437b4b" + integrity sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw== "@types/normalize-package-data@^2.4.0": version "2.4.0" @@ -553,10 +553,10 @@ "@types/glob" "*" "@types/node" "*" -"@types/sinon@9.0.9": - version "9.0.9" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.9.tgz#115843b491583f924080f684b6d0d7438344f73c" - integrity sha512-z/y8maYOQyYLyqaOB+dYQ6i0pxKLOsfwCmHmn4T7jS/SDHicIslr37oE3Dg8SCqKrKeBy6Lemu7do2yy+unLrw== +"@types/sinon@9.0.10": + version "9.0.10" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.10.tgz#7fb9bcb6794262482859cab66d59132fca18fcf7" + integrity sha512-/faDC0erR06wMdybwI/uR8wEKV/E83T0k4sepIpB7gXuy2gzx2xiOjmztq6a2Y6rIGJ04D+6UU0VBmWy+4HEMA== dependencies: "@types/sinonjs__fake-timers" "*" @@ -2037,11 +2037,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eventemitter3@4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - events@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"