Skip to content

Commit 515dc82

Browse files
committed
Added getOptions method to IObfuscationResult
1 parent 32e1dad commit 515dc82

7 files changed

Lines changed: 90 additions & 19 deletions

File tree

dist/index.browser.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.cli.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/interfaces/source-code/IObfuscationResult.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { TIdentifierNamesCache } from '../../types/TIdentifierNamesCache';
2+
23
import { IInitializable } from '../IInitializable';
4+
import { IOptions } from '../options/IOptions';
35

46
export interface IObfuscationResult extends IInitializable <[string, string]> {
57
/**
@@ -12,6 +14,11 @@ export interface IObfuscationResult extends IInitializable <[string, string]> {
1214
*/
1315
getObfuscatedCode (): string;
1416

17+
/**
18+
* @return {IOptions}
19+
*/
20+
getOptions (): IOptions;
21+
1522
/**
1623
* @return {string}
1724
*/

src/source-code/ObfuscationResult.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,13 @@ export class ObfuscationResult implements IObfuscationResult {
9696
return this.correctObfuscatedCode();
9797
}
9898

99+
/**
100+
* @returns {IOptions}
101+
*/
102+
public getOptions (): IOptions {
103+
return this.options;
104+
}
105+
99106
/**
100107
* @returns {string}
101108
*/

test/functional-tests/javascript-obfuscator/JavaScriptObfuscator.spec.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,13 +1141,13 @@ describe('JavaScriptObfuscator', () => {
11411141
const samplesCount: number = 30;
11421142

11431143
let collisionError: string | null = null;
1144-
let obfuscateFunc: (identifierNamesGenerator: TTypeFromEnum<typeof IdentifierNamesGenerator>) => string;
1144+
let obfuscateFunc: (identifierNamesGenerator: TTypeFromEnum<typeof IdentifierNamesGenerator>) => IObfuscationResult;
11451145

11461146
before(() => {
11471147
const code: string = readFileAsString(__dirname + '/fixtures/custom-nodes-identifier-names-collision.js');
11481148

11491149
obfuscateFunc = (identifierNamesGenerator: TTypeFromEnum<typeof IdentifierNamesGenerator>) => {
1150-
const obfuscatedCode = JavaScriptObfuscator.obfuscate(
1150+
return JavaScriptObfuscator.obfuscate(
11511151
code,
11521152
{
11531153
identifierNamesGenerator,
@@ -1156,9 +1156,7 @@ describe('JavaScriptObfuscator', () => {
11561156
identifiersDictionary: ['foo', 'bar', 'baz', 'bark', 'hawk', 'foozmos', 'cow', 'chikago'],
11571157
stringArray: true
11581158
}
1159-
).getObfuscatedCode();
1160-
1161-
return obfuscatedCode;
1159+
);
11621160
};
11631161

11641162

@@ -1167,10 +1165,14 @@ describe('JavaScriptObfuscator', () => {
11671165
IdentifierNamesGenerator.MangledIdentifierNamesGenerator
11681166
].forEach((identifierNamesGenerator: TTypeFromEnum<typeof IdentifierNamesGenerator>) => {
11691167
for (let i = 0; i < samplesCount; i++) {
1168+
const obfuscationResult = obfuscateFunc(identifierNamesGenerator);
1169+
const obfuscatedCode = obfuscationResult.getObfuscatedCode();
1170+
const seed = obfuscationResult.getOptions().seed;
1171+
11701172
try {
1171-
eval(obfuscateFunc(identifierNamesGenerator));
1173+
eval(obfuscatedCode);
11721174
} catch (error) {
1173-
collisionError = error.message;
1175+
collisionError = `Seed: ${seed}. Error: ${error.message}`;
11741176
break;
11751177
}
11761178
}

test/unit-tests/source-code/ObfuscationResult.spec.ts

Lines changed: 64 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,55 @@ import { ServiceIdentifiers } from '../../../src/container/ServiceIdentifiers';
44

55
import { assert } from 'chai';
66

7+
import { TInputOptions } from '../../../src/types/options/TInputOptions';
78
import { TTypeFromEnum } from '../../../src/types/utils/TTypeFromEnum';
89

910
import { IInversifyContainerFacade } from '../../../src/interfaces/container/IInversifyContainerFacade';
1011
import { IObfuscationResult } from '../../../src/interfaces/source-code/IObfuscationResult';
12+
import { IOptions } from '../../../src/interfaces/options/IOptions';
1113

1214
import { SourceMapMode } from '../../../src/enums/source-map/SourceMapMode';
1315

16+
import { DEFAULT_PRESET } from '../../../src/options/presets/Default';
17+
1418
import { InversifyContainerFacade } from '../../../src/container/InversifyContainerFacade';
1519

20+
/**
21+
* @param {string} rawObfuscatedCode
22+
* @param {TInputOptions} options
23+
* @returns {IObfuscationResult}
24+
*/
25+
function getObfuscationResult (
26+
rawObfuscatedCode: string,
27+
options: TInputOptions
28+
): IObfuscationResult {
29+
const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
30+
31+
inversifyContainerFacade.load(
32+
'',
33+
'',
34+
{
35+
...DEFAULT_PRESET,
36+
...options
37+
}
38+
);
39+
40+
const obfuscationResult: IObfuscationResult = inversifyContainerFacade
41+
.get<IObfuscationResult>(ServiceIdentifiers.IObfuscationResult);
42+
43+
obfuscationResult.initialize(rawObfuscatedCode, '');
44+
45+
return obfuscationResult;
46+
}
47+
1648
/**
1749
* @param rawObfuscatedCode
1850
* @param sourceMap
1951
* @param sourceMapBaseUrl
2052
* @param sourceMapFileName
2153
* @param sourceMapMode
2254
*/
23-
function getObfuscationResult (
55+
function getSourceMapObfuscationResult (
2456
rawObfuscatedCode: string,
2557
sourceMap: string,
2658
sourceMapBaseUrl: string,
@@ -33,10 +65,11 @@ function getObfuscationResult (
3365
'',
3466
'',
3567
{
68+
...DEFAULT_PRESET,
3669
sourceMap: true,
37-
sourceMapBaseUrl: sourceMapBaseUrl,
38-
sourceMapFileName: sourceMapFileName,
39-
sourceMapMode: sourceMapMode
70+
sourceMapBaseUrl,
71+
sourceMapFileName,
72+
sourceMapMode
4073
}
4174
);
4275

@@ -56,7 +89,7 @@ describe('ObfuscatedCode', () => {
5689
let obfuscationResult: IObfuscationResult;
5790

5891
before(() => {
59-
obfuscationResult = getObfuscationResult(
92+
obfuscationResult = getSourceMapObfuscationResult(
6093
expectedObfuscatedCode,
6194
sourceMap,
6295
'',
@@ -75,7 +108,7 @@ describe('ObfuscatedCode', () => {
75108

76109
describe('source map doest\'t exist', () => {
77110
before(() => {
78-
obfuscatedCode = getObfuscationResult(
111+
obfuscatedCode = getSourceMapObfuscationResult(
79112
expectedObfuscatedCode,
80113
'',
81114
'',
@@ -93,7 +126,7 @@ describe('ObfuscatedCode', () => {
93126
const regExp: RegExp = /data:application\/json;base64,dGVzdA==/;
94127

95128
before(() => {
96-
obfuscatedCode = getObfuscationResult(
129+
obfuscatedCode = getSourceMapObfuscationResult(
97130
expectedObfuscatedCode,
98131
sourceMap,
99132
'',
@@ -111,7 +144,7 @@ describe('ObfuscatedCode', () => {
111144
const regExp: RegExp = /sourceMappingURL=http:\/\/example\.com\/output\.js\.map/;
112145

113146
before(() => {
114-
obfuscatedCode = getObfuscationResult(
147+
obfuscatedCode = getSourceMapObfuscationResult(
115148
expectedObfuscatedCode,
116149
sourceMap,
117150
'http://example.com',
@@ -127,7 +160,7 @@ describe('ObfuscatedCode', () => {
127160

128161
describe('source map mode is `separate`, `sourceMapUrl` is not set', () => {
129162
before(() => {
130-
obfuscatedCode = getObfuscationResult(
163+
obfuscatedCode = getSourceMapObfuscationResult(
131164
expectedObfuscatedCode,
132165
sourceMap,
133166
'',
@@ -141,4 +174,26 @@ describe('ObfuscatedCode', () => {
141174
});
142175
});
143176
});
177+
178+
describe('getOptions', () => {
179+
const seed: number = 1234;
180+
const expectedOptions: IOptions = {
181+
...DEFAULT_PRESET,
182+
seed
183+
} as IOptions;
184+
let options: IOptions;
185+
186+
before(() => {
187+
options = getObfuscationResult(
188+
expectedObfuscatedCode,
189+
{
190+
seed
191+
}
192+
).getOptions();
193+
});
194+
195+
it('should return options object', () => {
196+
assert.deepEqual(options, expectedOptions);
197+
});
198+
});
144199
});

0 commit comments

Comments
 (0)