'use strict'

/**
 * 建立err的訊息，會以console.error輸出
 * @function makeError
 * @example
 * makeError('ERR_LOAD_CORE_FILE', '載入核心檔案失敗')
 * //console輸出 (1423077306937) ERROR : ERR_LOAD_CORE_FILE : 載入核心檔案失敗
 * @param {string} err 錯誤代碼
 * @param {string} msg 錯誤描述
 * @public
 */
function makeError (err, msg) {
  var dt = new Date()
  console.error(new Error('(' + dt.getTime() + ') ERROR : ' + err + ' : '))
}

/**
 * 建立警告的訊息，會以wconsole.warning輸出
 * @function makeWarning
 * @example
 * makeWarning('NO_PAGE_CREATED', '沒有建立任何頁面') ;
 * //console輸出 Warning : NO_PAGE_CREATED : 沒有建立任何頁面
 * @param {string} warning 警告代碼
 * @param {string} msg 警告描述
 * @public
 */
function makeWarning (warning, msg) {
  console.warn('Warning : ' + warning + ' : ' + msg)
}

/**
 * 產生一組Unique ID，此ID以呼叫函式時的時間(client端)為基礎，建議使用於runtime。
 * @function guid
 * @returns {string} GUID
 * @public
 */
function guid () {
  const key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
  const l = key.length
  let seed = parseInt(new Date().getTime().toString() + Math.floor(Math.random() * 100000000).toString())
  let result = ''
  let c = 0
  while (seed > 0) {
    c = seed % l
    result = key.charAt(c) + result
    seed = (seed - c) / l
  }
  return result
}

export { makeError, makeWarning, guid }
