import './debug.js'
import debug from 'debug'

const isBrowser =
  typeof window !== 'undefined' && typeof window.document !== 'undefined'
const colorEnabled: boolean =
  isBrowser ||
  (typeof process === 'object' && process.env['DEBUG_COLORS'] !== 'false')

export function createLogger(name: string, colorEnabled: boolean = true) {
  if (!name) {
    name = 'app'
  }
  const logDebug: debug.Debugger = debug(name + ':debug')
  logDebug.useColors = colorEnabled
  logDebug.log = console.log.bind(console)
  const logError = debug(name + ':error')
  logError.log = console.error.bind(console)
  logError.useColors = colorEnabled
  const logWarn = debug(name + ':warn')
  logWarn.log = console.warn.bind(console)
  logWarn.useColors = colorEnabled
  const logInfo = debug(name + ':info')
  logInfo.log = console.info.bind(console)
  logInfo.useColors = colorEnabled

  return {
    debug: logDebug,
    info: logInfo,
    warn: logWarn,
    error: logError
  }
}

export default createLogger('app', colorEnabled)
