dcagent.min.js 13 KB

123456789101112131415161718192021222324252627
  1. (function(q,v){"object"===typeof exports&&"undefined"!==typeof module?v(exports):"function"===typeof define&&define.amd?define("DCAgent",["exports"],v):v(q.DCAgent={})})(this,function(q){function v(a){return"undefined"!==typeof g[a]}function t(){}function P(a){return"function"===typeof a}function $(a){var b,c;b=Date.now();c="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var c;c=(b+16*Math.random())%16|0;b=Math.floor(b/16);return"x"===a?c.toString(16):(c&7|8).toString(16)});return(a||
  2. "")+c.replace(/-/g,"").toUpperCase()}function Ba(a){var b,c;for(b in a)c=a[b],a[b]=c;(2<=arguments.length?[].slice.call(arguments,1):[]).forEach(function(d){var f;f=[];for(b in d)c=d[b],f.push(a[b]=c);return f});return a}function p(a,b,c){if(P(a))try{return a.apply(b,c)}catch(d){h("attemp error for "+a.toString(),d.stack)}}function Ca(a,b,c){function d(){!1!==p(a)&&F(d,b)}c?d():F(d,b)}function h(a,b){console.log("#DCAgent: "+a);b&&console.log(b)}function Da(a){try{return a.setItem(".","."),a.removeItem("."),
  3. !0}catch(b){return!1}}function Ea(a){return a?(a=a.match(/^(https?\:)\/\/(([^:\/?#]*)(?:\:([0-9]+))?)(\/[^?#]*)(\?[^#]*|)(#.*|)$/))&&a[3]:""}function z(a,b){a=m(a);n.setItem(a,b);aa.set(a,b,365);return b}function G(a){a=m(a);return n.getItem(a)||aa.get(a)}function m(a){if(Q||R===a)return a;e.appId||h("appid should not be empty when you are in native env");return e.appId+"."+a}function Fa(a){var b=s.hash,c="!"+a;if(b){var d=/![0-9A-Z]{32,128}/gi;(b=b.match(d))?(b=b[0].slice(1),a===b||G(ba)||(e.parentId=
  4. b,z(ba,b)),a=s.href.replace(d,c),s.replace(a)):s.replace(s.href+c)}else s.replace(s.href+"#"+c)}function ca(a){a=m(a);try{var b=JSON.parse(n.getItem(a));return Array.isArray(b)?b:[]}catch(c){return n.removeItem(a),[]}}function Ga(a,b){b=m(b);var c=ca(b);Array.isArray(a)?a.forEach(function(a){return c.push(a)}):c.push(a);n.setItem(b,JSON.stringify(c))}function Ha(){n.removeItem(m(w));n.removeItem(m(B))}function Ia(){g.addEventListener&&g.addEventListener("error",function(a){p(function(){if(u.isReportAllowed(a.filename)){u.count+=
  5. 1;var b={};["colno","filename","lineno","message"].forEach(function(c){return b[c]=a[c]||"1"});var c=a.error||{};b.stack=encodeURIComponent(c.stack||c.stacktrace||"");b.type=c.name||"Error";b.timestamp=parseInt(a.timeStamp/1E3);if(P(e.getErrorScene)&&(c=p(e.getErrorScene,c,[a]))){if(c&&"[object Object]"===da.call(c)){var d="",f;for(f in c)d+="\t"+f+"="+c[f]+"\n";c=d}else c=String(c);b.stack+="\n\nError scene:\n"+encodeURIComponent(c)}x.updateStorageByKey(b,B)}})},!1)}function Ja(){if(H)return H;S+=
  6. 1;if(!(4<S)){var a={egret:"egret",layabox:"layabox",cocos:"cc.game",impact:"ig",phaser:"Phaser",pixi:"PIXI",create:"createjs",three:"THREE",gameMaker:"asset_get_type",playCanvas:"pc.fw",turbulenz:"TurbulenzEngine",quintus:"Quintus",melon:"me.game",lychee:"lychee",wade:"wade.addSceneObject",crafty:"Crafty",lime:"lime.Scene",enchant:"enchant",isogenic:"IgeEngine",gameclosure:"GC.Application",panda:"game.Scene",kiwi:"Kiwi",jaws:"jaws",sirius2d:"ss2d",collie:"collie",physics:"Physics",stage:"Stage.Anim",
  7. babylon:"BABYLON"},b;for(b in a){var c=a[b];if(-1<c.indexOf(".")){var c=c.split("."),d=g[c[0]];if(d&&d[c[1]])return H=b}else if(g[c])return H=b}}}function Ka(){var a;T||(T={appid:e.appId,accountid:e.accountId,uid:e.deviceId,appver:e.appVer,ver:ea,channel:e.channel,domain:l.domain||"",screen:C,logintime:String(parseInt(e.loginTime/1E3)),crtime:G(A)||""});a=T;a.onlinetime=String(e.intervalCount*e.interval/1E3||1);a.pv="0";a.engine=Ja()||"";return a}function U(a){return 0>a?I:Math.min(a,I)}function fa(a){var b=
  8. ga();b.timeout=I;b.open("POST",a.url,!0);b.setRequestHeader("Content-Type","text/plain; charset=UTF-8");var c=Date.now();b.onreadystatechange=function(){if(4===this.readyState){var b="success"===this.responseText,f=U(Date.now()-c);p(b?a.success:a.error,this,[this,f]);p(a.complete,this,[this,f]);this.ontimeout=this.onreadystatechange=null}};b.ontimeout=function(){var b=U(Date.now()-c);p(a.error,this,[this,b,!0]);p(a.complete,this,[this,b]);this.ontimeout=this.onreadystatechange=null};b.send(JSON.stringify(a.data))}
  9. function La(a){var b=new egret.URLLoader,c=Date.now();b.addEventListener(egret.Event.COMPLETE,function(b){var d=U(Date.now()-c);b=b.target;p("success"===b.data?a.success:a.error,b,[b,d,d>=I]);p(a.complete,b,[b,d])});var d=new egret.URLRequest(a.url);d.method=egret.URLRequestMethod.POST;d.data=JSON.stringify(a.data);b.load(d)}function ha(a,b){if(a.data){a.data.errors&&a.data.errors.length>u.max&&(e.debug&&h("sending too many errors, only "+u.max+" allowed"),a.data.errors=a.data.errors.slice(0,u.max));
  10. for(var c in a.data)"number"===typeof a.data[c]&&(a.data[c]=String(a.data[c]));c=Math.abs(e.onlinetime);c>Ma||0>=c?e.debug&&h("illegal online time: "+c):(c=Ba({headers:Ka()},a.data),Na({url:b,data:c,success:function(b,c){r.succ=1;r.fail=0;r.total=c;p(a.success,b,[b,c])},error:function(b,c,g){r.succ=0;r.fail+=1;r.total+=c;p(a.error,b,[b,c,g]);g&&e.debug&&h("report timeout, network infomation",r)},complete:function(b,c){x.updateStorageByKey({eventid:Oa,labelmap:JSON.stringify(r),duration:"1"},w);p(a.complete,
  11. b,[b,c])}}),e.debug&&h("report data:",c))}}function ia(a,b,c,d){var f={data:{online:{},events:a||[],errors:b||[]},success:d};c&&(f.data.reg=c);a=x.getStorageByKey(w);b=x.getStorageByKey(B);if(a.length||b.length)x.clear(),f.data.events=f.data.events.concat(a),f.data.errors=f.data.errors.concat(b),f.error=function(){e.debug&&h("report failed, restoring data to localStorage");x.updateStorageByKey(f.data.events,w);x.updateStorageByKey(f.data.errors,B)};ha(f,ja)}function ka(a,b,c){a={page:encodeURIComponent(a||
  12. Pa),optime:parseInt(e.initializedOn),ottime:parseInt(Date.now()/1E3),lttime:parseInt(e.loginTime/1E3)};ia([{eventid:"_DESelf_PV",labelmap:JSON.stringify(a),duration:"1"}],null,b,c)}function Qa(){p(function(){if(g[J])g[J]=null;else if("function"===typeof define&&define.amd)require.undef(J);else if("object"===typeof q&&"undefined"!==typeof module){var a=require.resolve(J);delete require.cache[a]}else h("unknown module system, unload DCAgent manually please");h("DCAgent has been destroyed.")})}function Ra(){if(la)return Qa(),
  13. !1;ma&&l[ma]||(e.intervalCount+=1,D.setItem(m(V),e.intervalCount),ia());return!0}function W(a,b){if(!y.isAgentReady()){var c=[a];[].forEach.call(b,function(a){return c.push(a)});K.push(c);return!0}}function na(a){a=m(a);try{var b=JSON.parse(n.getItem(a));return Array.isArray(b)?b:[]}catch(c){return n.removeItem(a),[]}}function Sa(a,b){b=m(b);var c=na(b);Array.isArray(a)?a.forEach(function(a){return c.push(a)}):c.push(a);n.setItem(b,JSON.stringify(c))}function Ta(){n.removeItem(m(w));n.removeItem(m(B))}
  14. function oa(a,b,c){if(!a)h("invoke failed, missing eventId");else if(!W("onEvent",arguments)){if(null==b||1>b)b=1;var d;if(c&&"[object Object]"===da.call(c)){for(d in c)c[d.replace("%","_")]=encodeURIComponent(c[d]);d=JSON.stringify(c)}else d="";pa.updateStorageByKey({eventid:a,duration:String(b),labelmap:d},w)}}function qa(a){W("onPageView",arguments)||ka(a)}function ra(a){a&&a.hasOwnProperty("amount")&&!W("onPayment",arguments)&&(a.amount=parseFloat(a.amount)||0,ha({data:{payment:{currencyAmount:a.amount.toFixed(2),
  15. currencyType:a.currencyType||"CNY",payType:String(a.payType||""),iapid:String(a.iapid||""),orderId:String(a.orderId||""),payTime:String(a.payTime||"")}}},ja))}function sa(a,b,c,d){b&&z(R,a);e.deviceId=a;e.accountId=e.accountId||a;var f=D.getItem(m(ta));f||(f=Date.now(),D.setItem(m(ta),f));e.loginTime=f;f=D.getItem(m(V));f||(f="0",D.setItem(m(V),f));e.intervalCount=parseInt(f);e.interval=1E3*Math.max(10,parseFloat(c.interval||e.interval));e.virus&&Ua(a);e.errorReport&&(c.excludes&&(u.excludes=u.excludes.concat(c.excludes)),
  16. Ia());c=null;b&&(c={isact:b,isreg:1},e.parentId&&(c.parentid=e.parentId),k.localStorage||(c.localstorage=1));e.initializedOn=Date.now()/1E3;G(A)||z(A,e.initializedOn);ka(null,c);y.setReadyState(3);b={onEvent:oa,onPageView:qa,onPayment:ra};c=0;for(f=K.length;c<f;c++){var h=K[c];b[h.shift()].apply(g,h)}K.length=0;Ca(Ra,e.interval);P(d)&&d(a)}function Va(a){function b(c){p(function(){if(0===ua.indexOf(c.origin)){var d=JSON.parse(c.data);g.removeEventListener("message",b,!1);z(A,d.crtime);a(d.id)}})}
  17. g.addEventListener("message",b,!1);var c=!1,d=Date.now(),f=l.createElement("iframe");F(function(){if(!c){var e=Date.now()-d;f.onload=null;f.parentNode.removeChild(f);g.removeEventListener("message",b,!1);z(A,parseInt(Date.now()/1E3));pa.updateStorageByKey({eventid:"WHOAMI_TIMEOUT",duration:"1",labelmap:{elapsed:e}},w);va(a)}},1E4);f.style.display="none";f.src=ua;f.onload=function(){c=!0;this.onload=null;this.parentNode.removeChild(this)};var e=function(){return l.body.appendChild(f)};l.body?e():l.addEventListener("DOMContentLoaded",
  18. e,!1)}function va(a){z(A,parseInt(Date.now()/1E3));if(k.engine.layabox){var b=layabox.getDeviceInfo()||{},c=b.mac||b.idfa||$(wa()),c=c.replace(/[-_:=\s]+/g,"").toUpperCase();if(32>c.length){for(var b=c,c=Math.ceil(32-c.length)/2,c=void 0===c?0:c,d="",f=0;f<c;f+=1)d+="0A";c=b+d}a(c)}else a($(wa()))}function wa(){return k.engine.egret?L+Wa:k.engine.layabox?L+Xa:k.engine.cocos?L+Ya:L+Za}var X=(0,eval)("this"),g=X||{},l=X.document||{},s=X.location||{},e={appId:"",deviceId:"",accountId:"",channel:"",appVer:"",
  19. interval:10,intervalCount:0,loginTime:0,debug:g.DCAGENT_DEBUG_OPEN},k={get engine(){return M},get localStorage(){return $a},get sessionStorage(){return ab},get postMessage(){return bb},get realBrowser(){return Q},get cookie(){return cb}},xa;if("function"===typeof l.createElement){var N=l.createElement("div");if(N&&"function"===typeof N.querySelector){N.innerHTML="<i></i>";var ya=N.querySelector("i");xa=!!ya&&"I"===ya.tagName}}var M={egret:v("egret"),layabox:v("layabox"),cocos:v("cc")},$a=!!g.localStorage||
  20. M.egret||M.cocos,ab=!!g.sessionStorage,bb=!!g.postMessage,Q=xa,cb=Q&&"cookie"in l,F=g.setTimeout;M.egret&&(F=function(a,b){egret.setTimeout(a,g,b)});var da=Object.prototype.toString,ma="hidden"in l?"hidden":"webkitHidden"in l?"webkitHidden":"mozHidden"in l?"mozHidden":"msHidden"in l?"msHidden":null,za={getItem:t,setItem:t,removeItem:t},n=k.localStorage?g.localStorage:za,D=k.sessionStorage?g.sessionStorage:za;k.engine.egret?n=egret.localStorage:k.engine.cocos&&(n=cc.sys.localStorage);var A="dcagent_create_time",
  21. L="ND",Wa="EGRET",Xa="LAYA",Ya="COCOS",Za="UE",ba="dcagent_parent_id",w="dcagent_client_events",B="dcagent_client_errors",ta="dcagent_login_time",V="dcagent_interval_key",R="dcagent_client_id",ja="http://rd.gdatacube.net/dc/html5/sync",ua="http://rd.gdatacube.net/dc/html5/whoami",Oa="_DESelf_OSS",I=3E4,J="DCAgent",Ma=172800,Aa,aa=Aa=k.cookie?{get:function(a){return(a=l.cookie.match(new RegExp("(^|)\\s*"+a+"=([^\\s]*)")))&&3<=a.length?decodeURIComponent(a[2]):null},set:function(a,b,c,d,f,e){var g;
  22. c&&(g=new Date,g.setTime(g.getTime()+864E5*c));c=c?" expires="+g.toGMTString():"";f=" path="+(f||"/");d=d?" domain="+d:"";e=e?" secure":"";l.cookie=a+"="+encodeURIComponent(b)+c+f+d+e},remove:function(a,b,c){Aa.set(a,"",-1,b,c)}}:{get:t,set:t,remove:t},Ua=k.realBrowser?Fa:t,O={max:100,count:0,excludes:[],isReportAllowed:function(a){if(O.count<O.max)return O.excludes.every(function(b){return-1===a.indexOf(b)})}},u=O,x={get getStorageByKey(){return ca},get updateStorageByKey(){return Ga},get clear(){return Ha}},
  23. ea="16";q.version=ea;var Y=g.screen||{},C=Y.width&&Y.width+"*"+Y.height;if(!C){var E;k.engine.layabox?(E=layabox.getDeviceInfo()||{},C=E.resolution||"0*0"):k.engine.cocos?(E=cc.view.getViewPortRect()||{},C=E.width+"*"+E.height):C="0*0"}var H,S=0,T,r={succ:0,fail:0,total:0},ga=function(){return new g.XMLHttpRequest},Na=function(){if(g.XMLHttpRequest)return fa;if(k.engine.cocos)return ga=function(){return cc.loader.getXMLHttpRequest()},fa;if(k.engine.egret)return La;h("XMLHttpRequest not found");return t}(),
  24. Pa=k.realBrowser?s.pathname+s.search:"/",la=!1;q.teardown=function(){la=!0};var Z=0,y={getReadyState:function(){return Z},setReadyState:function(a){Z=a},isAgentReady:function(){return 3===Z}},K=[],pa={get getStorageByKey(){return na},get updateStorageByKey(){return Sa},get clear(){return Ta}};q.onEvent=oa;q.onPageView=qa;q.onPayment=ra;var db=k.postMessage&&k.realBrowser?Va:va;q.init=function(a,b){if(Da(n))if(0<y.getReadyState())h("DCAgent.init should be called only once");else if(a=a||{},a.appId){["errorReport",
  25. "virus"].forEach(function(b){return e[b]=a.hasOwnProperty(b)?!!a[b]:!0});["appId","accountId","appVer","getErrorScene"].forEach(function(b){return e[b]=a[b]||""});g.QZAppExternal&&g.QZAppExternal.getPlatform&&2==g.QZAppExternal.getPlatform()&&(h("virus disabled"),e.virus=!1);e.channel=a.channel||Ea(l.referrer);var c=G(R);c?sa(c,0,a,b):(y.setReadyState(1),db(function(c){y.setReadyState(2);sa(c,1,a,b)}))}else h("init failed, missing appId");else k.localStorage?h("localstorage qouta error, private mode?"):
  26. h("localstorage is not supported.")};var eb=y.isAgentReady;Object.defineProperty(q,"readyState",{get:function(){h("DCAgent.readyState is obsolete, use DCAgent.isReady() instead");return y.getReadyState()}});q.isReady=eb});