JavaScriptObfuscator.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import 'reflect-metadata';
  2. import { ServiceIdentifiers } from './container/ServiceIdentifiers';
  3. import { TInputOptions } from './types/options/TInputOptions';
  4. import { IInversifyContainerFacade } from './interfaces/container/IInversifyContainerFacade';
  5. import { IJavaScriptObfuscator } from './interfaces/IJavaScriptObfsucator';
  6. import { IObfuscationResult } from './interfaces/IObfuscationResult';
  7. import { IOptions } from './interfaces/options/IOptions';
  8. import { InversifyContainerFacade } from './container/InversifyContainerFacade';
  9. import { JavaScriptObfuscatorCLI } from './cli/JavaScriptObfuscatorCLI';
  10. import { RandomGeneratorUtils } from './utils/RandomGeneratorUtils';
  11. export class JavaScriptObfuscator {
  12. /**
  13. * @param sourceCode
  14. * @param inputOptions
  15. * @returns {string}
  16. */
  17. public static obfuscate (sourceCode: string, inputOptions: TInputOptions = {}): IObfuscationResult {
  18. const inversifyContainerFacade: IInversifyContainerFacade = new InversifyContainerFacade(inputOptions);
  19. const options: IOptions = inversifyContainerFacade.get<IOptions>(ServiceIdentifiers.IOptions);
  20. RandomGeneratorUtils.initializeRandomGenerator(options.seed);
  21. const javaScriptObfuscator: IJavaScriptObfuscator = inversifyContainerFacade
  22. .get<IJavaScriptObfuscator>(ServiceIdentifiers.IJavaScriptObfuscator);
  23. const obfuscationResult: IObfuscationResult = javaScriptObfuscator.obfuscate(sourceCode);
  24. RandomGeneratorUtils.clearRandomGenerator();
  25. return obfuscationResult;
  26. }
  27. /**
  28. * @param argv
  29. */
  30. public static runCLI (argv: string[]): void {
  31. new JavaScriptObfuscatorCLI(argv).run();
  32. }
  33. }