Skip to content

Commit fe3ec4b

Browse files
committed
Merge branch 'dev'
2 parents 2ee183d + ae924d1 commit fe3ec4b

75 files changed

Lines changed: 1187 additions & 974 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎dist/index.js‎

Lines changed: 837 additions & 817 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"escodegen": "1.8.1",
2929
"esprima": "3.1.3",
3030
"estraverse": "4.2.0",
31-
"inversify": "3.0.0-rc.4",
31+
"inversify": "3.0.0",
3232
"lodash": "4.17.4",
3333
"mkdirp": "0.5.1",
3434
"reflect-metadata": "0.1.9",
@@ -44,10 +44,10 @@
4444
"@types/esprima": "2.1.33",
4545
"@types/estraverse": "0.0.6",
4646
"@types/estree": "0.0.34",
47-
"@types/lodash": "4.14.48",
47+
"@types/lodash": "4.14.50",
4848
"@types/mkdirp": "0.3.29",
4949
"@types/mocha": "2.2.37",
50-
"@types/node": "6.0.59",
50+
"@types/node": "7.0.0",
5151
"@types/sinon": "1.16.34",
5252
"@types/string-template": "1.0.2",
5353
"awesome-typescript-loader": "3.0.0-beta.18",
@@ -63,8 +63,8 @@
6363
"ts-node": "2.0.0",
6464
"tslint": "4.3.1",
6565
"tslint-loader": "3.3.0",
66-
"typescript": "2.1.4",
67-
"webpack": "2.2.0-rc.3",
66+
"typescript": "2.1.5",
67+
"webpack": "2.2.0-rc.4",
6868
"webpack-node-externals": "1.5.4"
6969
},
7070
"repository": {

‎src/Obfuscator.ts‎

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class Obfuscator implements IObfuscator {
2929
/**
3030
* @type {Map<string, NodeTransformers[]>}
3131
*/
32-
private static readonly nodeControlFlowTransformersMap: Map <string, NodeTransformers[]> = new Map([
32+
private static readonly controlFlowTransformersMap: Map <string, NodeTransformers[]> = new Map([
3333
[NodeType.BlockStatement, [NodeTransformers.BlockStatementControlFlowTransformer]],
3434
[NodeType.FunctionDeclaration, [NodeTransformers.FunctionControlFlowTransformer]],
3535
[NodeType.FunctionExpression, [NodeTransformers.FunctionControlFlowTransformer]]
@@ -38,7 +38,16 @@ export class Obfuscator implements IObfuscator {
3838
/**
3939
* @type {Map<string, NodeTransformers[]>}
4040
*/
41-
private static readonly nodeObfuscatorsMap: Map <string, NodeTransformers[]> = new Map([
41+
private static readonly convertingTransformersMap: Map <string, NodeTransformers[]> = new Map([
42+
[NodeType.MemberExpression, [NodeTransformers.MemberExpressionTransformer]],
43+
[NodeType.MethodDefinition, [NodeTransformers.MethodDefinitionTransformer]],
44+
[NodeType.TemplateLiteral, [NodeTransformers.TemplateLiteralTransformer]],
45+
]);
46+
47+
/**
48+
* @type {Map<string, NodeTransformers[]>}
49+
*/
50+
private static readonly obfuscatingTransformersMap: Map <string, NodeTransformers[]> = new Map([
4251
[NodeType.ArrowFunctionExpression, [NodeTransformers.FunctionTransformer]],
4352
[NodeType.ClassDeclaration, [NodeTransformers.FunctionDeclarationTransformer]],
4453
[NodeType.CatchClause, [NodeTransformers.CatchClauseTransformer]],
@@ -47,13 +56,10 @@ export class Obfuscator implements IObfuscator {
4756
NodeTransformers.FunctionTransformer
4857
]],
4958
[NodeType.FunctionExpression, [NodeTransformers.FunctionTransformer]],
50-
[NodeType.MemberExpression, [NodeTransformers.MemberExpressionTransformer]],
51-
[NodeType.MethodDefinition, [NodeTransformers.MethodDefinitionTransformer]],
5259
[NodeType.ObjectExpression, [NodeTransformers.ObjectExpressionTransformer]],
5360
[NodeType.VariableDeclaration, [NodeTransformers.VariableDeclarationTransformer]],
5461
[NodeType.LabeledStatement, [NodeTransformers.LabeledStatementTransformer]],
55-
[NodeType.TemplateLiteral, [NodeTransformers.TemplateLiteralTransformer]],
56-
[NodeType.Literal, [NodeTransformers.LiteralTransformer]] // should be latest in the chain of obfuscators
62+
[NodeType.Literal, [NodeTransformers.LiteralTransformer]]
5763
]);
5864

5965
/**
@@ -134,15 +140,20 @@ export class Obfuscator implements IObfuscator {
134140
astTree = this.transformAstTree(
135141
astTree,
136142
VisitorDirection.leave,
137-
this.nodeTransformersFactory(Obfuscator.nodeControlFlowTransformersMap)
143+
this.nodeTransformersFactory(Obfuscator.controlFlowTransformersMap)
138144
);
139145
}
140146

141147
// second pass: nodes obfuscation
142148
astTree = this.transformAstTree(
143149
astTree,
144150
VisitorDirection.enter,
145-
this.nodeTransformersFactory(Obfuscator.nodeObfuscatorsMap)
151+
this.nodeTransformersFactory(
152+
new Map([
153+
...Obfuscator.convertingTransformersMap,
154+
...Obfuscator.obfuscatingTransformersMap
155+
])
156+
)
146157
);
147158

148159
this.obfuscationEventEmitter.emit(ObfuscationEvents.AfterObfuscation, astTree, stackTraceData);

‎src/cli/JavaScriptObfuscatorCLI.ts‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,12 @@ export class JavaScriptObfuscatorCLI {
182182
.option(
183183
'--domainLock <list>',
184184
'Blocks the execution of the code in domains that do not match the passed RegExp patterns (comma separated)',
185-
(val: string) => val.split(',')
185+
(value: string) => value.split(',')
186186
)
187187
.option(
188188
'--reservedNames <list>',
189189
'Disable obfuscation of variable names, function names and names of function parameters that match the passed RegExp patterns (comma separated)',
190-
(val: string) => val.split(',')
190+
(value: string) => value.split(',')
191191
)
192192
.option(
193193
'--rotateStringArray <boolean>', 'Disable rotation of unicode array values during obfuscation',
@@ -286,7 +286,10 @@ export class JavaScriptObfuscatorCLI {
286286
options.sourceMapFileName || ''
287287
);
288288

289-
options.sourceMapFileName = path.basename(outputSourceMapPath);
289+
options = {
290+
...options,
291+
sourceMapFileName: path.basename(outputSourceMapPath)
292+
};
290293

291294
const obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(this.data, options);
292295

‎src/container/InversifyContainerFacade.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { ServiceIdentifiers } from './ServiceIdentifiers';
33

44
import { controlFlowTransformersModule } from './modules/node-transformers/ControlFlowTransformersModule';
55
import { customNodesModule } from './modules/custom-nodes/CustomNodesModule';
6-
import { obfuscationTransformersModule } from './modules/node-transformers/ObfuscationTransformersModule';
6+
import { obfuscatingTransformersModule } from './modules/node-transformers/ObfuscatingTransformersModule';
77
import { nodeTransformersModule } from './modules/node-transformers/NodeTransformersModule';
88
import { stackTraceAnalyzerModule } from './modules/stack-trace-analyzer/StackTraceAnalyzerModule';
99
import { storagesModule } from './modules/storages/StoragesModule';
@@ -88,7 +88,7 @@ export class InversifyContainerFacade implements IInversifyContainerFacade {
8888
this.container.load(customNodesModule);
8989
this.container.load(nodeTransformersModule);
9090
this.container.load(controlFlowTransformersModule);
91-
this.container.load(obfuscationTransformersModule);
91+
this.container.load(obfuscatingTransformersModule);
9292
}
9393

9494
/**

‎src/container/modules/node-transformers/NodeTransformersModule.ts‎

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,19 @@ import { NodeTransformers } from '../../../enums/container/NodeTransformers';
88
import { FunctionControlFlowTransformer } from '../../../node-transformers/control-flow-transformers/FunctionControlFlowTransformer';
99

1010
import { BlockStatementControlFlowTransformer } from '../../../node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer';
11-
import { CatchClauseTransformer } from '../../../node-transformers/obfuscation-transformers/CatchClauseTransformer';
12-
import { FunctionDeclarationTransformer } from '../../../node-transformers/obfuscation-transformers/FunctionDeclarationTransformer';
13-
import { FunctionTransformer } from '../../../node-transformers/obfuscation-transformers/FunctionTransformer';
14-
import { LabeledStatementTransformer } from '../../../node-transformers/obfuscation-transformers/LabeledStatementTransformer';
15-
import { LiteralTransformer } from '../../../node-transformers/obfuscation-transformers/LiteralTransformer';
16-
import { MemberExpressionTransformer } from '../../../node-transformers/obfuscation-transformers/MemberExpressionTransformer';
17-
import { MethodDefinitionTransformer } from '../../../node-transformers/obfuscation-transformers/MethodDefinitionTransformer';
18-
import { ObjectExpressionTransformer } from '../../../node-transformers/obfuscation-transformers/ObjectExpressionTransformer';
19-
import { TemplateLiteralTransformer } from '../../../node-transformers/obfuscation-transformers/TemplateLiteralTransformer';
20-
import { VariableDeclarationTransformer } from '../../../node-transformers/obfuscation-transformers/VariableDeclarationTransformer';
11+
import { CatchClauseTransformer } from '../../../node-transformers/obfuscating-transformers/CatchClauseTransformer';
12+
import { FunctionDeclarationTransformer } from '../../../node-transformers/obfuscating-transformers/FunctionDeclarationTransformer';
13+
import { FunctionTransformer } from '../../../node-transformers/obfuscating-transformers/FunctionTransformer';
14+
import { LabeledStatementTransformer } from '../../../node-transformers/obfuscating-transformers/LabeledStatementTransformer';
15+
import { LiteralTransformer } from '../../../node-transformers/obfuscating-transformers/LiteralTransformer';
16+
import { MemberExpressionTransformer } from '../../../node-transformers/converting-transformers/MemberExpressionTransformer';
17+
import { MethodDefinitionTransformer } from '../../../node-transformers/converting-transformers/MethodDefinitionTransformer';
18+
import { ObjectExpressionTransformer } from '../../../node-transformers/obfuscating-transformers/ObjectExpressionTransformer';
19+
import { TemplateLiteralTransformer } from '../../../node-transformers/converting-transformers/TemplateLiteralTransformer';
20+
import { VariableDeclarationTransformer } from '../../../node-transformers/obfuscating-transformers/VariableDeclarationTransformer';
2121

2222
export const nodeTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
23-
// node control flow transformers
23+
// control flow transformers
2424
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
2525
.to(BlockStatementControlFlowTransformer)
2626
.whenTargetNamed(NodeTransformers.BlockStatementControlFlowTransformer);
@@ -29,7 +29,20 @@ export const nodeTransformersModule: interfaces.ContainerModule = new ContainerM
2929
.to(FunctionControlFlowTransformer)
3030
.whenTargetNamed(NodeTransformers.FunctionControlFlowTransformer);
3131

32-
// node obfuscators
32+
// converting transformers
33+
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
34+
.to(MemberExpressionTransformer)
35+
.whenTargetNamed(NodeTransformers.MemberExpressionTransformer);
36+
37+
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
38+
.to(MethodDefinitionTransformer)
39+
.whenTargetNamed(NodeTransformers.MethodDefinitionTransformer);
40+
41+
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
42+
.to(TemplateLiteralTransformer)
43+
.whenTargetNamed(NodeTransformers.TemplateLiteralTransformer);
44+
45+
// obfuscation transformers
3346
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
3447
.to(CatchClauseTransformer)
3548
.whenTargetNamed(NodeTransformers.CatchClauseTransformer);
@@ -50,22 +63,10 @@ export const nodeTransformersModule: interfaces.ContainerModule = new ContainerM
5063
.to(LiteralTransformer)
5164
.whenTargetNamed(NodeTransformers.LiteralTransformer);
5265

53-
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
54-
.to(MemberExpressionTransformer)
55-
.whenTargetNamed(NodeTransformers.MemberExpressionTransformer);
56-
57-
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
58-
.to(MethodDefinitionTransformer)
59-
.whenTargetNamed(NodeTransformers.MethodDefinitionTransformer);
60-
6166
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
6267
.to(ObjectExpressionTransformer)
6368
.whenTargetNamed(NodeTransformers.ObjectExpressionTransformer);
6469

65-
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
66-
.to(TemplateLiteralTransformer)
67-
.whenTargetNamed(NodeTransformers.TemplateLiteralTransformer);
68-
6970
bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
7071
.to(VariableDeclarationTransformer)
7172
.whenTargetNamed(NodeTransformers.VariableDeclarationTransformer);

src/container/modules/node-transformers/ObfuscationTransformersModule.ts renamed to src/container/modules/node-transformers/ObfuscatingTransformersModule.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { IObfuscationReplacer } from '../../../interfaces/node-transformers/IObf
55

66
import { NodeObfuscatorsReplacers } from '../../../enums/container/NodeObfuscationReplacers';
77

8-
import { BooleanLiteralReplacer } from '../../../node-transformers/obfuscation-transformers/replacers/BooleanLiteralReplacer';
9-
import { IdentifierReplacer } from '../../../node-transformers/obfuscation-transformers/replacers/IdentifierReplacer';
10-
import { NumberLiteralReplacer } from '../../../node-transformers/obfuscation-transformers/replacers/NumberLiteralReplacer';
11-
import { StringLiteralReplacer } from '../../../node-transformers/obfuscation-transformers/replacers/StringLiteralReplacer';
8+
import { BooleanLiteralReplacer } from '../../../node-transformers/obfuscating-transformers/replacers/BooleanLiteralReplacer';
9+
import { IdentifierReplacer } from '../../../node-transformers/obfuscating-transformers/replacers/IdentifierReplacer';
10+
import { NumberLiteralReplacer } from '../../../node-transformers/obfuscating-transformers/replacers/NumberLiteralReplacer';
11+
import { StringLiteralReplacer } from '../../../node-transformers/obfuscating-transformers/replacers/StringLiteralReplacer';
1212

13-
export const obfuscationTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
13+
export const obfuscatingTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
1414
bind<IObfuscationReplacer>(ServiceIdentifiers.IObfuscatorReplacer)
1515
.to(BooleanLiteralReplacer)
1616
.whenTargetNamed(NodeObfuscatorsReplacers.BooleanReplacer);

‎src/enums/NodeType.ts‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export const NodeType: any = Utils.strEnumify({
44
ArrayExpression: 'ArrayExpression',
55
ArrowFunctionExpression: 'ArrowFunctionExpression',
66
AssignmentExpression: 'AssignmentExpression',
7+
AssignmentPattern: 'AssignmentPattern',
78
BinaryExpression: 'BinaryExpression',
89
BlockStatement: 'BlockStatement',
910
BreakStatement: 'BreakStatement',
@@ -22,6 +23,7 @@ export const NodeType: any = Utils.strEnumify({
2223
MemberExpression: 'MemberExpression',
2324
MethodDefinition: 'MethodDefinition',
2425
ObjectExpression: 'ObjectExpression',
26+
ObjectPattern: 'ObjectPattern',
2527
Program: 'Program',
2628
Property: 'Property',
2729
ReturnStatement: 'ReturnStatement',

src/node-transformers/obfuscation-transformers/MemberExpressionTransformer.ts renamed to src/node-transformers/converting-transformers/MemberExpressionTransformer.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
44
import * as ESTree from 'estree';
55

66
import { IOptions } from '../../interfaces/options/IOptions';
7-
import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfuscationReplacer';
87

9-
import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers';
108
import { NodeType } from '../../enums/NodeType';
119

1210
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
@@ -15,21 +13,12 @@ import { Node } from '../../node/Node';
1513
@injectable()
1614
export class MemberExpressionTransformer extends AbstractNodeTransformer {
1715
/**
18-
* @type {IObfuscationReplacer}
19-
*/
20-
private readonly stringLiteralReplacer: IObfuscationReplacer;
21-
22-
/**
23-
* @param replacersFactory
2416
* @param options
2517
*/
2618
constructor (
27-
@inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer,
2819
@inject(ServiceIdentifiers.IOptions) options: IOptions
2920
) {
3021
super(options);
31-
32-
this.stringLiteralReplacer = replacersFactory(NodeObfuscatorsReplacers.StringLiteralReplacer);
3322
}
3423

3524
/**

src/node-transformers/obfuscation-transformers/MethodDefinitionTransformer.ts renamed to src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import { ServiceIdentifiers } from '../../container/ServiceIdentifiers';
44
import * as ESTree from 'estree';
55

66
import { IOptions } from '../../interfaces/options/IOptions';
7-
import { IObfuscationReplacer } from '../../interfaces/node-transformers/IObfuscationReplacer';
87

9-
import { NodeObfuscatorsReplacers } from '../../enums/container/NodeObfuscationReplacers';
108
import { NodeType } from '../../enums/NodeType';
119

1210
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
@@ -29,21 +27,12 @@ export class MethodDefinitionTransformer extends AbstractNodeTransformer {
2927
private static readonly ignoredNames: string[] = ['constructor'];
3028

3129
/**
32-
* @type {IObfuscationReplacer}
33-
*/
34-
private readonly stringLiteralReplacer: IObfuscationReplacer;
35-
36-
/**
37-
* @param replacersFactory
3830
* @param options
3931
*/
4032
constructor (
41-
@inject(ServiceIdentifiers.Factory__IObfuscatorReplacer) replacersFactory: (replacer: NodeObfuscatorsReplacers) => IObfuscationReplacer,
4233
@inject(ServiceIdentifiers.IOptions) options: IOptions
4334
) {
4435
super(options);
45-
46-
this.stringLiteralReplacer = replacersFactory(NodeObfuscatorsReplacers.StringLiteralReplacer);
4736
}
4837

4938
/**

0 commit comments

Comments
 (0)