JMApp/utils/xstat.js
2025-04-05 23:47:00 +08:00

2558 lines
82 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"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;