ConsoleOutputCustomNodesFactory.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { injectable, inject } from 'inversify';
  2. import { ServiceIdentifiers } from '../../../container/ServiceIdentifiers';
  3. import { ICustomNode } from '../../../interfaces/custom-nodes/ICustomNode';
  4. import { IOptions } from '../../../interfaces/options/IOptions';
  5. import { IStackTraceData } from '../../../interfaces/stack-trace-analyzer/IStackTraceData';
  6. import { ConsoleOutputDisableExpressionNode } from '../ConsoleOutputDisableExpressionNode';
  7. import { NodeCallsControllerFunctionNode } from '../../node-calls-controller-nodes/NodeCallsControllerFunctionNode';
  8. import { AbstractCustomNodesFactory } from '../../AbstractCustomNodesFactory';
  9. import { NodeAppender } from '../../../node/NodeAppender';
  10. import { Utils } from '../../../Utils';
  11. @injectable()
  12. export class ConsoleOutputCustomNodesFactory extends AbstractCustomNodesFactory {
  13. /**
  14. * @param options
  15. */
  16. constructor (
  17. @inject(ServiceIdentifiers.IOptions) options: IOptions
  18. ) {
  19. super(options);
  20. }
  21. /**
  22. * @param stackTraceData
  23. * @returns {Map<string, ICustomNode>}
  24. */
  25. public initializeCustomNodes (stackTraceData: IStackTraceData[]): Map <string, ICustomNode> | undefined {
  26. if (!this.options.disableConsoleOutput) {
  27. return;
  28. }
  29. const callsControllerFunctionName: string = Utils.getRandomVariableName();
  30. const randomStackTraceIndex: number = NodeAppender.getRandomStackTraceIndex(stackTraceData.length);
  31. const consoleOutputDisableExpressionNode: ICustomNode = new ConsoleOutputDisableExpressionNode(this.options);
  32. const nodeCallsControllerFunctionNode: ICustomNode = new NodeCallsControllerFunctionNode(this.options);
  33. consoleOutputDisableExpressionNode.initialize(callsControllerFunctionName, randomStackTraceIndex);
  34. nodeCallsControllerFunctionNode.initialize(callsControllerFunctionName, randomStackTraceIndex);
  35. return this.syncCustomNodesWithNodesFactory(new Map <string, ICustomNode> ([
  36. ['consoleOutputDisableExpressionNode', consoleOutputDisableExpressionNode],
  37. ['ConsoleOutputNodeCallsControllerFunctionNode', nodeCallsControllerFunctionNode]
  38. ]));
  39. }
  40. }