8000 Merge pull request #581 from javascript-obfuscator/multiple-sources-o… · sec-js/javascript-obfuscator@84644da · GitHub
[go: up one dir, main page]

Skip to content

Commit 84644da

Browse files
authored
Merge pull request javascript-obfuscator#581 from javascript-obfuscator/multiple-sources-obfuscation
New `obfuscateMultiple` method
2 parents a4c7d8b + f9ec740 commit 84644da

File tree

12 files changed

+122
-6
lines changed

12 files changed

+122
-6
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
Change Log
22

3+
v0.27.0
4+
---
5+
* **Feature:** new method `obfuscateMultiple` to obfuscation of multiple source codes
6+
37
v0.26.0
48
---
59
* **Internal:** new code transformers mechanism

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,18 @@ Method takes two parameters, `sourceCode` and `options` – the source code and
202202

203203
For available options, see [options](#options).
204204

205+
### `obfuscateMultiple(sourceCodesObject, options)`
206+
207+
Accepts `sourceCodesObject` that is a map which keys are identifiers of source codes and values are source codes:
208+
```
209+
{
210+
foo: 'var foo = 1;',
211+
bar: 'var bar = 2;'
212+
}
213+
```
214+
215+
Returns a map object which keys are identifiers of source codes and values are `ObfuscationResult` objects.
216+
205217
## CLI usage
206218

207219
See [CLI options](#cli-options).

dist/index.browser.js

Lines changed: 2 additions & 2 deletions
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.

index.d.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { TInputOptions } from './src/types/options/TInputOptions';
2+
import { TObject } from './src/types/TObject';
23

34
import { IObfuscatedCode } from './src/interfaces/source-code/IObfuscatedCode';
5+
import { TObfuscationResultsObject } from './src/types/TObfuscationResultsObject';
46

57
export type ObfuscatorOptions = TInputOptions;
68

@@ -13,6 +15,16 @@ export interface ObfuscatedCode extends IObfuscatedCode {}
1315
*/
1416
export function obfuscate (sourceCode: string, inputOptions?: ObfuscatorOptions): ObfuscatedCode;
1517

18+
/**
19+
* @param {TSourceCodesObject} sourceCodesObject
20+
* @param {TInputOptions} inputOptions
21+
* @returns {TObfuscationResultsObject<TSourceCodesObject>}
22+
*/
23+
export function obfuscateMultiple <TSourceCodesObject extends TObject<string>> (
24+
sourceCodesObject: TSourceCodesObject,
25+
inputOptions?: TInputOptions
26+
): TObfuscationResultsObject<TSourceCodesObject>;
27+
1628
/**
1729
* @type {string}
1830
*/

package.json

Lines changed: 1 addition & 1 deletion
3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "javascript-obfuscator",
3-
"version": "0.26.0",
+
"version": "0.27.0",
44
"description": "JavaScript obfuscator",
55
"keywords": [
66
"obfuscator",

src/JavaScriptObfuscatorFacade.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import 'reflect-metadata';
33
import { ServiceIdentifiers } from './container/ServiceIdentifiers';
44

55
import { TInputOptions } from './types/options/TInputOptions';
6+
import { TObfuscationResultsObject } from './types/TObfuscationResultsObject';
7+
import { TObject } from './types/TObject';
68

79
import { IInversifyContainerFacade } from './interfaces/container/IInversifyContainerFacade';
810
import { IJavaScriptObfuscator } from './interfaces/IJavaScriptObfsucator';
@@ -34,6 +36,34 @@ class JavaScriptObfuscatorFacade {
3436

3537
return obfuscatedCode;
3638
}
39+
40+
/**
41+
* @param {TSourceCodesObject} sourceCodesObject
42+
* @param {TInputOptions} inputOptions
43+
* @returns {TObfuscationResultsObject<TSourceCodesObject>}
44+
*/
45+
public static obfuscateMultiple <TSourceCodesObject extends TObject<string>> (
46+
sourceCodesObject: TSourceCodesObject,
47+
inputOptions: TInputOptions = {}
48+
): TObfuscationResultsObject<TSourceCodesObject> {
49+
if (typeof sourceCodesObject !== 'object') {
50+
throw new Error('Source codes object should be a plain object');
51+
}
52+
53+
return Object
54+
.keys(sourceCodesObject)
55+
.reduce(
56+
(acc: TObfuscationResultsObject<TSourceCodesObject>, sourceCodeIdentifier: keyof TSourceCodesObject) => {
57+
const sourceCode: string = sourceCodesObject[sourceCodeIdentifier];
58+
59+
return {
60+
...acc,
61+
[sourceCodeIdentifier]: JavaScriptObfuscatorFacade.obfuscate(sourceCode, inputOptions)
62+
};
63+
},
64+
<TObfuscationResultsObject<TSourceCodesObject>>{}
65+
);
66+
}
3767
}
3868

3969
export { JavaScriptObfuscatorFacade as JavaScriptObfuscator };
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { IObfuscatedCode } from '../interfaces/source-code/IObfuscatedCode';
2+
3+
export type TObfuscationResultsObject <TSourceCodesObject> = {[key in keyof TSourceCodesObject]: IObfuscatedCode};

test/functional-tests/code-transformers/preparing-transformers/hashbang-operator-transformer/HashbangOperatorTransformer.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ describe('HashbangOperatorTransformer', () => {
8989
let obfuscatedCode: string;
9090

9191
before(() => {
92-
const code: string = readFileAsString(__dirname + '/fixtures/hashbang-indent.fixture');
92+
const code: string = readFileAsString(__dirname + '/fixtures/hashbang-indent.js');
9393

9494
obfuscatedCode = JavaScriptObfuscator.obfuscate(
9595
code,

0 commit comments

Comments
 (0)
0