Home Reference Source

src/EventEmitter.js

import { EventEmitter2 } from 'eventemitter2';
import * as utils from './utils/utils';

export default class EventEmitter extends EventEmitter2 {
  constructor(conf = {}) {
    const { loadLimit = 1000, eventsSafeInterval = 300, ...ee2conf } = conf;
    super(ee2conf);

    const overloadHandler = () => {
      console.warn(`There were more than ${loadLimit} events emitted in ${eventsSafeInterval} ms. It might be caused by events' infinite loop`, this.id);
    };

    const dispatch = utils.observeOverload(overloadHandler, {
      limit: loadLimit,
      delay: eventsSafeInterval
    });

    this.emit = (...args) => {
      super.emit(...args);
      dispatch();
    };
  }
}