Skip to content

Fixed wrong external options merge #594

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 10, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
Change Log

v0.27.3
---
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/593

v0.27.2
---
* Fixed identifiers prefix generation for `obfuscateMultiple` method
Expand Down
6 changes: 3 additions & 3 deletions dist/index.browser.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/index.cli.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/index.js

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "javascript-obfuscator",
"version": "0.27.2",
"version": "0.27.3",
"description": "JavaScript obfuscator",
"keywords": [
"obfuscator",
Expand All @@ -25,7 +25,7 @@
"@nuxtjs/opencollective": "0.2.2",
"acorn": "7.1.1",
"acorn-import-meta": "1.0.0",
"chalk": "3.0.0",
"chalk": "4.0.0",
"chance": "1.1.4",
"class-validator": "0.11.1",
"commander": "5.0.0",
Expand All @@ -37,7 +37,7 @@
"inversify": "5.0.1",
"js-string-escape": "1.0.1",
"md5": "2.2.1",
"mkdirp": "1.0.3",
"mkdirp": "1.0.4",
"multimatch": "4.0.0",
"reflect-metadata": "0.1.13",
"source-map-support": "0.5.16",
Expand All @@ -46,7 +46,7 @@
},
"devDependencies": {
"@types/chai": "4.2.11",
"@types/chance": "1.0.9",
"@types/chance": "1.0.10",
"@types/escodegen": "0.0.6",
"@types/eslint-scope": "3.7.0",
"@types/estraverse": "0.0.6",
Expand All @@ -55,30 +55,30 @@
"@types/mkdirp": "1.0.0",
"@types/mocha": "7.0.2",
"@types/multimatch": "4.0.0",
"@types/node": "13.9.8",
"@types/node": "13.11.1",
"@types/rimraf": "3.0.0",
"@types/sinon": "9.0.0",
"@types/string-template": "1.0.2",
"@types/webpack-env": "1.15.1",
"@typescript-eslint/eslint-plugin": "2.26.0",
"@typescript-eslint/parser": "2.26.0",
"@typescript-eslint/eslint-plugin": "2.27.0",
"@typescript-eslint/parser": "2.27.0",
"chai": "4.2.0",
"coveralls": "3.0.11",
"eslint": "6.8.0",
"eslint-plugin-import": "2.20.2",
"eslint-plugin-jsdoc": "22.1.0",
"eslint-plugin-no-null": "1.0.2",
"eslint-plugin-prefer-arrow": "1.1.7",
"eslint-plugin-prefer-arrow": "1.2.0",
"eslint-plugin-unicorn": "18.0.1",
"fork-ts-checker-notifier-webpack-plugin": "2.0.0",
"fork-ts-checker-webpack-plugin": "4.1.2",
"fork-ts-checker-webpack-plugin": "4.1.3",
"mocha": "7.1.1",
"nyc": "15.0.0",
"nyc": "15.0.1",
"pjson": "1.0.9",
"pre-commit": "1.2.2",
"rimraf": "3.0.2",
"sinon": "9.0.1",
"threads": "1.3.1",
"sinon": "9.0.2",
"threads": "1.4.0",
"ts-loader": "6.2.2",
"ts-node": "6.1.0",
"typescript": "3.8.3",
Expand Down
38 changes: 13 additions & 25 deletions src/cli/JavaScriptObfuscatorCLI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,24 +97,18 @@ export class JavaScriptObfuscatorCLI implements IInitializable {

/**
* @param {TInputCLIOptions} inputOptions
* @param {string} inputCodePath
* @returns {TInputOptions}
*/
private static buildOptions (
inputOptions: TInputCLIOptions,
inputCodePath: string
): TInputOptions {
private static buildOptions (inputOptions: TInputCLIOptions): TInputOptions {
const inputCLIOptions: TInputOptions = JavaScriptObfuscatorCLI.filterOptions(inputOptions);
const configFilePath: string | undefined = inputOptions.config;
const configFileLocation: string = configFilePath ? path.resolve(configFilePath, '.') : '';
const configFileOptions: TInputOptions = configFileLocation ? CLIUtils.getUserConfig(configFileLocation) : {};
const inputFileName: string = path.basename(inputCodePath);

return {
...DEFAULT_PRESET,
...configFileOptions,
...inputCLIOptions,
inputFileName
...inputCLIOptions
};
}

Expand Down Expand Up @@ -145,7 +139,7 @@ export class JavaScriptObfuscatorCLI implements IInitializable {
this.configureCommands();
this.configureHelp();

this.inputCLIOptions = this.commands.opts();
this.inputCLIOptions = JavaScriptObfuscatorCLI.buildOptions(this.commands.opts());
this.sourceCodeReader = new SourceCodeReader(
this.inputPath,
this.inputCLIOptions
Expand Down Expand Up @@ -403,22 +397,16 @@ export class JavaScriptObfuscatorCLI implements IInitializable {
outputCodePath: string,
sourceCodeIndex: number | null
): void {
let options: TInputOptions = JavaScriptObfuscatorCLI.buildOptions(
this.inputCLIOptions,
inputCodePath
);

if (sourceCodeIndex !== null) {
const identifiersPrefix: string = Utils.getIdentifiersPrefixForMultipleSources(
this.inputCLIOptions.identifiersPrefix,
sourceCodeIndex
);

options = {
...options,
identifiersPrefix
};
}
const options: TInputOptions = {
...this.inputCLIOptions,
inputFileName: path.basename(inputCodePath),
...sourceCodeIndex !== null && {
identifiersPrefix: Utils.getIdentifiersPrefixForMultipleSources(
this.inputCLIOptions.identifiersPrefix,
sourceCodeIndex
)
}
};

if (options.sourceMap) {
this.processSourceCodeWithSourceMap(sourceCode, outputCodePath, options);
Expand Down
1 change: 1 addition & 0 deletions test/fixtures/config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
module.exports = {
compact: true,
exclude: ['**/foo.js'],
selfDefending: false,
sourceMap: true
};
112 changes: 77 additions & 35 deletions test/functional-tests/cli/JavaScriptObfuscatorCLI.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -814,51 +814,93 @@ describe('JavaScriptObfuscatorCLI', function (): void {
});

describe('`--config` option is set', () => {
const outputSourceMapPath: string = `${outputFilePath}.map`;
describe('Base options', () => {
const outputSourceMapPath: string = `${outputFilePath}.map`;

let isFileExist: boolean,
sourceMapObject: any;
let isFileExist: boolean,
sourceMapObject: any;

before(() => {
JavaScriptObfuscatorCLI.obfuscate([
'node',
'javascript-obfuscator',
fixtureFilePath,
'--output',
outputFilePath,
'--config',
configFilePath
]);
before(() => {
JavaScriptObfuscatorCLI.obfuscate([
'node',
'javascript-obfuscator',
fixtureFilePath,
'--output',
outputFilePath,
'--config',
configFilePath
]);

try {
const content: string = fs.readFileSync(outputSourceMapPath, {encoding: 'utf8'});
try {
const content: string = fs.readFileSync(outputSourceMapPath, {encoding: 'utf8'});

isFileExist = true;
sourceMapObject = JSON.parse(content);
} catch (e) {
isFileExist = false;
}
});
isFileExist = true;
sourceMapObject = JSON.parse(content);
} catch (e) {
isFileExist = false;
}
});

it('should create file with source map in the same directory as output file', () => {
assert.equal(isFileExist, true);
});
it('should create file with source map in the same directory as output file', () => {
assert.equal(isFileExist, true);
});

it('source map from created file should contains property `version`', () => {
assert.property(sourceMapObject, 'version');
});
it('source map from created file should contains property `version`', () => {
assert.property(sourceMapObject, 'version');
});

it('source map from created file should contains property `sources`', () => {
assert.property(sourceMapObject, 'sources');
});
it('source map from created file should contains property `sources`', () => {
assert.property(sourceMapObject, 'sources');
});

it('source map from created file should contains property `names`', () => {
assert.property(sourceMapObject, 'names');
});

it('source map from created file should contains property `names`', () => {
assert.property(sourceMapObject, 'names');
after(() => {
fs.unlinkSync(outputFilePath);
fs.unlinkSync(outputSourceMapPath);
});
});

after(() => {
fs.unlinkSync(outputFilePath);
fs.unlinkSync(outputSourceMapPath);
describe('`--exclude` option', () => {
const directoryPath: string = `${fixturesDirName}/directory-obfuscation`;
const outputFileName1: string = 'foo-obfuscated.js';
const outputFileName2: string = 'bar-obfuscated.js';

let outputFixturesFilePath1: string,
outputFixturesFilePath2: string,
isFileExist1: boolean,
isFileExist2: boolean;

before(() => {
outputFixturesFilePath1 = `${directoryPath}/${outputFileName1}`;
outputFixturesFilePath2 = `${directoryPath}/${outputFileName2}`;

JavaScriptObfuscatorCLI.obfuscate([
'node',
'javascript-obfuscator',
directoryPath,
'--config',
configFilePath
]);

isFileExist1 = fs.existsSync(outputFixturesFilePath1);
isFileExist2 = fs.existsSync(outputFixturesFilePath2);
});

it(`shouldn't create file \`${outputFileName1}\` in \`${fixturesDirName}\` directory`, () => {
assert.equal(isFileExist1, false);
});

it(`should create file \`${outputFileName2}\` with obfuscated code in \`${fixturesDirName}\` directory`, () => {
assert.equal(isFileExist2, true);
});

after(() => {
rimraf.sync(outputFixturesFilePath1);
rimraf.sync(outputFixturesFilePath2);
});
});
});

Expand Down
1 change: 1 addition & 0 deletions test/unit-tests/cli/utils/CLIUtils.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ describe('CLIUtils', () => {
const configFilePath: string = `../../../${configDirName}/${configFileName}`;
const expectedResult: TInputOptions = {
compact: true,
exclude: ['**/foo.js'],
selfDefending: false,
sourceMap: true
};
Expand Down
Loading