123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import 'reflect-metadata';
- import { ServiceIdentifiers } from './container/ServiceIdentifiers';
- import { TDictionary } from './types/TDictionary';
- import { TInputOptions } from './types/options/TInputOptions';
- import { TObfuscationResultsObject } from './types/TObfuscationResultsObject';
- import { TOptionsPreset } from './types/options/TOptionsPreset';
- import { IInversifyContainerFacade } from './interfaces/container/IInversifyContainerFacade';
- import { IJavaScriptObfuscator } from './interfaces/IJavaScriptObfsucator';
- import { IObfuscationResult } from './interfaces/source-code/IObfuscationResult';
- import { InversifyContainerFacade } from './container/InversifyContainerFacade';
- import { Options } from './options/Options';
- import { Utils } from './utils/Utils';
- class JavaScriptObfuscatorFacade {
- /**
- * @type {string | undefined}
- */
- public static version: string = process.env.VERSION ?? 'unknown';
- /**
- * @param {string} sourceCode
- * @param {TInputOptions} inputOptions
- * @returns {IObfuscationResult}
- */
- public static obfuscate (sourceCode: string, inputOptions: TInputOptions = {}): IObfuscationResult {
- const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade();
- inversifyContainerFacade.load(sourceCode, '', inputOptions);
- const javaScriptObfuscator: IJavaScriptObfuscator = inversifyContainerFacade
- .get<IJavaScriptObfuscator>(ServiceIdentifiers.IJavaScriptObfuscator);
- const obfuscationResult: IObfuscationResult = javaScriptObfuscator.obfuscate(sourceCode);
- inversifyContainerFacade.unload();
- return obfuscationResult;
- }
- /**
- * @param {TSourceCodesObject} sourceCodesObject
- * @param {TInputOptions} inputOptions
- * @returns {TObfuscationResultsObject<TSourceCodesObject>}
- */
- public static obfuscateMultiple <TSourceCodesObject extends TDictionary<string>> (
- sourceCodesObject: TSourceCodesObject,
- inputOptions: TInputOptions = {}
- ): TObfuscationResultsObject<TSourceCodesObject> {
- if (typeof sourceCodesObject !== 'object') {
- throw new Error('Source codes object should be a plain object');
- }
- return Object
- .keys(sourceCodesObject)
- .reduce(
- (
- acc: TObfuscationResultsObject<TSourceCodesObject>,
- sourceCodeIdentifier: keyof TSourceCodesObject,
- index: number
- ) => {
- const identifiersPrefix: string = Utils.getIdentifiersPrefixForMultipleSources(
- inputOptions.identifiersPrefix,
- index
- );
- const sourceCode: string = sourceCodesObject[sourceCodeIdentifier];
- const sourceCodeOptions: TInputOptions = {
- ...inputOptions,
- identifiersPrefix
- };
- return {
- ...acc,
- [sourceCodeIdentifier]: JavaScriptObfuscatorFacade.obfuscate(sourceCode, sourceCodeOptions)
- };
- },
- <TObfuscationResultsObject<TSourceCodesObject>>{}
- );
- }
- /**
- * @param {TOptionsPreset} optionsPreset
- * @returns {TInputOptions}
- */
- public static getOptionsByPreset (optionsPreset: TOptionsPreset): TInputOptions {
- return Options.getOptionsByPreset(optionsPreset);
- }
- }
- export { JavaScriptObfuscatorFacade as JavaScriptObfuscator };
|