import 'reflect-metadata'; import { ServiceIdentifiers } from './container/ServiceIdentifiers'; import { TInputOptions } from './types/options/TInputOptions'; import { IInversifyContainerFacade } from './interfaces/container/IInversifyContainerFacade'; import { IJavaScriptObfuscator } from './interfaces/IJavaScriptObfsucator'; import { IObfuscationResult } from './interfaces/IObfuscationResult'; import { InversifyContainerFacade } from './container/InversifyContainerFacade'; import { JavaScriptObfuscatorCLI } from './cli/JavaScriptObfuscatorCLI'; class JavaScriptObfuscatorFacade { /** * @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(ServiceIdentifiers.IJavaScriptObfuscator); const obfuscationResult: IObfuscationResult = javaScriptObfuscator.obfuscate(sourceCode); inversifyContainerFacade.unload(); return obfuscationResult; } /** * @param {string[]} argv */ public static runCLI (argv: string[]): void { const javaScriptObfuscatorCLI: JavaScriptObfuscatorCLI = new JavaScriptObfuscatorCLI(argv); javaScriptObfuscatorCLI.initialize(); javaScriptObfuscatorCLI.run(); } } export { JavaScriptObfuscatorFacade as JavaScriptObfuscator };