text: function typof (v) {
    var s = Object.prototype.toString.call(v)
    return s.substring(8, s.length - 1)
  }
  
  function isDebugMode () {
    /* eslint-disable no-undef */
    return typeof __channelId__ === 'string' && __channelId__
  }
  
  function jsonStringifyReplacer (k, p) {
    switch (typof(p)) {
      case 'Function':
        return 'function() { [native code] }'
      default :
        return p
    }
  }
  
  export function log (type) {
    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
      args[_key - 1] = arguments[_key]
    }
    console[type].apply(console, args)
  }
  
  export default function formatLog () {
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key]
    }
    var type = args.shift()
    if (isDebugMode()) {
      args.push(args.pop().replace('at ', 'uni-app:///'))
      return console[type].apply(console, args)
    }
  
    var msgs = args.map(function (v) {
      var type = Object.prototype.toString.call(v).toLowerCase()
  
      if (type === '[object object]' || type === '[object array]') {
        try {
          v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---'
        } catch (e) {
          v = type
        }
      } else {
        if (v === null) {
          v = '---NULL---'
        } else if (v === undefined) {
          v = '---UNDEFINED---'
        } else {
          var vType = typof(v).toUpperCase()
  
          if (vType === 'NUMBER' || vType === 'BOOLEAN') {
            v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---'
          } else {
            v = String(v)
          }
        }
      }
  
      return v
    })
    var msg = ''
  
    if (msgs.length > 1) {
      var lastMsg = msgs.pop()
      msg = msgs.join('---COMMA---')
  
      if (lastMsg.indexOf(' at ') === 0) {
        msg += lastMsg
      } else {
        msg += '---COMMA---' + lastMsg
      }
    } else {
      msg = msgs[0]
    }
  
    console[type](msg)
  }
  