Source: app/util/raven/debug-breadcrumb.js

/* global WP_DEFINE_IS_NODE */ // eslint-disable-line

import debugLib from 'debug';
import stripColorCodes from 'stripcolorcodes';
import { getClient } from './raven-client';

/** @module */

/**
 * Patches the global debug lib by also adding raven breadcrumbs
 *
 * @function enableDebugBreadcrumb
 * @category tracking
 */
// eslint-disable-next-line import/prefer-default-export
export const enableDebugBreadcrumb = () => {
  debugLib.log = message => {
    // node has colorized messages being written ti stdout,
    // so they are not being captured by the console autoBreadcrumb wrapper.
    if (WP_DEFINE_IS_NODE) {
      // output to the stdout to view the log
      process.stdout.write(`${message}\n`);

      // save breadcrumb without color-codes
      const ravenClient = getClient();
      if (ravenClient) {
        ravenClient.captureBreadcrumb({
          message: stripColorCodes(message),
          level: 'debug',
          category: 'debug',
        });
      }
    } else {
      // do normal console log that is captured automatically
      console.log(message); // eslint-disable-line no-console
    }
  };
};