“use strict”; const EventEmitter = require(“events”).EventEmitter;

module.exports = class VirtualConsole extends EventEmitter {

constructor() {
  super();

  this.on("error", () => {
    // If "error" event has no listeners,
    // EventEmitter throws an exception
  });
}

sendTo(anyConsole, options) {
  if (options === undefined) {
    options = {};
  }

  for (const method of Object.keys(anyConsole)) {
    if (typeof anyConsole[method] === "function") {
      function onMethodCall() {
        anyConsole[method].apply(anyConsole, arguments);
      }
      this.on(method, onMethodCall);
    }
  }

  if (!options.omitJsdomErrors) {
    this.on("jsdomError", e => anyConsole.error(e.stack, e.detail));
  }

  return this;
}

};