/**
 * 获取 window 对象
 * @returns {Window} window 对象
 */
export function getWindow () {
  return window
}

/**
 * 获取当前子应用的 name
 * @returns {string} 子应用的 name
 */
export function getMicroAppName () {
  // 如果在微前端环境中运行，返回应用名称，否则返回 undefined
  return window.__MICRO_APP_ENVIRONMENT__ ? window.__MICRO_APP_NAME__ : undefined
}

/**
 * 判断是否处于 microApp 环境
 * @returns {boolean} 如果在 microApp 环境下返回 true，否则返回 false
 */
export function isMicroAppEnv () {
  return window.__MICRO_APP_ENVIRONMENT__
}

/**
 * 发送事件给基座应用
 * @param {Object} data 要传递的数据
 * @param {Function} callBack 如果不是 microApp 环境时的回调函数
 * @returns {*} 在 microApp 环境下返回 dispatch 的结果，否则执行 callBack
 */
export function microDispatch (data, callBack) {
  if (window.__MICRO_APP_ENVIRONMENT__) {
    return window.microApp.dispatch(data)
  }
  if (callBack) {
    return callBack()
  }
}

/**
 * 获取 microApp 的数据
 * @returns {*} microApp 的数据，如果不在 microApp 环境下返回 undefined
 */
export function getMicroData () {
  if (window.__MICRO_APP_ENVIRONMENT__) {
    return window.microApp.getData()
  }
}
