text: import wrapAnsi from 'wrap-ansi'
  import chalk from 'chalk'
  import boxen from 'boxen'
  import { maxCharsPerLine } from './constants'
  
  export function indent(count, chr = ' ') {
    return chr.repeat(count)
  }
  
  export function indentLines(string, spaces, firstLineSpaces) {
    const lines = Array.isArray(string) ? string : string.split('\n')
    let s = ''
    if (lines.length) {
      const i0 = indent(firstLineSpaces === undefined ? spaces : firstLineSpaces)
      s = i0 + lines.shift()
    }
    if (lines.length) {
      const i = indent(spaces)
      s += '\n' + lines.map(l => i + l).join('\n')
    }
    return s
  }
  
  export function foldLines(string, spaces, firstLineSpaces, charsPerLine = maxCharsPerLine()) {
    return indentLines(wrapAnsi(string, charsPerLine), spaces, firstLineSpaces)
  }
  
  export function colorize(text) {
    return text
      .replace(/\[[^ ]+]/g, m => chalk.grey(m))
      .replace(/<[^ ]+>/g, m => chalk.green(m))
      .replace(/ (-[-\w,]+)/g, m => chalk.bold(m))
      .replace(/`([^`]+)`/g, (_, m) => chalk.bold.cyan(m))
  }
  
  export function box(message, title, options) {
    return boxen([
      title || chalk.white('Nuxt Message'),
      '',
      chalk.white(foldLines(message, 0, 0, maxCharsPerLine()))
    ].join('\n'), Object.assign({
      borderColor: 'white',
      borderStyle: 'round',
      padding: 1,
      margin: 1
    }, options)) + '\n'
  }
  
  export function successBox(message, title) {
    return box(message, title || chalk.green('✔ Nuxt Success'), {
      borderColor: 'green'
    })
  }
  
  export function warningBox(message, title) {
    return box(message, title || chalk.yellow('⚠ Nuxt Warning'), {
      borderColor: 'yellow'
    })
  }
  
  export function errorBox(message, title) {
    return box(message, title || chalk.red('✖ Nuxt Error'), {
      borderColor: 'red'
    })
  }
  
  export function fatalBox(message, title) {
    return errorBox(message, title || chalk.red('✖ Nuxt Fatal Error'))
  }
  