NodeObfuscatorsModule.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { ContainerModule, interfaces } from 'inversify';
  2. import { ServiceIdentifiers } from '../../ServiceIdentifiers';
  3. import { IObfuscatorReplacer } from '../../../interfaces/node-transformers/IObfuscatorReplacer';
  4. import { NodeObfuscatorsReplacers } from '../../../enums/container/NodeObfuscatorsReplacers';
  5. import { BooleanLiteralReplacer } from '../../../node-transformers/node-obfuscators/replacers/BooleanLiteralReplacer';
  6. import { IdentifierReplacer } from '../../../node-transformers/node-obfuscators/replacers/IdentifierReplacer';
  7. import { NumberLiteralReplacer } from '../../../node-transformers/node-obfuscators/replacers/NumberLiteralReplacer';
  8. import { StringLiteralReplacer } from '../../../node-transformers/node-obfuscators/replacers/StringLiteralReplacer';
  9. export const nodeObfuscatorsModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
  10. bind<IObfuscatorReplacer>(ServiceIdentifiers.IObfuscatorReplacer)
  11. .to(BooleanLiteralReplacer)
  12. .whenTargetNamed(NodeObfuscatorsReplacers.BooleanReplacer);
  13. bind<IObfuscatorReplacer>(ServiceIdentifiers.IObfuscatorReplacer)
  14. .to(IdentifierReplacer)
  15. .whenTargetNamed(NodeObfuscatorsReplacers.IdentifierReplacer);
  16. bind<IObfuscatorReplacer>(ServiceIdentifiers.IObfuscatorReplacer)
  17. .to(NumberLiteralReplacer)
  18. .whenTargetNamed(NodeObfuscatorsReplacers.NumberLiteralReplacer);
  19. bind<IObfuscatorReplacer>(ServiceIdentifiers.IObfuscatorReplacer)
  20. .to(StringLiteralReplacer)
  21. .whenTargetNamed(NodeObfuscatorsReplacers.StringLiteralReplacer);
  22. bind<IObfuscatorReplacer>(ServiceIdentifiers['Factory<IObfuscatorReplacer>'])
  23. .toFactory<IObfuscatorReplacer>((context: interfaces.Context) => {
  24. const cache: Map <NodeObfuscatorsReplacers, IObfuscatorReplacer> = new Map <NodeObfuscatorsReplacers, IObfuscatorReplacer> ();
  25. return (replacerName: NodeObfuscatorsReplacers) => {
  26. if (cache.has(replacerName)) {
  27. return <IObfuscatorReplacer>cache.get(replacerName);
  28. }
  29. const obfuscationReplacer: IObfuscatorReplacer = context.container.getNamed<IObfuscatorReplacer>(
  30. ServiceIdentifiers.IObfuscatorReplacer,
  31. replacerName
  32. );
  33. cache.set(replacerName, obfuscationReplacer);
  34. return obfuscationReplacer;
  35. };
  36. });
  37. });