ObfuscationTransformersModule.ts 2.4 KB

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