mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Replaced ObfuscationResult and SourceMapCorrector classes by ObfuscatedCode class
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
import { inject, injectable } from 'inversify';
|
||||
import { ServiceIdentifiers } from '../container/ServiceIdentifiers';
|
||||
|
||||
import { ICryptUtils } from '../interfaces/utils/ICryptUtils';
|
||||
import { IObfuscatedCode } from '../interfaces/source-code/IObfuscatedCode';
|
||||
|
||||
import { initializable } from '../decorators/Initializable';
|
||||
import { SourceMapMode } from '../enums/source-map/SourceMapMode';
|
||||
import { IOptions } from '../interfaces/options/IOptions';
|
||||
|
||||
@injectable()
|
||||
export class ObfuscatedCode implements IObfuscatedCode {
|
||||
/**
|
||||
* @type {ICryptUtils}
|
||||
*/
|
||||
private readonly cryptUtils: ICryptUtils;
|
||||
|
||||
/**
|
||||
* @type {string}
|
||||
*/
|
||||
@initializable()
|
||||
private obfuscatedCode!: string;
|
||||
|
||||
/**
|
||||
* @type {IOptions}
|
||||
*/
|
||||
private readonly options: IOptions;
|
||||
|
||||
/**
|
||||
* @type {string}
|
||||
*/
|
||||
@initializable()
|
||||
private sourceMap!: string;
|
||||
|
||||
constructor (
|
||||
@inject(ServiceIdentifiers.ICryptUtils) cryptUtils: ICryptUtils,
|
||||
@inject(ServiceIdentifiers.IOptions) options: IOptions
|
||||
) {
|
||||
this.cryptUtils = cryptUtils;
|
||||
this.options = options;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} obfuscatedCode
|
||||
* @param {string} sourceMap
|
||||
*/
|
||||
public initialize (obfuscatedCode: string, sourceMap: string): void {
|
||||
this.obfuscatedCode = obfuscatedCode;
|
||||
this.sourceMap = sourceMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
public getObfuscatedCode (): string {
|
||||
return this.correctObfuscatedCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
public getSourceMap (): string {
|
||||
return this.sourceMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
public toString (): string {
|
||||
return this.obfuscatedCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
private correctObfuscatedCode (): string {
|
||||
if (!this.sourceMap) {
|
||||
return this.obfuscatedCode;
|
||||
}
|
||||
|
||||
const sourceMapUrl: string = this.options.sourceMapBaseUrl + this.options.sourceMapFileName;
|
||||
|
||||
let sourceMappingUrl: string = '//# sourceMappingURL=';
|
||||
|
||||
switch (this.options.sourceMapMode) {
|
||||
case SourceMapMode.Inline:
|
||||
sourceMappingUrl += `data:application/json;base64,${this.cryptUtils.btoa(this.sourceMap)}`;
|
||||
|
||||
break;
|
||||
|
||||
case SourceMapMode.Separate:
|
||||
default:
|
||||
if (!sourceMapUrl) {
|
||||
return this.obfuscatedCode;
|
||||
}
|
||||
|
||||
sourceMappingUrl += sourceMapUrl;
|
||||
}
|
||||
|
||||
return `${this.obfuscatedCode}\n${sourceMappingUrl}`;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import { ISourceCode } from '../interfaces/source-code/ISourceCode';
|
||||
|
||||
export class SourceCode implements ISourceCode {
|
||||
/**
|
||||
* @type {string}
|
||||
*/
|
||||
private readonly sourceCode: string;
|
||||
|
||||
/**
|
||||
* @type {string}
|
||||
*/
|
||||
private readonly sourceMap: string;
|
||||
|
||||
/**
|
||||
* @param {string} sourceCode
|
||||
* @param {string} sourceMap
|
||||
*/
|
||||
constructor (sourceCode: string, sourceMap: string) {
|
||||
this.sourceCode = sourceCode;
|
||||
this.sourceMap = sourceMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
public getSourceCode (): string {
|
||||
return this.sourceCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
public getSourceMap (): string {
|
||||
return this.sourceMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
public toString (): string {
|
||||
return this.sourceCode;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user