HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/dev/nowruzgan/rest/node_modules/reportback/index.js
/**
 * Module dependencies
 */

var switchback = require('switchback');
var captains = require('captains-log');



/**
 * Reporter
 *
 * Hybrid between:
 * + switchback
 * + logger
 * + EventEmitter
 * + Stream
 *
 * Usage:
 * require('reporter')
 *
 */
module.exports = Reporter;

/**
 * Factory
 *
 * @param  {Object|Function} patch
 * @param  {Object} defaultHandlers
 * @return {Reporter} a new reporter
 */
function Reporter (patch, defaultHandlers) {
  patch = patch || {};
  defaultHandlers = defaultHandlers || {};
  if ( typeof patch !== 'function' && (typeof patch !== 'object' || patch === null) ) {
    throw new Error('Invalid usage: must provide a function or object.');
  }

  // Construct logger
  var logger = captains();


  // Set up implicit defaults for `defaultHandlers`
  if (defaultHandlers.success === undefined) {
    defaultHandlers.success = function(){};
  }
  if (defaultHandlers.error === undefined) {
    defaultHandlers.error = logger.error;
  }
  if (defaultHandlers.end === undefined) {
    defaultHandlers.end = function(){};
  }


  // Construct a switchback
  var reporter = switchback(patch, defaultHandlers);

  // Mixin streaming / logging functionality
  reporter.write = logger.info;
  reporter.log   = logger;

  /**
   * Mixin `extend()` method
   * @param  {Object|Function} patch
   * @return {Reporter} a new reporter
   */
  reporter.extend = Reporter;

  return reporter;
}