From 22756b8b3463d5f8df2cddd8f5dc40c019ae6c21 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Thu, 7 Sep 2017 22:43:23 +0300 Subject: [PATCH] Project structure reorganized --- package.json | 2 +- src/JavaScriptObfuscator.ts | 4 +- src/cli/sanitizers/SourceMapModeSanitizer.ts | 2 +- src/container/InversifyContainerFacade.ts | 8 +- .../VisitorDirection.ts | 0 src/enums/{ => node}/NodeType.ts | 0 src/enums/{ => source-map}/SourceMapMode.ts | 0 .../node-transformers/INodeTransformer.d.ts | 2 +- .../ITransformersRunner.d.ts | 2 +- .../{ => node-transformers}/IVisitor.d.ts | 0 src/interfaces/options/IOptions.d.ts | 2 +- .../{ => source-map}/ISourceMapCorrector.d.ts | 2 +- .../AbstractNodeTransformer.ts | 2 +- .../TransformersRunner.ts | 20 ++-- .../BlockStatementControlFlowTransformer.ts | 2 +- .../FunctionControlFlowTransformer.ts | 4 +- .../MemberExpressionTransformer.ts | 4 +- .../MethodDefinitionTransformer.ts | 4 +- .../TemplateLiteralTransformer.ts | 2 +- .../DeadCodeInjectionTransformer.ts | 2 +- .../CatchClauseTransformer.ts | 2 +- .../ClassDeclarationTransformer.ts | 4 +- .../FunctionDeclarationTransformer.ts | 4 +- .../FunctionTransformer.ts | 2 +- .../LabeledStatementTransformer.ts | 2 +- .../LiteralTransformer.ts | 2 +- .../ObjectExpressionTransformer.ts | 4 +- .../VariableDeclarationTransformer.ts | 4 +- .../NodeGuardTransformer.ts | 2 +- .../ParentizeTransformer.ts | 2 +- src/node/Node.ts | 2 +- src/node/NodeUtils.ts | 2 +- src/node/Nodes.ts | 2 +- src/options/Options.ts | 2 +- src/options/presets/Default.ts | 2 +- src/options/presets/NoCustomNodes.ts | 2 +- src/{ => source-map}/SourceMapCorrector.ts | 14 +-- .../TVisitorDirection.d.ts | 0 .../TVisitorFunction.d.ts | 0 .../TVisitorResult.d.ts | 0 .../{ => source-map}/TSourceMapMode.d.ts | 0 .../JavaScriptObfuscatorInternal.spec.ts | 92 ------------------ test/index.spec.ts | 4 +- .../JavaScriptObfuscator.spec.ts | 94 +++++++++++++++++++ .../SourceMapCorrector.spec.ts | 6 +- yarn.lock | 14 +-- 46 files changed, 162 insertions(+), 166 deletions(-) rename src/enums/{ => node-transformers}/VisitorDirection.ts (100%) rename src/enums/{ => node}/NodeType.ts (100%) rename src/enums/{ => source-map}/SourceMapMode.ts (100%) rename src/interfaces/{ => node-transformers}/ITransformersRunner.d.ts (75%) rename src/interfaces/{ => node-transformers}/IVisitor.d.ts (100%) rename src/interfaces/{ => source-map}/ISourceMapCorrector.d.ts (78%) rename src/{ => node-transformers}/TransformersRunner.ts (78%) rename src/{ => source-map}/SourceMapCorrector.ts (82%) rename src/types/{ => node-transformers}/TVisitorDirection.d.ts (100%) rename src/types/{ => node-transformers}/TVisitorFunction.d.ts (100%) rename src/types/{ => node-transformers}/TVisitorResult.d.ts (100%) rename src/types/{ => source-map}/TSourceMapMode.d.ts (100%) delete mode 100644 test/functional-tests/javascript-obfuscator-internal/JavaScriptObfuscatorInternal.spec.ts create mode 100644 test/unit-tests/javascript-obfuscator/JavaScriptObfuscator.spec.ts rename test/unit-tests/{source-map-corrector => source-map}/SourceMapCorrector.spec.ts (94%) diff --git a/package.json b/package.json index 1fe9198f..1e1e5f10 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "tslint-language-service": "^0.9.6", "tslint-webpack-plugin": "1.0.0", "typescript": "2.5.2", - "webpack": "3.5.5", + "webpack": "3.5.6", "webpack-node-externals": "1.6.0" }, "repository": { diff --git a/src/JavaScriptObfuscator.ts b/src/JavaScriptObfuscator.ts index a2176fa8..0a3518c7 100644 --- a/src/JavaScriptObfuscator.ts +++ b/src/JavaScriptObfuscator.ts @@ -14,11 +14,11 @@ import { IObfuscationEventEmitter } from './interfaces/event-emitters/IObfuscati import { IObfuscationResult } from './interfaces/IObfuscationResult'; import { IOptions } from './interfaces/options/IOptions'; import { IRandomGenerator } from './interfaces/utils/IRandomGenerator'; -import { ISourceMapCorrector } from './interfaces/ISourceMapCorrector'; +import { ISourceMapCorrector } from './interfaces/source-map/ISourceMapCorrector'; import { IStackTraceAnalyzer } from './interfaces/analyzers/stack-trace-analyzer/IStackTraceAnalyzer'; import { IStackTraceData } from './interfaces/analyzers/stack-trace-analyzer/IStackTraceData'; import { IStorage } from './interfaces/storages/IStorage'; -import { ITransformersRunner } from './interfaces/ITransformersRunner'; +import { ITransformersRunner } from './interfaces/node-transformers/ITransformersRunner'; import { LoggingMessage } from './enums/logger/LoggingMessage'; import { NodeTransformer } from './enums/container/node-transformers/NodeTransformer'; diff --git a/src/cli/sanitizers/SourceMapModeSanitizer.ts b/src/cli/sanitizers/SourceMapModeSanitizer.ts index 7af2f01d..51126695 100644 --- a/src/cli/sanitizers/SourceMapModeSanitizer.ts +++ b/src/cli/sanitizers/SourceMapModeSanitizer.ts @@ -1,6 +1,6 @@ import { TCLISanitizer } from '../../types/cli/TCLISanitizer'; -import { SourceMapMode } from '../../enums/SourceMapMode'; +import { SourceMapMode } from '../../enums/source-map/SourceMapMode'; /** * @param {string} value diff --git a/src/container/InversifyContainerFacade.ts b/src/container/InversifyContainerFacade.ts index eaefdc1b..be70c46d 100644 --- a/src/container/InversifyContainerFacade.ts +++ b/src/container/InversifyContainerFacade.ts @@ -19,8 +19,8 @@ import { IObfuscationEventEmitter } from '../interfaces/event-emitters/IObfuscat import { IObfuscationResult } from '../interfaces/IObfuscationResult'; import { IOptions } from '../interfaces/options/IOptions'; import { ISourceCode } from '../interfaces/ISourceCode'; -import { ISourceMapCorrector } from '../interfaces/ISourceMapCorrector'; -import { ITransformersRunner } from '../interfaces/ITransformersRunner'; +import { ISourceMapCorrector } from '../interfaces/source-map/ISourceMapCorrector'; +import { ITransformersRunner } from '../interfaces/node-transformers/ITransformersRunner'; import { JavaScriptObfuscator } from '../JavaScriptObfuscator'; import { Logger } from '../logger/Logger'; @@ -28,8 +28,8 @@ import { ObfuscationEventEmitter } from '../event-emitters/ObfuscationEventEmitt import { ObfuscationResult } from '../ObfuscationResult'; import { Options } from "../options/Options"; import { SourceCode } from '../SourceCode'; -import { SourceMapCorrector } from '../SourceMapCorrector'; -import { TransformersRunner } from '../TransformersRunner'; +import { SourceMapCorrector } from '../source-map/SourceMapCorrector'; +import { TransformersRunner } from '../node-transformers/TransformersRunner'; export class InversifyContainerFacade implements IInversifyContainerFacade { /** diff --git a/src/enums/VisitorDirection.ts b/src/enums/node-transformers/VisitorDirection.ts similarity index 100% rename from src/enums/VisitorDirection.ts rename to src/enums/node-transformers/VisitorDirection.ts diff --git a/src/enums/NodeType.ts b/src/enums/node/NodeType.ts similarity index 100% rename from src/enums/NodeType.ts rename to src/enums/node/NodeType.ts diff --git a/src/enums/SourceMapMode.ts b/src/enums/source-map/SourceMapMode.ts similarity index 100% rename from src/enums/SourceMapMode.ts rename to src/enums/source-map/SourceMapMode.ts diff --git a/src/interfaces/node-transformers/INodeTransformer.d.ts b/src/interfaces/node-transformers/INodeTransformer.d.ts index e72cfbc1..b30f4625 100644 --- a/src/interfaces/node-transformers/INodeTransformer.d.ts +++ b/src/interfaces/node-transformers/INodeTransformer.d.ts @@ -1,7 +1,7 @@ import * as estraverse from 'estraverse'; import * as ESTree from 'estree'; -import { IVisitor } from '../IVisitor'; +import { IVisitor } from './IVisitor'; export interface INodeTransformer { /** diff --git a/src/interfaces/ITransformersRunner.d.ts b/src/interfaces/node-transformers/ITransformersRunner.d.ts similarity index 75% rename from src/interfaces/ITransformersRunner.d.ts rename to src/interfaces/node-transformers/ITransformersRunner.d.ts index 95436c70..3cf9a9a1 100644 --- a/src/interfaces/ITransformersRunner.d.ts +++ b/src/interfaces/node-transformers/ITransformersRunner.d.ts @@ -1,6 +1,6 @@ import * as ESTree from 'estree'; -import { NodeTransformer } from '../enums/container/node-transformers/NodeTransformer'; +import { NodeTransformer } from '../../enums/container/node-transformers/NodeTransformer'; export interface ITransformersRunner { /** diff --git a/src/interfaces/IVisitor.d.ts b/src/interfaces/node-transformers/IVisitor.d.ts similarity index 100% rename from src/interfaces/IVisitor.d.ts rename to src/interfaces/node-transformers/IVisitor.d.ts diff --git a/src/interfaces/options/IOptions.d.ts b/src/interfaces/options/IOptions.d.ts index 6e5b63cf..f4a5bef4 100644 --- a/src/interfaces/options/IOptions.d.ts +++ b/src/interfaces/options/IOptions.d.ts @@ -1,4 +1,4 @@ -import { TSourceMapMode } from '../../types/TSourceMapMode'; +import { TSourceMapMode } from '../../types/source-map/TSourceMapMode'; import { TStringArrayEncoding } from '../../types/options/TStringArrayEncoding'; export interface IOptions { diff --git a/src/interfaces/ISourceMapCorrector.d.ts b/src/interfaces/source-map/ISourceMapCorrector.d.ts similarity index 78% rename from src/interfaces/ISourceMapCorrector.d.ts rename to src/interfaces/source-map/ISourceMapCorrector.d.ts index 7ca277dc..bd7fbab4 100644 --- a/src/interfaces/ISourceMapCorrector.d.ts +++ b/src/interfaces/source-map/ISourceMapCorrector.d.ts @@ -1,4 +1,4 @@ -import { IObfuscationResult } from './IObfuscationResult'; +import { IObfuscationResult } from '../IObfuscationResult'; export interface ISourceMapCorrector { /** diff --git a/src/node-transformers/AbstractNodeTransformer.ts b/src/node-transformers/AbstractNodeTransformer.ts index 58e95fdb..950aa5ce 100644 --- a/src/node-transformers/AbstractNodeTransformer.ts +++ b/src/node-transformers/AbstractNodeTransformer.ts @@ -8,7 +8,7 @@ import { IInitializable } from '../interfaces/IInitializable'; import { INodeTransformer } from '../interfaces/node-transformers/INodeTransformer'; import { IOptions } from '../interfaces/options/IOptions'; import { IRandomGenerator } from '../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../interfaces/IVisitor'; +import { IVisitor } from '../interfaces/node-transformers/IVisitor'; import { initializable } from '../decorators/Initializable'; diff --git a/src/TransformersRunner.ts b/src/node-transformers/TransformersRunner.ts similarity index 78% rename from src/TransformersRunner.ts rename to src/node-transformers/TransformersRunner.ts index ad1346a4..fa842350 100644 --- a/src/TransformersRunner.ts +++ b/src/node-transformers/TransformersRunner.ts @@ -1,21 +1,21 @@ import { injectable, inject } from 'inversify'; -import { ServiceIdentifiers } from './container/ServiceIdentifiers'; +import { ServiceIdentifiers } from '../container/ServiceIdentifiers'; import * as estraverse from 'estraverse'; import * as ESTree from 'estree'; -import { TNodeTransformerFactory } from './types/container/node-transformers/TNodeTransformerFactory'; -import { TVisitorDirection } from './types/TVisitorDirection'; -import { TVisitorFunction } from './types/TVisitorFunction'; -import { TVisitorResult } from './types/TVisitorResult'; +import { TNodeTransformerFactory } from '../types/container/node-transformers/TNodeTransformerFactory'; +import { TVisitorDirection } from '../types/node-transformers/TVisitorDirection'; +import { TVisitorFunction } from '../types/node-transformers/TVisitorFunction'; +import { TVisitorResult } from '../types/node-transformers/TVisitorResult'; -import { ITransformersRunner } from './interfaces/ITransformersRunner'; -import { IVisitor } from './interfaces/IVisitor'; +import { ITransformersRunner } from '../interfaces/node-transformers/ITransformersRunner'; +import { IVisitor } from '../interfaces/node-transformers/IVisitor'; -import { NodeTransformer } from './enums/container/node-transformers/NodeTransformer'; -import { VisitorDirection } from './enums/VisitorDirection'; +import { NodeTransformer } from '../enums/container/node-transformers/NodeTransformer'; +import { VisitorDirection } from '../enums/node-transformers/VisitorDirection'; -import { Node } from './node/Node'; +import { Node } from '../node/Node'; @injectable() export class TransformersRunner implements ITransformersRunner { diff --git a/src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts b/src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts index 7af85637..d4cb0e25 100644 --- a/src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts +++ b/src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts @@ -10,7 +10,7 @@ import { IArrayUtils } from '../../interfaces/utils/IArrayUtils'; import { ICustomNode } from '../../interfaces/custom-nodes/ICustomNode'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { ControlFlowCustomNode } from '../../enums/container/custom-nodes/ControlFlowCustomNode'; diff --git a/src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts b/src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts index 1188e990..0342f54b 100644 --- a/src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts +++ b/src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts @@ -13,10 +13,10 @@ import { ICustomNode } from '../../interfaces/custom-nodes/ICustomNode'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; import { IStorage } from '../../interfaces/storages/IStorage'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { ControlFlowCustomNode } from '../../enums/container/custom-nodes/ControlFlowCustomNode'; -import { NodeType } from '../../enums/NodeType'; +import { NodeType } from '../../enums/node/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; diff --git a/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts b/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts index 90d0417d..ea2fd659 100644 --- a/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts +++ b/src/node-transformers/converting-transformers/MemberExpressionTransformer.ts @@ -5,9 +5,9 @@ import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; -import { NodeType } from '../../enums/NodeType'; +import { NodeType } from '../../enums/node/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; diff --git a/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts b/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts index 4629c301..544acf2a 100644 --- a/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts +++ b/src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts @@ -5,9 +5,9 @@ import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; -import { NodeType } from '../../enums/NodeType'; +import { NodeType } from '../../enums/node/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; diff --git a/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts b/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts index 37284e6e..c99d21b9 100644 --- a/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts +++ b/src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts @@ -5,7 +5,7 @@ import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; diff --git a/src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts b/src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts index 73344288..45820c07 100644 --- a/src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts +++ b/src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts @@ -6,7 +6,7 @@ import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; diff --git a/src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts b/src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts index 9c8df5be..6995e988 100644 --- a/src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/CatchClauseTransformer.ts @@ -9,7 +9,7 @@ import { TIdentifierObfuscatingReplacerFactory } from '../../types/container/nod import { IIdentifierObfuscatingReplacer } from '../../interfaces/node-transformers/obfuscating-transformers/IIdentifierObfuscatingReplacer'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { IdentifierObfuscatingReplacer } from '../../enums/container/node-transformers/IdentifierObfuscatingReplacer'; diff --git a/src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts b/src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts index a582b3b0..f62bbc2d 100644 --- a/src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/ClassDeclarationTransformer.ts @@ -10,10 +10,10 @@ import { TNodeWithBlockStatement } from '../../types/node/TNodeWithBlockStatemen import { IIdentifierObfuscatingReplacer } from '../../interfaces/node-transformers/obfuscating-transformers/IIdentifierObfuscatingReplacer'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { IdentifierObfuscatingReplacer } from "../../enums/container/node-transformers/IdentifierObfuscatingReplacer"; -import { NodeType } from '../../enums/NodeType'; +import { NodeType } from '../../enums/node/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; diff --git a/src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts b/src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts index b29dc1b0..068c02f2 100644 --- a/src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/FunctionDeclarationTransformer.ts @@ -10,10 +10,10 @@ import { TNodeWithBlockStatement } from '../../types/node/TNodeWithBlockStatemen import { IIdentifierObfuscatingReplacer } from '../../interfaces/node-transformers/obfuscating-transformers/IIdentifierObfuscatingReplacer'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { IdentifierObfuscatingReplacer } from "../../enums/container/node-transformers/IdentifierObfuscatingReplacer"; -import { NodeType } from '../../enums/NodeType'; +import { NodeType } from '../../enums/node/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; diff --git a/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts b/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts index 89252bf3..bd93ee01 100644 --- a/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/FunctionTransformer.ts @@ -9,7 +9,7 @@ import { TIdentifierObfuscatingReplacerFactory } from '../../types/container/nod import { IIdentifierObfuscatingReplacer } from '../../interfaces/node-transformers/obfuscating-transformers/IIdentifierObfuscatingReplacer'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { IdentifierObfuscatingReplacer } from '../../enums/container/node-transformers/IdentifierObfuscatingReplacer'; diff --git a/src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts b/src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts index e2aea546..2520b501 100644 --- a/src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts @@ -9,7 +9,7 @@ import { TIdentifierObfuscatingReplacerFactory } from '../../types/container/nod import { IIdentifierObfuscatingReplacer } from '../../interfaces/node-transformers/obfuscating-transformers/IIdentifierObfuscatingReplacer'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { IdentifierObfuscatingReplacer } from '../../enums/container/node-transformers/IdentifierObfuscatingReplacer'; diff --git a/src/node-transformers/obfuscating-transformers/LiteralTransformer.ts b/src/node-transformers/obfuscating-transformers/LiteralTransformer.ts index dce4b1d2..b9a031fd 100644 --- a/src/node-transformers/obfuscating-transformers/LiteralTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/LiteralTransformer.ts @@ -7,7 +7,7 @@ import { TLiteralObfuscatingReplacerFactory } from '../../types/container/node-t import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { LiteralObfuscatingReplacer } from '../../enums/container/node-transformers/LiteralObfuscatingReplacer'; diff --git a/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts b/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts index 4d506e7e..390ba45d 100644 --- a/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/ObjectExpressionTransformer.ts @@ -5,9 +5,9 @@ import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; -import { NodeType } from '../../enums/NodeType'; +import { NodeType } from '../../enums/node/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; diff --git a/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts b/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts index 77c7644c..9ff2957f 100644 --- a/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts +++ b/src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts @@ -10,10 +10,10 @@ import { TNodeWithBlockStatement } from '../../types/node/TNodeWithBlockStatemen import { IIdentifierObfuscatingReplacer } from '../../interfaces/node-transformers/obfuscating-transformers/IIdentifierObfuscatingReplacer'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { IdentifierObfuscatingReplacer } from "../../enums/container/node-transformers/IdentifierObfuscatingReplacer"; -import { NodeType } from '../../enums/NodeType'; +import { NodeType } from '../../enums/node/NodeType'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; import { Node } from '../../node/Node'; diff --git a/src/node-transformers/preparing-transformers/NodeGuardTransformer.ts b/src/node-transformers/preparing-transformers/NodeGuardTransformer.ts index 6a2a48b4..e3d117f9 100644 --- a/src/node-transformers/preparing-transformers/NodeGuardTransformer.ts +++ b/src/node-transformers/preparing-transformers/NodeGuardTransformer.ts @@ -5,7 +5,7 @@ import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { NodeGuard } from '../../enums/container/node-guards/NodeGuard'; diff --git a/src/node-transformers/preparing-transformers/ParentizeTransformer.ts b/src/node-transformers/preparing-transformers/ParentizeTransformer.ts index 02f51d24..a0813c87 100644 --- a/src/node-transformers/preparing-transformers/ParentizeTransformer.ts +++ b/src/node-transformers/preparing-transformers/ParentizeTransformer.ts @@ -5,7 +5,7 @@ import * as ESTree from 'estree'; import { IOptions } from '../../interfaces/options/IOptions'; import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator'; -import { IVisitor } from '../../interfaces/IVisitor'; +import { IVisitor } from '../../interfaces/node-transformers/IVisitor'; import { AbstractNodeTransformer } from '../AbstractNodeTransformer'; diff --git a/src/node/Node.ts b/src/node/Node.ts index a0fa956b..e3f42464 100644 --- a/src/node/Node.ts +++ b/src/node/Node.ts @@ -2,7 +2,7 @@ import * as ESTree from 'estree'; import { TNodeWithBlockStatement } from '../types/node/TNodeWithBlockStatement'; -import { NodeType } from '../enums/NodeType'; +import { NodeType } from '../enums/node/NodeType'; export class Node { /** diff --git a/src/node/NodeUtils.ts b/src/node/NodeUtils.ts index 626a9f96..b15a0d96 100644 --- a/src/node/NodeUtils.ts +++ b/src/node/NodeUtils.ts @@ -6,7 +6,7 @@ import * as ESTree from 'estree'; import { TNodeWithBlockStatement } from '../types/node/TNodeWithBlockStatement'; import { TStatement } from '../types/node/TStatement'; -import { NodeType } from '../enums/NodeType'; +import { NodeType } from '../enums/node/NodeType'; import { Node } from './Node'; diff --git a/src/node/Nodes.ts b/src/node/Nodes.ts index 3c91b8ed..81684274 100644 --- a/src/node/Nodes.ts +++ b/src/node/Nodes.ts @@ -3,7 +3,7 @@ import * as ESTree from 'estree'; import { TStatement } from '../types/node/TStatement'; -import { NodeType } from '../enums/NodeType'; +import { NodeType } from '../enums/node/NodeType'; export class Nodes { /** diff --git a/src/options/Options.ts b/src/options/Options.ts index f877ee73..4057abc2 100644 --- a/src/options/Options.ts +++ b/src/options/Options.ts @@ -20,7 +20,7 @@ import { TInputOptions } from '../types/options/TInputOptions'; import { IOptions } from '../interfaces/options/IOptions'; -import { TSourceMapMode } from '../types/TSourceMapMode'; +import { TSourceMapMode } from '../types/source-map/TSourceMapMode'; import { TStringArrayEncoding } from '../types/options/TStringArrayEncoding'; import { DEFAULT_PRESET } from './presets/Default'; diff --git a/src/options/presets/Default.ts b/src/options/presets/Default.ts index ae7731cf..0f82294d 100644 --- a/src/options/presets/Default.ts +++ b/src/options/presets/Default.ts @@ -1,6 +1,6 @@ import { TInputOptions } from '../../types/options/TInputOptions'; -import { SourceMapMode } from '../../enums/SourceMapMode'; +import { SourceMapMode } from '../../enums/source-map/SourceMapMode'; export const DEFAULT_PRESET: TInputOptions = Object.freeze({ compact: true, diff --git a/src/options/presets/NoCustomNodes.ts b/src/options/presets/NoCustomNodes.ts index 83aeb1ca..e6d7f9b3 100644 --- a/src/options/presets/NoCustomNodes.ts +++ b/src/options/presets/NoCustomNodes.ts @@ -1,6 +1,6 @@ import { TInputOptions } from '../../types/options/TInputOptions'; -import { SourceMapMode } from '../../enums/SourceMapMode'; +import { SourceMapMode } from '../../enums/source-map/SourceMapMode'; export const NO_CUSTOM_NODES_PRESET: TInputOptions = Object.freeze({ compact: true, diff --git a/src/SourceMapCorrector.ts b/src/source-map/SourceMapCorrector.ts similarity index 82% rename from src/SourceMapCorrector.ts rename to src/source-map/SourceMapCorrector.ts index 9c53ca64..3ef735d4 100644 --- a/src/SourceMapCorrector.ts +++ b/src/source-map/SourceMapCorrector.ts @@ -1,14 +1,14 @@ import { injectable, inject } from 'inversify'; -import { ServiceIdentifiers } from './container/ServiceIdentifiers'; +import { ServiceIdentifiers } from '../container/ServiceIdentifiers'; -import { TObfuscationResultFactory } from './types/container/TObfuscationResultFactory'; +import { TObfuscationResultFactory } from '../types/container/TObfuscationResultFactory'; -import { ICryptUtils } from './interfaces/utils/ICryptUtils'; -import { IObfuscationResult } from './interfaces/IObfuscationResult'; -import { IOptions } from './interfaces/options/IOptions'; -import { ISourceMapCorrector } from './interfaces/ISourceMapCorrector'; +import { ICryptUtils } from '../interfaces/utils/ICryptUtils'; +import { IObfuscationResult } from '../interfaces/IObfuscationResult'; +import { IOptions } from '../interfaces/options/IOptions'; +import { ISourceMapCorrector } from '../interfaces/source-map/ISourceMapCorrector'; -import { SourceMapMode } from './enums/SourceMapMode'; +import { SourceMapMode } from '../enums/source-map/SourceMapMode'; @injectable() export class SourceMapCorrector implements ISourceMapCorrector { diff --git a/src/types/TVisitorDirection.d.ts b/src/types/node-transformers/TVisitorDirection.d.ts similarity index 100% rename from src/types/TVisitorDirection.d.ts rename to src/types/node-transformers/TVisitorDirection.d.ts diff --git a/src/types/TVisitorFunction.d.ts b/src/types/node-transformers/TVisitorFunction.d.ts similarity index 100% rename from src/types/TVisitorFunction.d.ts rename to src/types/node-transformers/TVisitorFunction.d.ts diff --git a/src/types/TVisitorResult.d.ts b/src/types/node-transformers/TVisitorResult.d.ts similarity index 100% rename from src/types/TVisitorResult.d.ts rename to src/types/node-transformers/TVisitorResult.d.ts diff --git a/src/types/TSourceMapMode.d.ts b/src/types/source-map/TSourceMapMode.d.ts similarity index 100% rename from src/types/TSourceMapMode.d.ts rename to src/types/source-map/TSourceMapMode.d.ts diff --git a/test/functional-tests/javascript-obfuscator-internal/JavaScriptObfuscatorInternal.spec.ts b/test/functional-tests/javascript-obfuscator-internal/JavaScriptObfuscatorInternal.spec.ts deleted file mode 100644 index ae068ae5..00000000 --- a/test/functional-tests/javascript-obfuscator-internal/JavaScriptObfuscatorInternal.spec.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers'; - -import { assert } from 'chai'; - -import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade'; -import { IJavaScriptObfuscator } from '../../../src/interfaces/IJavaScriptObfsucator'; -import { IObfuscationResult } from '../../../src/interfaces/IObfuscationResult'; - -import { NO_CUSTOM_NODES_PRESET } from '../../../src/options/presets/NoCustomNodes'; - -import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade'; - -describe('JavaScriptObfuscatorInternal', () => { - describe(`setSourceMapUrl (url: string)`, () => { - const code: string = 'var test = 1;'; - const sourceMapUrl: string = 'test.js.map'; - - let javaScriptObfuscator: IJavaScriptObfuscator; - - describe('variant #1: default behaviour', () => { - const regExp: RegExp = new RegExp(`sourceMappingURL=${sourceMapUrl}`); - - let obfuscatedCode: string, - sourceMapObject: any; - - before(() => { - const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade(); - - inversifyContainerFacade.load( - '', - { - ...NO_CUSTOM_NODES_PRESET, - sourceMap: true, - sourceMapFileName: sourceMapUrl - } - ); - javaScriptObfuscator = inversifyContainerFacade - .get(ServiceIdentifiers.IJavaScriptObfuscator); - - const obfuscationResult: IObfuscationResult = javaScriptObfuscator.obfuscate(code); - - obfuscatedCode = obfuscationResult.getObfuscatedCode(); - sourceMapObject = JSON.parse(obfuscationResult.getSourceMap()); - }); - - it('should link obfuscated code with source map', () => { - assert.match(obfuscatedCode, regExp); - }); - - it('should return valid source map with `mappings` property', () => { - assert.isOk(sourceMapObject.mappings); - }); - }); - - describe('variant #2: `sourceMapBaseUrl` is set', () => { - const sourceMapBaseUrl: string = 'http://localhost:9000'; - const regExp: RegExp = new RegExp(`sourceMappingURL=${sourceMapBaseUrl}/${sourceMapUrl}$`); - - let obfuscatedCode: string, - sourceMapObject: any; - - before(() => { - const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade(); - - inversifyContainerFacade.load( - '', - { - ...NO_CUSTOM_NODES_PRESET, - sourceMap: true, - sourceMapBaseUrl: sourceMapBaseUrl, - sourceMapFileName: sourceMapUrl - } - ); - javaScriptObfuscator = inversifyContainerFacade - .get(ServiceIdentifiers.IJavaScriptObfuscator); - - const obfuscationResult: IObfuscationResult = javaScriptObfuscator.obfuscate(code); - - obfuscatedCode = obfuscationResult.getObfuscatedCode(); - sourceMapObject = JSON.parse(obfuscationResult.getSourceMap()); - }); - - it('should properly add base url to source map import inside obfuscated code', () => { - assert.match(obfuscatedCode, regExp); - }); - - it('should return valid source map with `mappings` property', () => { - assert.isOk(sourceMapObject.mappings); - }); - }); - }); -}); diff --git a/test/index.spec.ts b/test/index.spec.ts index 03daede8..072bdd38 100644 --- a/test/index.spec.ts +++ b/test/index.spec.ts @@ -12,13 +12,14 @@ import './unit-tests/cli/sanitizers/SourceMapModeSanitizer.spec'; import './unit-tests/cli/sanitizers/StringArrayEncodingSanitizer.spec'; import './unit-tests/cli/utils/CLIUtils.spec'; import './unit-tests/decorators/initializable/Initializable.spec'; +import './unit-tests/javascript-obfuscator/JavaScriptObfuscator.spec'; import './unit-tests/logger/Logger.spec'; import './unit-tests/node/node-appender/NodeAppender.spec'; import './unit-tests/node/node-utils/NodeUtils.spec'; import './unit-tests/obfuscation-result/ObfuscationResult.spec'; import './unit-tests/options/OptionsNormalizer.spec'; import './unit-tests/options/ValidationErrorsFormatter.spec'; -import './unit-tests/source-map-corrector/SourceMapCorrector.spec'; +import './unit-tests/source-map/SourceMapCorrector.spec'; import './unit-tests/storages/ArrayStorage.spec'; import './unit-tests/storages/MapStorage.spec'; import './unit-tests/utils/ArrayUtils.spec'; @@ -38,7 +39,6 @@ import './functional-tests/custom-nodes/string-array-nodes/StringArrayCallsWrapp import './functional-tests/custom-nodes/string-array-nodes/StringArrayRotateFunctionNode.spec'; import './functional-tests/custom-nodes/string-array-nodes/StringArrayNode.spec'; import './functional-tests/javascript-obfuscator/JavaScriptObfuscator.spec'; -import './functional-tests/javascript-obfuscator-internal/JavaScriptObfuscatorInternal.spec'; import './functional-tests/node-guards/black-list-node-guard/BlackListNodeGuard.spec'; import './functional-tests/node-transformers/control-flow-transformers/block-statement-control-flow-transformer/BlockStatementControlFlowTransformer.spec'; import './functional-tests/node-transformers/control-flow-transformers/function-control-flow-transformer/FunctionControlFlowTransformer.spec'; diff --git a/test/unit-tests/javascript-obfuscator/JavaScriptObfuscator.spec.ts b/test/unit-tests/javascript-obfuscator/JavaScriptObfuscator.spec.ts new file mode 100644 index 00000000..16adcabd --- /dev/null +++ b/test/unit-tests/javascript-obfuscator/JavaScriptObfuscator.spec.ts @@ -0,0 +1,94 @@ +import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers'; + +import { assert } from 'chai'; + +import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade'; +import { IJavaScriptObfuscator } from '../../../src/interfaces/IJavaScriptObfsucator'; +import { IObfuscationResult } from '../../../src/interfaces/IObfuscationResult'; + +import { NO_CUSTOM_NODES_PRESET } from '../../../src/options/presets/NoCustomNodes'; + +import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade'; + +describe('JavaScriptObfuscator', () => { + describe(`obfuscate (sourceCode: string): IObfuscationResult`, () => { + describe(`source map`, () => { + const code: string = 'var test = 1;'; + const sourceMapUrl: string = 'test.js.map'; + + let javaScriptObfuscator: IJavaScriptObfuscator; + + describe('variant #1: default behaviour', () => { + const regExp: RegExp = new RegExp(`sourceMappingURL=${sourceMapUrl}`); + + let obfuscatedCode: string, + sourceMapObject: any; + + before(() => { + const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade(); + + inversifyContainerFacade.load( + '', + { + ...NO_CUSTOM_NODES_PRESET, + sourceMap: true, + sourceMapFileName: sourceMapUrl + } + ); + javaScriptObfuscator = inversifyContainerFacade + .get(ServiceIdentifiers.IJavaScriptObfuscator); + + const obfuscationResult: IObfuscationResult = javaScriptObfuscator.obfuscate(code); + + obfuscatedCode = obfuscationResult.getObfuscatedCode(); + sourceMapObject = JSON.parse(obfuscationResult.getSourceMap()); + }); + + it('should link obfuscated code with source map', () => { + assert.match(obfuscatedCode, regExp); + }); + + it('should return valid source map with `mappings` property', () => { + assert.isOk(sourceMapObject.mappings); + }); + }); + + describe('variant #2: `sourceMapBaseUrl` is set', () => { + const sourceMapBaseUrl: string = 'http://localhost:9000'; + const regExp: RegExp = new RegExp(`sourceMappingURL=${sourceMapBaseUrl}/${sourceMapUrl}$`); + + let obfuscatedCode: string, + sourceMapObject: any; + + before(() => { + const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade(); + + inversifyContainerFacade.load( + '', + { + ...NO_CUSTOM_NODES_PRESET, + sourceMap: true, + sourceMapBaseUrl: sourceMapBaseUrl, + sourceMapFileName: sourceMapUrl + } + ); + javaScriptObfuscator = inversifyContainerFacade + .get(ServiceIdentifiers.IJavaScriptObfuscator); + + const obfuscationResult: IObfuscationResult = javaScriptObfuscator.obfuscate(code); + + obfuscatedCode = obfuscationResult.getObfuscatedCode(); + sourceMapObject = JSON.parse(obfuscationResult.getSourceMap()); + }); + + it('should properly add base url to source map import inside obfuscated code', () => { + assert.match(obfuscatedCode, regExp); + }); + + it('should return valid source map with `mappings` property', () => { + assert.isOk(sourceMapObject.mappings); + }); + }); + }); + }); +}); diff --git a/test/unit-tests/source-map-corrector/SourceMapCorrector.spec.ts b/test/unit-tests/source-map/SourceMapCorrector.spec.ts similarity index 94% rename from test/unit-tests/source-map-corrector/SourceMapCorrector.spec.ts rename to test/unit-tests/source-map/SourceMapCorrector.spec.ts index a826f75f..f1d6489c 100644 --- a/test/unit-tests/source-map-corrector/SourceMapCorrector.spec.ts +++ b/test/unit-tests/source-map/SourceMapCorrector.spec.ts @@ -2,13 +2,13 @@ import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers'; import { assert } from 'chai'; -import { TSourceMapMode } from '../../../src/types/TSourceMapMode'; +import { TSourceMapMode } from '../../../src/types/source-map/TSourceMapMode'; import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade'; import { IObfuscationResult } from '../../../src/interfaces/IObfuscationResult'; -import { ISourceMapCorrector } from '../../../src/interfaces/ISourceMapCorrector'; +import { ISourceMapCorrector } from '../../../src/interfaces/source-map/ISourceMapCorrector'; -import { SourceMapMode } from '../../../src/enums/SourceMapMode'; +import { SourceMapMode } from '../../../src/enums/source-map/SourceMapMode'; import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade'; diff --git a/yarn.lock b/yarn.lock index ec782302..160de91e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3520,18 +3520,12 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.4.17: +source-map-support@0.4.17, source-map-support@^0.4.0, source-map-support@^0.4.15: version "0.4.17" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.17.tgz#6f2150553e6375375d0ccb3180502b78c18ba430" dependencies: source-map "^0.5.6" -source-map-support@^0.4.0, source-map-support@^0.4.15: - version "0.4.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.16.tgz#16fecf98212467d017d586a2af68d628b9421cd8" - dependencies: - source-map "^0.5.6" - source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -4038,9 +4032,9 @@ webpack-sources@^1.0.1: source-list-map "^2.0.0" source-map "~0.5.3" -webpack@3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.5.tgz#3226f09fc8b3e435ff781e7af34f82b68b26996c" +webpack@3.5.6: + version "3.5.6" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.6.tgz#a492fb6c1ed7f573816f90e00c8fbb5a20cc5c36" dependencies: acorn "^5.0.0" acorn-dynamic-import "^2.0.0"