InversifyContainerFacade.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { Container, interfaces } from 'inversify';
  2. import { ServiceIdentifiers } from './ServiceIdentifiers';
  3. import { ICustomNode } from '../interfaces/custom-nodes/ICustomNode';
  4. import { IInputOptions } from '../interfaces/IInputOptions';
  5. import { IObfuscationEventEmitter } from '../interfaces/IObfuscationEventEmitter';
  6. import { IObfuscator } from '../interfaces/IObfuscator';
  7. import { IOptions } from '../interfaces/IOptions';
  8. import { IStackTraceAnalyzer } from '../interfaces/stack-trace-analyzer/IStackTraceAnalyzer';
  9. import { IStorage } from '../interfaces/IStorage';
  10. import { CustomNodesStorage } from '../storages/custom-nodes/CustomNodesStorage';
  11. import { ObfuscationEventEmitter } from '../event-emitters/ObfuscationEventEmitter';
  12. import { Obfuscator } from '../Obfuscator';
  13. import { Options } from "../options/Options";
  14. import { StackTraceAnalyzer } from '../stack-trace-analyzer/StackTraceAnalyzer';
  15. export class InversifyContainerFacade {
  16. /**
  17. * @type {interfaces.Container}
  18. */
  19. private container: interfaces.Container;
  20. constructor (options: IInputOptions) {
  21. this.container = new Container();
  22. // IOptions
  23. this.container
  24. .bind<IOptions>(ServiceIdentifiers.IOptions)
  25. .toDynamicValue(() => {
  26. return new Options(options);
  27. })
  28. .inSingletonScope();
  29. // IObfuscator
  30. this.container
  31. .bind<IObfuscator>(ServiceIdentifiers.IObfuscator)
  32. .to(Obfuscator);
  33. // IObfuscationEventEmitter
  34. this.container
  35. .bind<IObfuscationEventEmitter>(ServiceIdentifiers.IObfuscationEventEmitter)
  36. .to(ObfuscationEventEmitter)
  37. .inSingletonScope();
  38. // IStackTraceAnalyzer
  39. this.container
  40. .bind<IStackTraceAnalyzer>(ServiceIdentifiers.IStackTraceAnalyzer)
  41. .to(StackTraceAnalyzer)
  42. .inSingletonScope();
  43. // IStorage<ICustomNode>
  44. this.container
  45. .bind<IStorage<ICustomNode>>(ServiceIdentifiers.IStorage)
  46. .to(CustomNodesStorage)
  47. .inSingletonScope();
  48. }
  49. /**
  50. * @param serviceIdentifier
  51. * @returns {T}
  52. */
  53. public get <T> (serviceIdentifier: interfaces.ServiceIdentifier<T>) {
  54. return this.container.get<T>(serviceIdentifier);
  55. }
  56. }