import { IObfuscationResult } from '../../src/interfaces/IObfuscationResult'; import { JavaScriptObfuscatorInternal } from '../../src/JavaScriptObfuscatorInternal'; import { NO_CUSTOM_NODES_PRESET } from '../../src/preset-options/NoCustomNodesPreset'; const assert: Chai.AssertStatic = require('chai').assert; describe('JavaScriptObfuscatorInternal', () => { describe(`setSourceMapUrl (url: string)`, () => { let javaScriptObfuscator: JavaScriptObfuscatorInternal, obfuscationResult: IObfuscationResult, sourceMapUrl: string = 'test.js.map'; it('should link obfuscated code with source map', () => { javaScriptObfuscator = new JavaScriptObfuscatorInternal( `var test = 1;`, Object.assign({}, NO_CUSTOM_NODES_PRESET, { sourceMap: true, sourceMapFileName: sourceMapUrl }) ); javaScriptObfuscator.obfuscate(); obfuscationResult = javaScriptObfuscator.getObfuscationResult(); assert.match( obfuscationResult.getObfuscatedCode(), new RegExp(`sourceMappingURL=${sourceMapUrl}`)) ; assert.isOk(JSON.parse(obfuscationResult.getSourceMap()).mappings); }); it('should properly add base url to source map import inside obfuscated code if `sourceMapBaseUrl` is set', () => { let sourceMapBaseUrl: string = 'http://localhost:9000'; javaScriptObfuscator = new JavaScriptObfuscatorInternal( `var test = 1;`, Object.assign({}, NO_CUSTOM_NODES_PRESET, { sourceMap: true, sourceMapBaseUrl: sourceMapBaseUrl, sourceMapFileName: sourceMapUrl }) ); javaScriptObfuscator.obfuscate(); obfuscationResult = javaScriptObfuscator.getObfuscationResult(); assert.match( obfuscationResult.getObfuscatedCode(), new RegExp(`sourceMappingURL=${sourceMapBaseUrl}/${sourceMapUrl}$`)) ; assert.isOk(JSON.parse(obfuscationResult.getSourceMap()).mappings); }); }); });