2558 lines
82 KiB
JavaScript
2558 lines
82 KiB
JavaScript
"use strict";
|
||
var e = "[X-STAT] -- ",
|
||
t = (function () {
|
||
var t = null,
|
||
n = !1;
|
||
function i() {
|
||
this.setDebug = function (e) {
|
||
n = e;
|
||
};
|
||
this.d = function () {
|
||
if (n)
|
||
try {
|
||
"string" == typeof arguments[0] &&
|
||
(arguments[0] = e + arguments[0]);
|
||
console.debug.apply(console, arguments);
|
||
} catch (e) { }
|
||
};
|
||
this.i = function () {
|
||
try {
|
||
if (n)
|
||
try {
|
||
"string" == typeof arguments[0] &&
|
||
(arguments[0] = e + arguments[0]);
|
||
console.info.apply(console, arguments);
|
||
} catch (e) { }
|
||
} catch (e) { }
|
||
};
|
||
this.e = function () {
|
||
if (n)
|
||
try {
|
||
"string" == typeof arguments[0] &&
|
||
(arguments[0] = e + arguments[0]);
|
||
console.error.apply(console, arguments);
|
||
} catch (e) { }
|
||
};
|
||
this.w = function () {
|
||
if (n)
|
||
try {
|
||
"string" == typeof arguments[0] &&
|
||
(arguments[0] = e + arguments[0]);
|
||
console.warn.apply(console, arguments);
|
||
} catch (e) { }
|
||
};
|
||
this.v = function () {
|
||
if (n)
|
||
try {
|
||
"string" == typeof arguments[0] &&
|
||
(arguments[0] = e + arguments[0]);
|
||
console.log.apply(console, arguments);
|
||
} catch (e) { }
|
||
};
|
||
this.t = function () {
|
||
if (n)
|
||
try {
|
||
console.table.apply(console, arguments);
|
||
} catch (e) { }
|
||
};
|
||
this.tip = function () {
|
||
try {
|
||
"string" == typeof arguments[0] && (arguments[0] = e + arguments[0]);
|
||
console.log.apply(console, arguments);
|
||
} catch (e) { }
|
||
};
|
||
this.tip_w = function (e) {
|
||
try {
|
||
console.log(
|
||
"%c [UMENG] -- " + e,
|
||
"background:red; padding: 4px; padding-right: 8px; border-radius: 4px; color: #fff;",
|
||
);
|
||
} catch (e) { }
|
||
};
|
||
this.err = function () {
|
||
try {
|
||
"string" == typeof arguments[0] && (arguments[0] = e + arguments[0]);
|
||
console.error.apply(console, arguments);
|
||
} catch (e) { }
|
||
};
|
||
this.repeat = function (e) {
|
||
for (var t = e; t.length < 86;) t += e;
|
||
return t;
|
||
};
|
||
}
|
||
return function () {
|
||
null === t && (t = new i());
|
||
return t;
|
||
};
|
||
})(),
|
||
n = (function () {
|
||
var e = null;
|
||
function t() {
|
||
var e = {};
|
||
this.useOpenid = function () {
|
||
return !!e.useOpenid;
|
||
};
|
||
this.useSwanid = function () {
|
||
return !!e.useSwanid;
|
||
};
|
||
this.autoGetOpenid = function () {
|
||
return !!e.autoGetOpenid;
|
||
};
|
||
this.appKey = function () {
|
||
return e.appKey;
|
||
};
|
||
this.url = function () {
|
||
return e.url;
|
||
};
|
||
this.uploadUserInfo = function () {
|
||
return e.uploadUserInfo;
|
||
};
|
||
this.enableVerify = function () {
|
||
return e.enableVerify;
|
||
};
|
||
this.set = function (t) {
|
||
e = t;
|
||
};
|
||
this.get = function () {
|
||
return e;
|
||
};
|
||
this.setItem = function (t, n) {
|
||
e[t] = n;
|
||
};
|
||
this.getItem = function (t) {
|
||
return e[t];
|
||
};
|
||
}
|
||
return function () {
|
||
e || (e = new t());
|
||
return e;
|
||
};
|
||
})();
|
||
function i() { }
|
||
i.prototype = {
|
||
on: function (e, t, n) {
|
||
var i = this.e || (this.e = {});
|
||
(i[e] || (i[e] = [])).push({
|
||
fn: t,
|
||
ctx: n,
|
||
});
|
||
return this;
|
||
},
|
||
once: function (e, t, n) {
|
||
var i = this;
|
||
function r() {
|
||
i.off(e, r);
|
||
t.apply(n, arguments);
|
||
}
|
||
r._ = t;
|
||
return this.on(e, r, n);
|
||
},
|
||
emit: function (e) {
|
||
for (
|
||
var t = [].slice.call(arguments, 1),
|
||
n = ((this.e || (this.e = {}))[e] || []).slice(),
|
||
i = 0,
|
||
r = n.length;
|
||
i < r;
|
||
i++
|
||
)
|
||
n[i].fn.apply(n[i].ctx, t);
|
||
return this;
|
||
},
|
||
off: function (e, t) {
|
||
var n = this.e || (this.e = {}),
|
||
i = n[e],
|
||
r = [];
|
||
if (i && t)
|
||
for (var o = 0, s = i.length; o < s; o++)
|
||
i[o].fn !== t && i[o].fn._ !== t && r.push(i[o]);
|
||
r.length ? (n[e] = r) : delete n[e];
|
||
return this;
|
||
},
|
||
};
|
||
var r = new i();
|
||
r.messageType = {
|
||
CONFIG_LOADED: 0,
|
||
UMA_LIB_INITED: 1,
|
||
};
|
||
var o = new ((function () {
|
||
function e() { }
|
||
e.prototype.setStorage = function (e, t, n) {
|
||
wx.setStorage({
|
||
key: e,
|
||
data: t,
|
||
success: function () {
|
||
"function" == typeof n && n(!0);
|
||
},
|
||
fail: function () {
|
||
"function" == typeof n && n(!1);
|
||
},
|
||
});
|
||
};
|
||
e.prototype.getStorage = function (e, n) {
|
||
wx.getStorage({
|
||
key: e,
|
||
success: function (e) {
|
||
"function" == typeof n && n(e.data);
|
||
},
|
||
fail: function (i) {
|
||
t().w(e + ": " + i.errMsg);
|
||
"function" == typeof n && n();
|
||
},
|
||
});
|
||
};
|
||
e.prototype.removeStorage = function (e, t) {
|
||
wx.removeStorage({
|
||
key: e,
|
||
success: function () {
|
||
"function" == typeof t && t(!0);
|
||
},
|
||
fail: function () {
|
||
"function" == typeof t && t(!1);
|
||
},
|
||
});
|
||
};
|
||
e.prototype.getSystemInfo = function (e) {
|
||
wx.getSystemInfo({
|
||
success: function (t) {
|
||
t.safeArea = t.safeArea || {};
|
||
var n = "";
|
||
t.host && "string" == typeof t.host.env && (n = t.host.env);
|
||
var i = {
|
||
model: t.model,
|
||
brand: t.brand,
|
||
pixelRatio: t.pixelRatio,
|
||
screenWidth: t.screenWidth,
|
||
screenHeight: t.screenHeight,
|
||
fontSizeSetting: t.fontSizeSetting,
|
||
platform: t.platform,
|
||
platformVersion: t.version,
|
||
platformSDKVersion: t.SDKVersion,
|
||
language: t.language,
|
||
deviceName: t.model,
|
||
OSVersion: t.system,
|
||
resolution: "",
|
||
theme: t.theme,
|
||
benchmarkLevel: t.benchmarkLevel,
|
||
safeArea: {
|
||
width: t.safeArea.width,
|
||
height: t.safeArea.height,
|
||
top: t.safeArea.top,
|
||
left: t.safeArea.left,
|
||
bottom: t.safeArea.bottom,
|
||
right: t.safeArea.right,
|
||
},
|
||
statusBarHeight: t.statusBarHeight,
|
||
host: n,
|
||
},
|
||
r = t.system.split(" ");
|
||
Array.isArray(r) && (i.OS = r[0]);
|
||
var o = Math.round(t.screenWidth * t.pixelRatio),
|
||
s = Math.round(t.screenHeight * t.pixelRatio);
|
||
i.resolution = o > s ? o + "*" + s : s + "*" + o;
|
||
"function" == typeof e && e(i);
|
||
},
|
||
fail: function () {
|
||
"function" == typeof e && e();
|
||
},
|
||
});
|
||
};
|
||
e.prototype.getDeviceInfo = function (e) {
|
||
"function" == typeof e && e("");
|
||
};
|
||
e.prototype.checkNetworkAvailable = function (e) {
|
||
wx.getNetworkType({
|
||
success: function (t) {
|
||
"function" == typeof e && e(t && "none" !== t.networkType);
|
||
},
|
||
fail: function () {
|
||
"function" == typeof e && e(!1);
|
||
},
|
||
});
|
||
};
|
||
e.prototype.getNetworkInfo = function (e) {
|
||
wx.getNetworkType({
|
||
success: function (t) {
|
||
"function" == typeof e &&
|
||
e({
|
||
networkAvailable: "none" !== t.networkType,
|
||
networkType: t.networkType,
|
||
});
|
||
},
|
||
fail: function () {
|
||
"function" == typeof e && e();
|
||
},
|
||
});
|
||
};
|
||
e.prototype.getDeviceId = function (e) {
|
||
e("");
|
||
};
|
||
e.prototype.getAdvertisingId = function (e) {
|
||
"function" == typeof e && e("");
|
||
};
|
||
e.prototype.onNetworkStatusChange = function (e) {
|
||
wx.onNetworkStatusChange(function (t) {
|
||
"function" == typeof e && e(t.isConnected);
|
||
});
|
||
};
|
||
e.prototype.request = function (e) {
|
||
var t = e.success,
|
||
n = e.fail,
|
||
i = !1,
|
||
r = null;
|
||
e.success = function (e) {
|
||
if (!i) {
|
||
r && clearTimeout(r);
|
||
"function" == typeof t && t(e);
|
||
}
|
||
};
|
||
e.fail = function () {
|
||
if (!i) {
|
||
r && clearTimeout(r);
|
||
"function" == typeof n && n(!1);
|
||
}
|
||
};
|
||
wx.request(e);
|
||
r = setTimeout(function () {
|
||
r && clearTimeout(r);
|
||
i = !0;
|
||
"function" == typeof n && n(i);
|
||
}, e.timeout || 5e3);
|
||
};
|
||
e.prototype.getSdkType = function () {
|
||
return "wxmp";
|
||
};
|
||
e.prototype.getPlatform = function () {
|
||
return "wx";
|
||
};
|
||
e.prototype.getUserInfo = function (e) {
|
||
e();
|
||
};
|
||
e.prototype.getAppInfoSync = function () {
|
||
if (wx.getAccountInfoSync) {
|
||
var e = wx.getAccountInfoSync(),
|
||
t = e && e.miniProgram ? e.miniProgram : {};
|
||
return {
|
||
appId: t.appId,
|
||
appEnv: t.envVersion,
|
||
appVersion: t.version,
|
||
};
|
||
}
|
||
return {};
|
||
};
|
||
e.prototype.onShareAppMessage = function (e) {
|
||
wx.onShareAppMessage(e);
|
||
};
|
||
e.prototype.shareAppMessage = function (e) {
|
||
wx.shareAppMessage(e);
|
||
};
|
||
e.prototype.getLaunchOptionsSync = function () {
|
||
var e = null;
|
||
if (e) return e;
|
||
if (!wx.getLaunchOptionsSync) return {};
|
||
try {
|
||
e = wx.getLaunchOptionsSync();
|
||
} catch (t) {
|
||
e = null;
|
||
}
|
||
return e || {};
|
||
};
|
||
return e;
|
||
})())(),
|
||
s = function (e, t) {
|
||
s =
|
||
Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array &&
|
||
function (e, t) {
|
||
e.__proto__ = t;
|
||
}) ||
|
||
function (e, t) {
|
||
for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
|
||
};
|
||
return s(e, t);
|
||
};
|
||
function a(e, t) {
|
||
s(e, t);
|
||
function n() {
|
||
this.constructor = e;
|
||
}
|
||
e.prototype =
|
||
null === t ? Object.create(t) : ((n.prototype = t.prototype), new n());
|
||
}
|
||
|
||
console.log(e);
|
||
|
||
var u = {
|
||
SESSION_INTERVAL: 3e4,
|
||
LOG_URL: "https://stat.x-php.com/stat",
|
||
GET_OPENID_URL: "https://stat.x-php.com/stat/wx/getuut",
|
||
USERINFO_URL: "https://stat.x-php.com/stat/comm/uif",
|
||
FETCHURL: "https://stat.x-php.com/stat/fetch",
|
||
GETVALUEURL: "https://stat.x-php.com/stat/getVlue",
|
||
DEVICE_INFO_KEY: "device_info",
|
||
ADVERTISING_ID: "mobile_ad_id",
|
||
ANDROID_ID: "android_id",
|
||
CURRENT_SESSION: "current_session",
|
||
SESSION_PAUSE_TIME: "session_pause_time",
|
||
EVENT_SEND_DEFAULT_INTERVAL: 15e3,
|
||
EVENT_LAST_SEND_TIME: "last_send_time",
|
||
MAX_EVENTID_LENGTH: 128,
|
||
MAX_PROPERTY_KEY_LENGTH: 256,
|
||
MAX_PROPERTY_KEYS_COUNT: 100,
|
||
REPORT_POLICY: "report_policy",
|
||
REPORT_INTERVAL_TIME: "report_interval_time",
|
||
REPORT_POLICY_START_SEND: "1",
|
||
REPORT_POLICY_INTERVAL: "6",
|
||
IMPRINT: "imprint",
|
||
SEED_VERSION: "1.0.0",
|
||
IMPL_VERSION: "2.8.0",
|
||
ALIPAY_AVAILABLE_VERSION: "10.1.52",
|
||
SHARE_PATH: "xphp_share_path",
|
||
SHARES: "shares",
|
||
REQUESTS: "requests",
|
||
UUID: "xphp_uuid",
|
||
UUID_SUFFIX: "ud",
|
||
OPENID: "xphp_od",
|
||
UNIONID: "xphp_unid",
|
||
ALIPAYID: "xphp_alipayid",
|
||
USERID: "xphp_userid",
|
||
SWANID: "xphp_swanid",
|
||
ANONYMOUSID: "xphp_anonymousid",
|
||
LAUNCH_OPTIONS: "LAUNCH_OPTIONS",
|
||
XPHP_SSRC: "_xphp_ssrc",
|
||
USER_INFO: "user_info",
|
||
IS_ALIYUN: !1,
|
||
};
|
||
var c,
|
||
f = {
|
||
isNumber: function (e) {
|
||
return !Number.isNaN(parseInt(e, 10));
|
||
},
|
||
compareVersion: function (e, t) {
|
||
for (
|
||
var n = String(e).split("."), i = String(t).split("."), r = 0;
|
||
r < Math.max(n.length, i.length);
|
||
r++
|
||
) {
|
||
var o = parseInt(n[r] || 0, 10),
|
||
s = parseInt(i[r] || 0, 10);
|
||
if (o > s) return 1;
|
||
if (o < s) return -1;
|
||
}
|
||
return 0;
|
||
},
|
||
getRandomStr: function (e) {
|
||
for (
|
||
var t = "",
|
||
n = [
|
||
"0",
|
||
"1",
|
||
"2",
|
||
"3",
|
||
"4",
|
||
"5",
|
||
"6",
|
||
"7",
|
||
"8",
|
||
"9",
|
||
"a",
|
||
"b",
|
||
"c",
|
||
"d",
|
||
"e",
|
||
"f",
|
||
"g",
|
||
"h",
|
||
"i",
|
||
"j",
|
||
"k",
|
||
"l",
|
||
"m",
|
||
"n",
|
||
"o",
|
||
"p",
|
||
"q",
|
||
"r",
|
||
"s",
|
||
"t",
|
||
"u",
|
||
"v",
|
||
"w",
|
||
"x",
|
||
"y",
|
||
"z",
|
||
"A",
|
||
"B",
|
||
"C",
|
||
"D",
|
||
"E",
|
||
"F",
|
||
"G",
|
||
"H",
|
||
"I",
|
||
"J",
|
||
"K",
|
||
"L",
|
||
"M",
|
||
"N",
|
||
"O",
|
||
"P",
|
||
"Q",
|
||
"R",
|
||
"S",
|
||
"T",
|
||
"U",
|
||
"V",
|
||
"W",
|
||
"X",
|
||
"Y",
|
||
"Z",
|
||
],
|
||
i = 0;
|
||
i < Number(e);
|
||
i++
|
||
) {
|
||
t += n[Math.round(Math.random() * (n.length - 1))];
|
||
}
|
||
return t;
|
||
},
|
||
clone: function (e) {
|
||
return JSON.parse(JSON.stringify(e));
|
||
},
|
||
startsWith: function (e, t) {
|
||
return (
|
||
!(!e || !t || 0 === t.length || t.length > e.length) &&
|
||
e.substr(0, t.length) === t
|
||
);
|
||
},
|
||
endsWith: function (e, t) {
|
||
return (
|
||
!(!t || 0 === e.length || t.length > e.length) &&
|
||
e.substring(e.length - t.length) === t
|
||
);
|
||
},
|
||
assign: function (e) {
|
||
if (null == e)
|
||
throw new TypeError("Cannot convert undefined or null to object");
|
||
for (var t = Object(e), n = 1; n < arguments.length; n++) {
|
||
var i = arguments[n];
|
||
if (i)
|
||
for (var r in i)
|
||
Object.prototype.hasOwnProperty.call(i, r) && (t[r] = i[r]);
|
||
}
|
||
return t;
|
||
},
|
||
deepEqual: function e(t, n) {
|
||
if (t === n) return !0;
|
||
if (t && "object" == typeof t && n && "object" == typeof n) {
|
||
if (Object.keys(t).length !== Object.keys(n).length) return !1;
|
||
for (var i in t) {
|
||
if (Object.prototype.hasOwnProperty.call(n, i)) return !1;
|
||
if (!e(t[i], n[i])) return !1;
|
||
}
|
||
return !0;
|
||
}
|
||
return !1;
|
||
},
|
||
trimStart: function (e, t) {
|
||
if (!e) return "";
|
||
if ("string" == typeof t && t.length) {
|
||
var n = new RegExp("^" + t + "*");
|
||
e = e.replace(n, "");
|
||
} else e = e.replace(/^s*/, "");
|
||
return e;
|
||
},
|
||
trimEnd: function (e, t) {
|
||
if (!e) return "";
|
||
var n, i;
|
||
if ("string" == typeof t && t.length) {
|
||
n = new RegExp(t);
|
||
i = e.length;
|
||
for (; n.test(e.charAt(i));) i -= 1;
|
||
return e.slice(0, i + 1);
|
||
}
|
||
n = /s/;
|
||
i = e.length - 1;
|
||
for (; n.test(e.charAt(i));) i -= 1;
|
||
return e.slice(0, i + 1);
|
||
},
|
||
isFunction: function (e) {
|
||
return "function" == typeof e;
|
||
},
|
||
},
|
||
p = (function (e) {
|
||
a(n, e);
|
||
function n() {
|
||
return (null !== e && e.apply(this, arguments)) || this;
|
||
}
|
||
n.prototype.getOpenIdAsync = function (e, n) {
|
||
var i = this;
|
||
wx.login({
|
||
success: function (r) {
|
||
r.code
|
||
? o.request({
|
||
url: u.GET_OPENID_URL,
|
||
method: "GET",
|
||
data: {
|
||
key: e,
|
||
code: r.code,
|
||
},
|
||
success: function (e) {
|
||
if (e && 200 === e.statusCode && e.data && e.data.data) {
|
||
var t = e.data.data;
|
||
i.setOpenid(t.oid);
|
||
i.setUnionid(t.uid);
|
||
return n && n(!0);
|
||
}
|
||
n && n();
|
||
},
|
||
fail: function (e) {
|
||
t().v("wx request failed...", e);
|
||
n && n();
|
||
},
|
||
})
|
||
: n && n();
|
||
},
|
||
fail: function () {
|
||
n && n();
|
||
},
|
||
});
|
||
};
|
||
return n;
|
||
})(
|
||
(function (e) {
|
||
a(n, e);
|
||
function n() {
|
||
var t = (null !== e && e.apply(this, arguments)) || this;
|
||
t._openid = "";
|
||
t._unionid = "";
|
||
t._useOpenid = !1;
|
||
return t;
|
||
}
|
||
n.prototype.initID = function (e) {
|
||
var n = this;
|
||
n._idType = n._useOpenid ? "openid" : "uuid";
|
||
t().v("id type: ", n._idType);
|
||
o.getStorage(u.UNIONID, function (e) {
|
||
n._unionid = e;
|
||
});
|
||
this._useOpenid
|
||
? o.getStorage(u.OPENID, function (t) {
|
||
n._openid = t;
|
||
e && e();
|
||
})
|
||
: e && e();
|
||
};
|
||
n.prototype.setUseOpenid = function (e) {
|
||
this._useOpenid = e;
|
||
};
|
||
n.prototype.setOpenid = function (e) {
|
||
if (!this._openid && e) {
|
||
this._openid = e;
|
||
o.setStorage(u.OPENID, e);
|
||
}
|
||
};
|
||
n.prototype.setUnionid = function (e) {
|
||
if (!this._unionid && e) {
|
||
this._unionid = e;
|
||
o.setStorage(u.UNIONID, e);
|
||
}
|
||
};
|
||
n.prototype.getIdTracking = function () {
|
||
var t = e.prototype.getIdTracking.call(this);
|
||
this._openid && (t.openid = this._openid);
|
||
this._unionid && (t.unionid = this._unionid);
|
||
this._userid && (t.userid = this._userid);
|
||
return t;
|
||
};
|
||
n.prototype.getId = function () {
|
||
return this._useOpenid ? this._openid : this._uuid;
|
||
};
|
||
return n;
|
||
})(
|
||
(function () {
|
||
function e() {
|
||
this._uuid = "";
|
||
this._userid = "";
|
||
this._idType = "";
|
||
}
|
||
e.prototype.createUUID = function () {
|
||
return (
|
||
f.getRandomStr(10) + Date.now() + f.getRandomStr(7) + u.UUID_SUFFIX
|
||
);
|
||
};
|
||
e.prototype.initUUID = function (e) {
|
||
var t = this;
|
||
o.getStorage(u.UUID, function (n) {
|
||
if (n) t._uuid = n;
|
||
else {
|
||
t._uuid = t.createUUID();
|
||
o.setStorage(u.UUID, t._uuid);
|
||
}
|
||
e && e(n);
|
||
});
|
||
};
|
||
e.prototype.initUserid = function () {
|
||
var e = this;
|
||
o.getStorage(u.USERID, function (n) {
|
||
if (!e._userid && n) {
|
||
e._userid = n;
|
||
t().v("userId is ", n);
|
||
}
|
||
});
|
||
};
|
||
e.prototype.init = function (e) {
|
||
var t = this;
|
||
t.initUUID(function () {
|
||
t.initUserid();
|
||
t.initID(e);
|
||
});
|
||
};
|
||
e.prototype.setUserid = function (e) {
|
||
if (!this._userid && e) {
|
||
this._userid = e;
|
||
o.setStorage(u.USERID, e);
|
||
}
|
||
};
|
||
e.prototype.removeUserid = function () {
|
||
this._userid = void 0;
|
||
o.removeStorageSync(u.USERID);
|
||
};
|
||
e.prototype.getUserId = function () {
|
||
return this._userid;
|
||
};
|
||
e.prototype.getIdType = function () {
|
||
return this._idType;
|
||
};
|
||
e.prototype.getIdTracking = function () {
|
||
var e = {};
|
||
this._uuid && (e.uuid = this._uuid);
|
||
this._userid && (e.userid = this._userid);
|
||
return e;
|
||
};
|
||
return e;
|
||
})(),
|
||
),
|
||
),
|
||
l =
|
||
((c = null),
|
||
function () {
|
||
c || (c = new p());
|
||
return c;
|
||
}),
|
||
h = (function () {
|
||
var e = null;
|
||
function t() {
|
||
var e = !1,
|
||
t = null,
|
||
n = [];
|
||
this.addPageStart = function (n) {
|
||
if (n && !e) {
|
||
t = {
|
||
ts: Date.now(),
|
||
path: n,
|
||
page_name: n,
|
||
};
|
||
e = !0;
|
||
}
|
||
};
|
||
this.addPageEnd = function (i) {
|
||
if (e && i && t && i === t.page_name) {
|
||
var r = Date.now() - t.ts;
|
||
t.duration = Math.abs(r);
|
||
n.push(t);
|
||
t = null;
|
||
e = !1;
|
||
}
|
||
};
|
||
this.get = function () {
|
||
return n;
|
||
};
|
||
this.getCurrentPage = function () {
|
||
return t;
|
||
};
|
||
this.clear = function () {
|
||
n.length = 0;
|
||
};
|
||
}
|
||
return function () {
|
||
e || (e = new t());
|
||
return e;
|
||
};
|
||
})(),
|
||
d = {};
|
||
var g = (function () {
|
||
var e = null,
|
||
n = [],
|
||
i = "";
|
||
function r() {
|
||
return {
|
||
add: function (e, r) {
|
||
t().v("share origin: %o", e);
|
||
var o = {
|
||
title: e && e.title,
|
||
path: e && e.path && e.path.split("?")[0],
|
||
_xphp_sts: Date.now(),
|
||
};
|
||
o.path &&
|
||
o.path.length > 1 &&
|
||
f.startsWith(o.path, "/") &&
|
||
(o.path = f.trimStart(o.path, "/"));
|
||
var s = e.path || "",
|
||
a = l().getId();
|
||
if (a) {
|
||
var u = i.split(","),
|
||
c = (u = u.filter(function (e) {
|
||
return e.length > 0;
|
||
})).indexOf(a);
|
||
c >= 0 && (u = u.slice(0, c));
|
||
u.length < 3 && u.push(a);
|
||
var p = u.join(",");
|
||
-1 !== s.indexOf("?")
|
||
? (s += "&_xphp_ssrc=" + p)
|
||
: (s += "?_xphp_ssrc=" + p);
|
||
var h = Date.now();
|
||
s += "&_xphp_sts=" + h;
|
||
if (r) {
|
||
var g = (function (e) {
|
||
var t = [];
|
||
for (var n in e)
|
||
"_xphp_ssrc" !== n &&
|
||
"_xphp_sts" !== n &&
|
||
t.push(n + "=" + e[n]);
|
||
return t.join("&");
|
||
})(d),
|
||
v = g
|
||
? g + "&_xphp_ssrc=" + p + "&_xphp_sts=" + h
|
||
: "_xphp_ssrc=" + p + "&_xphp_sts=" + h;
|
||
e.query = e.query
|
||
? e.query + "&_xphp_ssrc=" + p + "&_xphp_sts=" + h
|
||
: v;
|
||
} else e.path = s;
|
||
o._xphp_ssrc = p;
|
||
o._xphp_sts = h;
|
||
}
|
||
n.push(o);
|
||
t().v("share: %o", e);
|
||
return e;
|
||
},
|
||
setShareSource: function (e) {
|
||
i = e;
|
||
},
|
||
clear: function () {
|
||
n.length = 0;
|
||
},
|
||
get: function () {
|
||
return n;
|
||
},
|
||
};
|
||
}
|
||
return function () {
|
||
e || (e = new r());
|
||
return e;
|
||
};
|
||
})(),
|
||
v = function (e) {
|
||
if (e)
|
||
try {
|
||
return JSON.stringify(e);
|
||
} catch (e) { }
|
||
return "";
|
||
},
|
||
_ = function (e) {
|
||
if (e)
|
||
try {
|
||
return JSON.parse(e);
|
||
} catch (e) { }
|
||
return null;
|
||
},
|
||
y = (function () {
|
||
var e = null,
|
||
t = "",
|
||
i = null,
|
||
r = !1;
|
||
function s() {
|
||
this.load = function (e) {
|
||
if (i) {
|
||
o.removeStorage(t);
|
||
e();
|
||
} else {
|
||
t = "xphp_cache_" + n().appKey();
|
||
o.getStorage(t, function (n) {
|
||
i = _(n) || {};
|
||
r = !0;
|
||
o.removeStorage(t);
|
||
e();
|
||
});
|
||
}
|
||
};
|
||
this.save = function () {
|
||
i && o.setStorage(t, v(i));
|
||
};
|
||
this.set = function (e, t) {
|
||
i && (i[e] = t);
|
||
};
|
||
this.get = function (e) {
|
||
return (i || {})[e];
|
||
};
|
||
this.remove = function (e) {
|
||
i && i[e] && delete i[e];
|
||
};
|
||
this.getAll = function () {
|
||
return i;
|
||
};
|
||
this.clear = function () {
|
||
i = null;
|
||
};
|
||
this.has = function (e) {
|
||
return !!this.get(e);
|
||
};
|
||
this.isLoaded = function () {
|
||
return r;
|
||
};
|
||
}
|
||
return function () {
|
||
e || (e = new s());
|
||
return e;
|
||
};
|
||
})(),
|
||
m = (function () {
|
||
var e,
|
||
n,
|
||
i = [],
|
||
r = [];
|
||
function o() {
|
||
if (i.length) {
|
||
var e = y().get("ekvs");
|
||
if (
|
||
(function (e) {
|
||
var t = 0;
|
||
for (var n in e) Array.isArray(e[n]) && (t += e[n].length);
|
||
return t;
|
||
})(e) +
|
||
i.length <=
|
||
1e4
|
||
) {
|
||
e = s(e, i);
|
||
y().set("ekvs", e);
|
||
}
|
||
}
|
||
}
|
||
function s(e, t) {
|
||
var i = (e = e || {})[n];
|
||
Array.isArray(i) && i.length
|
||
? (e[n] = i.concat(t))
|
||
: (e[n] = [].concat(t));
|
||
return e;
|
||
}
|
||
return function () {
|
||
e ||
|
||
(e = {
|
||
addEvent: function (e) {
|
||
if (n) {
|
||
i.unshift(e);
|
||
if (i.length > 1) {
|
||
o();
|
||
i.length = 0;
|
||
}
|
||
} else {
|
||
t().w("session id is null: ", n);
|
||
r.unshift(e);
|
||
}
|
||
},
|
||
setSessionId: function (e) {
|
||
n = e;
|
||
t().v("setSessionId: ", n);
|
||
if (Array.isArray(r) && r.length && n) {
|
||
for (var i = 0; i < r.length; i++) this.addEvent(r[i]);
|
||
r.length = 0;
|
||
}
|
||
},
|
||
getEkvs: function () {
|
||
var e = y().get("ekvs");
|
||
i && i.length && (e = s(e, i));
|
||
return e;
|
||
},
|
||
clear: function () {
|
||
y().remove("ekvs");
|
||
i.length = 0;
|
||
},
|
||
});
|
||
return e;
|
||
};
|
||
})(),
|
||
S = "2g",
|
||
I = "3g",
|
||
O = "4g",
|
||
A = "half_session",
|
||
E = "close_session",
|
||
N = "ekv",
|
||
T = ["access", "access_subtype"],
|
||
w = (function () {
|
||
var e = null;
|
||
function t() {
|
||
var e = !1,
|
||
t = {};
|
||
function i(e) {
|
||
var i = y().get(u.IMPRINT);
|
||
i && (t.imprint = i);
|
||
t.device_type = "Phone";
|
||
t.sdk_version = u.IMPL_VERSION;
|
||
t.appkey = n().appKey();
|
||
o.getDeviceInfo(function (e) {
|
||
t.device_info = e || "";
|
||
});
|
||
var r = o.getAppInfoSync();
|
||
t.appid = r.appId;
|
||
t.app_env = r.appEnv;
|
||
t.app_version = r.appVersion;
|
||
o.getSystemInfo(function (n) {
|
||
o.getNetworkInfo(function (i) {
|
||
var r = (function (e, t) {
|
||
var n = {};
|
||
(e = e || {}).safeArea = e.safeArea || {};
|
||
var i = (t = t || {}).networkType;
|
||
"none" === i && (i = "unknown");
|
||
var r = e.model || "",
|
||
s = e.platform || "",
|
||
a = e.brand || "",
|
||
u = a.toLowerCase();
|
||
n.sdk_type = o.getSdkType();
|
||
n.platform = o.getPlatform();
|
||
n.platform_sdk_version = e.platformSDKVersion;
|
||
n.platform_version = e.platformVersion;
|
||
n.resolution = e.resolution;
|
||
n.pixel_ratio = e.pixelRatio;
|
||
n.os = s;
|
||
n.font_size_setting = e.fontSizeSetting;
|
||
n.device_model = r;
|
||
n.device_brand = a;
|
||
n.device_manufacturer = u;
|
||
n.device_manuid = r;
|
||
n.device_name = r;
|
||
n.os_version = e.OSVersion;
|
||
n.language = e.language;
|
||
n.theme = e.theme;
|
||
n.benchmark_level = e.benchmarkLevel;
|
||
n.status_bar_height = e.statusBarHeight;
|
||
n.safe_area_top = e.safeArea.top;
|
||
n.safe_area_left = e.safeArea.left;
|
||
n.safe_area_right = e.safeArea.right;
|
||
n.safe_area_bottom = e.safeArea.bottom;
|
||
n.safe_area_height = e.safeArea.height;
|
||
n.safe_area_width = e.safeArea.width;
|
||
n.storage = e.storage;
|
||
n.screen_width = e.screenWidth;
|
||
n.screen_height = e.screenHeight;
|
||
n.host = e.host;
|
||
switch ((i = i ? i.toLowerCase() : "")) {
|
||
case O:
|
||
n.access_subtype = "LTE";
|
||
n.access = "4G";
|
||
break;
|
||
case I:
|
||
n.access_subtype = "CDMA";
|
||
n.access = "3G";
|
||
break;
|
||
case S:
|
||
n.access_subtype = "GRPS";
|
||
n.access = "2G";
|
||
break;
|
||
default:
|
||
n.access = i;
|
||
delete n.access_subtype;
|
||
}
|
||
return n;
|
||
})(n, i);
|
||
f.assign(t, r);
|
||
e && e();
|
||
});
|
||
});
|
||
}
|
||
return {
|
||
init: function () {
|
||
i(function () {
|
||
e = !0;
|
||
});
|
||
},
|
||
isLoaded: function () {
|
||
return e;
|
||
},
|
||
get: function () {
|
||
return t;
|
||
},
|
||
getRealtimeFields: function () {
|
||
var e = {};
|
||
T.forEach(function (n) {
|
||
e[n] = t[n];
|
||
});
|
||
return e;
|
||
},
|
||
setIdTracking: function (e) {
|
||
this.setItem("id_tracking", e);
|
||
},
|
||
setIdType: function (e) {
|
||
this.setItem("id_type", e);
|
||
},
|
||
setAppVersion: function (e) {
|
||
this.setItem("app_version", e);
|
||
},
|
||
setSuperProperty: function (e) {
|
||
t.sp || (t.sp = {});
|
||
t.sp.isv = e;
|
||
},
|
||
getSuperProperty: function () {
|
||
return t && t.sp ? t.sp.isv : "";
|
||
},
|
||
setItem: function (e, n) {
|
||
t[e] = n;
|
||
},
|
||
getItem: function (e) {
|
||
return t[e];
|
||
},
|
||
};
|
||
}
|
||
return {
|
||
instance: function () {
|
||
e || (e = t());
|
||
return e;
|
||
},
|
||
};
|
||
})(),
|
||
k = (function () {
|
||
var e = null,
|
||
n = null,
|
||
i = null;
|
||
function r() {
|
||
return {
|
||
resume: function (e) {
|
||
var r = !1;
|
||
i || (i = y().get(u.CURRENT_SESSION));
|
||
var s = new Date();
|
||
n = s.getTime();
|
||
if (!i || !i.end_time || n - i.end_time > u.SESSION_INTERVAL) {
|
||
r = !0;
|
||
!(function (e) {
|
||
try {
|
||
var n = (i || {}).options || {},
|
||
r = f.assign(
|
||
{},
|
||
(function (e) {
|
||
var n = {};
|
||
for (var i in e)
|
||
0 === i.indexOf("_xphp_") && (n[i] = e[i]);
|
||
t().v("query: ", e);
|
||
t().v("_xphp_params: ", n);
|
||
return n;
|
||
})(e.query),
|
||
);
|
||
r.path = e.path || n.path;
|
||
"gaode" !== o.getPlatform() &&
|
||
(r.scene = e.scene
|
||
? o.getPlatform() + "_" + e.scene
|
||
: n.scene);
|
||
var s = e.referrerInfo;
|
||
s && (r.referrerAppId = s.appId);
|
||
t().v("session options: ", r);
|
||
var a = r[u.XPHP_SSRC];
|
||
a && g().setShareSource(a);
|
||
var c = Date.now();
|
||
i = {
|
||
id: f.getRandomStr(10) + c,
|
||
start_time: c,
|
||
options: r,
|
||
};
|
||
} catch (e) {
|
||
t().e("生成新session失败: ", e);
|
||
}
|
||
})(e);
|
||
t().v("开始新的session(%s): ", i.id, i);
|
||
} else
|
||
t().v(
|
||
"延续上一次session(%s): %s ",
|
||
i.id,
|
||
s.toLocaleTimeString(),
|
||
i,
|
||
);
|
||
return r;
|
||
},
|
||
pause: function () {
|
||
!(function () {
|
||
if (i) {
|
||
var e = new Date();
|
||
i.end_time = e.getTime();
|
||
"number" != typeof i.duration && (i.duration = 0);
|
||
i.duration = i.end_time - n;
|
||
y().set(u.CURRENT_SESSION, i);
|
||
t().v("退出会话(%s): %s ", i.id, e.toLocaleTimeString(), i);
|
||
}
|
||
})();
|
||
},
|
||
getCurrentSessionId: function () {
|
||
return (i || {}).id;
|
||
},
|
||
getCurrentSession: function () {
|
||
return i;
|
||
},
|
||
cloneCurrentSession: function () {
|
||
return f.clone(i);
|
||
},
|
||
};
|
||
}
|
||
return function () {
|
||
e || (e = r());
|
||
return e;
|
||
};
|
||
})();
|
||
function b(e) {
|
||
var t = null;
|
||
switch (e) {
|
||
case A:
|
||
t = (function () {
|
||
var e = null,
|
||
t = k().cloneCurrentSession();
|
||
t &&
|
||
(e = {
|
||
header: {
|
||
st: "1",
|
||
},
|
||
analytics: {
|
||
sessions: [t],
|
||
},
|
||
});
|
||
return e;
|
||
})();
|
||
break;
|
||
case E:
|
||
t = (function () {
|
||
var e = null,
|
||
t = {},
|
||
n = k().cloneCurrentSession();
|
||
if (n) {
|
||
var i = h().get(),
|
||
r = g().get();
|
||
Array.isArray(i) && i.length && (n.pages = f.clone(i));
|
||
Array.isArray(r) && r.length && (n.shares = f.clone(r));
|
||
h().clear();
|
||
g().clear();
|
||
t.sessions = [n];
|
||
}
|
||
var o = m().getEkvs();
|
||
if (o) {
|
||
t.ekvs = f.clone(o);
|
||
m().clear();
|
||
}
|
||
(t.sessions || t.ekvs) &&
|
||
(e = {
|
||
analytics: t,
|
||
});
|
||
return e;
|
||
})();
|
||
break;
|
||
case N:
|
||
t = (function () {
|
||
var e = null,
|
||
t = m().getEkvs();
|
||
if (t) {
|
||
e = {
|
||
analytics: {
|
||
ekvs: f.clone(t),
|
||
},
|
||
};
|
||
m().clear();
|
||
}
|
||
return e;
|
||
})();
|
||
}
|
||
return t;
|
||
}
|
||
var D = {
|
||
sessions: "sn",
|
||
ekvs: "e",
|
||
active_user: "active_user",
|
||
},
|
||
U = {
|
||
sdk_type: "sdt",
|
||
access: "ac",
|
||
access_subtype: "acs",
|
||
device_model: "dm",
|
||
language: "lang",
|
||
device_type: "dt",
|
||
device_manufacturer: "dmf",
|
||
device_name: "dn",
|
||
platform_version: "pv",
|
||
id_type: "it",
|
||
font_size_setting: "fss",
|
||
os_version: "ov",
|
||
device_manuid: "did",
|
||
platform_sdk_version: "psv",
|
||
device_brand: "db",
|
||
appkey: "ak",
|
||
_id: "id",
|
||
id_tracking: "itr",
|
||
imprint: "imp",
|
||
sdk_version: "sv",
|
||
resolution: "rl",
|
||
testToken: "ttn",
|
||
theme: "t5",
|
||
benchmark_level: "bml",
|
||
screen_width: "sw",
|
||
screen_height: "sh",
|
||
status_bar_height: "sbh",
|
||
safe_area_top: "sat",
|
||
safe_area_left: "sal",
|
||
safe_area_right: "sar",
|
||
safe_area_bottom: "sab",
|
||
safe_area_height: "sah",
|
||
safe_area_width: "saw",
|
||
pixel_ratio: "pr",
|
||
storage: "s7",
|
||
host: "hs",
|
||
},
|
||
P = {
|
||
uuid: "ud",
|
||
unionid: "und",
|
||
openid: "od",
|
||
anonymousid: "nd",
|
||
alipay_id: "ad",
|
||
device_id: "dd",
|
||
userid: "puid",
|
||
};
|
||
function R(e, t) {
|
||
var n = L(e, t);
|
||
e &&
|
||
e.id_tracking &&
|
||
(n[t.id_tracking || "id_tracking"] = L(e.id_tracking, P));
|
||
return n;
|
||
}
|
||
function L(e, t) {
|
||
var n = {};
|
||
for (var i in e) t[i] ? (n[t[i]] = e[i]) : (n[i] = e[i]);
|
||
return n;
|
||
}
|
||
function C(e, t) {
|
||
var n = {};
|
||
if (e) for (var i in e) e[i] && (n[t[i]] = e[i]);
|
||
return n;
|
||
}
|
||
var M = "";
|
||
function x() {
|
||
return M;
|
||
}
|
||
var V = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
|
||
j = (function (e) {
|
||
for (var t = {}, n = 0, i = e.length; n < i; n++) t[e.charAt(n)] = n;
|
||
return t;
|
||
})(V),
|
||
F = String.fromCharCode,
|
||
G = function (e) {
|
||
if (e.length < 2) {
|
||
return (t = e.charCodeAt(0)) < 128
|
||
? e
|
||
: t < 2048
|
||
? F(192 | (t >>> 6)) + F(128 | (63 & t))
|
||
: F(224 | ((t >>> 12) & 15)) +
|
||
F(128 | ((t >>> 6) & 63)) +
|
||
F(128 | (63 & t));
|
||
}
|
||
var t =
|
||
65536 + 1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320);
|
||
return (
|
||
F(240 | ((t >>> 18) & 7)) +
|
||
F(128 | ((t >>> 12) & 63)) +
|
||
F(128 | ((t >>> 6) & 63)) +
|
||
F(128 | (63 & t))
|
||
);
|
||
},
|
||
q = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,
|
||
K = function (e) {
|
||
var t = [0, 2, 1][e.length % 3],
|
||
n =
|
||
(e.charCodeAt(0) << 16) |
|
||
((e.length > 1 ? e.charCodeAt(1) : 0) << 8) |
|
||
(e.length > 2 ? e.charCodeAt(2) : 0);
|
||
return [
|
||
V.charAt(n >>> 18),
|
||
V.charAt((n >>> 12) & 63),
|
||
t >= 2 ? "=" : V.charAt((n >>> 6) & 63),
|
||
t >= 1 ? "=" : V.charAt(63 & n),
|
||
].join("");
|
||
},
|
||
H = function (e) {
|
||
return (
|
||
(t = (function (e) {
|
||
return e.replace(q, G);
|
||
})(e)),
|
||
t.replace(/[\s\S]{1,3}/g, K)
|
||
);
|
||
var t;
|
||
},
|
||
Y = new RegExp(["[À-ß][-¿]", "[à-ï][-¿]{2}", "[ð-÷][-¿]{3}"].join("|"), "g"),
|
||
J = function (e) {
|
||
switch (e.length) {
|
||
case 4:
|
||
var t =
|
||
(((7 & e.charCodeAt(0)) << 18) |
|
||
((63 & e.charCodeAt(1)) << 12) |
|
||
((63 & e.charCodeAt(2)) << 6) |
|
||
(63 & e.charCodeAt(3))) -
|
||
65536;
|
||
return F(55296 + (t >>> 10)) + F(56320 + (1023 & t));
|
||
case 3:
|
||
return F(
|
||
((15 & e.charCodeAt(0)) << 12) |
|
||
((63 & e.charCodeAt(1)) << 6) |
|
||
(63 & e.charCodeAt(2)),
|
||
);
|
||
default:
|
||
return F(((31 & e.charCodeAt(0)) << 6) | (63 & e.charCodeAt(1)));
|
||
}
|
||
},
|
||
B = function (e) {
|
||
var t = e.length,
|
||
n = t % 4,
|
||
i =
|
||
(t > 0 ? j[e.charAt(0)] << 18 : 0) |
|
||
(t > 1 ? j[e.charAt(1)] << 12 : 0) |
|
||
(t > 2 ? j[e.charAt(2)] << 6 : 0) |
|
||
(t > 3 ? j[e.charAt(3)] : 0),
|
||
r = [F(i >>> 16), F((i >>> 8) & 255), F(255 & i)];
|
||
r.length -= [0, 0, 2, 1][n];
|
||
return r.join("");
|
||
},
|
||
X = function (e) {
|
||
return (
|
||
(t = (function (e) {
|
||
return e.replace(/[\s\S]{1,4}/g, B);
|
||
})(e)),
|
||
t.replace(Y, J)
|
||
);
|
||
var t;
|
||
},
|
||
W = function (e, t) {
|
||
return t
|
||
? H(String(e))
|
||
.replace(/[+\/]/g, function (e) {
|
||
return "+" == e ? "-" : "_";
|
||
})
|
||
.replace(/=/g, "")
|
||
: H(String(e));
|
||
},
|
||
z = function (e) {
|
||
return X(
|
||
String(e)
|
||
.replace(/[-_]/g, function (e) {
|
||
return "-" == e ? "+" : "/";
|
||
})
|
||
.replace(/[^A-Za-z0-9\+\/]/g, ""),
|
||
);
|
||
};
|
||
var Q = new (function () {
|
||
var e = "",
|
||
t = this;
|
||
this.set = function (t) {
|
||
e = t;
|
||
};
|
||
this.get = function () {
|
||
return e;
|
||
};
|
||
this.getImpObj = function () {
|
||
return _(z(e));
|
||
};
|
||
this.getItem = function (e) {
|
||
var n = t.getImpObj();
|
||
return (n && n[e]) || "";
|
||
};
|
||
this.load = function () {
|
||
e = y().get(u.IMPRINT);
|
||
};
|
||
this.save = function () {
|
||
e && y().set(u.IMPRINT, e);
|
||
};
|
||
})();
|
||
function Z(e, n, i, r) {
|
||
w.instance().setIdType(l().getIdType());
|
||
w.instance().setIdTracking(l().getIdTracking());
|
||
var s = l().getUserId();
|
||
s &&
|
||
e.analytics &&
|
||
(e.analytics.active_user = {
|
||
uid: s,
|
||
});
|
||
var a = f.clone(w.instance().get());
|
||
e.header = f.assign(a, e.header, {
|
||
ts: Date.now(),
|
||
testToken: x(),
|
||
traceId: f.getRandomStr(10) + Date.now() + f.getRandomStr(9),
|
||
});
|
||
var c = (function (e) {
|
||
return {
|
||
h: R(e.header, U),
|
||
a: C(e.analytics, D),
|
||
};
|
||
})(e),
|
||
p = v(c),
|
||
h = {
|
||
url: u.LOG_URL,
|
||
method: "POST",
|
||
data: c,
|
||
success: function (r) {
|
||
var o = r.code || r.status || r.statusCode;
|
||
if (200 === o || 413 === o) {
|
||
t().i("数据发送成功: ", e, p);
|
||
!(function (e) {
|
||
if (e) {
|
||
w.instance().setItem(u.IMPRINT, e);
|
||
Q.set(e);
|
||
Q.save();
|
||
t().v("imprint: ", Q.getImpObj());
|
||
Q.getItem("ttn_invalid") && (M = "");
|
||
}
|
||
})((r.data || {}).imprint);
|
||
"function" == typeof n && n(r);
|
||
} else {
|
||
t().w("数据发送失败: ", p);
|
||
"function" == typeof i && i();
|
||
}
|
||
},
|
||
fail: function (e) {
|
||
t().w("超时: ", p);
|
||
"function" == typeof i && i();
|
||
},
|
||
complete: function () {
|
||
"function" == typeof r && r();
|
||
},
|
||
};
|
||
o.request(
|
||
f.assign(h, {
|
||
header: {
|
||
"Msg-Type": o.getSdkType() + "/json",
|
||
"disable-base64": "Y",
|
||
},
|
||
}),
|
||
);
|
||
}
|
||
function $(e) {
|
||
var t = e,
|
||
n = [];
|
||
this.enqueue = function (e) {
|
||
"number" == typeof t && this.size() >= t && this.dequeue();
|
||
n.push(e);
|
||
};
|
||
this.dequeue = function () {
|
||
return n.shift();
|
||
};
|
||
this.front = function () {
|
||
return n[0];
|
||
};
|
||
this.isEmpty = function () {
|
||
return 0 === n.length;
|
||
};
|
||
this.clear = function () {
|
||
n.length = 0;
|
||
};
|
||
this.size = function () {
|
||
return n.length;
|
||
};
|
||
this.items = function () {
|
||
return n;
|
||
};
|
||
this.print = function () {
|
||
console.log(n.toString());
|
||
};
|
||
}
|
||
var ee = (function () {
|
||
var e = null,
|
||
n = !1,
|
||
i = [],
|
||
r = new $(50);
|
||
function o(e, t, n) {
|
||
if (w.instance().isLoaded()) {
|
||
t = t || {};
|
||
var i = b(e);
|
||
if (i) {
|
||
var s = w.instance().getRealtimeFields();
|
||
i.header = f.assign({}, i.header, s);
|
||
i.noCache = t.noCache;
|
||
r.enqueue(i);
|
||
}
|
||
"function" == typeof n && n();
|
||
} else
|
||
setTimeout(function () {
|
||
o(e, t, n);
|
||
}, 100);
|
||
}
|
||
function s(e) {
|
||
var t = r.front();
|
||
if (t)
|
||
Z(
|
||
t,
|
||
function () {
|
||
r.dequeue();
|
||
s(e);
|
||
},
|
||
function () {
|
||
var t = r.dequeue();
|
||
t && !t.noCache && i.push(t);
|
||
s(e);
|
||
},
|
||
);
|
||
else {
|
||
!(function () {
|
||
i.forEach(function (e) {
|
||
r.enqueue(e);
|
||
});
|
||
i.length = 0;
|
||
})();
|
||
e();
|
||
}
|
||
}
|
||
function a(e) {
|
||
if (l().getId())
|
||
if (n) t().i("队列正在发送中");
|
||
else {
|
||
n = !0;
|
||
s(function () {
|
||
n = !1;
|
||
"function" == typeof e && e();
|
||
});
|
||
}
|
||
else {
|
||
t().i("获取id标识失败,暂缓发送");
|
||
"function" == typeof e && e();
|
||
}
|
||
}
|
||
function c() {
|
||
this.send = function (e, t, n) {
|
||
e
|
||
? this.add(e, t, function () {
|
||
a(n);
|
||
})
|
||
: a(n);
|
||
};
|
||
this.add = function (e, t, n) {
|
||
o(e, t, n);
|
||
};
|
||
this.load = function () {
|
||
var e = y().get(u.REQUESTS);
|
||
e &&
|
||
e.length &&
|
||
e.forEach(function (e) {
|
||
r.enqueue(e);
|
||
});
|
||
y().remove(u.REQUESTS);
|
||
};
|
||
this.save = function () {
|
||
y().set(u.REQUESTS, f.clone(r.items()));
|
||
r.clear();
|
||
};
|
||
}
|
||
return function () {
|
||
e || (e = new c());
|
||
return e;
|
||
};
|
||
})(),
|
||
te = (function () {
|
||
var e = null,
|
||
i = null;
|
||
function r() {
|
||
this.setUserInfo = function (e) {
|
||
i = e;
|
||
};
|
||
this.update = function () {
|
||
e(i) ||
|
||
o.getUserInfo(function (t) {
|
||
e(t);
|
||
});
|
||
};
|
||
function e(e) {
|
||
if (e && "object" == typeof e) {
|
||
var i = y().get(u.USER_INFO);
|
||
(i && f.deepEqual(e, i)) ||
|
||
(function (e, i) {
|
||
var r = n().appKey(),
|
||
s = o.getSdkType(),
|
||
a = l().getId(),
|
||
c = l().getIdType();
|
||
if (!(r && s && a && c)) return;
|
||
var f = {
|
||
ak: n().appKey(),
|
||
sdt: o.getSdkType(),
|
||
uin: e.nickName,
|
||
uia: e.avatar || e.avatarUrl,
|
||
uig: e.gender,
|
||
uit: e.country,
|
||
uip: e.province,
|
||
uic: e.city,
|
||
uil: e.language,
|
||
id: l().getId(),
|
||
it: l().getIdType(),
|
||
age: e.age,
|
||
cln: e.constellation,
|
||
},
|
||
p = JSON.stringify(f);
|
||
p = W(p);
|
||
o.request({
|
||
url: u.USERINFO_URL,
|
||
method: "POST",
|
||
header: {
|
||
"content-type": "application/x-www-form-urlencoded",
|
||
},
|
||
data: "ui=" + p,
|
||
success: function (n) {
|
||
t().v("用户信息上传成功: ", e);
|
||
i && i(n && n.data && 200 === n.data.code);
|
||
},
|
||
fail: function () {
|
||
t().e("用户信息上传失败: ", e);
|
||
i && i(!1);
|
||
},
|
||
});
|
||
})(e, function (t) {
|
||
t && y().set(u.USER_INFO, e);
|
||
});
|
||
return !0;
|
||
}
|
||
return !1;
|
||
}
|
||
}
|
||
return function () {
|
||
e || (e = new r());
|
||
return e;
|
||
};
|
||
})();
|
||
function ne(e, t) {
|
||
this.id = e;
|
||
this.ts = Date.now();
|
||
var n = typeof t;
|
||
if ("string" === n && t) this[e] = t;
|
||
else if ("object" === n)
|
||
for (var i in t) ({}).hasOwnProperty.call(t, i) && (this[i] = t[i]);
|
||
}
|
||
function ie() {
|
||
var e = !1,
|
||
i = !1,
|
||
r = 0;
|
||
this.init = function (i) {
|
||
t().v("sdk version: " + u.IMPL_VERSION);
|
||
e
|
||
? t().v("Lib重复实例化")
|
||
: y().load(function () {
|
||
t().v("cache初始化成功: ", y().getAll());
|
||
!(function () {
|
||
l().setUseOpenid && l().setUseOpenid(n().useOpenid());
|
||
l().init(function () {
|
||
w.instance().init();
|
||
t().v("Header初始化成功");
|
||
});
|
||
})();
|
||
e = !0;
|
||
"function" == typeof i && i();
|
||
t().tip("SDK集成成功");
|
||
});
|
||
};
|
||
this.resume = function (r) {
|
||
if (e && !i) {
|
||
t().v("showOptions: ", r);
|
||
var o;
|
||
i = !0;
|
||
n().enableVerify() && r && r.query && ((o = r.query._ttn), (M = o || M));
|
||
this._resume(r);
|
||
}
|
||
};
|
||
this._resume = function (e) {
|
||
ee().load();
|
||
var i = k().resume(e),
|
||
r = k().getCurrentSessionId();
|
||
m().setSessionId(r);
|
||
i &&
|
||
ee().add(A, {}, function () {
|
||
l().setUseOpenid && l().setUseOpenid(n().useOpenid());
|
||
if (n().useOpenid() && n().autoGetOpenid() && !l().getId()) {
|
||
t().v("get id async");
|
||
o(10, 3e3);
|
||
} else {
|
||
t().v("session auto send");
|
||
ee().send();
|
||
}
|
||
});
|
||
function o(e, i) {
|
||
l().getId() ||
|
||
e <= 0 ||
|
||
l().getOpenIdAsync(n().appKey(), function (n) {
|
||
if (n) {
|
||
t().v("获取id成功");
|
||
ee().send();
|
||
} else {
|
||
t().v("获取openid失败,启动重试,剩余可用次数", e - 1);
|
||
setTimeout(function () {
|
||
o(e - 1, i);
|
||
}, i);
|
||
}
|
||
});
|
||
}
|
||
};
|
||
this.pause = function (o) {
|
||
if (e) {
|
||
i = !1;
|
||
r = 0;
|
||
k().pause();
|
||
n().uploadUserInfo() && te().update();
|
||
ee().send(E, {}, function () {
|
||
ee().save();
|
||
y().save();
|
||
t().v("cache save success");
|
||
"function" == typeof o && o();
|
||
});
|
||
}
|
||
};
|
||
this.setOpenid = function (e) {
|
||
t().v("setOpenId: %s", e);
|
||
l().setOpenid(e);
|
||
ee().send();
|
||
};
|
||
this.setUnionid = function (e) {
|
||
t().v("setUnionid: %s", e);
|
||
l().setUnionid(e);
|
||
};
|
||
this.setUserid = function (e, n) {
|
||
t().v("setUserid: %s", e, n);
|
||
l().setUserid(e, n);
|
||
};
|
||
this.removeUserid = function () {
|
||
t().v("removeUserid");
|
||
l().removeUserid();
|
||
};
|
||
this.setUserInfo = function (e) {
|
||
t().v("setUserInfo: %s", e);
|
||
te().setUserInfo(e);
|
||
};
|
||
this.setAnonymousid = function (e) {
|
||
t().v("setAnonymousId: %s", e);
|
||
l().setAnonymousid(e);
|
||
ee().send();
|
||
};
|
||
this.setAppVersion = function (e) {
|
||
e && "string" != typeof e
|
||
? t().w("setAppVersion方法只接受字符串类型参数")
|
||
: w.instance().setAppVersion(e);
|
||
};
|
||
this.setAlipayUserid = function (e) {
|
||
if (e && "string" != typeof e)
|
||
t().w("setAlipayUserid方法只接受字符串类型参数");
|
||
else {
|
||
t().v("setAlipayUserid: %s", e);
|
||
l().setAlipayUserid(e);
|
||
}
|
||
};
|
||
this.setDeviceId = function (e) {
|
||
if ("string" == typeof e) {
|
||
l().setDeviceId(e);
|
||
return e;
|
||
}
|
||
};
|
||
this.setSuperProperty = function (e) {
|
||
if (e && "string" != typeof e) t().w("超级属性只支持字符串类型");
|
||
else {
|
||
var n = this;
|
||
if (w.instance().getSuperProperty() !== e) {
|
||
w.instance().setSuperProperty(e);
|
||
n.pause(function () {
|
||
n.resume();
|
||
});
|
||
}
|
||
}
|
||
};
|
||
this.trackEvent = function (n, i) {
|
||
if (e) {
|
||
t().v("event: ", n, i);
|
||
if (
|
||
(function (e, n) {
|
||
if (!e || "string" != typeof e) {
|
||
t().e(
|
||
'please check trackEvent id. id should be "string" and not null',
|
||
);
|
||
return !1;
|
||
}
|
||
var i = ["id", "ts", "du"],
|
||
r = {};
|
||
i.forEach(function (e) {
|
||
r[e] = 1;
|
||
});
|
||
if (r[e]) {
|
||
t().e("eventId不能与以下保留字冲突: " + i.join(","));
|
||
return !1;
|
||
}
|
||
if (e.length > u.MAX_EVENTID_LENGTH) {
|
||
t().e(
|
||
"The maximum length of event id shall not exceed " +
|
||
u.MAX_EVENTID_LENGTH,
|
||
);
|
||
return !1;
|
||
}
|
||
if (
|
||
n &&
|
||
("object" != typeof n || Array.isArray(n)) &&
|
||
"string" != typeof n
|
||
) {
|
||
t().e(
|
||
"please check trackEvent properties. properties should be string or object(not include Array)",
|
||
);
|
||
return !1;
|
||
}
|
||
if ("object" == typeof n) {
|
||
var o = 0;
|
||
for (var s in n)
|
||
if ({}.hasOwnProperty.call(n, s)) {
|
||
if (s.length > u.MAX_PROPERTY_KEY_LENGTH) {
|
||
t().e(
|
||
"The maximum length of property key shall not exceed " +
|
||
u.MAX_PROPERTY_KEY_LENGTH,
|
||
);
|
||
return !1;
|
||
}
|
||
if (o >= u.MAX_PROPERTY_KEYS_COUNT) {
|
||
t().e(
|
||
"The maximum count of properties shall not exceed " +
|
||
u.MAX_PROPERTY_KEYS_COUNT,
|
||
);
|
||
return !1;
|
||
}
|
||
if (r[s]) {
|
||
t().e("属性中的key不能与以下保留字冲突: " + i.join(","));
|
||
return !1;
|
||
}
|
||
o += 1;
|
||
}
|
||
}
|
||
return !0;
|
||
})(n, i)
|
||
) {
|
||
var o = new ne(n, i);
|
||
m().addEvent(o);
|
||
var s = !!x(),
|
||
a = s ? 0 : u.EVENT_SEND_DEFAULT_INTERVAL,
|
||
c = Date.now();
|
||
if (
|
||
(function (e, t) {
|
||
return (
|
||
"number" != typeof r ||
|
||
"number" != typeof t ||
|
||
r <= 0 ||
|
||
e - r > t
|
||
);
|
||
})(c, a)
|
||
) {
|
||
r = c;
|
||
ee().send(
|
||
N,
|
||
{
|
||
noCache: s,
|
||
},
|
||
function () { },
|
||
);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
this.trackShare = function (n) {
|
||
if (e)
|
||
try {
|
||
if (o.getSdkType().indexOf("game") > -1) {
|
||
n = g().add(n, !0);
|
||
t().v("shareQuery: ", n);
|
||
} else {
|
||
n = g().add(n, !1);
|
||
t().v("sharePath: ", n.path);
|
||
}
|
||
} catch (e) {
|
||
t().v("shareAppMessage: ", e);
|
||
}
|
||
return n;
|
||
};
|
||
this.trackPageStart = function (t) {
|
||
e && h().addPageStart(t);
|
||
};
|
||
this.trackPageEnd = function (t) {
|
||
e && h().addPageEnd(t);
|
||
};
|
||
this.onShareAppMessage = function (e) {
|
||
var t = this;
|
||
o.onShareAppMessage(function () {
|
||
return t.trackShare(e());
|
||
});
|
||
};
|
||
this.shareAppMessage = function (e) {
|
||
this.trackShare(e);
|
||
o.shareAppMessage(e);
|
||
};
|
||
}
|
||
var re = [];
|
||
function oe() { }
|
||
oe.prototype = {
|
||
createMethod: function (e, n, i) {
|
||
try {
|
||
e[n] =
|
||
i && i[n]
|
||
? function () {
|
||
return i[n].apply(i, arguments);
|
||
}
|
||
: function () {
|
||
re.push([n, [].slice.call(arguments)]);
|
||
};
|
||
} catch (e) {
|
||
t().v("create method errror: ", e);
|
||
}
|
||
},
|
||
installApi: function (e, n) {
|
||
try {
|
||
var i,
|
||
r,
|
||
o =
|
||
"resume,pause,trackEvent,trackPageStart,trackPageEnd,trackShare,setUserid,setOpenid,setUnionid,setSuperProperty,setUserInfo".split(
|
||
",",
|
||
);
|
||
for (i = 0, r = o.length; i < r; i++) this.createMethod(e, o[i], n);
|
||
if (n)
|
||
for (i = 0, r = re.length; i < r; i++) {
|
||
var s = re[i];
|
||
try {
|
||
n[s[0]].apply(n, s[1]);
|
||
} catch (e) {
|
||
t().v("impl[v[0]].apply error: ", s[0], e);
|
||
}
|
||
}
|
||
} catch (e) {
|
||
t().v("install api errror: ", e);
|
||
}
|
||
},
|
||
};
|
||
var ue = {
|
||
init: function (e) { },
|
||
},
|
||
ce = new oe(),
|
||
fe = {
|
||
_inited: !1,
|
||
_log: t(),
|
||
preinit: function (e) {
|
||
if (e && "object" == typeof e) for (var t in e) u[t] = e[t];
|
||
return u;
|
||
},
|
||
use: function (e, t) {
|
||
e && f.isFunction(e.install)
|
||
? e.install(fe, t)
|
||
: f.isFunction(e) && e(fe, t);
|
||
return fe;
|
||
},
|
||
messager: r,
|
||
init: function (e) {
|
||
if (this._inited) t().v("已经实例过,请避免重复初始化");
|
||
else if (e)
|
||
if (e.appKey) {
|
||
"boolean" != typeof e.useOpenid && (e.useOpenid = !1);
|
||
n().set(e);
|
||
t().setDebug(e.debug);
|
||
this._inited = !0;
|
||
var i = this;
|
||
r.emit(r.messageType.CONFIG_LOADED, e);
|
||
try {
|
||
var o = new ie();
|
||
t().v("成功创建Lib对象");
|
||
0;
|
||
o.init(function () {
|
||
t().v("Lib对象初始化成功");
|
||
ce.installApi(i, o);
|
||
t().v("安装Lib接口成功");
|
||
r.emit(r.messageType.UMA_LIB_INITED, e);
|
||
});
|
||
ue.init(3e3);
|
||
} catch (e) {
|
||
t().w("创建Lib对象异常: " + e);
|
||
}
|
||
} else t().err("请确保传入正确的appkey");
|
||
else t().err("请正确设置相关信息!");
|
||
},
|
||
};
|
||
try {
|
||
ce.installApi(fe, null);
|
||
} catch (e) {
|
||
t().w("xphp赋值异常: ", e);
|
||
}
|
||
var le = "",
|
||
he = "2.8.0",
|
||
de = "none",
|
||
ge = {},
|
||
ve = Array.isArray;
|
||
ge.isArray =
|
||
ve ||
|
||
function (e) {
|
||
return "[object Array]" === toString.call(e);
|
||
};
|
||
ge.isObject = function (e) {
|
||
return e === Object(e) && !ge.isArray(e);
|
||
};
|
||
ge.isEmptyObject = function (e) {
|
||
if (ge.isObject(e)) {
|
||
for (var t in e) if (hasOwnProperty.call(e, t)) return !1;
|
||
return !0;
|
||
}
|
||
return !1;
|
||
};
|
||
ge.isUndefined = function (e) {
|
||
return void 0 === e;
|
||
};
|
||
ge.isString = function (e) {
|
||
return "[object String]" === toString.call(e);
|
||
};
|
||
ge.isDate = function (e) {
|
||
return "[object Date]" === toString.call(e);
|
||
};
|
||
ge.isNumber = function (e) {
|
||
return "[object Number]" === toString.call(e);
|
||
};
|
||
ge.each = function (e, t, n) {
|
||
if (null != e) {
|
||
var i = {},
|
||
r = Array.prototype.forEach;
|
||
if (r && e.forEach === r) e.forEach(t, n);
|
||
else if (e.length === +e.length) {
|
||
for (var o = 0, s = e.length; o < s; o++)
|
||
if (o in e && t.call(n, e[o], o, e) === i) return;
|
||
} else
|
||
for (var a in e)
|
||
if (hasOwnProperty.call(e, a) && t.call(n, e[a], a, e) === i) return;
|
||
}
|
||
};
|
||
ge.buildQuery = function (e, t) {
|
||
var n,
|
||
i,
|
||
r = [];
|
||
void 0 === t && (t = "&");
|
||
ge.each(e, function (e, t) {
|
||
n = encodeURIComponent(e.toString());
|
||
i = encodeURIComponent(t);
|
||
r[r.length] = i + "=" + n;
|
||
});
|
||
return r.join(t);
|
||
};
|
||
ge.JSONDecode = function (e) {
|
||
if (e) {
|
||
try {
|
||
return JSON.parse(e);
|
||
} catch (e) {
|
||
console.error("JSONDecode error", e);
|
||
}
|
||
return null;
|
||
}
|
||
};
|
||
ge.JSONEncode = function (e) {
|
||
try {
|
||
return JSON.stringify(e);
|
||
} catch (e) {
|
||
console.error("JSONEncode error", e);
|
||
}
|
||
};
|
||
var _e = Object.create(null);
|
||
function ye(e) {
|
||
t().v("开始构建 fetch body");
|
||
o.getSystemInfo(function (t) {
|
||
o.getNetworkInfo(function (i) {
|
||
var r = (i = i || {}).networkType;
|
||
r = r === de ? "unknown" : r.toUpperCase();
|
||
_e.access = r;
|
||
!(function (e, t) {
|
||
var i = e.brand || "";
|
||
_e.deviceType = "Phone";
|
||
_e.sdkVersion = he;
|
||
_e.appkey = n().appKey();
|
||
_e.sdkType = o.getSdkType();
|
||
_e.umid = l().getId();
|
||
if (e) {
|
||
_e.language = e.language || "";
|
||
_e.os = e.OS;
|
||
_e.osVersion = e.OSVersion;
|
||
_e.deviceName = e.deviceName;
|
||
_e.platformVersion = e.platformVersion;
|
||
_e.platformSdkVersion = e.platformSDKVersion;
|
||
_e.deviceBrand = i;
|
||
var r = e.resolution.split("*");
|
||
if (ge.isArray(r)) {
|
||
_e.resolutionHeight = Number(r[0]);
|
||
_e.resolutionWidth = Number(r[1]);
|
||
}
|
||
}
|
||
!(function (e) {
|
||
if (e) {
|
||
_e.installTime =
|
||
e.install_datetime && Date.parse(e.install_datetime);
|
||
_e.scene = e.install_scene;
|
||
_e.channel = e.install_channel;
|
||
_e.campaign = e.install_campaign;
|
||
}
|
||
})(Q.getImpObj());
|
||
t && t(_e);
|
||
})(t, e);
|
||
});
|
||
});
|
||
}
|
||
var me = Object.create(null),
|
||
Se = null,
|
||
Ie = !1,
|
||
Oe = {
|
||
minFetchIntervalSeconds: 43200,
|
||
};
|
||
function Ae(e) {
|
||
e &&
|
||
ge.each(e, function (e) {
|
||
me[e.k] = e;
|
||
});
|
||
}
|
||
function Ee() {
|
||
var e = this;
|
||
this.STORAGE_NAME = null;
|
||
r.once(r.messageType.CONFIG_LOADED, function (n) {
|
||
t().v("云配初始化开始...");
|
||
e.init(n);
|
||
});
|
||
}
|
||
Ee.prototype = {
|
||
setDefaultValues: function (e) {
|
||
Ie &&
|
||
ge.isObject(e) &&
|
||
ge.each(e, function (e, t) {
|
||
(me[t] && me[t].v) ||
|
||
(me[t] = {
|
||
v: e,
|
||
});
|
||
});
|
||
},
|
||
getValue: function (e) {
|
||
t().v("从配置项中读取 value, 当前配置为: ", me);
|
||
t().v("待读取的 key : ", e);
|
||
try {
|
||
if (!Ie) return;
|
||
var i = me[e] || {};
|
||
t().v("读取相应配置ing..., 结果为: ", i);
|
||
if (ge.isNumber(i.e) && ge.isNumber(i.g)) {
|
||
t().v("读取到相应配置, 开始数据上报...");
|
||
!(function (e) {
|
||
var i = {
|
||
appkey: n().appKey(),
|
||
sdkType: o.getSdkType(),
|
||
expId: e && e.e,
|
||
groupId: e && e.g,
|
||
clientTs: Date.now(),
|
||
key: e && e.k,
|
||
value: e && e.v,
|
||
umid: l().getId(),
|
||
};
|
||
try {
|
||
o.request({
|
||
url: u.GETVALUEURL,
|
||
method: "POST",
|
||
data: [i],
|
||
success: function (e) {
|
||
e && 200 === e.statusCode
|
||
? t().v("上传数据成功", i)
|
||
: t().w("ablog 请求成功, 返回结果异常 ", e);
|
||
},
|
||
fail: function (e) {
|
||
t().w("ablog 请求数据错误 ", i, e);
|
||
},
|
||
});
|
||
} catch (e) {
|
||
t().w("urequest 调用错误", e);
|
||
}
|
||
})(i);
|
||
}
|
||
return i.v;
|
||
} catch (n) {
|
||
t().w("getValue error, key: ", e);
|
||
}
|
||
},
|
||
active: function (e) {
|
||
try {
|
||
if (!Ie) return;
|
||
var n, i;
|
||
e && e.params && (n = e.params);
|
||
e && e.callback && (i = e.callback);
|
||
t().v("激活配置项: ", n);
|
||
if (n) {
|
||
t().v("本地已缓存的配置项: ", me);
|
||
Ae(n);
|
||
t().v("合并后的配置项: ", me);
|
||
i && i(me);
|
||
t().v("active 结束");
|
||
} else {
|
||
t().v("配置项为空!! 读取本地配置...");
|
||
o.getStorage(this.STORAGE_NAME, function (e) {
|
||
if (e) {
|
||
Ae((e = ge.JSONDecode(e) || {}).params);
|
||
t().v("当前本地配置项为: ", me);
|
||
i && i(me);
|
||
t().v("active 结束");
|
||
} else t().v("当前本地配置项为空, 退出激活");
|
||
});
|
||
}
|
||
} catch (e) {
|
||
t().w("SDK active 错误", e);
|
||
}
|
||
},
|
||
init: function (e) {
|
||
if (e.appKey) {
|
||
Se = e.appKey;
|
||
this.STORAGE_NAME = "xphp_remote_config{{" + Se + "}}";
|
||
if (e.LOG_URL) u.LOG_URL = e.LOG_URL;
|
||
if (e.GET_OPENID_URL) u.GET_OPENID_URL = e.GET_OPENID_URL;
|
||
if (e.USERINFO_URL) u.USERINFO_URL = e.USERINFO_URL;
|
||
}
|
||
if (Se)
|
||
if (Ie) t().w("SDK 已经初始化, 请避免重复初始化");
|
||
else {
|
||
Ie = !0;
|
||
this.setOptions(e);
|
||
this.active();
|
||
}
|
||
else t().err("请检查您的小程序 appKey, appKey 不能为空");
|
||
},
|
||
setOptions: function (e) {
|
||
if (ge.isObject(e)) {
|
||
var t = e.minFetchIntervalSeconds;
|
||
ge.isNumber(t) && (Oe.minFetchIntervalSeconds = Math.max(t, 5));
|
||
}
|
||
},
|
||
fetch: function (e) {
|
||
if (Ie && this.STORAGE_NAME) {
|
||
var n, i;
|
||
e && e.active && (n = e.active);
|
||
e && e.callback && (i = e.callback);
|
||
var r = this;
|
||
o.getStorage(this.STORAGE_NAME, function (e) {
|
||
t().v("开始读缓存 data is ", e);
|
||
if (
|
||
(e = ge.JSONDecode(e) || {}).params &&
|
||
e.ts &&
|
||
Date.now() - e.ts < 1e3 * Oe.minFetchIntervalSeconds
|
||
) {
|
||
t().v(
|
||
"缓存数据存在, 并且本次触发时间距离上次fetch触发时间未超过 fetch 时间间隔, 无需 fetch",
|
||
);
|
||
i && i(e.params);
|
||
} else
|
||
ye(function (e) {
|
||
t().v("缓存数据不存在, 构建 fetch body :", e);
|
||
try {
|
||
o.request({
|
||
url: u.FETCHURL,
|
||
method: "POST",
|
||
data: e,
|
||
success: function (e) {
|
||
if (e && 200 === e.statusCode && e.data && e.data.cc) {
|
||
t().v("fetch 请求成功, 响应数据: ", e.data);
|
||
var s = Object.create(null);
|
||
ge.each(e.data.cc, function (e) {
|
||
s[e.k] = e;
|
||
});
|
||
var a = {
|
||
ts: Date.now(),
|
||
params: s,
|
||
};
|
||
t().v("开始缓存 fetch 请求的云配置结果...");
|
||
o.setStorage(
|
||
r.STORAGE_NAME,
|
||
ge.JSONEncode(a),
|
||
function (e) {
|
||
t().v("缓存云配置成功, 缓存数据为: ", a);
|
||
t().v("缓存云配置成功, 成功消息为: ", e);
|
||
t().v("云配拉取数据是否自动激活: ", n);
|
||
if (e && n) {
|
||
t().v("激活云配置...");
|
||
r.active({
|
||
params: s,
|
||
callback: i,
|
||
});
|
||
}
|
||
},
|
||
);
|
||
} else {
|
||
t().w("fetch 请求成功,返回结果异常 ", e.data);
|
||
i && i();
|
||
}
|
||
},
|
||
fail: function (n) {
|
||
t().w("fetch请求数据错误 ", e, n);
|
||
i && i();
|
||
},
|
||
});
|
||
} catch (e) {
|
||
t().w("urequest调用错误", e);
|
||
}
|
||
});
|
||
});
|
||
}
|
||
},
|
||
};
|
||
var Ne = {
|
||
install: function (e, t) {
|
||
e.rc || (e.rc = new Ee());
|
||
e.messager.once(e.messager.messageType.CONFIG_LOADED, function () {
|
||
e._log.v("plugin rc installed");
|
||
});
|
||
return e.rc;
|
||
},
|
||
},
|
||
Te = !1,
|
||
we = {
|
||
install: function (e, t) {
|
||
e.wxpluginwraper ||
|
||
(e.wxpluginwraper = function (t) {
|
||
if (!Te) {
|
||
t.onAppShow &&
|
||
t.onAppShow(function (t) {
|
||
e.resume(t);
|
||
});
|
||
t.onAppHide &&
|
||
t.onAppHide(function (t) {
|
||
e.pause(t);
|
||
});
|
||
Te = !0;
|
||
}
|
||
});
|
||
},
|
||
},
|
||
ke = "",
|
||
be = {};
|
||
function De(e) {
|
||
e && (ke = e);
|
||
}
|
||
function Ue(e, t) {
|
||
if (e.onShareAppMessage) {
|
||
var n = e.onShareAppMessage;
|
||
e.onShareAppMessage = function (e) {
|
||
var i = n.call(this, e) || {},
|
||
r = (function (e, t) {
|
||
if (!e) return "";
|
||
var n = [];
|
||
for (var i in t)
|
||
"_xphp_ssrc" !== i && "_xphp_sts" !== i && n.push(i + "=" + t[i]);
|
||
var r = n.join("&");
|
||
return r ? e + "?" + r : e;
|
||
})(ke, be[ke]);
|
||
!i.path && r && (i.path = r);
|
||
var o = t.trackShare.call(this, i);
|
||
return void 0 === o ? i : o;
|
||
};
|
||
}
|
||
}
|
||
function Pe(e, t, n) {
|
||
var i = e[t];
|
||
e[t] = function (e) {
|
||
n.call(this, e);
|
||
i && i.call(this, e);
|
||
};
|
||
}
|
||
function Re(e) {
|
||
try {
|
||
fe.resume(e, !0);
|
||
} catch (e) {
|
||
t().v("onAppShow: ", e);
|
||
}
|
||
}
|
||
function Le() {
|
||
try {
|
||
fe.pause();
|
||
} catch (e) {
|
||
t().v("onAppHide: ", e);
|
||
}
|
||
}
|
||
function Ce() {
|
||
try {
|
||
De(this.route);
|
||
fe.trackPageStart(this.route);
|
||
} catch (e) {
|
||
t().v("onPageShow: ", e);
|
||
}
|
||
}
|
||
function Me(e) {
|
||
try {
|
||
De(this.route);
|
||
e && ((n = this.route), (i = e), n && (be[n] = i));
|
||
t().v("Page onLoad: ", this.route, e);
|
||
} catch (e) {
|
||
t().v("onPageLoad: ", e);
|
||
}
|
||
var n, i;
|
||
}
|
||
function xe() {
|
||
try {
|
||
fe.trackPageEnd(this.route);
|
||
} catch (e) {
|
||
t().v("onPageHide: ", e);
|
||
}
|
||
}
|
||
try {
|
||
var Ve = App;
|
||
App = function (e) {
|
||
Pe(e, "onLaunch", function () {
|
||
!(function (e) {
|
||
try {
|
||
fe.init(e);
|
||
} catch (e) {
|
||
t().v("onAppLaunch: ", e);
|
||
}
|
||
})(e.xstatConfig);
|
||
});
|
||
Pe(e, "onShow", Re);
|
||
Pe(e, "onHide", Le);
|
||
Ve(e);
|
||
};
|
||
} catch (e) {
|
||
t().w("App重写异常");
|
||
}
|
||
try {
|
||
var je = Page;
|
||
Page = function (e) {
|
||
Pe(e, "onShow", Ce);
|
||
Pe(e, "onHide", xe);
|
||
Pe(e, "onUnload", xe);
|
||
Pe(e, "onLoad", Me);
|
||
Ue(e, fe);
|
||
je(e);
|
||
};
|
||
} catch (e) {
|
||
t().w("Page重写异常");
|
||
}
|
||
try {
|
||
var Fe = Component;
|
||
Component = function (e) {
|
||
try {
|
||
e.methods = e.methods || {};
|
||
var t = e.methods;
|
||
Pe(t, "onShow", Ce);
|
||
Pe(t, "onHide", xe);
|
||
Pe(t, "onUnload", xe);
|
||
Pe(t, "onLoad", Me);
|
||
Ue(t, fe);
|
||
Fe(e);
|
||
} catch (t) {
|
||
Fe(e);
|
||
}
|
||
};
|
||
} catch (e) {
|
||
t().w("Component重写异常");
|
||
}
|
||
var Ge = fe.init;
|
||
fe.init = function (e) {
|
||
if (e && e.useOpenid) {
|
||
t().tip_w(t().repeat("!"));
|
||
t().tip_w(
|
||
"openid已开启,请确保使用setOpenid设置openid或通过设置autoGetOpenid为true,并在xstat后台设置secret由xstat帮您获取",
|
||
);
|
||
t().tip_w(t().repeat("!"));
|
||
}
|
||
Ge.call(fe, e);
|
||
};
|
||
fe.use(Ne);
|
||
fe.use(we);
|
||
wx.xstat = fe;
|
||
module.exports = fe; |