ObfuscatingTransformersModule.ts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import { ContainerModule, interfaces } from 'inversify';
  2. import { ServiceIdentifiers } from '../../ServiceIdentifiers';
  3. import { IIdentifierObfuscatingReplacer } from '../../../interfaces/node-transformers/obfuscating-transformers/IIdentifierObfuscatingReplacer';
  4. import { IObfuscatingReplacer } from '../../../interfaces/node-transformers/obfuscating-transformers/IObfuscatingReplacer';
  5. import { IdentifierObfuscatingReplacers } from '../../../enums/container/node-transformers/IdentifierObfuscatingReplacers';
  6. import { LiteralObfuscatingReplacers } from '../../../enums/container/node-transformers/LiteralObfuscatingReplacers';
  7. import { BooleanLiteralObfuscatingReplacer } from '../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer';
  8. import { IdentifierObfuscatingReplacer } from '../../../node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/IdentifierObfuscatingReplacer';
  9. import { NumberLiteralObfuscatingReplacer } from '../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer';
  10. import { StringLiteralObfuscatingReplacer } from '../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer';
  11. export const obfuscatingTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
  12. // literal obfuscating replacers
  13. bind<IObfuscatingReplacer>(ServiceIdentifiers.IObfuscatingReplacer)
  14. .to(BooleanLiteralObfuscatingReplacer)
  15. .whenTargetNamed(LiteralObfuscatingReplacers.BooleanLiteralObfuscatingReplacer);
  16. bind<IObfuscatingReplacer>(ServiceIdentifiers.IObfuscatingReplacer)
  17. .to(NumberLiteralObfuscatingReplacer)
  18. .whenTargetNamed(LiteralObfuscatingReplacers.NumberLiteralObfuscatingReplacer);
  19. bind<IObfuscatingReplacer>(ServiceIdentifiers.IObfuscatingReplacer)
  20. .to(StringLiteralObfuscatingReplacer)
  21. .whenTargetNamed(LiteralObfuscatingReplacers.StringLiteralObfuscatingReplacer);
  22. // identifier obfuscating replacers
  23. bind<IIdentifierObfuscatingReplacer>(ServiceIdentifiers.IIdentifierObfuscatingReplacer)
  24. .to(IdentifierObfuscatingReplacer)
  25. .whenTargetNamed(IdentifierObfuscatingReplacers.IdentifierObfuscatingReplacer);
  26. // literal obfuscating replacer factory
  27. bind<IObfuscatingReplacer>(ServiceIdentifiers.Factory__IObfuscatingReplacer)
  28. .toFactory<IObfuscatingReplacer>((context: interfaces.Context) => {
  29. const cache: Map <LiteralObfuscatingReplacers, IObfuscatingReplacer> = new Map();
  30. return (replacerName: LiteralObfuscatingReplacers) => {
  31. if (cache.has(replacerName)) {
  32. return <IObfuscatingReplacer>cache.get(replacerName);
  33. }
  34. const replacer: IObfuscatingReplacer = context.container.getNamed<IObfuscatingReplacer>(
  35. ServiceIdentifiers.IObfuscatingReplacer,
  36. replacerName
  37. );
  38. cache.set(replacerName, replacer);
  39. return replacer;
  40. };
  41. });
  42. // identifier obfuscating replacer factory
  43. bind<IIdentifierObfuscatingReplacer>(ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)
  44. .toFactory<IIdentifierObfuscatingReplacer>((context: interfaces.Context) => {
  45. const cache: Map <IdentifierObfuscatingReplacers, IIdentifierObfuscatingReplacer> = new Map();
  46. return (replacerName: IdentifierObfuscatingReplacers) => {
  47. if (cache.has(replacerName)) {
  48. return <IIdentifierObfuscatingReplacer>cache.get(replacerName);
  49. }
  50. const replacer: IIdentifierObfuscatingReplacer = context.container.getNamed<IIdentifierObfuscatingReplacer>(
  51. ServiceIdentifiers.IIdentifierObfuscatingReplacer,
  52. replacerName
  53. );
  54. cache.set(replacerName, replacer);
  55. return replacer;
  56. };
  57. });
  58. });