dcagent
Version:
an analytics sdk for HTML5 app and web game
118 lines (106 loc) • 3.47 kB
JavaScript
/**
* DataEye SDK执行所依赖的相关环境
* 1) 本地存储localStorage(Cookie可选)
* 2)基本设备信息(设备id,屏幕宽高)
* 3)XMLHttpRequest或者功能相同的请求工具
*
* 对于web环境设备信息中设备id由sdk内部从服务端分配
*/
import * as validator from './utils/validator.js'
import * as utils from './libs/utils.js'
import {window} from './globals.js'
import * as controller from './utils/apiController.js'
import init from './interface/init.js'
import isReady from './interface/isReady.js'
import {version} from './interface/version.js'
import player from './interface/player.js'
import login from './interface/login.js'
import getUid from './interface/getUid.js'
import onCoinGet from './interface/onCoinGet.js'
import onCoinUse from './interface/onCoinUse.js'
import onEvent from './interface/onEvent.js'
import onItemBuy from './interface/onItemBuy.js'
import onItemProduce from './interface/onItemProduce.js'
import onItemUse from './interface/onItemUse.js'
import onLevelUp from './interface/onLevelUp.js'
import onMissionFinished from './interface/onMissionFinished.js'
import onMissionUnfinished from './interface/onMissionUnfinished.js'
import onPayment from './interface/onPayment.js'
import onTaskFinished from './interface/onTaskFinished.js'
import onTaskUnfinished from './interface/onTaskUnfinished.js'
import setAccountType from './interface/setAccountType.js'
import setAge from './interface/setAge.js'
import setGameServer from './interface/setGameServer.js'
import setGender from './interface/setGender.js'
import setRoleInfo from './interface/setRoleInfo.js'
import createRole from './interface/createRole.js'
import {reportData as report} from './utils/request.js'
import state from './utils/stateCenter.js'
import destroy from './interface/destroy.js'
var initBasedAPI = {
login,
getUid,
onEvent
}
var loginBasedAPI = {
onCoinGet,
onCoinUse,
onItemBuy,
onItemProduce,
onItemUse,
onLevelUp,
onMissionFinished,
onMissionUnfinished,
onPayment,
onTaskFinished,
onTaskUnfinished,
setAccountType,
setAge,
setGameServer,
setGender,
setRoleInfo,
createRole
}
var name
var preInit = [validator.shouldNotBeDestoryed, validator.shouldBeInited]
var preLogin = [validator.shouldNotBeDestoryed, validator.shouldBeLoggedIn]
var debounce = [() => controller.setPollingDebounce()]
/**
* 校验是否已经初始化
* onEvent需要debounce
*/
for (name in initBasedAPI) {
exports[name] = utils.aspect(initBasedAPI[name], preInit, name === 'onEvent' && debounce)
}
/**
* 校验是否已登录
* onPayment是立即调用
* 此处的接口使用内置的onEvent函数
*/
for (name in loginBasedAPI) {
exports[name] = utils.aspect(loginBasedAPI[name], preLogin, name !== 'onPayment' && debounce)
}
// 显示使用exports,不然dc执行缓存的时候找不到对应的方法
exports.init = init
exports.isReady = isReady
exports.destroy = destroy
/**
* 执行快速统计调用
* dc('init', {...})
* dc(onEvent, id, data)
*/
var proxyName = window.DCAgentObject
if (proxyName) {
var proxy = window[proxyName]
if (utils.isFunction(proxy)) {
var cache = proxy.cache
if (cache.length) {
cache.forEach((args) => {
utils.attempt(exports[args[0]], exports, utils.slice(args, 1))
})
cache.length = 0
}
}
}
// export之后才会生成DCAgent,不然exports找不到
export {version, report, state, player}