NodeTransformersModule.ts 5.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { InversifyContainerFacade } from '../../InversifyContainerFacade';
  2. import { ContainerModule, interfaces } from 'inversify';
  3. import { ServiceIdentifiers } from '../../ServiceIdentifiers';
  4. import { INodeTransformer } from '../../../interfaces/node-transformers/INodeTransformer';
  5. import { NodeTransformer } from '../../../enums/container/node-transformers/NodeTransformer';
  6. import { FunctionControlFlowTransformer } from '../../../node-transformers/control-flow-transformers/FunctionControlFlowTransformer';
  7. import { BlockStatementControlFlowTransformer } from '../../../node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer';
  8. import { DeadCodeInjectionTransformer } from '../../../node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer';
  9. import { CatchClauseTransformer } from '../../../node-transformers/obfuscating-transformers/CatchClauseTransformer';
  10. import { ClassDeclarationTransformer } from '../../../node-transformers/obfuscating-transformers/ClassDeclarationTransformer';
  11. import { FunctionDeclarationTransformer } from '../../../node-transformers/obfuscating-transformers/FunctionDeclarationTransformer';
  12. import { FunctionTransformer } from '../../../node-transformers/obfuscating-transformers/FunctionTransformer';
  13. import { LabeledStatementTransformer } from '../../../node-transformers/obfuscating-transformers/LabeledStatementTransformer';
  14. import { LiteralTransformer } from '../../../node-transformers/obfuscating-transformers/LiteralTransformer';
  15. import { MemberExpressionTransformer } from '../../../node-transformers/converting-transformers/MemberExpressionTransformer';
  16. import { MethodDefinitionTransformer } from '../../../node-transformers/converting-transformers/MethodDefinitionTransformer';
  17. import { ObjectExpressionTransformer } from '../../../node-transformers/obfuscating-transformers/ObjectExpressionTransformer';
  18. import { TemplateLiteralTransformer } from '../../../node-transformers/converting-transformers/TemplateLiteralTransformer';
  19. import { VariableDeclarationTransformer } from '../../../node-transformers/obfuscating-transformers/VariableDeclarationTransformer';
  20. export const nodeTransformersModule: interfaces.ContainerModule = new ContainerModule((bind: interfaces.Bind) => {
  21. // control flow transformers
  22. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  23. .to(BlockStatementControlFlowTransformer)
  24. .whenTargetNamed(NodeTransformer.BlockStatementControlFlowTransformer);
  25. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  26. .to(DeadCodeInjectionTransformer)
  27. .whenTargetNamed(NodeTransformer.DeadCodeInjectionTransformer);
  28. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  29. .to(FunctionControlFlowTransformer)
  30. .whenTargetNamed(NodeTransformer.FunctionControlFlowTransformer);
  31. // converting transformers
  32. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  33. .to(MemberExpressionTransformer)
  34. .whenTargetNamed(NodeTransformer.MemberExpressionTransformer);
  35. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  36. .to(MethodDefinitionTransformer)
  37. .whenTargetNamed(NodeTransformer.MethodDefinitionTransformer);
  38. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  39. .to(TemplateLiteralTransformer)
  40. .whenTargetNamed(NodeTransformer.TemplateLiteralTransformer);
  41. // obfuscation transformers
  42. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  43. .to(CatchClauseTransformer)
  44. .whenTargetNamed(NodeTransformer.CatchClauseTransformer);
  45. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  46. .to(ClassDeclarationTransformer)
  47. .whenTargetNamed(NodeTransformer.ClassDeclarationTransformer);
  48. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  49. .to(FunctionDeclarationTransformer)
  50. .whenTargetNamed(NodeTransformer.FunctionDeclarationTransformer);
  51. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  52. .to(FunctionTransformer)
  53. .whenTargetNamed(NodeTransformer.FunctionTransformer);
  54. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  55. .to(LabeledStatementTransformer)
  56. .whenTargetNamed(NodeTransformer.LabeledStatementTransformer);
  57. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  58. .to(LiteralTransformer)
  59. .whenTargetNamed(NodeTransformer.LiteralTransformer);
  60. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  61. .to(ObjectExpressionTransformer)
  62. .whenTargetNamed(NodeTransformer.ObjectExpressionTransformer);
  63. bind<INodeTransformer>(ServiceIdentifiers.INodeTransformer)
  64. .to(VariableDeclarationTransformer)
  65. .whenTargetNamed(NodeTransformer.VariableDeclarationTransformer);
  66. // node transformers factory
  67. bind<INodeTransformer>(ServiceIdentifiers.Factory__INodeTransformer)
  68. .toFactory<INodeTransformer>(InversifyContainerFacade
  69. .getCacheFactory<NodeTransformer, INodeTransformer>(ServiceIdentifiers.INodeTransformer));
  70. });