123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import { IObfuscationResult } from "./interfaces/IObfuscationResult";
- import { ISourceMapCorrector } from "./interfaces/ISourceMapCorrector";
- import { TSourceMapMode } from "./types/TSourceMapMode";
- import { SourceMapMode } from "./enums/SourceMapMode";
- import { ObfuscationResult } from "./ObfuscationResult";
- import { Utils } from "./Utils";
- export class SourceMapCorrector implements ISourceMapCorrector {
- /**
- * @type {string}
- */
- private obfuscatedCode: string;
- /**
- * @type {string}
- */
- private sourceMap: string;
- /**
- * @type {TSourceMapMode}
- */
- private sourceMapMode: TSourceMapMode;
- /**
- * @type {string}
- */
- private sourceMapUrl: string;
- /**
- * @param obfuscationResult
- * @param sourceMapUrl
- * @param sourceMapMode
- */
- constructor (
- obfuscationResult: IObfuscationResult,
- sourceMapUrl: string,
- sourceMapMode: TSourceMapMode
- ) {
- this.obfuscatedCode = obfuscationResult.getObfuscatedCode();
- this.sourceMap = obfuscationResult.getSourceMap();
- this.sourceMapUrl = sourceMapUrl;
- this.sourceMapMode = sourceMapMode;
- }
- /**
- * @returns {ObfuscationResult}
- */
- public correct (): IObfuscationResult {
- return new ObfuscationResult(
- this.correctObfuscatedCode(),
- this.correctSourceMap()
- );
- }
- /**
- * @returns {string}
- */
- private correctObfuscatedCode (): string {
- if (!this.sourceMap) {
- return this.obfuscatedCode;
- }
- let sourceMappingUrl: string = '//# sourceMappingURL=';
- switch (this.sourceMapMode) {
- case SourceMapMode.Inline:
- sourceMappingUrl += `data:application/json;base64,${Utils.btoa(this.sourceMapUrl || this.sourceMap, false)}`;
- break;
- case SourceMapMode.Separate:
- default:
- if (this.sourceMapUrl) {
- sourceMappingUrl += this.sourceMapUrl;
- break;
- }
- return this.obfuscatedCode;
- }
- return `${this.obfuscatedCode}\n${sourceMappingUrl}`;
- };
- /**
- * @returns {string}
- */
- private correctSourceMap (): string {
- if (this.sourceMapMode === SourceMapMode.Inline) {
- return '';
- }
- return this.sourceMap;
- }
- }
|