@xyz-fe/log 3.8.1 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.d.ts +137 -9
- package/dist/index.js +4 -2
- package/dist/index.min.js +4 -2
- package/dist/index.mjs +4 -2
- package/dist/mp.d.ts +82 -7
- package/dist/mp.js +2 -2
- package/dist/mp.min.js +2 -2
- package/dist/mp.mjs +2 -2
- package/dist/web-hw.d.ts +80 -6
- package/dist/web-hw.js +3 -3
- package/dist/web-hw.min.js +3 -3
- package/dist/web-hw.mjs +3 -3
- package/dist/web.d.ts +73 -6
- package/dist/web.js +2 -2
- package/dist/web.min.js +2 -2
- package/dist/web.mjs +2 -2
- package/package.json +8 -12
- package/dist/index.js.map +0 -1
- package/dist/index.min.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/mp.js.map +0 -1
- package/dist/mp.min.js.map +0 -1
- package/dist/mp.mjs.map +0 -1
- package/dist/web-hw.js.map +0 -1
- package/dist/web-hw.min.js.map +0 -1
- package/dist/web-hw.mjs.map +0 -1
- package/dist/web.js.map +0 -1
- package/dist/web.min.js.map +0 -1
- package/dist/web.mjs.map +0 -1
package/dist/mp.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mp.js","sources":["../node_modules/.pnpm/tslib@2.4.0/node_modules/tslib/tslib.es6.js","../src/utils/index.ts","../src/config/index.ts","../src/types/index.ts","../src/mp.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { getStorage, setStorage } from './storage';\n\n/**\n * 生成唯一标识uid(ms时间戳 + 6位(16进制)随机数)\n * @returns {string} uid\n */\nexport function generateUid() {\n return Date.now().toString() + Math.random().toString(16).substring(2, 8);\n}\n\n/**\n * 生成唯一uuid,可以指定长度和基数\n * @param {number} length 长度,默认18\n * @param {number} radix 基数,如2,8,10,16等\n */\nexport function generateId(length = 18, radix = 0) {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');\n const uuid = [];\n const rnd = Math.random;\n const len = length;\n const rad = radix || chars.length;\n for (let i = 0; i < len; i++) {\n uuid[i] = chars[0 | (rnd() * rad)];\n }\n return uuid.join('');\n}\n\n/**\n * 获取 uid\n */\nexport function getId(name = 'UID') {\n let uid = getStorage(name);\n if (!uid) {\n uid = generateId();\n setStorage(name, uid);\n }\n return uid;\n}\n\n/**\n * 版本号转换:1.1.1 >> 010101,大小版本号不超过2位数字,最大99.99.99\n * @param {string} ver 版本号,如:1.1.1\n * @returns {string} 转换之后的版本,如:010101\n */\nexport function transferVersion(ver: string) {\n try {\n if (!ver || typeof ver !== 'string') {\n return '';\n }\n return ver\n .split('.')\n .map((n) => {\n if (n.length === 1) {\n return '0' + n;\n }\n return n;\n })\n .join('');\n } catch (error) {\n console.error(`[transferVersion] ver(\"${ver}\")格式异常:`, error);\n return '';\n }\n}\n\n/**\n * 获取日期字符串,如:200729\n * @returns {string} 日期字符串\n */\nexport function getDateStr(): string {\n const now = new Date();\n let year = now.getFullYear().toString();\n let month = (now.getMonth() + 1).toString();\n let day = now.getDate().toString();\n year = year.toString().substr(-2);\n month = Number(month) < 10 ? '0' + month : month;\n day = Number(day) < 10 ? '0' + day : day;\n return year + month + day;\n}\n\nexport function json2params(json: Record<string | number, any>) {\n return Object.keys(json)\n .map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(json[k]);\n })\n .join('&');\n}\n\nexport function urlParams2Json(ignoreKeys: string[] = [], url = location.href) {\n const u = new URL(url);\n const s = u.search.substring(1);\n const json: Record<string | number, any> = {};\n if (s) {\n s.split('&').forEach((kv) => {\n json[kv.split('=')[0]] = kv.split('=')[1];\n });\n }\n\n Object.keys(json).forEach((k) => {\n if (ignoreKeys.includes(k)) delete json[k];\n });\n\n return json;\n}\n\nexport const isPlainObject = (val: any) =>\n Object.prototype.toString.call(val) === '[object Object]';\n\nexport const isObjectEmpty = (obj: any) =>\n obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n\n/**\n * 两个对象合并\n * @param o1 对象1\n * @param o2 对象2\n */\nexport function merge(\n o1: Record<string | number, any>,\n o2: Record<string | number, any>\n): Record<string | number, any> {\n const tempO1 = { ...o1 };\n const tempO2 = { ...o2 };\n // 删除tempO2的空值,防止其覆盖tempO1已存在的值。(防止空值覆盖已有值)\n Object.keys(tempO1).forEach((k) => {\n if (!tempO2[k]) {\n delete tempO2[k];\n }\n });\n return { ...tempO1, ...tempO2 };\n}\n\n// 多个(嵌套)对象合并\nexport function deepMerge(target: any, ...sources: any[]): any {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (source && typeof source === 'object') {\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object') {\n if (!target[key]) Object.assign(target, { [key]: {} });\n deepMerge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return deepMerge(target, ...sources);\n}\n\n// Determine the current display mode.\nexport function isPWA() {\n // // 判断是否在 iOS 的全屏模式(PWA)中打开\n // if (navigator.standalone) {\n // return true;\n // }\n\n // // 判断是否在 Android 的全屏模式(PWA)中打开\n // if (window.matchMedia('(display-mode: standalone)').matches) {\n // return true;\n // }\n\n // // 默认返回 false,表示网页在浏览器中打开\n // return false;\n\n const getDisplayMode = () =>\n navigator.standalone || window.matchMedia('(display-mode: standalone)').matches\n ? 'standalone'\n : 'browser';\n return getDisplayMode() === 'standalone';\n}\n\nexport function isMobileDevice() {\n const userAgent = navigator.userAgent;\n const mobileKeywords = [\n 'Android',\n 'webOS',\n 'iPhone',\n 'iPad',\n 'iPod',\n 'BlackBerry',\n 'Windows Phone',\n ];\n\n return mobileKeywords.some((keyword) => userAgent.includes(keyword));\n}\n\nexport const getPlatform = () => (isPWA() ? 'pwa' : isMobileDevice() ? 'h5' : 'pc');\n\nexport function getUtcOffset() {\n const date = new Date();\n const offset = date.getTimezoneOffset();\n const hours = Math.abs(Math.floor(offset / 60));\n // const minutes = Math.abs(offset % 60);\n const sign = offset > 0 ? '-' : '+';\n\n return `${sign}${hours}`;\n}\n","export const SDK_VERSION = typeof __BUILD_VERSION__ !== 'undefined' ? __BUILD_VERSION__ : '0.0.0';\nexport const BUILD_DATE =\n typeof __BUILD_DATE__ !== 'undefined' ? __BUILD_DATE__ : String(new Date().toLocaleString());\nexport const DEFAULT_QID = 'organic';\n","export enum EGender {\n Unknown = 0,\n Male,\n Female,\n}\n\n// enum ENetwork {\n// Wifi = 'wifi',\n// TwoG = '2g',\n// ThreeG = '3g',\n// FourG = '4g',\n// FiveG = '5g',\n// Unknown = 'unknown',\n// None = 'none',\n// Null = 'null'\n// }\n\n// 接入方需要传入的参数\nexport interface TCommonParams {\n openid?: string; // 【web端由SDK内部处理】小程序&公众号用户唯一id;web端js生成唯一id\n unionid?: string; // 小程序&公众号用户平台id(同个用户在同个开放平台下的unionid相同);web端为空\n accid?: string; // 业务侧用户唯一id,可以为空,有accid的时候传accid\n apptypeid?: string; // 项目唯一识别符,如:步多多为100001\n appcqid?: string; // 根据产品自定义的默认渠道号(约定渠道参数key为f, 如 url?f=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'null')\n srcqid?: string; // 归因渠道。取启动参数里面配置的渠道号\n userinfo?: string; // 用户信息 如:'{\"appsubid\": \"123456\", ...}'\n appver?: string; // 小程序版本号,如:1.1.1;公众号等web项目无此参数\n}\n\n// 公共参数\nexport interface ICommonParams extends TCommonParams {\n appverint?: string; // 【SDK内部处理】小程序版本号转数值 ,如:010101;公众号等web项目无此参数\n platform?: string | number; // 【SDK内部处理】 平台:0=微信公众号;1=微信小程序;2=字节小程序;3=快手小程序;4=百度小程序;5=QQ小程序;6=快应用;7=web\n appqid?: string; // 【SDK内部处理】渠道+日期,如:appstore160616;wandoujia160616\n os?: string; // 【SDK内部处理】操作系统,如:android、ios\n osversion?: string; // 【SDK内部处理】操作系统版本号,如:7.0\n device?: string; // 【SDK内部处理】客户端手机型号,如:xiaomi6\n devicebrand?: string; // 【SDK内部处理】机型品牌,如:HUAWEI\n pixel?: string; // 【SDK内部处理】屏幕分辨率,如:1080*1920\n network?: string; // 【SDK内部处理】网络环境,如:wifi、4g、3g、2g、other\n obatchid?: string; // 【SDK内部处理】本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n}\n\n// 启动日志参数\nexport interface IOpenLogParams {\n openway: 0 | 1 | 5; // 启动方式。0=冷启动,1=热启动,5=切后台 (web无法区分冷、热启动,始终报0冷启动)\n wakeway?: string | number; // 唤醒方式。传小程序对应启动的场景值(web传'')\n xmlog: string; // xmlog sdk版本\n isreturn?: 0 | 1 | 2 | 3; // 启动日志补报,0=正常上报;1=获取到openid补报;2=获取到unionid补报 3=获取到querystring补报(接入方上报的启动日志)\n querystring?: Record<string | number, any>; // userinfo中的querystring参数\n}\n\n// 活动打点日志参数\nexport interface IActiveLogParams {\n actentryid?: string; // actentryid,业务活动ID,保证唯一性\n subactid?: string; // subactid,子活动id,保证唯一性\n type: 'show' | 'click' | 'close'; // type,类型:展现传“show”、点击传“click”、关闭传“close”\n custom: string; // (业务参数)业务自定义参数\n batchid: string; // (业务参数)批次号\n}\n\n// 事件日志参数\nexport interface IEventLogParams {\n event1?: string; // 一级事件。传模块名称(项目组自定义)\n event2?: string; // 二级事件。可传活动日志中的活动名称(项目组自定义)\n event3?: string; // 三级事件。可传活动日志中的活动id的子id名称(项目组自定义)\n event4?: string; // 四级事件。预留字段\n value1?: string; // 事件值1。传模块id(项目组自定义)\n value2?: string; // 事件值2。可传活动日志中的活动id(项目组自定义)\n value3?: string; // 事件值3。可传活动日志中的活动id的子id(项目组自定义)\n value4?: string; // 事件值4。预留字段\n}\n\n// 广告日志\nexport interface IAdLogParams {\n type: string; // 场景描述。preload=预加载;load=加载;show=展现;close=关闭;cancel=中途关闭;click=点击\n code?: string; // 本次场景执行是否成功。0=成功;其他code表示报表,用平台返回的code填充\n codeinfo?: string; // code对应的释义。code=0时填充成功;code=其他值时,用平台返回的异常填充\n pagetype?: string; // 一级广告位。由业务方自行定义,可用于模块化统计广告数据\n gametype?: string; // 二级广告位:业务端自定义,用于区分不同广告场景的数据,例:观看激励视频获取撤回道具,gametype定义为chehuiljsp\n adslot?: string; // 广告位类型。banner=bannel广告位;rewardvideo=激励视频广告位;flow=信息流广告位;lnterstitial=插屏广告;videobegin=视频前贴片广告位;videobehind=视频后贴片广告\n adunitid?: string; // 代码位ID\n adbatchid?: string; // 本次广告的唯一id(广告批次号)\n ecpm?: string; // 广告的预估收益\n}\n\n// 在线时长日志参数\nexport interface IOnlineLogParams {\n onlinetime?: string; // 在线时长(毫秒)\n endtime?: string; // 结束时间(毫秒时间戳)\n starttime: string; // 开始时间(毫秒时间戳)\n}\n\nexport type IOnlineLogParamsWithCommon = ICommonParams & IOnlineLogParams;\n\nexport interface IUserInfo {\n [k: string | number]: any;\n}\n\nexport interface IExtraInfo extends IUserInfo {\n language: string; // 微信设置的语言\n wxVersion: string; // 微信版本号\n SDKVersion: string; // 微信客户端基础库版本\n benchmarkLevel: number; // 设备性能等级(仅Android小游戏)。取值为:-2 或 0(该设备无法运行小游戏),-1(性能未知),>=1(设备性能值,该值越高,设备性能越好,目前最高不到50)\n theme: string; // 系统当前主题,取值为light或dark,全局配置\"darkmode\":true时才能获取,否则为 undefined (不支持小游戏)\n}\n\nexport interface IDomain {\n open?: string; // 启动日志上报接口\n act?: string; // 打点日志上报接口\n ad?: string; // 广告日志上报接口\n event?: string; // 事件日志上报接口\n online?: string; // 在线时长日志上报接口\n}\n\nexport interface IDomainWithEnv {\n testing: IDomain;\n prod: IDomain;\n}\n\nexport interface MiniprogramShowOptions {\n path: string; // 启动小程序的路径 (代码包路径)\n scene: number; // 启动小程序的场景值\n query: Record<string | number, any>; // 启动小程序的 query 参数\n shareTicket: string; // shareTicket,详见获取更多转发信息\n // 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 {}。\n referrerInfo: {\n appId: string; // 来源小程序、公众号或 App 的 appId\n extraData: Record<string | number, any>; // 来源小程序传过来的数据,scene=1037或1038时支持\n };\n}\n\nexport type TPlatform = 'h5' | 'pc' | 'pwa';\n\nexport interface InitParams {\n isPro?: boolean;\n domain?: IDomain;\n commonParams?: TCommonParams;\n sendOpenLog?: boolean;\n consoleLog?: boolean;\n}\n\n// 接入方需要传入的参数\nexport interface THwCommonParams {\n openid?: string; // 平台唯一id(如line的唯一ID)\n accid?: string; // 业务侧用户唯一id,可以为空,有accid的时候传accid\n apptypeid?: string; // 项目唯一识别符,如:步多多为100001\n appcqid?: string; // 根据产品自定义的默认渠道号(约定渠道参数key为f, 如 url?f=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'null')\n appver?: string; // 版本号,如:1.1.1\n userinfo?: string; // 用户信息(sdk内部会添加platform字段) 如:'{\"appsubid\": \"123456\", ...}'\n region?: string; // 国家/地区,从服务端接口获取\n province?: string; // 二级地区,从服务端接口获取\n srcinfo?: string; // 来源于归因方的归因信息(暂无)\n platform?: string; // 平台,h5/pc/pwa/……,SDK内部只简单分类:'h5' | 'pc' | 'pwa',如业务有不同的平台值需要对接方传入。\n uid?: string; // SDK内部会生成网页用户唯一id,对接方一般不需要处理,有特殊需求的情况下除外。\n}\n\n// 公共参数\nexport interface IHwCommonParams extends THwCommonParams {\n ua?: string; // 【SDK内部处理】userAgent\n timezone?: string; // 【SDK内部处理】所属时区 上报值范围(-12 ~ 0 ~ 12) 例如: 菲律宾上报8 泰国报7\n device?: string; // 【SDK内部处理】客户端手机型号,如:xiaomi6\n devicebrand?: string; // 【SDK内部处理】机型品牌,如:HUAWEI\n os?: string; // 【SDK内部处理】操作系统,如:android、ios\n osversion?: string; // 【SDK内部处理】操作系统版本号,如:7.0\n pixel?: string; // 【SDK内部处理】屏幕分辨率,如:1080*1920\n network?: string; // 【SDK内部处理】网络环境,如:wifi、4g、3g、2g、other\n url?: string; // 【SDK内部处理】当前URL地址\n obatchid?: string; // 【SDK内部处理】本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n xmlog?: string; // xm sdk version\n}\n\nexport interface IHwDomain {\n open?: string; // 启动日志上报接口\n act?: string; // 打点日志上报接口\n ad?: string; // 广告日志上报接口\n}\n\nexport interface HwInitParams {\n isPro?: boolean; // 是否生产环境\n domain?: IHwDomain; // 域名\n commonParams?: THwCommonParams; // 公参\n sendOpenLog?: boolean; // 是否发送启动日志\n consoleLog?: boolean; // 控制台日志是否打印\n ignoreUrlParams?: string[]; // 公参userinfo -> querystring(url)中的需排除的参数\n}\n\n// 启动日志参数\nexport interface IHwOpenLogParams {\n openway: 0 | 1 | 5 | 6; // 启动方式。0=冷启动,1=热启动,5=切后台, 6=地理位置回传 (web无法区分冷、热启动,始终报0冷启动)\n platform_from?: string; // 进入此平台之前的上一个平台类型\n url_from?: string; // 进入此URL之前的上一个URL地址(暂传referer信息)\n}\n\n// 活动打点日志参数\nexport interface IHwActiveLogParams {\n actentryid?: string; // actentryid,业务活动ID,保证唯一性\n subactid?: string; // subactid,子活动id,保证唯一性\n type: 'show' | 'click' | 'close'; // type,类型:展现传“show”、点击传“click”、关闭传“close”\n memo1?: string; // 自定义字段1\n memo2?: string; // 自定义字段2\n memo3?: string; // 自定义字段3\n}\n// 广告日志\nexport interface IHwAdLogParams {\n type: string; // 场景描述。preload=预加载;load=加载;show=展现;close=关闭;cancel=中途关闭;click=点击\n code?: string; // 本次场景执行是否成功。0=成功;其他code表示报表,用平台返回的code填充\n codeinfo?: string; // code对应的释义。code=0时填充成功;code=其他值时,用平台返回的异常填充\n pagetype?: string; // 一级广告位。由业务方自行定义,可用于模块化统计广告数据\n gametype?: string; // 二级广告位:业务端自定义,用于区分不同广告场景的数据,例:观看激励视频获取撤回道具,gametype定义为chehuiljsp\n adslot?: string; // 广告位类型。banner=bannel广告位;rewardvideo=激励视频广告位;flow=信息流广告位;lnterstitial=插屏广告;videobegin=视频前贴片广告位;videobehind=视频后贴片广告\n adunitid?: string; // 代码位ID\n adbatchid?: string; // 本次广告的唯一id(广告批次号)\n ecpm?: string; // 广告的预估收益\n adfrom?: string; // 广告来源。google、facebook等\n}\n","import type {\n ICommonParams,\n IEventLogParams,\n IExtraInfo,\n IOpenLogParams,\n IActiveLogParams,\n IDomain,\n MiniprogramShowOptions,\n TCommonParams,\n IOnlineLogParamsWithCommon,\n InitParams,\n IAdLogParams,\n} from './types';\nimport { generateId, getDateStr, isObjectEmpty, merge, transferVersion } from './utils';\nimport { SDK_VERSION, BUILD_DATE, DEFAULT_QID } from './config';\n\ninterface IResSuccess {\n data: string | Record<string, any>; //\t开发者服务器返回的数据\n statusCode: string | number; // 开发者服务器返回的 HTTP 状态码\n header: Record<string, any>; //\t开发者服务器返回的 HTTP Response Header\n cookies?: Array<string>; // 开发者服务器返回的 cookies,格式为字符串数组\n profile?: Record<string, any>; // 网络请求过程中一些调试信息\n [k: string]: any;\n}\n\ninterface IResFail {\n errMsg: string; // 错误信息\n errno?: string | number; // errno 错误码(微信)\n errNo?: string | number; // errNo 错误码 (字节)\n [k: string]: any;\n}\n\n// 导出类型,方便调用者使用\nexport * from './types';\n\nexport class XLog {\n version = SDK_VERSION;\n buildDate = BUILD_DATE;\n // 正式服\n private _openUrl = ''; // 启动日志上报接口\n private _eventUrl = ''; // 在线日志上报接口\n private _actUrl = ''; // 活动(用户行为)日志上报接口\n private _adUrl = ''; // 广告日志上报接口\n private _onlineUrl = ''; // 在线时长日志上报接口\n // 开始时间(用于在线时长计算)\n private _startTime = Date.now();\n // 扩展参数\n private _extraInfo?: IExtraInfo;\n // 公共参数\n private _commonParams: ICommonParams = {};\n // 获取公共参数\n public get commonParams(): ICommonParams {\n return this._commonParams;\n }\n // 环境变量,true:生产环境;false:测试环境,默认生产环境\n private _isPro = true;\n // 是否发送启动日志,true:发送;false:不发送,默认发送\n private _sendOpenLog = true;\n // 冷启动标记\n private _isColdStartUp = true;\n // 系统信息\n private _systemInfo: any = {};\n // 小程序对象\n private _mp: any = {};\n // 日志专用平台参数\n private _platform: any;\n // 控制台是否打印日志\n private _consoleLog = true;\n // 构造函数\n constructor({\n domain,\n commonParams,\n isPro = true,\n sendOpenLog = true,\n consoleLog = true,\n }: InitParams) {\n this._isPro = isPro;\n this._sendOpenLog = sendOpenLog;\n this._consoleLog = consoleLog;\n\n const { openUrl, eventUrl, actUrl, adUrl, onlineUrl } = this._getApis(domain);\n this._openUrl = openUrl;\n this._eventUrl = eventUrl;\n this._actUrl = actUrl;\n this._adUrl = adUrl;\n this._onlineUrl = onlineUrl;\n\n // 初始获取小程序对象\n const { mp, platform } = this._getMp();\n this._mp = mp;\n this._platform = platform;\n\n if (!mp || isObjectEmpty(mp)) {\n console.error('[XLOG] 日志SDK初始化失败,当前环境为非小程序环境!');\n } else {\n !!this._consoleLog && console.log('[XLOG] 小程序对象:', mp);\n }\n\n try {\n this._systemInfo = this._mp?.getSystemInfoSync() || {};\n } catch (error) {\n console.error('[XLOG] getSystemInfoSync error', error);\n }\n this._extraInfo = {\n language: this._systemInfo.language,\n wxVersion: this._systemInfo.version,\n SDKVersion: this._systemInfo.SDKVersion,\n benchmarkLevel: this._systemInfo.benchmarkLevel || -1,\n theme: this._systemInfo.theme,\n };\n\n this._init(commonParams);\n }\n\n /** 启动 */\n private _init(commonParams?: TCommonParams) {\n // 初始化公参\n this._initCommonParams(this._filterParams(commonParams));\n\n // 冷启动日志上报\n this._coldStartUp();\n\n // 注册onShow和onHide事件\n this._visibilityChange(\n // 小程序切前台onShow,上报热启动日志\n () => {\n // 仅上报热启动日志\n if (!this._isColdStartUp) {\n this._getNetworkType().then((networkType) => {\n this._updateCommonParams({ network: networkType });\n this._open({ openway: 1 });\n });\n }\n\n // 更新在线时长日志起始时间\n this._startTime = Date.now();\n\n // 如果存在漏报的在线时长日志数据,则再次尝试上报。\n const onlineBatchData = this._getOnlineBatchData();\n if (onlineBatchData) {\n this._online(onlineBatchData);\n }\n },\n // 小程序切后台onHide,上报切后台日志\n () => {\n this._isColdStartUp = false;\n this._open({ openway: 5 });\n // 发送在线时长日志\n this._sendOnline();\n }\n );\n }\n\n // 获取小程序对象\n private _getMp(): { mp: any; platform: number } {\n const obj = {\n mp: null,\n platform: 7,\n };\n // 微信、字节、快手、百度、QQ、蚂蚁、京东\n // 平台:0=微信公众号;1=微信小程序;2=字节小程序;3=快手小程序;4=百度小程序;5=QQ小程序;6=快应用;7=web\n // 注意:目前测试发现抖音小程序包含了wx对象,所以wx的判断只能放后面。\n if (typeof tt !== 'undefined') {\n obj.mp = tt;\n obj.platform = 2;\n } else if (typeof ks !== 'undefined') {\n obj.mp = ks;\n obj.platform = 3;\n } else if (typeof swan !== 'undefined') {\n obj.mp = swan;\n obj.platform = 4;\n } else if (typeof qq !== 'undefined') {\n obj.mp = qq;\n obj.platform = 5;\n } else if (typeof wx !== 'undefined') {\n obj.mp = wx;\n obj.platform = 1;\n } else if (typeof my !== 'undefined') {\n obj.mp = my;\n } else if (typeof jd !== 'undefined') {\n obj.mp = jd;\n }\n return obj;\n }\n\n private _visibilityChange(onShow: () => void = () => {}, onHide = () => {}) {\n try {\n // 小程序 & 小游戏 方法不同\n const onAppShow = this._mp?.onAppShow || this._mp?.onShow || (() => {});\n const onAppHide = this._mp?.onAppHide || this._mp?.onHide || (() => {});\n onAppShow(() => {\n !!this._consoleLog && console.log('[XLOG] onAppShow');\n onShow();\n });\n\n onAppHide(() => {\n !!this._consoleLog && console.log('[XLOG] onAppHide');\n onHide();\n });\n } catch (error) {\n console.error('[XLOG] onAppShow or onAppHide error', error);\n }\n }\n\n // 获取缓存\n private _getStorage(key: string) {\n try {\n return this._mp?.getStorageSync(`XYZ_LOG_${key}`);\n } catch (error) {\n console.error('[XLOG] getStorageSync error', error);\n }\n }\n\n // 设置缓存\n private _setStorage(key: string, value: any) {\n try {\n this._mp?.setStorageSync(`XYZ_LOG_${key}`, value);\n } catch (error) {\n console.error('[XLOG] setStorageSync error', error);\n }\n }\n\n // 获取批次号\n private _getBatchId() {\n let bid = this._getStorage('BATCH_ID');\n if (!bid || this._isColdStartUp) {\n bid = generateId();\n this._setStorage('BATCH_ID', bid);\n }\n return bid;\n }\n\n private _coldStartUp() {\n this._getNetworkType().then((networkType) => {\n this._updateCommonParams({ network: networkType });\n this._open({ openway: 0 });\n // // 延迟修改冷启动标志\n // setTimeout(() => {\n // this._isColdStartUp = false;\n // }, 3000);\n });\n }\n\n // 获取接口地址。\n private _getApis(domain?: IDomain) {\n // 默认接口域名\n const defaultDomain: IDomain = this._isPro\n ? {\n open: 'webopen-inside.tt.cn',\n event: 'webevent-inside.tt.cn',\n act: 'webact-inside.tt.cn',\n ad: 'webadv-inside.tt.cn',\n online: 'webact-inside.tt.cn',\n }\n : {\n open: 'test-webopen-inside.tt.cn',\n event: 'test-webevent-inside.tt.cn',\n act: 'test-webact-inside.tt.cn',\n ad: 'test-webadv-inside.tt.cn',\n online: 'test-webact-inside.tt.cn',\n };\n const dm: IDomain = {\n ...defaultDomain,\n ...domain,\n };\n return {\n openUrl: `https://${dm.open}/gamefunction_logs/applet/open`, // 启动日志上报接口\n eventUrl: `https://${dm.event}/gamefunction_logs/applet/event`, // 事件日志上报接口\n actUrl: `https://${dm.act}/gamefunction_logs/applet/activity`, // 打点日志上报接口\n adUrl: `https://${dm.ad}/gamefunction_logs/applet/adv`, // 打点日志上报接口\n onlineUrl: `https://${dm.online}/gamefunction_logs/applet/onlineTime`, // 在线时长日志上报接口\n };\n }\n\n /**\n * 缓存公参\n * @param {object} obj 公共参数对象\n */\n private _cacheCommonParams(obj: ICommonParams) {\n this._setStorage('COMMON_PARAMS', JSON.stringify(obj));\n }\n\n private _getInitParams(): ICommonParams {\n return {\n platform: this._platform,\n appcqid: DEFAULT_QID, // 根据产品自定义的默认渠道号(同一个apptypeid下不能出现相同的默认渠道号)\n appqid: DEFAULT_QID + getDateStr(), // 渠道+日期,如:appstore160616;wandoujia160616\n os: this._systemInfo.platform, // 操作系统,如:Android、iOS\n osversion: this._systemInfo.system && this._systemInfo.system.split(' ')[1], // 操作系统版本号,如:7.0\n device: this._systemInfo.model, // 客户端手机型号,如:xiaomi6\n devicebrand: this._systemInfo.brand, // 机型品牌,如:HUAWEI\n pixel: this._systemInfo.screenWidth + '*' + this._systemInfo.screenHeight, // 屏幕分辨率,如:1080*1920\n userinfo: this._getUserInfo(), // 用户信息 如:'{\"nickName\":\"昵称\",\"avatarUrl\":\"头像\",\"gender\":\"性别:1-男;2-女;0-未知\"}' 等\n };\n }\n\n private _initCommonParams(receivedCommonParams?: TCommonParams) {\n let commonParams: ICommonParams = this._getInitParams();\n const cps = this._getStorage('COMMON_PARAMS');\n if (cps) {\n // 合并本地的初始化公参和缓存公参(缓存公参优先级高)\n commonParams = { ...commonParams, ...JSON.parse(cps) };\n }\n // 合并接收到的公参\n commonParams = receivedCommonParams ? merge(commonParams, receivedCommonParams) : commonParams;\n this._updateCommonParams({\n ...commonParams,\n obatchid: this._getBatchId(), // 本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n });\n }\n\n private _getNetworkType() {\n return new Promise<string>((resolve) => {\n try {\n this._mp?.getNetworkType({\n // @ts-expect-error\n success(res) {\n resolve(res.networkType);\n },\n fail() {\n resolve('none');\n },\n });\n } catch (error) {\n resolve('none');\n console.error('[XLOG] getNetworkType error', error);\n }\n });\n }\n\n /**\n * 获取用户信息\n * @param {IUserInfo} userInfo 用户信息\n * @returns {string} JSON.stringify序列化字符串\n */\n private _getUserInfo(userInfo?: string) {\n let uip = {};\n if (userInfo) {\n try {\n uip = JSON.parse(userInfo);\n } catch (error) {\n console.error('[XLOG] The parameter \"userinfo\" is not in JSON string format!');\n }\n }\n\n let ui = {};\n if (this.commonParams.userinfo) {\n try {\n ui = JSON.parse(this.commonParams.userinfo);\n } catch (error) {\n console.error('[XLOG] parse error', error);\n }\n }\n return JSON.stringify({\n ...this._extraInfo,\n ...ui,\n ...uip,\n });\n }\n\n // 处理接入方传入的公参,只接受必须的参数,防止垃圾参数合并到公参中。\n private _filterParams(params?: TCommonParams): TCommonParams {\n const _params: TCommonParams = {};\n\n if (params) {\n const keys = [\n 'openid', // 【web端由SDK内部处理】小程序&公众号用户唯一id;web端js生成唯一id\n 'unionid', // 小程序&公众号用户平台id(同个用户在同个开放平台下的unionid相同);web端为空\n 'accid', // 业务侧用户唯一id,可以为空,有accid的时候传accid\n 'apptypeid', // 项目唯一识别符,如:步多多为100001\n 'appcqid', // 根据产品自定义的默认渠道号(约定渠道参数key为f, 如 url?f=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'null')\n 'srcqid', // 归因渠道。取启动参数里面配置的渠道号\n 'appver', // 用户信息 如:'{\"appsubid\": \"123456\", ...}'\n 'userinfo', // 小程序版本号,如:1.1.1;公众号等web项目无此参数\n ];\n for (const k in params) {\n const v = params[k as keyof TCommonParams];\n if (keys.includes(k) && v) {\n _params[k as keyof TCommonParams] = v;\n }\n }\n }\n return _params;\n }\n\n /** 设置、更新日志参数 */\n public setParams(params?: TCommonParams) {\n if (params) {\n !!this._consoleLog && console.log('[XLOG] setParams', params);\n // 获取原openid和unionid\n const originOpenid = this._commonParams.openid;\n const originUnionid = this._commonParams.unionid;\n // 过滤接收到的公参(可能存在垃圾参数)\n params = this._filterParams(params);\n // 更新公参\n this._updateCommonParams(params);\n // 获取到openid或者unionid(且获取到的openid(unionid)和已有的openid(unionid)不相等),补报启动日志\n if (\n (params.openid && params.openid !== originOpenid) ||\n (params.unionid && params.unionid !== originUnionid)\n ) {\n this._open({ isreturn: params.openid ? 1 : 2, openway: 0 });\n }\n }\n }\n\n // SDK内部用于更新公参的方法\n private _updateCommonParams(params: ICommonParams) {\n !!this._consoleLog && console.log('[XLOG] _updateCommonParams', params);\n if (params.userinfo) {\n params.userinfo = this._getUserInfo(params.userinfo);\n }\n if (params.appcqid) {\n params.appqid = params.appcqid + getDateStr();\n }\n if (params.appver) {\n params.appverint = transferVersion(params.appver);\n }\n this._commonParams = merge(this._commonParams, params);\n this._cacheCommonParams(this._commonParams);\n }\n\n /** 获取appqid */\n private _getAppqid() {\n // 因为appqid和日期有关,具有实时性,故需要每次上报前根据当前日期重新生成。\n return this._commonParams.appcqid + getDateStr();\n }\n\n private _request(\n url: string,\n data: Record<string, any>,\n contentType = 'application/x-www-form-urlencoded'\n ) {\n return new Promise((resolve, reject) => {\n try {\n this._mp?.request({\n url,\n data,\n method: 'POST',\n header: {\n 'content-type': contentType,\n },\n success: (res: IResSuccess) => {\n !!this._consoleLog && console.log(`[XLOG] SUCCESS: ${url}`, data, res);\n resolve(res);\n },\n fail: (res: IResFail) => {\n !!this._consoleLog && console.log(`[XLOG] FAIL: ${url}`, data, res);\n reject(res);\n },\n });\n } catch (error) {\n console.error('[XLOG] request error', error);\n }\n });\n }\n\n public open(params: Required<Pick<IOpenLogParams, 'querystring'>>) {\n this._open({\n querystring: params.querystring,\n isreturn: 3,\n openway: 0,\n });\n }\n\n /** 上报启动日志 */\n private _open(params: Omit<IOpenLogParams, 'xmlog'>) {\n let launchOptions: MiniprogramShowOptions | null = null;\n try {\n // 兼容小程序和小游戏中API不统一问题,目前发现,抖音小游戏不存在方法:getEnterOptionsSync\n launchOptions = (\n this._mp?.getEnterOptionsSync ||\n this._mp?.getLaunchOptionsSync ||\n (() => {})\n )();\n } catch (error) {\n console.error('[XLOG] getEnterOptionsSync error', error);\n }\n if (launchOptions?.query) {\n // 这里如果 launchOptions?.query 是一个空对象\"{}\",\n // 则 userinfo的值为 '{\"querystring\":{}}'\n // 通过 _updateCommonParams 方法,querystring的值会被空对象覆盖。\n // 所以这就保证了启动参数永远和querystring同步。\n this._updateCommonParams({\n userinfo: JSON.stringify({\n querystring: { ...launchOptions.query, ...params.querystring },\n }),\n });\n } else {\n this._updateCommonParams({\n userinfo: JSON.stringify({\n querystring: params.querystring,\n }),\n });\n }\n if (!this._sendOpenLog) return;\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n wakeway: params.wakeway || launchOptions?.scene || '', // 唤醒方式(使用微信场景值)\n openway: params.openway, // 启动方式,0 冷启动;1 热启动;5 切后台\n isreturn: params.isreturn || 0, // 启动日志补报,0=正常上报;1=获取到openid补报;2=获取到unionid补报\n xmlog: SDK_VERSION,\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(OPEN)', data);\n this._request(this._openUrl, data);\n }\n\n /** 上报事件日志 */\n public event(params: IEventLogParams) {\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n // 这种方式容易接收垃圾参数\n // ...params,\n event1: params.event1 || '', // 一级事件。传模块名称(项目组自定义)\n event2: params.event2 || '', // 二级事件。可传活动日志中的活动名称(项目组自定义)\n event3: params.event3 || '', // 三级事件。可传活动日志中的活动id的子id名称(项目组自定义)\n event4: params.event4 || '', // 四级事件。预留字段\n value1: params.value1 || '', // 事件值1。传模块id(项目组自定义)\n value2: params.value2 || '', // 事件值2。可传活动日志中的活动id(项目组自定义)\n value3: params.value3 || '', // 事件值3。可传活动日志中的活动id的子id(项目组自定义)\n value4: params.value4 || '', // 事件值4。预留字段\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(EVENT)', data);\n this._request(this._eventUrl, data);\n }\n\n /** 上报用户行为、打点日志 */\n public act(params: IActiveLogParams) {\n // 行为日志上报参数\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n // 这种方式容易接收垃圾参数\n // ...params,\n actentryid: params.actentryid || '', // actentryid,业务活动ID,保证唯一性\n subactid: params.subactid || '', // subactid,子活动id,保证唯一性\n type: params.type || '', // type,类型:展现传“show”、点击传“click”、关闭传“close”\n custom: params.custom || '', // 业务自定义参数\n batchid: params.batchid || '', // 批次号\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(ACT)', data);\n this._request(this._actUrl, data);\n }\n\n /** 上报广告日志 */\n public ad(params: IAdLogParams) {\n // 行为日志上报参数\n const data: ICommonParams & IAdLogParams = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n type: params.type || '', // 场景描述。preload=预加载;load=加载;show=展现;close=关闭;cancel=中途关闭;click=点击\n code: params.code || '', // 本次场景执行是否成功。0=成功;其他code表示报表,用平台返回的code填充\n codeinfo: params.codeinfo || '', // code对应的释义。code=0时填充成功;code=其他值时,用平台返回的异常填充\n pagetype: params.pagetype || '', // 一级广告位。由业务方自行定义,可用于模块化统计广告数据\n gametype: params.gametype || '', // 二级广告位:业务端自定义,用于区分不同广告场景的数据,例:观看激励视频获取撤回道具,gametype定义为chehuiljsp\n adslot: params.adslot || '', // 广告位类型。banner=bannel广告位;rewardvideo=激励视频广告位;flow=信息流广告位;lnterstitial=插屏广告;videobegin=视频前贴片广告位;videobehind=视频后贴片广告\n adunitid: params.adunitid || '', // 代码位ID\n adbatchid: params.adbatchid || '', // 本次广告的唯一id(广告批次号)\n ecpm: params.ecpm || '', // 广告的预估收益\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(AD)', data);\n this._request(this._adUrl, data, 'application/json');\n }\n\n private _sendOnline() {\n const _endTime = Date.now();\n // 在线时长日志上报参数\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n onlinetime: `${_endTime - this._startTime}`, // 在线时长(毫秒)\n endtime: _endTime.toString(), // 结束时间(毫秒时间戳)\n starttime: this._startTime.toString(), // 开始时间(毫秒时间戳)\n };\n this._online([data]);\n }\n\n private _setOnlineBatchData(batch: Array<IOnlineLogParamsWithCommon>) {\n this._setStorage('ONLINE_BACH_DATA', batch);\n }\n\n private _getOnlineBatchData(): Array<IOnlineLogParamsWithCommon> | '' {\n return this._getStorage('ONLINE_BACH_DATA');\n }\n\n private _clearOnlineBatchData() {\n this._setStorage('ONLINE_BACH_DATA', '');\n }\n\n private _online(batch: Array<IOnlineLogParamsWithCommon>) {\n !!this._consoleLog && console.log('[XLOG] PARAMS(ONLINE)', batch);\n // 清除缓存\n this._clearOnlineBatchData();\n this._request(this._onlineUrl, { batch: JSON.stringify(batch) }).catch((err) => {\n // 如果失败,需要将当前批次的请求数据batch缓存(下次启动的时候再发送)\n this._setOnlineBatchData(batch);\n });\n }\n}\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","getDateStr","now","Date","year","getFullYear","toString","month","getMonth","day","getDate","substr","Number","merge","o1","o2","tempO1","tempO2","keys","forEach","k","EGender","XLog","_a","domain","commonParams","_b","isPro","_c","sendOpenLog","_d","consoleLog","version","buildDate","_openUrl","_eventUrl","_actUrl","_adUrl","_onlineUrl","_startTime","_commonParams","_isPro","_sendOpenLog","_isColdStartUp","_systemInfo","_mp","_consoleLog","_f","_getApis","openUrl","eventUrl","actUrl","adUrl","onlineUrl","obj","_g","_getMp","mp","platform","_platform","constructor","console","error","log","_e","getSystemInfoSync","_extraInfo","language","wxVersion","SDKVersion","benchmarkLevel","theme","_init","defineProperty","get","_this","_initCommonParams","_filterParams","_coldStartUp","_visibilityChange","_getNetworkType","then","networkType","_updateCommonParams","network","_open","openway","onlineBatchData","_getOnlineBatchData","_online","_sendOnline","tt","ks","swan","qq","wx","my","jd","onShow","onHide","onAppShow","onAppHide","_getStorage","key","getStorageSync","concat","_setStorage","value","setStorageSync","_getBatchId","bid","radix","chars","split","uuid","rnd","Math","random","len","rad","join","generateId","defaultDomain","open","event","act","ad","online","dm","_cacheCommonParams","JSON","stringify","_getInitParams","appcqid","appqid","os","osversion","system","device","model","devicebrand","brand","pixel","screenWidth","screenHeight","userinfo","_getUserInfo","receivedCommonParams","cps","parse","obatchid","Promise","resolve","getNetworkType","success","res","fail","userInfo","uip","ui","params","_params","v","includes","setParams","originOpenid","openid","originUnionid","unionid","isreturn","appver","appverint","ver","map","transferVersion","_getAppqid","_request","url","data","contentType","reject","request","method","header","querystring","launchOptions","getEnterOptionsSync","getLaunchOptionsSync","query","wakeway","scene","xmlog","event1","event2","event3","event4","value1","value2","value3","value4","actentryid","subactid","type","custom","batchid","code","codeinfo","pagetype","gametype","adslot","adunitid","adbatchid","ecpm","_endTime","onlinetime","endtime","starttime","_setOnlineBatchData","batch","_clearOnlineBatchData","catch","err"],"mappings":";;;;;oEA+BO,IAAIA,EAAW,WAQlB,OAPAA,EAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,CACV,EACMH,EAASa,MAAMC,KAAMP,UAChC,WC4BgBQ,IACd,IAAMC,EAAM,IAAIC,KACZC,EAAOF,EAAIG,cAAcC,WACzBC,GAASL,EAAIM,WAAa,GAAGF,WAC7BG,EAAMP,EAAIQ,UAAUJ,WAIxB,OAHAF,EAAOA,EAAKE,WAAWK,QAAQ,KAC/BJ,EAAQK,OAAOL,GAAS,GAAK,IAAMA,EAAQA,IAC3CE,EAAMG,OAAOH,GAAO,GAAK,IAAMA,EAAMA,EAEvC,CAsCgB,SAAAI,EACdC,EACAC,GAEA,IAAMC,EAAM9B,EAAA,CAAA,EAAQ4B,GACdG,EAAM/B,EAAA,CAAA,EAAQ6B,GAOpB,OALA5B,OAAO+B,KAAKF,GAAQG,SAAQ,SAACC,GACtBH,EAAOG,WACHH,EAAOG,EAElB,IACYlC,EAAAA,EAAA,CAAA,EAAA8B,GAAWC,EACzB,CChIO,ICAKI,EAAAA,QAIXA,aAAA,GAJWA,EAAAA,QAAOA,UAAPA,gBAIX,CAAA,IAHCA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,OAAA,GAAA,SCgCF,IAAAC,EAAA,WAkCE,SAAAA,EAAYC,SACVC,EAAMD,EAAAC,OACNC,EAAYF,EAAAE,aACZC,UAAAC,OAAQ,IAAAD,GAAIA,EACZE,gBAAAC,OAAc,IAAAD,GAAIA,EAClBE,eAAAC,OAAa,IAAAD,GAAIA,EAtCnB9B,KAAOgC,QFpC6D,QEqCpEhC,KAASiC,UFnC+B,yBEqChCjC,KAAAkC,SAAW,GACXlC,KAAAmC,UAAY,GACZnC,KAAAoC,QAAU,GACVpC,KAAAqC,OAAS,GACTrC,KAAAsC,WAAa,GAEbtC,KAAAuC,WAAapC,KAAKD,MAIlBF,KAAawC,cAAkB,GAM/BxC,KAAMyC,QAAG,EAETzC,KAAY0C,cAAG,EAEf1C,KAAc2C,gBAAG,EAEjB3C,KAAW4C,YAAQ,GAEnB5C,KAAG6C,IAAQ,GAIX7C,KAAW8C,aAAG,EASpB9C,KAAKyC,OAASd,EACd3B,KAAK0C,aAAeb,EACpB7B,KAAK8C,YAAcf,EAEb,IAAAgB,EAAkD/C,KAAKgD,SAASxB,GAA9DyB,EAAOF,EAAAE,QAAEC,EAAQH,EAAAG,SAAEC,EAAMJ,EAAAI,OAAEC,EAAKL,EAAAK,MAAEC,EAASN,EAAAM,UACnDrD,KAAKkC,SAAWe,EAChBjD,KAAKmC,UAAYe,EACjBlD,KAAKoC,QAAUe,EACfnD,KAAKqC,OAASe,EACdpD,KAAKsC,WAAae,EAGZ,IHmBoBC,EGnBpBC,EAAmBvD,KAAKwD,SAAtBC,EAAEF,EAAAE,GAAEC,EAAQH,EAAAG,SACpB1D,KAAK6C,IAAMY,EACXzD,KAAK2D,UAAYD,GAEZD,IHeqBH,EGfDG,IHgBQ,IAA5BtE,OAAO+B,KAAKoC,GAAK5D,QAAgB4D,EAAIM,cAAgBzE,OGfxD0E,QAAQC,MAAM,kCAEZ9D,KAAK8C,aAAee,QAAQE,IAAI,gBAAiBN,GAGrD,IACEzD,KAAK4C,aAAwB,QAAVoB,EAAAhE,KAAK6C,WAAK,IAAAmB,OAAA,EAAAA,EAAAC,sBAAuB,CAAA,CAGrD,CAFC,MAAOH,GACPD,QAAQC,MAAM,iCAAkCA,EACjD,CACD9D,KAAKkE,WAAa,CAChBC,SAAUnE,KAAK4C,YAAYuB,SAC3BC,UAAWpE,KAAK4C,YAAYZ,QAC5BqC,WAAYrE,KAAK4C,YAAYyB,WAC7BC,eAAgBtE,KAAK4C,YAAY0B,iBAAmB,EACpDC,MAAOvE,KAAK4C,YAAY2B,OAG1BvE,KAAKwE,MAAM/C,EACZ,CAweH,OAriBEtC,OAAAsF,eAAWnD,EAAY1B,UAAA,eAAA,CAAvB8E,IAAA,WACE,OAAO1E,KAAKwC,aACb,kCA8DOlB,EAAK1B,UAAA4E,MAAb,SAAc/C,GAAd,IAoCCkD,EAAA3E,KAlCCA,KAAK4E,kBAAkB5E,KAAK6E,cAAcpD,IAG1CzB,KAAK8E,eAGL9E,KAAK+E,mBAEH,WAEOJ,EAAKhC,gBACRgC,EAAKK,kBAAkBC,MAAK,SAACC,GAC3BP,EAAKQ,oBAAoB,CAAEC,QAASF,IACpCP,EAAKU,MAAM,CAAEC,QAAS,GACxB,IAIFX,EAAKpC,WAAapC,KAAKD,MAGvB,IAAMqF,EAAkBZ,EAAKa,sBACzBD,GACFZ,EAAKc,QAAQF,EAEhB,IAED,WACEZ,EAAKhC,gBAAiB,EACtBgC,EAAKU,MAAM,CAAEC,QAAS,IAEtBX,EAAKe,aACP,KAKIpE,EAAA1B,UAAA4D,OAAR,WACE,IAAMF,EAAM,CACVG,GAAI,KACJC,SAAU,GAyBZ,MApBkB,oBAAPiC,IACTrC,EAAIG,GAAKkC,GACTrC,EAAII,SAAW,GACQ,oBAAPkC,IAChBtC,EAAIG,GAAKmC,GACTtC,EAAII,SAAW,GACU,oBAATmC,MAChBvC,EAAIG,GAAKoC,KACTvC,EAAII,SAAW,GACQ,oBAAPoC,IAChBxC,EAAIG,GAAKqC,GACTxC,EAAII,SAAW,GACQ,oBAAPqC,IAChBzC,EAAIG,GAAKsC,GACTzC,EAAII,SAAW,GACQ,oBAAPsC,GAChB1C,EAAIG,GAAKuC,GACc,oBAAPC,KAChB3C,EAAIG,GAAKwC,IAEJ3C,GAGDhC,EAAA1B,UAAAmF,kBAAR,SAA0BmB,EAA+BC,GAAzD,YAiBCxB,EAAA3E,UAjByB,IAAAkG,IAAAA,aAA6B,QAAE,IAAAC,IAAAA,aAAiB,GACxE,IAEE,IAAMC,GAAsB,QAAV7E,EAAAvB,KAAK6C,WAAK,IAAAtB,OAAA,EAAAA,EAAA6E,qBAAa1E,EAAA1B,KAAK6C,0BAAKqD,SAAW,WAAQ,EAChEG,GAAsB,QAAVzE,EAAA5B,KAAK6C,WAAK,IAAAjB,OAAA,EAAAA,EAAAyE,qBAAavE,EAAA9B,KAAK6C,0BAAKsD,SAAW,WAAQ,EACtEC,GAAU,WACNzB,EAAK7B,aAAee,QAAQE,IAAI,oBAClCmC,GACF,IAEAG,GAAU,WACN1B,EAAK7B,aAAee,QAAQE,IAAI,oBAClCoC,GACF,GAGD,CAFC,MAAOrC,GACPD,QAAQC,MAAM,sCAAuCA,EACtD,GAIKxC,EAAW1B,UAAA0G,YAAnB,SAAoBC,SAClB,IACE,OAAe,QAARhF,EAAAvB,KAAK6C,WAAG,IAAAtB,OAAA,EAAAA,EAAEiF,eAAe,WAAWC,OAAAF,GAG5C,CAFC,MAAOzC,GACPD,QAAQC,MAAM,8BAA+BA,EAC9C,GAIKxC,EAAA1B,UAAA8G,YAAR,SAAoBH,EAAaI,SAC/B,IACU,QAARpF,EAAAvB,KAAK6C,WAAG,IAAAtB,GAAAA,EAAEqF,eAAe,WAAWH,OAAAF,GAAOI,EAG5C,CAFC,MAAO7C,GACPD,QAAQC,MAAM,8BAA+BA,EAC9C,GAIKxC,EAAA1B,UAAAiH,YAAR,WACE,IAAIC,EAAM9G,KAAKsG,YAAY,YAK3B,OAJKQ,IAAO9G,KAAK2C,iBACfmE,EHnNU,SAAWpH,EAAaqH,QAAb,IAAArH,IAAAA,EAAW,SAAE,IAAAqH,IAAAA,EAAS,GAM/C,IALA,IAAMC,EAAQ,iEAAiEC,MAAM,IAC/EC,EAAO,GACPC,EAAMC,KAAKC,OACXC,EAAM5H,EACN6H,EAAMR,GAASC,EAAMtH,OAClBH,EAAI,EAAGA,EAAI+H,EAAK/H,IACvB2H,EAAK3H,GAAKyH,EAAM,EAAKG,IAAQI,GAE/B,OAAOL,EAAKM,KAAK,GACnB,CGyMYC,GACNzH,KAAK0G,YAAY,WAAYI,IAExBA,GAGDxF,EAAA1B,UAAAkF,aAAR,WAAA,IASCH,EAAA3E,KARCA,KAAKgF,kBAAkBC,MAAK,SAACC,GAC3BP,EAAKQ,oBAAoB,CAAEC,QAASF,IACpCP,EAAKU,MAAM,CAAEC,QAAS,GAKxB,KAIMhE,EAAQ1B,UAAAoD,SAAhB,SAAiBxB,GAEf,IAAMkG,EAAyB1H,KAAKyC,OAChC,CACEkF,KAAM,uBACNC,MAAO,wBACPC,IAAK,sBACLC,GAAI,sBACJC,OAAQ,uBAEV,CACEJ,KAAM,4BACNC,MAAO,6BACPC,IAAK,2BACLC,GAAI,2BACJC,OAAQ,4BAERC,EACD9I,EAAAA,EAAA,CAAA,EAAAwI,GACAlG,GAEL,MAAO,CACLyB,QAAS,WAAAwD,OAAWuB,EAAGL,KAAoC,kCAC3DzE,SAAU,WAAAuD,OAAWuB,EAAGJ,MAAsC,mCAC9DzE,OAAQ,WAAAsD,OAAWuB,EAAGH,IAAuC,sCAC7DzE,MAAO,WAAAqD,OAAWuB,EAAGF,GAAiC,iCACtDzE,UAAW,WAAWoD,OAAAuB,EAAGD,OAAM,0CAQ3BzG,EAAkB1B,UAAAqI,mBAA1B,SAA2B3E,GACzBtD,KAAK0G,YAAY,gBAAiBwB,KAAKC,UAAU7E,KAG3ChC,EAAA1B,UAAAwI,eAAR,WACE,MAAO,CACL1E,SAAU1D,KAAK2D,UACf0E,QF1RqB,UE2RrBC,OF3RqB,UE2RCrI,IACtBsI,GAAIvI,KAAK4C,YAAYc,SACrB8E,UAAWxI,KAAK4C,YAAY6F,QAAUzI,KAAK4C,YAAY6F,OAAOxB,MAAM,KAAK,GACzEyB,OAAQ1I,KAAK4C,YAAY+F,MACzBC,YAAa5I,KAAK4C,YAAYiG,MAC9BC,MAAO9I,KAAK4C,YAAYmG,YAAc,IAAM/I,KAAK4C,YAAYoG,aAC7DC,SAAUjJ,KAAKkJ,iBAIX5H,EAAiB1B,UAAAgF,kBAAzB,SAA0BuE,GACxB,IAAI1H,EAA8BzB,KAAKoI,iBACjCgB,EAAMpJ,KAAKsG,YAAY,iBACzB8C,IAEF3H,EAAYvC,EAAAA,EAAA,GAAQuC,GAAiByG,KAAKmB,MAAMD,KAGlD3H,EAAe0H,EAAuBtI,EAAMY,EAAc0H,GAAwB1H,EAClFzB,KAAKmF,oBACAjG,EAAAA,EAAA,CAAA,EAAAuC,GACH,CAAA6H,SAAUtJ,KAAK6G,kBAIXvF,EAAA1B,UAAAoF,gBAAR,WAAA,IAiBCL,EAAA3E,KAhBC,OAAO,IAAIuJ,SAAgB,SAACC,SAC1B,IACU,QAARjI,EAAAoD,EAAK9B,WAAG,IAAAtB,GAAAA,EAAEkI,eAAe,CAEvBC,iBAAQC,GACNH,EAAQG,EAAIzE,YACb,EACD0E,KAAI,WACFJ,EAAQ,OACT,GAKJ,CAHC,MAAO1F,GACP0F,EAAQ,QACR3F,QAAQC,MAAM,8BAA+BA,EAC9C,CACH,KAQMxC,EAAY1B,UAAAsJ,aAApB,SAAqBW,GACnB,IAAIC,EAAM,CAAA,EACV,GAAID,EACF,IACEC,EAAM5B,KAAKmB,MAAMQ,EAGlB,CAFC,MAAO/F,GACPD,QAAQC,MAAM,gEACf,CAGH,IAAIiG,EAAK,CAAA,EACT,GAAI/J,KAAKyB,aAAawH,SACpB,IACEc,EAAK7B,KAAKmB,MAAMrJ,KAAKyB,aAAawH,SAGnC,CAFC,MAAOnF,GACPD,QAAQC,MAAM,qBAAsBA,EACrC,CAEH,OAAOoE,KAAKC,UAASjJ,EAAAA,EAAAA,EAAA,CAAA,EAChBc,KAAKkE,YACL6F,GACAD,KAKCxI,EAAa1B,UAAAiF,cAArB,SAAsBmF,GACpB,IAAMC,EAAyB,CAAA,EAE/B,GAAID,EAAQ,CACV,IAAM9I,EAAO,CACX,SACA,UACA,QACA,YACA,UACA,SACA,SACA,YAEF,IAAK,IAAME,KAAK4I,EAAQ,CACtB,IAAME,EAAIF,EAAO5I,GACbF,EAAKiJ,SAAS/I,IAAM8I,IACtBD,EAAQ7I,GAA4B8I,EAEvC,CACF,CACD,OAAOD,GAIF3I,EAAS1B,UAAAwK,UAAhB,SAAiBJ,GACf,GAAIA,EAAQ,CACRhK,KAAK8C,aAAee,QAAQE,IAAI,mBAAoBiG,GAEtD,IAAMK,EAAerK,KAAKwC,cAAc8H,OAClCC,EAAgBvK,KAAKwC,cAAcgI,QAEzCR,EAAShK,KAAK6E,cAAcmF,GAE5BhK,KAAKmF,oBAAoB6E,IAGtBA,EAAOM,QAAUN,EAAOM,SAAWD,GACnCL,EAAOQ,SAAWR,EAAOQ,UAAYD,IAEtCvK,KAAKqF,MAAM,CAAEoF,SAAUT,EAAOM,OAAS,EAAI,EAAGhF,QAAS,GAE1D,GAIKhE,EAAmB1B,UAAAuF,oBAA3B,SAA4B6E,GACxBhK,KAAK8C,aAAee,QAAQE,IAAI,6BAA8BiG,GAC5DA,EAAOf,WACTe,EAAOf,SAAWjJ,KAAKkJ,aAAac,EAAOf,WAEzCe,EAAO3B,UACT2B,EAAO1B,OAAS0B,EAAO3B,QAAUpI,KAE/B+J,EAAOU,SACTV,EAAOW,UHpXP,SAA0BC,GAC9B,IACE,OAAKA,GAAsB,iBAARA,EAGZA,EACJ3D,MAAM,KACN4D,KAAI,SAACrL,GACJ,OAAiB,IAAbA,EAAEE,OACG,IAAMF,EAERA,CACT,IACCgI,KAAK,IAVC,EAcV,CAHC,MAAO1D,GAEP,OADAD,QAAQC,MAAM,0BAAA2C,OAA0BmE,EAAY,WAAE9G,GAC/C,EACR,CACH,CGkWyBgH,CAAgBd,EAAOU,SAE5C1K,KAAKwC,cAAgB3B,EAAMb,KAAKwC,cAAewH,GAC/ChK,KAAKiI,mBAAmBjI,KAAKwC,gBAIvBlB,EAAA1B,UAAAmL,WAAR,WAEE,OAAO/K,KAAKwC,cAAc6F,QAAUpI,KAG9BqB,EAAA1B,UAAAoL,SAAR,SACEC,EACAC,EACAC,GAHF,IA2BCxG,EAAA3E,KAtBC,YAFA,IAAAmL,IAAAA,EAAiD,qCAE1C,IAAI5B,SAAQ,SAACC,EAAS4B,SAC3B,IACU,QAAR7J,EAAAoD,EAAK9B,WAAG,IAAAtB,GAAAA,EAAE8J,QAAQ,CAChBJ,IAAGA,EACHC,KAAIA,EACJI,OAAQ,OACRC,OAAQ,CACN,eAAgBJ,GAElBzB,QAAS,SAACC,GACNhF,EAAK7B,aAAee,QAAQE,IAAI,mBAAA0C,OAAmBwE,GAAOC,EAAMvB,GAClEH,EAAQG,EACT,EACDC,KAAM,SAACD,GACHhF,EAAK7B,aAAee,QAAQE,IAAI,gBAAA0C,OAAgBwE,GAAOC,EAAMvB,GAC/DyB,EAAOzB,EACR,GAIJ,CAFC,MAAO7F,GACPD,QAAQC,MAAM,uBAAwBA,EACvC,CACH,KAGKxC,EAAI1B,UAAA+H,KAAX,SAAYqC,GACVhK,KAAKqF,MAAM,CACTmG,YAAaxB,EAAOwB,YACpBf,SAAU,EACVnF,QAAS,KAKLhE,EAAK1B,UAAAyF,MAAb,SAAc2E,WACRyB,EAA+C,KACnD,IAEEA,YACElK,EAAAvB,KAAK6C,0BAAK6I,uBACF,QAARhK,EAAA1B,KAAK6C,WAAG,IAAAnB,OAAA,EAAAA,EAAEiK,uBACV,WAAS,IAIZ,CAFC,MAAO7H,GACPD,QAAQC,MAAM,mCAAoCA,EACnD,CAkBD,IAjBI2H,eAAAA,EAAeG,OAKjB5L,KAAKmF,oBAAoB,CACvB8D,SAAUf,KAAKC,UAAU,CACvBqD,YAAWtM,EAAAA,EAAA,CAAA,EAAOuM,EAAcG,OAAU5B,EAAOwB,iBAIrDxL,KAAKmF,oBAAoB,CACvB8D,SAAUf,KAAKC,UAAU,CACvBqD,YAAaxB,EAAOwB,gBAIrBxL,KAAK0C,aAAV,CACA,IAAMwI,SACDlL,KAAKwC,eACR,CAAA8F,OAAQtI,KAAK+K,aACbc,QAAS7B,EAAO6B,UAAWJ,aAAA,EAAAA,EAAeK,QAAS,GACnDxG,QAAS0E,EAAO1E,QAChBmF,SAAUT,EAAOS,UAAY,EAC7BsB,MFtfgE,UEwfhE/L,KAAK8C,aAAee,QAAQE,IAAI,sBAAuBmH,GACzDlL,KAAKgL,SAAShL,KAAKkC,SAAUgJ,EAVE,GAc1B5J,EAAK1B,UAAAgI,MAAZ,SAAaoC,GACX,IAAMkB,EACDhM,EAAAA,EAAA,GAAAc,KAAKwC,eACR,CAAA8F,OAAQtI,KAAK+K,aAGbiB,OAAQhC,EAAOgC,QAAU,GACzBC,OAAQjC,EAAOiC,QAAU,GACzBC,OAAQlC,EAAOkC,QAAU,GACzBC,OAAQnC,EAAOmC,QAAU,GACzBC,OAAQpC,EAAOoC,QAAU,GACzBC,OAAQrC,EAAOqC,QAAU,GACzBC,OAAQtC,EAAOsC,QAAU,GACzBC,OAAQvC,EAAOuC,QAAU,KAEzBvM,KAAK8C,aAAee,QAAQE,IAAI,uBAAwBmH,GAC1DlL,KAAKgL,SAAShL,KAAKmC,UAAW+I,IAIzB5J,EAAG1B,UAAAiI,IAAV,SAAWmC,GAET,IAAMkB,EACDhM,EAAAA,EAAA,GAAAc,KAAKwC,eACR,CAAA8F,OAAQtI,KAAK+K,aAGbyB,WAAYxC,EAAOwC,YAAc,GACjCC,SAAUzC,EAAOyC,UAAY,GAC7BC,KAAM1C,EAAO0C,MAAQ,GACrBC,OAAQ3C,EAAO2C,QAAU,GACzBC,QAAS5C,EAAO4C,SAAW,KAE3B5M,KAAK8C,aAAee,QAAQE,IAAI,qBAAsBmH,GACxDlL,KAAKgL,SAAShL,KAAKoC,QAAS8I,IAIvB5J,EAAE1B,UAAAkI,GAAT,SAAUkC,GAER,IAAMkB,EACDhM,EAAAA,EAAA,GAAAc,KAAKwC,eAAa,CACrB8F,OAAQtI,KAAK+K,aACb2B,KAAM1C,EAAO0C,MAAQ,GACrBG,KAAM7C,EAAO6C,MAAQ,GACrBC,SAAU9C,EAAO8C,UAAY,GAC7BC,SAAU/C,EAAO+C,UAAY,GAC7BC,SAAUhD,EAAOgD,UAAY,GAC7BC,OAAQjD,EAAOiD,QAAU,GACzBC,SAAUlD,EAAOkD,UAAY,GAC7BC,UAAWnD,EAAOmD,WAAa,GAC/BC,KAAMpD,EAAOoD,MAAQ,KAErBpN,KAAK8C,aAAee,QAAQE,IAAI,oBAAqBmH,GACvDlL,KAAKgL,SAAShL,KAAKqC,OAAQ6I,EAAM,qBAG3B5J,EAAA1B,UAAA8F,YAAR,WACE,IAAM2H,EAAWlN,KAAKD,MAEhBgL,EACDhM,EAAAA,EAAA,CAAA,EAAAc,KAAKwC,gBACR8F,OAAQtI,KAAK+K,aACbuC,WAAY,GAAA7G,OAAG4G,EAAWrN,KAAKuC,YAC/BgL,QAASF,EAAS/M,WAClBkN,UAAWxN,KAAKuC,WAAWjC,aAE7BN,KAAKyF,QAAQ,CAACyF,KAGR5J,EAAmB1B,UAAA6N,oBAA3B,SAA4BC,GAC1B1N,KAAK0G,YAAY,mBAAoBgH,IAG/BpM,EAAA1B,UAAA4F,oBAAR,WACE,OAAOxF,KAAKsG,YAAY,qBAGlBhF,EAAA1B,UAAA+N,sBAAR,WACE3N,KAAK0G,YAAY,mBAAoB,KAG/BpF,EAAO1B,UAAA6F,QAAf,SAAgBiI,GAAhB,IAQC/I,EAAA3E,KAPGA,KAAK8C,aAAee,QAAQE,IAAI,wBAAyB2J,GAE3D1N,KAAK2N,wBACL3N,KAAKgL,SAAShL,KAAKsC,WAAY,CAAEoL,MAAOxF,KAAKC,UAAUuF,KAAUE,OAAM,SAACC,GAEtElJ,EAAK8I,oBAAoBC,EAC3B,KAEHpM,CAAD"}
|
package/dist/mp.min.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mp.min.js","sources":["../node_modules/.pnpm/tslib@2.4.0/node_modules/tslib/tslib.es6.js","../src/utils/index.ts","../src/config/index.ts","../src/types/index.ts","../src/mp.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { getStorage, setStorage } from './storage';\n\n/**\n * 生成唯一标识uid(ms时间戳 + 6位(16进制)随机数)\n * @returns {string} uid\n */\nexport function generateUid() {\n return Date.now().toString() + Math.random().toString(16).substring(2, 8);\n}\n\n/**\n * 生成唯一uuid,可以指定长度和基数\n * @param {number} length 长度,默认18\n * @param {number} radix 基数,如2,8,10,16等\n */\nexport function generateId(length = 18, radix = 0) {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');\n const uuid = [];\n const rnd = Math.random;\n const len = length;\n const rad = radix || chars.length;\n for (let i = 0; i < len; i++) {\n uuid[i] = chars[0 | (rnd() * rad)];\n }\n return uuid.join('');\n}\n\n/**\n * 获取 uid\n */\nexport function getId(name = 'UID') {\n let uid = getStorage(name);\n if (!uid) {\n uid = generateId();\n setStorage(name, uid);\n }\n return uid;\n}\n\n/**\n * 版本号转换:1.1.1 >> 010101,大小版本号不超过2位数字,最大99.99.99\n * @param {string} ver 版本号,如:1.1.1\n * @returns {string} 转换之后的版本,如:010101\n */\nexport function transferVersion(ver: string) {\n try {\n if (!ver || typeof ver !== 'string') {\n return '';\n }\n return ver\n .split('.')\n .map((n) => {\n if (n.length === 1) {\n return '0' + n;\n }\n return n;\n })\n .join('');\n } catch (error) {\n console.error(`[transferVersion] ver(\"${ver}\")格式异常:`, error);\n return '';\n }\n}\n\n/**\n * 获取日期字符串,如:200729\n * @returns {string} 日期字符串\n */\nexport function getDateStr(): string {\n const now = new Date();\n let year = now.getFullYear().toString();\n let month = (now.getMonth() + 1).toString();\n let day = now.getDate().toString();\n year = year.toString().substr(-2);\n month = Number(month) < 10 ? '0' + month : month;\n day = Number(day) < 10 ? '0' + day : day;\n return year + month + day;\n}\n\nexport function json2params(json: Record<string | number, any>) {\n return Object.keys(json)\n .map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(json[k]);\n })\n .join('&');\n}\n\nexport function urlParams2Json(ignoreKeys: string[] = [], url = location.href) {\n const u = new URL(url);\n const s = u.search.substring(1);\n const json: Record<string | number, any> = {};\n if (s) {\n s.split('&').forEach((kv) => {\n json[kv.split('=')[0]] = kv.split('=')[1];\n });\n }\n\n Object.keys(json).forEach((k) => {\n if (ignoreKeys.includes(k)) delete json[k];\n });\n\n return json;\n}\n\nexport const isPlainObject = (val: any) =>\n Object.prototype.toString.call(val) === '[object Object]';\n\nexport const isObjectEmpty = (obj: any) =>\n obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n\n/**\n * 两个对象合并\n * @param o1 对象1\n * @param o2 对象2\n */\nexport function merge(\n o1: Record<string | number, any>,\n o2: Record<string | number, any>\n): Record<string | number, any> {\n const tempO1 = { ...o1 };\n const tempO2 = { ...o2 };\n // 删除tempO2的空值,防止其覆盖tempO1已存在的值。(防止空值覆盖已有值)\n Object.keys(tempO1).forEach((k) => {\n if (!tempO2[k]) {\n delete tempO2[k];\n }\n });\n return { ...tempO1, ...tempO2 };\n}\n\n// 多个(嵌套)对象合并\nexport function deepMerge(target: any, ...sources: any[]): any {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (source && typeof source === 'object') {\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object') {\n if (!target[key]) Object.assign(target, { [key]: {} });\n deepMerge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return deepMerge(target, ...sources);\n}\n\n// Determine the current display mode.\nexport function isPWA() {\n // // 判断是否在 iOS 的全屏模式(PWA)中打开\n // if (navigator.standalone) {\n // return true;\n // }\n\n // // 判断是否在 Android 的全屏模式(PWA)中打开\n // if (window.matchMedia('(display-mode: standalone)').matches) {\n // return true;\n // }\n\n // // 默认返回 false,表示网页在浏览器中打开\n // return false;\n\n const getDisplayMode = () =>\n navigator.standalone || window.matchMedia('(display-mode: standalone)').matches\n ? 'standalone'\n : 'browser';\n return getDisplayMode() === 'standalone';\n}\n\nexport function isMobileDevice() {\n const userAgent = navigator.userAgent;\n const mobileKeywords = [\n 'Android',\n 'webOS',\n 'iPhone',\n 'iPad',\n 'iPod',\n 'BlackBerry',\n 'Windows Phone',\n ];\n\n return mobileKeywords.some((keyword) => userAgent.includes(keyword));\n}\n\nexport const getPlatform = () => (isPWA() ? 'pwa' : isMobileDevice() ? 'h5' : 'pc');\n\nexport function getUtcOffset() {\n const date = new Date();\n const offset = date.getTimezoneOffset();\n const hours = Math.abs(Math.floor(offset / 60));\n // const minutes = Math.abs(offset % 60);\n const sign = offset > 0 ? '-' : '+';\n\n return `${sign}${hours}`;\n}\n","export const SDK_VERSION = typeof __BUILD_VERSION__ !== 'undefined' ? __BUILD_VERSION__ : '0.0.0';\nexport const BUILD_DATE =\n typeof __BUILD_DATE__ !== 'undefined' ? __BUILD_DATE__ : String(new Date().toLocaleString());\nexport const DEFAULT_QID = 'organic';\n","export enum EGender {\n Unknown = 0,\n Male,\n Female,\n}\n\n// enum ENetwork {\n// Wifi = 'wifi',\n// TwoG = '2g',\n// ThreeG = '3g',\n// FourG = '4g',\n// FiveG = '5g',\n// Unknown = 'unknown',\n// None = 'none',\n// Null = 'null'\n// }\n\n// 接入方需要传入的参数\nexport interface TCommonParams {\n openid?: string; // 【web端由SDK内部处理】小程序&公众号用户唯一id;web端js生成唯一id\n unionid?: string; // 小程序&公众号用户平台id(同个用户在同个开放平台下的unionid相同);web端为空\n accid?: string; // 业务侧用户唯一id,可以为空,有accid的时候传accid\n apptypeid?: string; // 项目唯一识别符,如:步多多为100001\n appcqid?: string; // 根据产品自定义的默认渠道号(约定渠道参数key为f, 如 url?f=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'null')\n srcqid?: string; // 归因渠道。取启动参数里面配置的渠道号\n userinfo?: string; // 用户信息 如:'{\"appsubid\": \"123456\", ...}'\n appver?: string; // 小程序版本号,如:1.1.1;公众号等web项目无此参数\n}\n\n// 公共参数\nexport interface ICommonParams extends TCommonParams {\n appverint?: string; // 【SDK内部处理】小程序版本号转数值 ,如:010101;公众号等web项目无此参数\n platform?: string | number; // 【SDK内部处理】 平台:0=微信公众号;1=微信小程序;2=字节小程序;3=快手小程序;4=百度小程序;5=QQ小程序;6=快应用;7=web\n appqid?: string; // 【SDK内部处理】渠道+日期,如:appstore160616;wandoujia160616\n os?: string; // 【SDK内部处理】操作系统,如:android、ios\n osversion?: string; // 【SDK内部处理】操作系统版本号,如:7.0\n device?: string; // 【SDK内部处理】客户端手机型号,如:xiaomi6\n devicebrand?: string; // 【SDK内部处理】机型品牌,如:HUAWEI\n pixel?: string; // 【SDK内部处理】屏幕分辨率,如:1080*1920\n network?: string; // 【SDK内部处理】网络环境,如:wifi、4g、3g、2g、other\n obatchid?: string; // 【SDK内部处理】本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n}\n\n// 启动日志参数\nexport interface IOpenLogParams {\n openway: 0 | 1 | 5; // 启动方式。0=冷启动,1=热启动,5=切后台 (web无法区分冷、热启动,始终报0冷启动)\n wakeway?: string | number; // 唤醒方式。传小程序对应启动的场景值(web传'')\n xmlog: string; // xmlog sdk版本\n isreturn?: 0 | 1 | 2 | 3; // 启动日志补报,0=正常上报;1=获取到openid补报;2=获取到unionid补报 3=获取到querystring补报(接入方上报的启动日志)\n querystring?: Record<string | number, any>; // userinfo中的querystring参数\n}\n\n// 活动打点日志参数\nexport interface IActiveLogParams {\n actentryid?: string; // actentryid,业务活动ID,保证唯一性\n subactid?: string; // subactid,子活动id,保证唯一性\n type: 'show' | 'click' | 'close'; // type,类型:展现传“show”、点击传“click”、关闭传“close”\n custom: string; // (业务参数)业务自定义参数\n batchid: string; // (业务参数)批次号\n}\n\n// 事件日志参数\nexport interface IEventLogParams {\n event1?: string; // 一级事件。传模块名称(项目组自定义)\n event2?: string; // 二级事件。可传活动日志中的活动名称(项目组自定义)\n event3?: string; // 三级事件。可传活动日志中的活动id的子id名称(项目组自定义)\n event4?: string; // 四级事件。预留字段\n value1?: string; // 事件值1。传模块id(项目组自定义)\n value2?: string; // 事件值2。可传活动日志中的活动id(项目组自定义)\n value3?: string; // 事件值3。可传活动日志中的活动id的子id(项目组自定义)\n value4?: string; // 事件值4。预留字段\n}\n\n// 广告日志\nexport interface IAdLogParams {\n type: string; // 场景描述。preload=预加载;load=加载;show=展现;close=关闭;cancel=中途关闭;click=点击\n code?: string; // 本次场景执行是否成功。0=成功;其他code表示报表,用平台返回的code填充\n codeinfo?: string; // code对应的释义。code=0时填充成功;code=其他值时,用平台返回的异常填充\n pagetype?: string; // 一级广告位。由业务方自行定义,可用于模块化统计广告数据\n gametype?: string; // 二级广告位:业务端自定义,用于区分不同广告场景的数据,例:观看激励视频获取撤回道具,gametype定义为chehuiljsp\n adslot?: string; // 广告位类型。banner=bannel广告位;rewardvideo=激励视频广告位;flow=信息流广告位;lnterstitial=插屏广告;videobegin=视频前贴片广告位;videobehind=视频后贴片广告\n adunitid?: string; // 代码位ID\n adbatchid?: string; // 本次广告的唯一id(广告批次号)\n ecpm?: string; // 广告的预估收益\n}\n\n// 在线时长日志参数\nexport interface IOnlineLogParams {\n onlinetime?: string; // 在线时长(毫秒)\n endtime?: string; // 结束时间(毫秒时间戳)\n starttime: string; // 开始时间(毫秒时间戳)\n}\n\nexport type IOnlineLogParamsWithCommon = ICommonParams & IOnlineLogParams;\n\nexport interface IUserInfo {\n [k: string | number]: any;\n}\n\nexport interface IExtraInfo extends IUserInfo {\n language: string; // 微信设置的语言\n wxVersion: string; // 微信版本号\n SDKVersion: string; // 微信客户端基础库版本\n benchmarkLevel: number; // 设备性能等级(仅Android小游戏)。取值为:-2 或 0(该设备无法运行小游戏),-1(性能未知),>=1(设备性能值,该值越高,设备性能越好,目前最高不到50)\n theme: string; // 系统当前主题,取值为light或dark,全局配置\"darkmode\":true时才能获取,否则为 undefined (不支持小游戏)\n}\n\nexport interface IDomain {\n open?: string; // 启动日志上报接口\n act?: string; // 打点日志上报接口\n ad?: string; // 广告日志上报接口\n event?: string; // 事件日志上报接口\n online?: string; // 在线时长日志上报接口\n}\n\nexport interface IDomainWithEnv {\n testing: IDomain;\n prod: IDomain;\n}\n\nexport interface MiniprogramShowOptions {\n path: string; // 启动小程序的路径 (代码包路径)\n scene: number; // 启动小程序的场景值\n query: Record<string | number, any>; // 启动小程序的 query 参数\n shareTicket: string; // shareTicket,详见获取更多转发信息\n // 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 {}。\n referrerInfo: {\n appId: string; // 来源小程序、公众号或 App 的 appId\n extraData: Record<string | number, any>; // 来源小程序传过来的数据,scene=1037或1038时支持\n };\n}\n\nexport type TPlatform = 'h5' | 'pc' | 'pwa';\n\nexport interface InitParams {\n isPro?: boolean;\n domain?: IDomain;\n commonParams?: TCommonParams;\n sendOpenLog?: boolean;\n consoleLog?: boolean;\n}\n\n// 接入方需要传入的参数\nexport interface THwCommonParams {\n openid?: string; // 平台唯一id(如line的唯一ID)\n accid?: string; // 业务侧用户唯一id,可以为空,有accid的时候传accid\n apptypeid?: string; // 项目唯一识别符,如:步多多为100001\n appcqid?: string; // 根据产品自定义的默认渠道号(约定渠道参数key为f, 如 url?f=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'null')\n appver?: string; // 版本号,如:1.1.1\n userinfo?: string; // 用户信息(sdk内部会添加platform字段) 如:'{\"appsubid\": \"123456\", ...}'\n region?: string; // 国家/地区,从服务端接口获取\n province?: string; // 二级地区,从服务端接口获取\n srcinfo?: string; // 来源于归因方的归因信息(暂无)\n platform?: string; // 平台,h5/pc/pwa/……,SDK内部只简单分类:'h5' | 'pc' | 'pwa',如业务有不同的平台值需要对接方传入。\n uid?: string; // SDK内部会生成网页用户唯一id,对接方一般不需要处理,有特殊需求的情况下除外。\n}\n\n// 公共参数\nexport interface IHwCommonParams extends THwCommonParams {\n ua?: string; // 【SDK内部处理】userAgent\n timezone?: string; // 【SDK内部处理】所属时区 上报值范围(-12 ~ 0 ~ 12) 例如: 菲律宾上报8 泰国报7\n device?: string; // 【SDK内部处理】客户端手机型号,如:xiaomi6\n devicebrand?: string; // 【SDK内部处理】机型品牌,如:HUAWEI\n os?: string; // 【SDK内部处理】操作系统,如:android、ios\n osversion?: string; // 【SDK内部处理】操作系统版本号,如:7.0\n pixel?: string; // 【SDK内部处理】屏幕分辨率,如:1080*1920\n network?: string; // 【SDK内部处理】网络环境,如:wifi、4g、3g、2g、other\n url?: string; // 【SDK内部处理】当前URL地址\n obatchid?: string; // 【SDK内部处理】本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n xmlog?: string; // xm sdk version\n}\n\nexport interface IHwDomain {\n open?: string; // 启动日志上报接口\n act?: string; // 打点日志上报接口\n ad?: string; // 广告日志上报接口\n}\n\nexport interface HwInitParams {\n isPro?: boolean; // 是否生产环境\n domain?: IHwDomain; // 域名\n commonParams?: THwCommonParams; // 公参\n sendOpenLog?: boolean; // 是否发送启动日志\n consoleLog?: boolean; // 控制台日志是否打印\n ignoreUrlParams?: string[]; // 公参userinfo -> querystring(url)中的需排除的参数\n}\n\n// 启动日志参数\nexport interface IHwOpenLogParams {\n openway: 0 | 1 | 5 | 6; // 启动方式。0=冷启动,1=热启动,5=切后台, 6=地理位置回传 (web无法区分冷、热启动,始终报0冷启动)\n platform_from?: string; // 进入此平台之前的上一个平台类型\n url_from?: string; // 进入此URL之前的上一个URL地址(暂传referer信息)\n}\n\n// 活动打点日志参数\nexport interface IHwActiveLogParams {\n actentryid?: string; // actentryid,业务活动ID,保证唯一性\n subactid?: string; // subactid,子活动id,保证唯一性\n type: 'show' | 'click' | 'close'; // type,类型:展现传“show”、点击传“click”、关闭传“close”\n memo1?: string; // 自定义字段1\n memo2?: string; // 自定义字段2\n memo3?: string; // 自定义字段3\n}\n// 广告日志\nexport interface IHwAdLogParams {\n type: string; // 场景描述。preload=预加载;load=加载;show=展现;close=关闭;cancel=中途关闭;click=点击\n code?: string; // 本次场景执行是否成功。0=成功;其他code表示报表,用平台返回的code填充\n codeinfo?: string; // code对应的释义。code=0时填充成功;code=其他值时,用平台返回的异常填充\n pagetype?: string; // 一级广告位。由业务方自行定义,可用于模块化统计广告数据\n gametype?: string; // 二级广告位:业务端自定义,用于区分不同广告场景的数据,例:观看激励视频获取撤回道具,gametype定义为chehuiljsp\n adslot?: string; // 广告位类型。banner=bannel广告位;rewardvideo=激励视频广告位;flow=信息流广告位;lnterstitial=插屏广告;videobegin=视频前贴片广告位;videobehind=视频后贴片广告\n adunitid?: string; // 代码位ID\n adbatchid?: string; // 本次广告的唯一id(广告批次号)\n ecpm?: string; // 广告的预估收益\n adfrom?: string; // 广告来源。google、facebook等\n}\n","import type {\n ICommonParams,\n IEventLogParams,\n IExtraInfo,\n IOpenLogParams,\n IActiveLogParams,\n IDomain,\n MiniprogramShowOptions,\n TCommonParams,\n IOnlineLogParamsWithCommon,\n InitParams,\n IAdLogParams,\n} from './types';\nimport { generateId, getDateStr, isObjectEmpty, merge, transferVersion } from './utils';\nimport { SDK_VERSION, BUILD_DATE, DEFAULT_QID } from './config';\n\ninterface IResSuccess {\n data: string | Record<string, any>; //\t开发者服务器返回的数据\n statusCode: string | number; // 开发者服务器返回的 HTTP 状态码\n header: Record<string, any>; //\t开发者服务器返回的 HTTP Response Header\n cookies?: Array<string>; // 开发者服务器返回的 cookies,格式为字符串数组\n profile?: Record<string, any>; // 网络请求过程中一些调试信息\n [k: string]: any;\n}\n\ninterface IResFail {\n errMsg: string; // 错误信息\n errno?: string | number; // errno 错误码(微信)\n errNo?: string | number; // errNo 错误码 (字节)\n [k: string]: any;\n}\n\n// 导出类型,方便调用者使用\nexport * from './types';\n\nexport class XLog {\n version = SDK_VERSION;\n buildDate = BUILD_DATE;\n // 正式服\n private _openUrl = ''; // 启动日志上报接口\n private _eventUrl = ''; // 在线日志上报接口\n private _actUrl = ''; // 活动(用户行为)日志上报接口\n private _adUrl = ''; // 广告日志上报接口\n private _onlineUrl = ''; // 在线时长日志上报接口\n // 开始时间(用于在线时长计算)\n private _startTime = Date.now();\n // 扩展参数\n private _extraInfo?: IExtraInfo;\n // 公共参数\n private _commonParams: ICommonParams = {};\n // 获取公共参数\n public get commonParams(): ICommonParams {\n return this._commonParams;\n }\n // 环境变量,true:生产环境;false:测试环境,默认生产环境\n private _isPro = true;\n // 是否发送启动日志,true:发送;false:不发送,默认发送\n private _sendOpenLog = true;\n // 冷启动标记\n private _isColdStartUp = true;\n // 系统信息\n private _systemInfo: any = {};\n // 小程序对象\n private _mp: any = {};\n // 日志专用平台参数\n private _platform: any;\n // 控制台是否打印日志\n private _consoleLog = true;\n // 构造函数\n constructor({\n domain,\n commonParams,\n isPro = true,\n sendOpenLog = true,\n consoleLog = true,\n }: InitParams) {\n this._isPro = isPro;\n this._sendOpenLog = sendOpenLog;\n this._consoleLog = consoleLog;\n\n const { openUrl, eventUrl, actUrl, adUrl, onlineUrl } = this._getApis(domain);\n this._openUrl = openUrl;\n this._eventUrl = eventUrl;\n this._actUrl = actUrl;\n this._adUrl = adUrl;\n this._onlineUrl = onlineUrl;\n\n // 初始获取小程序对象\n const { mp, platform } = this._getMp();\n this._mp = mp;\n this._platform = platform;\n\n if (!mp || isObjectEmpty(mp)) {\n console.error('[XLOG] 日志SDK初始化失败,当前环境为非小程序环境!');\n } else {\n !!this._consoleLog && console.log('[XLOG] 小程序对象:', mp);\n }\n\n try {\n this._systemInfo = this._mp?.getSystemInfoSync() || {};\n } catch (error) {\n console.error('[XLOG] getSystemInfoSync error', error);\n }\n this._extraInfo = {\n language: this._systemInfo.language,\n wxVersion: this._systemInfo.version,\n SDKVersion: this._systemInfo.SDKVersion,\n benchmarkLevel: this._systemInfo.benchmarkLevel || -1,\n theme: this._systemInfo.theme,\n };\n\n this._init(commonParams);\n }\n\n /** 启动 */\n private _init(commonParams?: TCommonParams) {\n // 初始化公参\n this._initCommonParams(this._filterParams(commonParams));\n\n // 冷启动日志上报\n this._coldStartUp();\n\n // 注册onShow和onHide事件\n this._visibilityChange(\n // 小程序切前台onShow,上报热启动日志\n () => {\n // 仅上报热启动日志\n if (!this._isColdStartUp) {\n this._getNetworkType().then((networkType) => {\n this._updateCommonParams({ network: networkType });\n this._open({ openway: 1 });\n });\n }\n\n // 更新在线时长日志起始时间\n this._startTime = Date.now();\n\n // 如果存在漏报的在线时长日志数据,则再次尝试上报。\n const onlineBatchData = this._getOnlineBatchData();\n if (onlineBatchData) {\n this._online(onlineBatchData);\n }\n },\n // 小程序切后台onHide,上报切后台日志\n () => {\n this._isColdStartUp = false;\n this._open({ openway: 5 });\n // 发送在线时长日志\n this._sendOnline();\n }\n );\n }\n\n // 获取小程序对象\n private _getMp(): { mp: any; platform: number } {\n const obj = {\n mp: null,\n platform: 7,\n };\n // 微信、字节、快手、百度、QQ、蚂蚁、京东\n // 平台:0=微信公众号;1=微信小程序;2=字节小程序;3=快手小程序;4=百度小程序;5=QQ小程序;6=快应用;7=web\n // 注意:目前测试发现抖音小程序包含了wx对象,所以wx的判断只能放后面。\n if (typeof tt !== 'undefined') {\n obj.mp = tt;\n obj.platform = 2;\n } else if (typeof ks !== 'undefined') {\n obj.mp = ks;\n obj.platform = 3;\n } else if (typeof swan !== 'undefined') {\n obj.mp = swan;\n obj.platform = 4;\n } else if (typeof qq !== 'undefined') {\n obj.mp = qq;\n obj.platform = 5;\n } else if (typeof wx !== 'undefined') {\n obj.mp = wx;\n obj.platform = 1;\n } else if (typeof my !== 'undefined') {\n obj.mp = my;\n } else if (typeof jd !== 'undefined') {\n obj.mp = jd;\n }\n return obj;\n }\n\n private _visibilityChange(onShow: () => void = () => {}, onHide = () => {}) {\n try {\n // 小程序 & 小游戏 方法不同\n const onAppShow = this._mp?.onAppShow || this._mp?.onShow || (() => {});\n const onAppHide = this._mp?.onAppHide || this._mp?.onHide || (() => {});\n onAppShow(() => {\n !!this._consoleLog && console.log('[XLOG] onAppShow');\n onShow();\n });\n\n onAppHide(() => {\n !!this._consoleLog && console.log('[XLOG] onAppHide');\n onHide();\n });\n } catch (error) {\n console.error('[XLOG] onAppShow or onAppHide error', error);\n }\n }\n\n // 获取缓存\n private _getStorage(key: string) {\n try {\n return this._mp?.getStorageSync(`XYZ_LOG_${key}`);\n } catch (error) {\n console.error('[XLOG] getStorageSync error', error);\n }\n }\n\n // 设置缓存\n private _setStorage(key: string, value: any) {\n try {\n this._mp?.setStorageSync(`XYZ_LOG_${key}`, value);\n } catch (error) {\n console.error('[XLOG] setStorageSync error', error);\n }\n }\n\n // 获取批次号\n private _getBatchId() {\n let bid = this._getStorage('BATCH_ID');\n if (!bid || this._isColdStartUp) {\n bid = generateId();\n this._setStorage('BATCH_ID', bid);\n }\n return bid;\n }\n\n private _coldStartUp() {\n this._getNetworkType().then((networkType) => {\n this._updateCommonParams({ network: networkType });\n this._open({ openway: 0 });\n // // 延迟修改冷启动标志\n // setTimeout(() => {\n // this._isColdStartUp = false;\n // }, 3000);\n });\n }\n\n // 获取接口地址。\n private _getApis(domain?: IDomain) {\n // 默认接口域名\n const defaultDomain: IDomain = this._isPro\n ? {\n open: 'webopen-inside.tt.cn',\n event: 'webevent-inside.tt.cn',\n act: 'webact-inside.tt.cn',\n ad: 'webadv-inside.tt.cn',\n online: 'webact-inside.tt.cn',\n }\n : {\n open: 'test-webopen-inside.tt.cn',\n event: 'test-webevent-inside.tt.cn',\n act: 'test-webact-inside.tt.cn',\n ad: 'test-webadv-inside.tt.cn',\n online: 'test-webact-inside.tt.cn',\n };\n const dm: IDomain = {\n ...defaultDomain,\n ...domain,\n };\n return {\n openUrl: `https://${dm.open}/gamefunction_logs/applet/open`, // 启动日志上报接口\n eventUrl: `https://${dm.event}/gamefunction_logs/applet/event`, // 事件日志上报接口\n actUrl: `https://${dm.act}/gamefunction_logs/applet/activity`, // 打点日志上报接口\n adUrl: `https://${dm.ad}/gamefunction_logs/applet/adv`, // 打点日志上报接口\n onlineUrl: `https://${dm.online}/gamefunction_logs/applet/onlineTime`, // 在线时长日志上报接口\n };\n }\n\n /**\n * 缓存公参\n * @param {object} obj 公共参数对象\n */\n private _cacheCommonParams(obj: ICommonParams) {\n this._setStorage('COMMON_PARAMS', JSON.stringify(obj));\n }\n\n private _getInitParams(): ICommonParams {\n return {\n platform: this._platform,\n appcqid: DEFAULT_QID, // 根据产品自定义的默认渠道号(同一个apptypeid下不能出现相同的默认渠道号)\n appqid: DEFAULT_QID + getDateStr(), // 渠道+日期,如:appstore160616;wandoujia160616\n os: this._systemInfo.platform, // 操作系统,如:Android、iOS\n osversion: this._systemInfo.system && this._systemInfo.system.split(' ')[1], // 操作系统版本号,如:7.0\n device: this._systemInfo.model, // 客户端手机型号,如:xiaomi6\n devicebrand: this._systemInfo.brand, // 机型品牌,如:HUAWEI\n pixel: this._systemInfo.screenWidth + '*' + this._systemInfo.screenHeight, // 屏幕分辨率,如:1080*1920\n userinfo: this._getUserInfo(), // 用户信息 如:'{\"nickName\":\"昵称\",\"avatarUrl\":\"头像\",\"gender\":\"性别:1-男;2-女;0-未知\"}' 等\n };\n }\n\n private _initCommonParams(receivedCommonParams?: TCommonParams) {\n let commonParams: ICommonParams = this._getInitParams();\n const cps = this._getStorage('COMMON_PARAMS');\n if (cps) {\n // 合并本地的初始化公参和缓存公参(缓存公参优先级高)\n commonParams = { ...commonParams, ...JSON.parse(cps) };\n }\n // 合并接收到的公参\n commonParams = receivedCommonParams ? merge(commonParams, receivedCommonParams) : commonParams;\n this._updateCommonParams({\n ...commonParams,\n obatchid: this._getBatchId(), // 本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n });\n }\n\n private _getNetworkType() {\n return new Promise<string>((resolve) => {\n try {\n this._mp?.getNetworkType({\n // @ts-expect-error\n success(res) {\n resolve(res.networkType);\n },\n fail() {\n resolve('none');\n },\n });\n } catch (error) {\n resolve('none');\n console.error('[XLOG] getNetworkType error', error);\n }\n });\n }\n\n /**\n * 获取用户信息\n * @param {IUserInfo} userInfo 用户信息\n * @returns {string} JSON.stringify序列化字符串\n */\n private _getUserInfo(userInfo?: string) {\n let uip = {};\n if (userInfo) {\n try {\n uip = JSON.parse(userInfo);\n } catch (error) {\n console.error('[XLOG] The parameter \"userinfo\" is not in JSON string format!');\n }\n }\n\n let ui = {};\n if (this.commonParams.userinfo) {\n try {\n ui = JSON.parse(this.commonParams.userinfo);\n } catch (error) {\n console.error('[XLOG] parse error', error);\n }\n }\n return JSON.stringify({\n ...this._extraInfo,\n ...ui,\n ...uip,\n });\n }\n\n // 处理接入方传入的公参,只接受必须的参数,防止垃圾参数合并到公参中。\n private _filterParams(params?: TCommonParams): TCommonParams {\n const _params: TCommonParams = {};\n\n if (params) {\n const keys = [\n 'openid', // 【web端由SDK内部处理】小程序&公众号用户唯一id;web端js生成唯一id\n 'unionid', // 小程序&公众号用户平台id(同个用户在同个开放平台下的unionid相同);web端为空\n 'accid', // 业务侧用户唯一id,可以为空,有accid的时候传accid\n 'apptypeid', // 项目唯一识别符,如:步多多为100001\n 'appcqid', // 根据产品自定义的默认渠道号(约定渠道参数key为f, 如 url?f=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'null')\n 'srcqid', // 归因渠道。取启动参数里面配置的渠道号\n 'appver', // 用户信息 如:'{\"appsubid\": \"123456\", ...}'\n 'userinfo', // 小程序版本号,如:1.1.1;公众号等web项目无此参数\n ];\n for (const k in params) {\n const v = params[k as keyof TCommonParams];\n if (keys.includes(k) && v) {\n _params[k as keyof TCommonParams] = v;\n }\n }\n }\n return _params;\n }\n\n /** 设置、更新日志参数 */\n public setParams(params?: TCommonParams) {\n if (params) {\n !!this._consoleLog && console.log('[XLOG] setParams', params);\n // 获取原openid和unionid\n const originOpenid = this._commonParams.openid;\n const originUnionid = this._commonParams.unionid;\n // 过滤接收到的公参(可能存在垃圾参数)\n params = this._filterParams(params);\n // 更新公参\n this._updateCommonParams(params);\n // 获取到openid或者unionid(且获取到的openid(unionid)和已有的openid(unionid)不相等),补报启动日志\n if (\n (params.openid && params.openid !== originOpenid) ||\n (params.unionid && params.unionid !== originUnionid)\n ) {\n this._open({ isreturn: params.openid ? 1 : 2, openway: 0 });\n }\n }\n }\n\n // SDK内部用于更新公参的方法\n private _updateCommonParams(params: ICommonParams) {\n !!this._consoleLog && console.log('[XLOG] _updateCommonParams', params);\n if (params.userinfo) {\n params.userinfo = this._getUserInfo(params.userinfo);\n }\n if (params.appcqid) {\n params.appqid = params.appcqid + getDateStr();\n }\n if (params.appver) {\n params.appverint = transferVersion(params.appver);\n }\n this._commonParams = merge(this._commonParams, params);\n this._cacheCommonParams(this._commonParams);\n }\n\n /** 获取appqid */\n private _getAppqid() {\n // 因为appqid和日期有关,具有实时性,故需要每次上报前根据当前日期重新生成。\n return this._commonParams.appcqid + getDateStr();\n }\n\n private _request(\n url: string,\n data: Record<string, any>,\n contentType = 'application/x-www-form-urlencoded'\n ) {\n return new Promise((resolve, reject) => {\n try {\n this._mp?.request({\n url,\n data,\n method: 'POST',\n header: {\n 'content-type': contentType,\n },\n success: (res: IResSuccess) => {\n !!this._consoleLog && console.log(`[XLOG] SUCCESS: ${url}`, data, res);\n resolve(res);\n },\n fail: (res: IResFail) => {\n !!this._consoleLog && console.log(`[XLOG] FAIL: ${url}`, data, res);\n reject(res);\n },\n });\n } catch (error) {\n console.error('[XLOG] request error', error);\n }\n });\n }\n\n public open(params: Required<Pick<IOpenLogParams, 'querystring'>>) {\n this._open({\n querystring: params.querystring,\n isreturn: 3,\n openway: 0,\n });\n }\n\n /** 上报启动日志 */\n private _open(params: Omit<IOpenLogParams, 'xmlog'>) {\n let launchOptions: MiniprogramShowOptions | null = null;\n try {\n // 兼容小程序和小游戏中API不统一问题,目前发现,抖音小游戏不存在方法:getEnterOptionsSync\n launchOptions = (\n this._mp?.getEnterOptionsSync ||\n this._mp?.getLaunchOptionsSync ||\n (() => {})\n )();\n } catch (error) {\n console.error('[XLOG] getEnterOptionsSync error', error);\n }\n if (launchOptions?.query) {\n // 这里如果 launchOptions?.query 是一个空对象\"{}\",\n // 则 userinfo的值为 '{\"querystring\":{}}'\n // 通过 _updateCommonParams 方法,querystring的值会被空对象覆盖。\n // 所以这就保证了启动参数永远和querystring同步。\n this._updateCommonParams({\n userinfo: JSON.stringify({\n querystring: { ...launchOptions.query, ...params.querystring },\n }),\n });\n } else {\n this._updateCommonParams({\n userinfo: JSON.stringify({\n querystring: params.querystring,\n }),\n });\n }\n if (!this._sendOpenLog) return;\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n wakeway: params.wakeway || launchOptions?.scene || '', // 唤醒方式(使用微信场景值)\n openway: params.openway, // 启动方式,0 冷启动;1 热启动;5 切后台\n isreturn: params.isreturn || 0, // 启动日志补报,0=正常上报;1=获取到openid补报;2=获取到unionid补报\n xmlog: SDK_VERSION,\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(OPEN)', data);\n this._request(this._openUrl, data);\n }\n\n /** 上报事件日志 */\n public event(params: IEventLogParams) {\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n // 这种方式容易接收垃圾参数\n // ...params,\n event1: params.event1 || '', // 一级事件。传模块名称(项目组自定义)\n event2: params.event2 || '', // 二级事件。可传活动日志中的活动名称(项目组自定义)\n event3: params.event3 || '', // 三级事件。可传活动日志中的活动id的子id名称(项目组自定义)\n event4: params.event4 || '', // 四级事件。预留字段\n value1: params.value1 || '', // 事件值1。传模块id(项目组自定义)\n value2: params.value2 || '', // 事件值2。可传活动日志中的活动id(项目组自定义)\n value3: params.value3 || '', // 事件值3。可传活动日志中的活动id的子id(项目组自定义)\n value4: params.value4 || '', // 事件值4。预留字段\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(EVENT)', data);\n this._request(this._eventUrl, data);\n }\n\n /** 上报用户行为、打点日志 */\n public act(params: IActiveLogParams) {\n // 行为日志上报参数\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n // 这种方式容易接收垃圾参数\n // ...params,\n actentryid: params.actentryid || '', // actentryid,业务活动ID,保证唯一性\n subactid: params.subactid || '', // subactid,子活动id,保证唯一性\n type: params.type || '', // type,类型:展现传“show”、点击传“click”、关闭传“close”\n custom: params.custom || '', // 业务自定义参数\n batchid: params.batchid || '', // 批次号\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(ACT)', data);\n this._request(this._actUrl, data);\n }\n\n /** 上报广告日志 */\n public ad(params: IAdLogParams) {\n // 行为日志上报参数\n const data: ICommonParams & IAdLogParams = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n type: params.type || '', // 场景描述。preload=预加载;load=加载;show=展现;close=关闭;cancel=中途关闭;click=点击\n code: params.code || '', // 本次场景执行是否成功。0=成功;其他code表示报表,用平台返回的code填充\n codeinfo: params.codeinfo || '', // code对应的释义。code=0时填充成功;code=其他值时,用平台返回的异常填充\n pagetype: params.pagetype || '', // 一级广告位。由业务方自行定义,可用于模块化统计广告数据\n gametype: params.gametype || '', // 二级广告位:业务端自定义,用于区分不同广告场景的数据,例:观看激励视频获取撤回道具,gametype定义为chehuiljsp\n adslot: params.adslot || '', // 广告位类型。banner=bannel广告位;rewardvideo=激励视频广告位;flow=信息流广告位;lnterstitial=插屏广告;videobegin=视频前贴片广告位;videobehind=视频后贴片广告\n adunitid: params.adunitid || '', // 代码位ID\n adbatchid: params.adbatchid || '', // 本次广告的唯一id(广告批次号)\n ecpm: params.ecpm || '', // 广告的预估收益\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(AD)', data);\n this._request(this._adUrl, data, 'application/json');\n }\n\n private _sendOnline() {\n const _endTime = Date.now();\n // 在线时长日志上报参数\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n onlinetime: `${_endTime - this._startTime}`, // 在线时长(毫秒)\n endtime: _endTime.toString(), // 结束时间(毫秒时间戳)\n starttime: this._startTime.toString(), // 开始时间(毫秒时间戳)\n };\n this._online([data]);\n }\n\n private _setOnlineBatchData(batch: Array<IOnlineLogParamsWithCommon>) {\n this._setStorage('ONLINE_BACH_DATA', batch);\n }\n\n private _getOnlineBatchData(): Array<IOnlineLogParamsWithCommon> | '' {\n return this._getStorage('ONLINE_BACH_DATA');\n }\n\n private _clearOnlineBatchData() {\n this._setStorage('ONLINE_BACH_DATA', '');\n }\n\n private _online(batch: Array<IOnlineLogParamsWithCommon>) {\n !!this._consoleLog && console.log('[XLOG] PARAMS(ONLINE)', batch);\n // 清除缓存\n this._clearOnlineBatchData();\n this._request(this._onlineUrl, { batch: JSON.stringify(batch) }).catch((err) => {\n // 如果失败,需要将当前批次的请求数据batch缓存(下次启动的时候再发送)\n this._setOnlineBatchData(batch);\n });\n }\n}\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","getDateStr","now","Date","year","getFullYear","toString","month","getMonth","day","getDate","substr","Number","merge","o1","o2","tempO1","tempO2","keys","forEach","k","EGender","SDK_VERSION","DEFAULT_QID","exports","XLog","_a","domain","commonParams","_b","isPro","_c","sendOpenLog","_d","consoleLog","version","buildDate","_openUrl","_eventUrl","_actUrl","_adUrl","_onlineUrl","_startTime","_commonParams","_isPro","_sendOpenLog","_isColdStartUp","_systemInfo","_mp","_consoleLog","_f","_getApis","openUrl","eventUrl","actUrl","adUrl","onlineUrl","obj","_g","_getMp","mp","platform","_platform","constructor","console","error","log","_e","getSystemInfoSync","_extraInfo","language","wxVersion","SDKVersion","benchmarkLevel","theme","_init","defineProperty","get","_this","_initCommonParams","_filterParams","_coldStartUp","_visibilityChange","_getNetworkType","then","networkType","_updateCommonParams","network","_open","openway","onlineBatchData","_getOnlineBatchData","_online","_sendOnline","tt","ks","swan","qq","wx","my","jd","onShow","onHide","onAppShow","onAppHide","_getStorage","key","getStorageSync","concat","_setStorage","value","setStorageSync","_getBatchId","bid","radix","chars","split","uuid","rnd","Math","random","len","rad","join","generateId","defaultDomain","open","event","act","ad","online","dm","_cacheCommonParams","JSON","stringify","_getInitParams","appcqid","appqid","os","osversion","system","device","model","devicebrand","brand","pixel","screenWidth","screenHeight","userinfo","_getUserInfo","receivedCommonParams","cps","parse","obatchid","Promise","resolve","getNetworkType","success","res","fail","userInfo","uip","ui","params","_params","v","includes","setParams","originOpenid","openid","originUnionid","unionid","isreturn","appver","appverint","ver","map","transferVersion","_getAppqid","_request","url","data","contentType","reject","request","method","header","querystring","launchOptions","getEnterOptionsSync","getLaunchOptionsSync","query","wakeway","scene","xmlog","event1","event2","event3","event4","value1","value2","value3","value4","actentryid","subactid","type","custom","batchid","code","codeinfo","pagetype","gametype","adslot","adunitid","adbatchid","ecpm","_endTime","onlinetime","endtime","starttime","_setOnlineBatchData","batch","_clearOnlineBatchData","catch","err"],"mappings":"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"}
|
package/dist/mp.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mp.mjs","sources":["../node_modules/.pnpm/tslib@2.4.0/node_modules/tslib/tslib.es6.js","../src/utils/index.ts","../src/config/index.ts","../src/types/index.ts","../src/mp.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { getStorage, setStorage } from './storage';\n\n/**\n * 生成唯一标识uid(ms时间戳 + 6位(16进制)随机数)\n * @returns {string} uid\n */\nexport function generateUid() {\n return Date.now().toString() + Math.random().toString(16).substring(2, 8);\n}\n\n/**\n * 生成唯一uuid,可以指定长度和基数\n * @param {number} length 长度,默认18\n * @param {number} radix 基数,如2,8,10,16等\n */\nexport function generateId(length = 18, radix = 0) {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');\n const uuid = [];\n const rnd = Math.random;\n const len = length;\n const rad = radix || chars.length;\n for (let i = 0; i < len; i++) {\n uuid[i] = chars[0 | (rnd() * rad)];\n }\n return uuid.join('');\n}\n\n/**\n * 获取 uid\n */\nexport function getId(name = 'UID') {\n let uid = getStorage(name);\n if (!uid) {\n uid = generateId();\n setStorage(name, uid);\n }\n return uid;\n}\n\n/**\n * 版本号转换:1.1.1 >> 010101,大小版本号不超过2位数字,最大99.99.99\n * @param {string} ver 版本号,如:1.1.1\n * @returns {string} 转换之后的版本,如:010101\n */\nexport function transferVersion(ver: string) {\n try {\n if (!ver || typeof ver !== 'string') {\n return '';\n }\n return ver\n .split('.')\n .map((n) => {\n if (n.length === 1) {\n return '0' + n;\n }\n return n;\n })\n .join('');\n } catch (error) {\n console.error(`[transferVersion] ver(\"${ver}\")格式异常:`, error);\n return '';\n }\n}\n\n/**\n * 获取日期字符串,如:200729\n * @returns {string} 日期字符串\n */\nexport function getDateStr(): string {\n const now = new Date();\n let year = now.getFullYear().toString();\n let month = (now.getMonth() + 1).toString();\n let day = now.getDate().toString();\n year = year.toString().substr(-2);\n month = Number(month) < 10 ? '0' + month : month;\n day = Number(day) < 10 ? '0' + day : day;\n return year + month + day;\n}\n\nexport function json2params(json: Record<string | number, any>) {\n return Object.keys(json)\n .map(function (k) {\n return encodeURIComponent(k) + '=' + encodeURIComponent(json[k]);\n })\n .join('&');\n}\n\nexport function urlParams2Json(ignoreKeys: string[] = [], url = location.href) {\n const u = new URL(url);\n const s = u.search.substring(1);\n const json: Record<string | number, any> = {};\n if (s) {\n s.split('&').forEach((kv) => {\n json[kv.split('=')[0]] = kv.split('=')[1];\n });\n }\n\n Object.keys(json).forEach((k) => {\n if (ignoreKeys.includes(k)) delete json[k];\n });\n\n return json;\n}\n\nexport const isPlainObject = (val: any) =>\n Object.prototype.toString.call(val) === '[object Object]';\n\nexport const isObjectEmpty = (obj: any) =>\n obj && Object.keys(obj).length === 0 && obj.constructor === Object;\n\n/**\n * 两个对象合并\n * @param o1 对象1\n * @param o2 对象2\n */\nexport function merge(\n o1: Record<string | number, any>,\n o2: Record<string | number, any>\n): Record<string | number, any> {\n const tempO1 = { ...o1 };\n const tempO2 = { ...o2 };\n // 删除tempO2的空值,防止其覆盖tempO1已存在的值。(防止空值覆盖已有值)\n Object.keys(tempO1).forEach((k) => {\n if (!tempO2[k]) {\n delete tempO2[k];\n }\n });\n return { ...tempO1, ...tempO2 };\n}\n\n// 多个(嵌套)对象合并\nexport function deepMerge(target: any, ...sources: any[]): any {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (source && typeof source === 'object') {\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object') {\n if (!target[key]) Object.assign(target, { [key]: {} });\n deepMerge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return deepMerge(target, ...sources);\n}\n\n// Determine the current display mode.\nexport function isPWA() {\n // // 判断是否在 iOS 的全屏模式(PWA)中打开\n // if (navigator.standalone) {\n // return true;\n // }\n\n // // 判断是否在 Android 的全屏模式(PWA)中打开\n // if (window.matchMedia('(display-mode: standalone)').matches) {\n // return true;\n // }\n\n // // 默认返回 false,表示网页在浏览器中打开\n // return false;\n\n const getDisplayMode = () =>\n navigator.standalone || window.matchMedia('(display-mode: standalone)').matches\n ? 'standalone'\n : 'browser';\n return getDisplayMode() === 'standalone';\n}\n\nexport function isMobileDevice() {\n const userAgent = navigator.userAgent;\n const mobileKeywords = [\n 'Android',\n 'webOS',\n 'iPhone',\n 'iPad',\n 'iPod',\n 'BlackBerry',\n 'Windows Phone',\n ];\n\n return mobileKeywords.some((keyword) => userAgent.includes(keyword));\n}\n\nexport const getPlatform = () => (isPWA() ? 'pwa' : isMobileDevice() ? 'h5' : 'pc');\n\nexport function getUtcOffset() {\n const date = new Date();\n const offset = date.getTimezoneOffset();\n const hours = Math.abs(Math.floor(offset / 60));\n // const minutes = Math.abs(offset % 60);\n const sign = offset > 0 ? '-' : '+';\n\n return `${sign}${hours}`;\n}\n","export const SDK_VERSION = typeof __BUILD_VERSION__ !== 'undefined' ? __BUILD_VERSION__ : '0.0.0';\nexport const BUILD_DATE =\n typeof __BUILD_DATE__ !== 'undefined' ? __BUILD_DATE__ : String(new Date().toLocaleString());\nexport const DEFAULT_QID = 'organic';\n","export enum EGender {\n Unknown = 0,\n Male,\n Female,\n}\n\n// enum ENetwork {\n// Wifi = 'wifi',\n// TwoG = '2g',\n// ThreeG = '3g',\n// FourG = '4g',\n// FiveG = '5g',\n// Unknown = 'unknown',\n// None = 'none',\n// Null = 'null'\n// }\n\n// 接入方需要传入的参数\nexport interface TCommonParams {\n openid?: string; // 【web端由SDK内部处理】小程序&公众号用户唯一id;web端js生成唯一id\n unionid?: string; // 小程序&公众号用户平台id(同个用户在同个开放平台下的unionid相同);web端为空\n accid?: string; // 业务侧用户唯一id,可以为空,有accid的时候传accid\n apptypeid?: string; // 项目唯一识别符,如:步多多为100001\n appcqid?: string; // 根据产品自定义的默认渠道号(约定渠道参数key为f, 如 url?f=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'null')\n srcqid?: string; // 归因渠道。取启动参数里面配置的渠道号\n userinfo?: string; // 用户信息 如:'{\"appsubid\": \"123456\", ...}'\n appver?: string; // 小程序版本号,如:1.1.1;公众号等web项目无此参数\n}\n\n// 公共参数\nexport interface ICommonParams extends TCommonParams {\n appverint?: string; // 【SDK内部处理】小程序版本号转数值 ,如:010101;公众号等web项目无此参数\n platform?: string | number; // 【SDK内部处理】 平台:0=微信公众号;1=微信小程序;2=字节小程序;3=快手小程序;4=百度小程序;5=QQ小程序;6=快应用;7=web\n appqid?: string; // 【SDK内部处理】渠道+日期,如:appstore160616;wandoujia160616\n os?: string; // 【SDK内部处理】操作系统,如:android、ios\n osversion?: string; // 【SDK内部处理】操作系统版本号,如:7.0\n device?: string; // 【SDK内部处理】客户端手机型号,如:xiaomi6\n devicebrand?: string; // 【SDK内部处理】机型品牌,如:HUAWEI\n pixel?: string; // 【SDK内部处理】屏幕分辨率,如:1080*1920\n network?: string; // 【SDK内部处理】网络环境,如:wifi、4g、3g、2g、other\n obatchid?: string; // 【SDK内部处理】本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n}\n\n// 启动日志参数\nexport interface IOpenLogParams {\n openway: 0 | 1 | 5; // 启动方式。0=冷启动,1=热启动,5=切后台 (web无法区分冷、热启动,始终报0冷启动)\n wakeway?: string | number; // 唤醒方式。传小程序对应启动的场景值(web传'')\n xmlog: string; // xmlog sdk版本\n isreturn?: 0 | 1 | 2 | 3; // 启动日志补报,0=正常上报;1=获取到openid补报;2=获取到unionid补报 3=获取到querystring补报(接入方上报的启动日志)\n querystring?: Record<string | number, any>; // userinfo中的querystring参数\n}\n\n// 活动打点日志参数\nexport interface IActiveLogParams {\n actentryid?: string; // actentryid,业务活动ID,保证唯一性\n subactid?: string; // subactid,子活动id,保证唯一性\n type: 'show' | 'click' | 'close'; // type,类型:展现传“show”、点击传“click”、关闭传“close”\n custom: string; // (业务参数)业务自定义参数\n batchid: string; // (业务参数)批次号\n}\n\n// 事件日志参数\nexport interface IEventLogParams {\n event1?: string; // 一级事件。传模块名称(项目组自定义)\n event2?: string; // 二级事件。可传活动日志中的活动名称(项目组自定义)\n event3?: string; // 三级事件。可传活动日志中的活动id的子id名称(项目组自定义)\n event4?: string; // 四级事件。预留字段\n value1?: string; // 事件值1。传模块id(项目组自定义)\n value2?: string; // 事件值2。可传活动日志中的活动id(项目组自定义)\n value3?: string; // 事件值3。可传活动日志中的活动id的子id(项目组自定义)\n value4?: string; // 事件值4。预留字段\n}\n\n// 广告日志\nexport interface IAdLogParams {\n type: string; // 场景描述。preload=预加载;load=加载;show=展现;close=关闭;cancel=中途关闭;click=点击\n code?: string; // 本次场景执行是否成功。0=成功;其他code表示报表,用平台返回的code填充\n codeinfo?: string; // code对应的释义。code=0时填充成功;code=其他值时,用平台返回的异常填充\n pagetype?: string; // 一级广告位。由业务方自行定义,可用于模块化统计广告数据\n gametype?: string; // 二级广告位:业务端自定义,用于区分不同广告场景的数据,例:观看激励视频获取撤回道具,gametype定义为chehuiljsp\n adslot?: string; // 广告位类型。banner=bannel广告位;rewardvideo=激励视频广告位;flow=信息流广告位;lnterstitial=插屏广告;videobegin=视频前贴片广告位;videobehind=视频后贴片广告\n adunitid?: string; // 代码位ID\n adbatchid?: string; // 本次广告的唯一id(广告批次号)\n ecpm?: string; // 广告的预估收益\n}\n\n// 在线时长日志参数\nexport interface IOnlineLogParams {\n onlinetime?: string; // 在线时长(毫秒)\n endtime?: string; // 结束时间(毫秒时间戳)\n starttime: string; // 开始时间(毫秒时间戳)\n}\n\nexport type IOnlineLogParamsWithCommon = ICommonParams & IOnlineLogParams;\n\nexport interface IUserInfo {\n [k: string | number]: any;\n}\n\nexport interface IExtraInfo extends IUserInfo {\n language: string; // 微信设置的语言\n wxVersion: string; // 微信版本号\n SDKVersion: string; // 微信客户端基础库版本\n benchmarkLevel: number; // 设备性能等级(仅Android小游戏)。取值为:-2 或 0(该设备无法运行小游戏),-1(性能未知),>=1(设备性能值,该值越高,设备性能越好,目前最高不到50)\n theme: string; // 系统当前主题,取值为light或dark,全局配置\"darkmode\":true时才能获取,否则为 undefined (不支持小游戏)\n}\n\nexport interface IDomain {\n open?: string; // 启动日志上报接口\n act?: string; // 打点日志上报接口\n ad?: string; // 广告日志上报接口\n event?: string; // 事件日志上报接口\n online?: string; // 在线时长日志上报接口\n}\n\nexport interface IDomainWithEnv {\n testing: IDomain;\n prod: IDomain;\n}\n\nexport interface MiniprogramShowOptions {\n path: string; // 启动小程序的路径 (代码包路径)\n scene: number; // 启动小程序的场景值\n query: Record<string | number, any>; // 启动小程序的 query 参数\n shareTicket: string; // shareTicket,详见获取更多转发信息\n // 来源信息。从另一个小程序、公众号或 App 进入小程序时返回。否则返回 {}。\n referrerInfo: {\n appId: string; // 来源小程序、公众号或 App 的 appId\n extraData: Record<string | number, any>; // 来源小程序传过来的数据,scene=1037或1038时支持\n };\n}\n\nexport type TPlatform = 'h5' | 'pc' | 'pwa';\n\nexport interface InitParams {\n isPro?: boolean;\n domain?: IDomain;\n commonParams?: TCommonParams;\n sendOpenLog?: boolean;\n consoleLog?: boolean;\n}\n\n// 接入方需要传入的参数\nexport interface THwCommonParams {\n openid?: string; // 平台唯一id(如line的唯一ID)\n accid?: string; // 业务侧用户唯一id,可以为空,有accid的时候传accid\n apptypeid?: string; // 项目唯一识别符,如:步多多为100001\n appcqid?: string; // 根据产品自定义的默认渠道号(约定渠道参数key为f, 如 url?f=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'null')\n appver?: string; // 版本号,如:1.1.1\n userinfo?: string; // 用户信息(sdk内部会添加platform字段) 如:'{\"appsubid\": \"123456\", ...}'\n region?: string; // 国家/地区,从服务端接口获取\n province?: string; // 二级地区,从服务端接口获取\n srcinfo?: string; // 来源于归因方的归因信息(暂无)\n platform?: string; // 平台,h5/pc/pwa/……,SDK内部只简单分类:'h5' | 'pc' | 'pwa',如业务有不同的平台值需要对接方传入。\n uid?: string; // SDK内部会生成网页用户唯一id,对接方一般不需要处理,有特殊需求的情况下除外。\n}\n\n// 公共参数\nexport interface IHwCommonParams extends THwCommonParams {\n ua?: string; // 【SDK内部处理】userAgent\n timezone?: string; // 【SDK内部处理】所属时区 上报值范围(-12 ~ 0 ~ 12) 例如: 菲律宾上报8 泰国报7\n device?: string; // 【SDK内部处理】客户端手机型号,如:xiaomi6\n devicebrand?: string; // 【SDK内部处理】机型品牌,如:HUAWEI\n os?: string; // 【SDK内部处理】操作系统,如:android、ios\n osversion?: string; // 【SDK内部处理】操作系统版本号,如:7.0\n pixel?: string; // 【SDK内部处理】屏幕分辨率,如:1080*1920\n network?: string; // 【SDK内部处理】网络环境,如:wifi、4g、3g、2g、other\n url?: string; // 【SDK内部处理】当前URL地址\n obatchid?: string; // 【SDK内部处理】本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n xmlog?: string; // xm sdk version\n}\n\nexport interface IHwDomain {\n open?: string; // 启动日志上报接口\n act?: string; // 打点日志上报接口\n ad?: string; // 广告日志上报接口\n}\n\nexport interface HwInitParams {\n isPro?: boolean; // 是否生产环境\n domain?: IHwDomain; // 域名\n commonParams?: THwCommonParams; // 公参\n sendOpenLog?: boolean; // 是否发送启动日志\n consoleLog?: boolean; // 控制台日志是否打印\n ignoreUrlParams?: string[]; // 公参userinfo -> querystring(url)中的需排除的参数\n}\n\n// 启动日志参数\nexport interface IHwOpenLogParams {\n openway: 0 | 1 | 5 | 6; // 启动方式。0=冷启动,1=热启动,5=切后台, 6=地理位置回传 (web无法区分冷、热启动,始终报0冷启动)\n platform_from?: string; // 进入此平台之前的上一个平台类型\n url_from?: string; // 进入此URL之前的上一个URL地址(暂传referer信息)\n}\n\n// 活动打点日志参数\nexport interface IHwActiveLogParams {\n actentryid?: string; // actentryid,业务活动ID,保证唯一性\n subactid?: string; // subactid,子活动id,保证唯一性\n type: 'show' | 'click' | 'close'; // type,类型:展现传“show”、点击传“click”、关闭传“close”\n memo1?: string; // 自定义字段1\n memo2?: string; // 自定义字段2\n memo3?: string; // 自定义字段3\n}\n// 广告日志\nexport interface IHwAdLogParams {\n type: string; // 场景描述。preload=预加载;load=加载;show=展现;close=关闭;cancel=中途关闭;click=点击\n code?: string; // 本次场景执行是否成功。0=成功;其他code表示报表,用平台返回的code填充\n codeinfo?: string; // code对应的释义。code=0时填充成功;code=其他值时,用平台返回的异常填充\n pagetype?: string; // 一级广告位。由业务方自行定义,可用于模块化统计广告数据\n gametype?: string; // 二级广告位:业务端自定义,用于区分不同广告场景的数据,例:观看激励视频获取撤回道具,gametype定义为chehuiljsp\n adslot?: string; // 广告位类型。banner=bannel广告位;rewardvideo=激励视频广告位;flow=信息流广告位;lnterstitial=插屏广告;videobegin=视频前贴片广告位;videobehind=视频后贴片广告\n adunitid?: string; // 代码位ID\n adbatchid?: string; // 本次广告的唯一id(广告批次号)\n ecpm?: string; // 广告的预估收益\n adfrom?: string; // 广告来源。google、facebook等\n}\n","import type {\n ICommonParams,\n IEventLogParams,\n IExtraInfo,\n IOpenLogParams,\n IActiveLogParams,\n IDomain,\n MiniprogramShowOptions,\n TCommonParams,\n IOnlineLogParamsWithCommon,\n InitParams,\n IAdLogParams,\n} from './types';\nimport { generateId, getDateStr, isObjectEmpty, merge, transferVersion } from './utils';\nimport { SDK_VERSION, BUILD_DATE, DEFAULT_QID } from './config';\n\ninterface IResSuccess {\n data: string | Record<string, any>; //\t开发者服务器返回的数据\n statusCode: string | number; // 开发者服务器返回的 HTTP 状态码\n header: Record<string, any>; //\t开发者服务器返回的 HTTP Response Header\n cookies?: Array<string>; // 开发者服务器返回的 cookies,格式为字符串数组\n profile?: Record<string, any>; // 网络请求过程中一些调试信息\n [k: string]: any;\n}\n\ninterface IResFail {\n errMsg: string; // 错误信息\n errno?: string | number; // errno 错误码(微信)\n errNo?: string | number; // errNo 错误码 (字节)\n [k: string]: any;\n}\n\n// 导出类型,方便调用者使用\nexport * from './types';\n\nexport class XLog {\n version = SDK_VERSION;\n buildDate = BUILD_DATE;\n // 正式服\n private _openUrl = ''; // 启动日志上报接口\n private _eventUrl = ''; // 在线日志上报接口\n private _actUrl = ''; // 活动(用户行为)日志上报接口\n private _adUrl = ''; // 广告日志上报接口\n private _onlineUrl = ''; // 在线时长日志上报接口\n // 开始时间(用于在线时长计算)\n private _startTime = Date.now();\n // 扩展参数\n private _extraInfo?: IExtraInfo;\n // 公共参数\n private _commonParams: ICommonParams = {};\n // 获取公共参数\n public get commonParams(): ICommonParams {\n return this._commonParams;\n }\n // 环境变量,true:生产环境;false:测试环境,默认生产环境\n private _isPro = true;\n // 是否发送启动日志,true:发送;false:不发送,默认发送\n private _sendOpenLog = true;\n // 冷启动标记\n private _isColdStartUp = true;\n // 系统信息\n private _systemInfo: any = {};\n // 小程序对象\n private _mp: any = {};\n // 日志专用平台参数\n private _platform: any;\n // 控制台是否打印日志\n private _consoleLog = true;\n // 构造函数\n constructor({\n domain,\n commonParams,\n isPro = true,\n sendOpenLog = true,\n consoleLog = true,\n }: InitParams) {\n this._isPro = isPro;\n this._sendOpenLog = sendOpenLog;\n this._consoleLog = consoleLog;\n\n const { openUrl, eventUrl, actUrl, adUrl, onlineUrl } = this._getApis(domain);\n this._openUrl = openUrl;\n this._eventUrl = eventUrl;\n this._actUrl = actUrl;\n this._adUrl = adUrl;\n this._onlineUrl = onlineUrl;\n\n // 初始获取小程序对象\n const { mp, platform } = this._getMp();\n this._mp = mp;\n this._platform = platform;\n\n if (!mp || isObjectEmpty(mp)) {\n console.error('[XLOG] 日志SDK初始化失败,当前环境为非小程序环境!');\n } else {\n !!this._consoleLog && console.log('[XLOG] 小程序对象:', mp);\n }\n\n try {\n this._systemInfo = this._mp?.getSystemInfoSync() || {};\n } catch (error) {\n console.error('[XLOG] getSystemInfoSync error', error);\n }\n this._extraInfo = {\n language: this._systemInfo.language,\n wxVersion: this._systemInfo.version,\n SDKVersion: this._systemInfo.SDKVersion,\n benchmarkLevel: this._systemInfo.benchmarkLevel || -1,\n theme: this._systemInfo.theme,\n };\n\n this._init(commonParams);\n }\n\n /** 启动 */\n private _init(commonParams?: TCommonParams) {\n // 初始化公参\n this._initCommonParams(this._filterParams(commonParams));\n\n // 冷启动日志上报\n this._coldStartUp();\n\n // 注册onShow和onHide事件\n this._visibilityChange(\n // 小程序切前台onShow,上报热启动日志\n () => {\n // 仅上报热启动日志\n if (!this._isColdStartUp) {\n this._getNetworkType().then((networkType) => {\n this._updateCommonParams({ network: networkType });\n this._open({ openway: 1 });\n });\n }\n\n // 更新在线时长日志起始时间\n this._startTime = Date.now();\n\n // 如果存在漏报的在线时长日志数据,则再次尝试上报。\n const onlineBatchData = this._getOnlineBatchData();\n if (onlineBatchData) {\n this._online(onlineBatchData);\n }\n },\n // 小程序切后台onHide,上报切后台日志\n () => {\n this._isColdStartUp = false;\n this._open({ openway: 5 });\n // 发送在线时长日志\n this._sendOnline();\n }\n );\n }\n\n // 获取小程序对象\n private _getMp(): { mp: any; platform: number } {\n const obj = {\n mp: null,\n platform: 7,\n };\n // 微信、字节、快手、百度、QQ、蚂蚁、京东\n // 平台:0=微信公众号;1=微信小程序;2=字节小程序;3=快手小程序;4=百度小程序;5=QQ小程序;6=快应用;7=web\n // 注意:目前测试发现抖音小程序包含了wx对象,所以wx的判断只能放后面。\n if (typeof tt !== 'undefined') {\n obj.mp = tt;\n obj.platform = 2;\n } else if (typeof ks !== 'undefined') {\n obj.mp = ks;\n obj.platform = 3;\n } else if (typeof swan !== 'undefined') {\n obj.mp = swan;\n obj.platform = 4;\n } else if (typeof qq !== 'undefined') {\n obj.mp = qq;\n obj.platform = 5;\n } else if (typeof wx !== 'undefined') {\n obj.mp = wx;\n obj.platform = 1;\n } else if (typeof my !== 'undefined') {\n obj.mp = my;\n } else if (typeof jd !== 'undefined') {\n obj.mp = jd;\n }\n return obj;\n }\n\n private _visibilityChange(onShow: () => void = () => {}, onHide = () => {}) {\n try {\n // 小程序 & 小游戏 方法不同\n const onAppShow = this._mp?.onAppShow || this._mp?.onShow || (() => {});\n const onAppHide = this._mp?.onAppHide || this._mp?.onHide || (() => {});\n onAppShow(() => {\n !!this._consoleLog && console.log('[XLOG] onAppShow');\n onShow();\n });\n\n onAppHide(() => {\n !!this._consoleLog && console.log('[XLOG] onAppHide');\n onHide();\n });\n } catch (error) {\n console.error('[XLOG] onAppShow or onAppHide error', error);\n }\n }\n\n // 获取缓存\n private _getStorage(key: string) {\n try {\n return this._mp?.getStorageSync(`XYZ_LOG_${key}`);\n } catch (error) {\n console.error('[XLOG] getStorageSync error', error);\n }\n }\n\n // 设置缓存\n private _setStorage(key: string, value: any) {\n try {\n this._mp?.setStorageSync(`XYZ_LOG_${key}`, value);\n } catch (error) {\n console.error('[XLOG] setStorageSync error', error);\n }\n }\n\n // 获取批次号\n private _getBatchId() {\n let bid = this._getStorage('BATCH_ID');\n if (!bid || this._isColdStartUp) {\n bid = generateId();\n this._setStorage('BATCH_ID', bid);\n }\n return bid;\n }\n\n private _coldStartUp() {\n this._getNetworkType().then((networkType) => {\n this._updateCommonParams({ network: networkType });\n this._open({ openway: 0 });\n // // 延迟修改冷启动标志\n // setTimeout(() => {\n // this._isColdStartUp = false;\n // }, 3000);\n });\n }\n\n // 获取接口地址。\n private _getApis(domain?: IDomain) {\n // 默认接口域名\n const defaultDomain: IDomain = this._isPro\n ? {\n open: 'webopen-inside.tt.cn',\n event: 'webevent-inside.tt.cn',\n act: 'webact-inside.tt.cn',\n ad: 'webadv-inside.tt.cn',\n online: 'webact-inside.tt.cn',\n }\n : {\n open: 'test-webopen-inside.tt.cn',\n event: 'test-webevent-inside.tt.cn',\n act: 'test-webact-inside.tt.cn',\n ad: 'test-webadv-inside.tt.cn',\n online: 'test-webact-inside.tt.cn',\n };\n const dm: IDomain = {\n ...defaultDomain,\n ...domain,\n };\n return {\n openUrl: `https://${dm.open}/gamefunction_logs/applet/open`, // 启动日志上报接口\n eventUrl: `https://${dm.event}/gamefunction_logs/applet/event`, // 事件日志上报接口\n actUrl: `https://${dm.act}/gamefunction_logs/applet/activity`, // 打点日志上报接口\n adUrl: `https://${dm.ad}/gamefunction_logs/applet/adv`, // 打点日志上报接口\n onlineUrl: `https://${dm.online}/gamefunction_logs/applet/onlineTime`, // 在线时长日志上报接口\n };\n }\n\n /**\n * 缓存公参\n * @param {object} obj 公共参数对象\n */\n private _cacheCommonParams(obj: ICommonParams) {\n this._setStorage('COMMON_PARAMS', JSON.stringify(obj));\n }\n\n private _getInitParams(): ICommonParams {\n return {\n platform: this._platform,\n appcqid: DEFAULT_QID, // 根据产品自定义的默认渠道号(同一个apptypeid下不能出现相同的默认渠道号)\n appqid: DEFAULT_QID + getDateStr(), // 渠道+日期,如:appstore160616;wandoujia160616\n os: this._systemInfo.platform, // 操作系统,如:Android、iOS\n osversion: this._systemInfo.system && this._systemInfo.system.split(' ')[1], // 操作系统版本号,如:7.0\n device: this._systemInfo.model, // 客户端手机型号,如:xiaomi6\n devicebrand: this._systemInfo.brand, // 机型品牌,如:HUAWEI\n pixel: this._systemInfo.screenWidth + '*' + this._systemInfo.screenHeight, // 屏幕分辨率,如:1080*1920\n userinfo: this._getUserInfo(), // 用户信息 如:'{\"nickName\":\"昵称\",\"avatarUrl\":\"头像\",\"gender\":\"性别:1-男;2-女;0-未知\"}' 等\n };\n }\n\n private _initCommonParams(receivedCommonParams?: TCommonParams) {\n let commonParams: ICommonParams = this._getInitParams();\n const cps = this._getStorage('COMMON_PARAMS');\n if (cps) {\n // 合并本地的初始化公参和缓存公参(缓存公参优先级高)\n commonParams = { ...commonParams, ...JSON.parse(cps) };\n }\n // 合并接收到的公参\n commonParams = receivedCommonParams ? merge(commonParams, receivedCommonParams) : commonParams;\n this._updateCommonParams({\n ...commonParams,\n obatchid: this._getBatchId(), // 本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n });\n }\n\n private _getNetworkType() {\n return new Promise<string>((resolve) => {\n try {\n this._mp?.getNetworkType({\n // @ts-expect-error\n success(res) {\n resolve(res.networkType);\n },\n fail() {\n resolve('none');\n },\n });\n } catch (error) {\n resolve('none');\n console.error('[XLOG] getNetworkType error', error);\n }\n });\n }\n\n /**\n * 获取用户信息\n * @param {IUserInfo} userInfo 用户信息\n * @returns {string} JSON.stringify序列化字符串\n */\n private _getUserInfo(userInfo?: string) {\n let uip = {};\n if (userInfo) {\n try {\n uip = JSON.parse(userInfo);\n } catch (error) {\n console.error('[XLOG] The parameter \"userinfo\" is not in JSON string format!');\n }\n }\n\n let ui = {};\n if (this.commonParams.userinfo) {\n try {\n ui = JSON.parse(this.commonParams.userinfo);\n } catch (error) {\n console.error('[XLOG] parse error', error);\n }\n }\n return JSON.stringify({\n ...this._extraInfo,\n ...ui,\n ...uip,\n });\n }\n\n // 处理接入方传入的公参,只接受必须的参数,防止垃圾参数合并到公参中。\n private _filterParams(params?: TCommonParams): TCommonParams {\n const _params: TCommonParams = {};\n\n if (params) {\n const keys = [\n 'openid', // 【web端由SDK内部处理】小程序&公众号用户唯一id;web端js生成唯一id\n 'unionid', // 小程序&公众号用户平台id(同个用户在同个开放平台下的unionid相同);web端为空\n 'accid', // 业务侧用户唯一id,可以为空,有accid的时候传accid\n 'apptypeid', // 项目唯一识别符,如:步多多为100001\n 'appcqid', // 根据产品自定义的默认渠道号(约定渠道参数key为f, 如 url?f=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'null')\n 'srcqid', // 归因渠道。取启动参数里面配置的渠道号\n 'appver', // 用户信息 如:'{\"appsubid\": \"123456\", ...}'\n 'userinfo', // 小程序版本号,如:1.1.1;公众号等web项目无此参数\n ];\n for (const k in params) {\n const v = params[k as keyof TCommonParams];\n if (keys.includes(k) && v) {\n _params[k as keyof TCommonParams] = v;\n }\n }\n }\n return _params;\n }\n\n /** 设置、更新日志参数 */\n public setParams(params?: TCommonParams) {\n if (params) {\n !!this._consoleLog && console.log('[XLOG] setParams', params);\n // 获取原openid和unionid\n const originOpenid = this._commonParams.openid;\n const originUnionid = this._commonParams.unionid;\n // 过滤接收到的公参(可能存在垃圾参数)\n params = this._filterParams(params);\n // 更新公参\n this._updateCommonParams(params);\n // 获取到openid或者unionid(且获取到的openid(unionid)和已有的openid(unionid)不相等),补报启动日志\n if (\n (params.openid && params.openid !== originOpenid) ||\n (params.unionid && params.unionid !== originUnionid)\n ) {\n this._open({ isreturn: params.openid ? 1 : 2, openway: 0 });\n }\n }\n }\n\n // SDK内部用于更新公参的方法\n private _updateCommonParams(params: ICommonParams) {\n !!this._consoleLog && console.log('[XLOG] _updateCommonParams', params);\n if (params.userinfo) {\n params.userinfo = this._getUserInfo(params.userinfo);\n }\n if (params.appcqid) {\n params.appqid = params.appcqid + getDateStr();\n }\n if (params.appver) {\n params.appverint = transferVersion(params.appver);\n }\n this._commonParams = merge(this._commonParams, params);\n this._cacheCommonParams(this._commonParams);\n }\n\n /** 获取appqid */\n private _getAppqid() {\n // 因为appqid和日期有关,具有实时性,故需要每次上报前根据当前日期重新生成。\n return this._commonParams.appcqid + getDateStr();\n }\n\n private _request(\n url: string,\n data: Record<string, any>,\n contentType = 'application/x-www-form-urlencoded'\n ) {\n return new Promise((resolve, reject) => {\n try {\n this._mp?.request({\n url,\n data,\n method: 'POST',\n header: {\n 'content-type': contentType,\n },\n success: (res: IResSuccess) => {\n !!this._consoleLog && console.log(`[XLOG] SUCCESS: ${url}`, data, res);\n resolve(res);\n },\n fail: (res: IResFail) => {\n !!this._consoleLog && console.log(`[XLOG] FAIL: ${url}`, data, res);\n reject(res);\n },\n });\n } catch (error) {\n console.error('[XLOG] request error', error);\n }\n });\n }\n\n public open(params: Required<Pick<IOpenLogParams, 'querystring'>>) {\n this._open({\n querystring: params.querystring,\n isreturn: 3,\n openway: 0,\n });\n }\n\n /** 上报启动日志 */\n private _open(params: Omit<IOpenLogParams, 'xmlog'>) {\n let launchOptions: MiniprogramShowOptions | null = null;\n try {\n // 兼容小程序和小游戏中API不统一问题,目前发现,抖音小游戏不存在方法:getEnterOptionsSync\n launchOptions = (\n this._mp?.getEnterOptionsSync ||\n this._mp?.getLaunchOptionsSync ||\n (() => {})\n )();\n } catch (error) {\n console.error('[XLOG] getEnterOptionsSync error', error);\n }\n if (launchOptions?.query) {\n // 这里如果 launchOptions?.query 是一个空对象\"{}\",\n // 则 userinfo的值为 '{\"querystring\":{}}'\n // 通过 _updateCommonParams 方法,querystring的值会被空对象覆盖。\n // 所以这就保证了启动参数永远和querystring同步。\n this._updateCommonParams({\n userinfo: JSON.stringify({\n querystring: { ...launchOptions.query, ...params.querystring },\n }),\n });\n } else {\n this._updateCommonParams({\n userinfo: JSON.stringify({\n querystring: params.querystring,\n }),\n });\n }\n if (!this._sendOpenLog) return;\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n wakeway: params.wakeway || launchOptions?.scene || '', // 唤醒方式(使用微信场景值)\n openway: params.openway, // 启动方式,0 冷启动;1 热启动;5 切后台\n isreturn: params.isreturn || 0, // 启动日志补报,0=正常上报;1=获取到openid补报;2=获取到unionid补报\n xmlog: SDK_VERSION,\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(OPEN)', data);\n this._request(this._openUrl, data);\n }\n\n /** 上报事件日志 */\n public event(params: IEventLogParams) {\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n // 这种方式容易接收垃圾参数\n // ...params,\n event1: params.event1 || '', // 一级事件。传模块名称(项目组自定义)\n event2: params.event2 || '', // 二级事件。可传活动日志中的活动名称(项目组自定义)\n event3: params.event3 || '', // 三级事件。可传活动日志中的活动id的子id名称(项目组自定义)\n event4: params.event4 || '', // 四级事件。预留字段\n value1: params.value1 || '', // 事件值1。传模块id(项目组自定义)\n value2: params.value2 || '', // 事件值2。可传活动日志中的活动id(项目组自定义)\n value3: params.value3 || '', // 事件值3。可传活动日志中的活动id的子id(项目组自定义)\n value4: params.value4 || '', // 事件值4。预留字段\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(EVENT)', data);\n this._request(this._eventUrl, data);\n }\n\n /** 上报用户行为、打点日志 */\n public act(params: IActiveLogParams) {\n // 行为日志上报参数\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n // 这种方式容易接收垃圾参数\n // ...params,\n actentryid: params.actentryid || '', // actentryid,业务活动ID,保证唯一性\n subactid: params.subactid || '', // subactid,子活动id,保证唯一性\n type: params.type || '', // type,类型:展现传“show”、点击传“click”、关闭传“close”\n custom: params.custom || '', // 业务自定义参数\n batchid: params.batchid || '', // 批次号\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(ACT)', data);\n this._request(this._actUrl, data);\n }\n\n /** 上报广告日志 */\n public ad(params: IAdLogParams) {\n // 行为日志上报参数\n const data: ICommonParams & IAdLogParams = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n type: params.type || '', // 场景描述。preload=预加载;load=加载;show=展现;close=关闭;cancel=中途关闭;click=点击\n code: params.code || '', // 本次场景执行是否成功。0=成功;其他code表示报表,用平台返回的code填充\n codeinfo: params.codeinfo || '', // code对应的释义。code=0时填充成功;code=其他值时,用平台返回的异常填充\n pagetype: params.pagetype || '', // 一级广告位。由业务方自行定义,可用于模块化统计广告数据\n gametype: params.gametype || '', // 二级广告位:业务端自定义,用于区分不同广告场景的数据,例:观看激励视频获取撤回道具,gametype定义为chehuiljsp\n adslot: params.adslot || '', // 广告位类型。banner=bannel广告位;rewardvideo=激励视频广告位;flow=信息流广告位;lnterstitial=插屏广告;videobegin=视频前贴片广告位;videobehind=视频后贴片广告\n adunitid: params.adunitid || '', // 代码位ID\n adbatchid: params.adbatchid || '', // 本次广告的唯一id(广告批次号)\n ecpm: params.ecpm || '', // 广告的预估收益\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(AD)', data);\n this._request(this._adUrl, data, 'application/json');\n }\n\n private _sendOnline() {\n const _endTime = Date.now();\n // 在线时长日志上报参数\n const data = {\n ...this._commonParams,\n appqid: this._getAppqid(),\n onlinetime: `${_endTime - this._startTime}`, // 在线时长(毫秒)\n endtime: _endTime.toString(), // 结束时间(毫秒时间戳)\n starttime: this._startTime.toString(), // 开始时间(毫秒时间戳)\n };\n this._online([data]);\n }\n\n private _setOnlineBatchData(batch: Array<IOnlineLogParamsWithCommon>) {\n this._setStorage('ONLINE_BACH_DATA', batch);\n }\n\n private _getOnlineBatchData(): Array<IOnlineLogParamsWithCommon> | '' {\n return this._getStorage('ONLINE_BACH_DATA');\n }\n\n private _clearOnlineBatchData() {\n this._setStorage('ONLINE_BACH_DATA', '');\n }\n\n private _online(batch: Array<IOnlineLogParamsWithCommon>) {\n !!this._consoleLog && console.log('[XLOG] PARAMS(ONLINE)', batch);\n // 清除缓存\n this._clearOnlineBatchData();\n this._request(this._onlineUrl, { batch: JSON.stringify(batch) }).catch((err) => {\n // 如果失败,需要将当前批次的请求数据batch缓存(下次启动的时候再发送)\n this._setOnlineBatchData(batch);\n });\n }\n}\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","getDateStr","now","Date","year","getFullYear","toString","month","getMonth","day","getDate","substr","Number","merge","o1","o2","tempO1","tempO2","keys","forEach","k","EGender","XLog","_a","domain","commonParams","_b","isPro","_c","sendOpenLog","_d","consoleLog","version","buildDate","_openUrl","_eventUrl","_actUrl","_adUrl","_onlineUrl","_startTime","_commonParams","_isPro","_sendOpenLog","_isColdStartUp","_systemInfo","_mp","_consoleLog","_f","_getApis","openUrl","eventUrl","actUrl","adUrl","onlineUrl","obj","_g","_getMp","mp","platform","_platform","constructor","console","error","log","_e","getSystemInfoSync","_extraInfo","language","wxVersion","SDKVersion","benchmarkLevel","theme","_init","defineProperty","get","_this","_initCommonParams","_filterParams","_coldStartUp","_visibilityChange","_getNetworkType","then","networkType","_updateCommonParams","network","_open","openway","onlineBatchData","_getOnlineBatchData","_online","_sendOnline","tt","ks","swan","qq","wx","my","jd","onShow","onHide","onAppShow","onAppHide","_getStorage","key","getStorageSync","concat","_setStorage","value","setStorageSync","_getBatchId","bid","radix","chars","split","uuid","rnd","Math","random","len","rad","join","generateId","defaultDomain","open","event","act","ad","online","dm","_cacheCommonParams","JSON","stringify","_getInitParams","appcqid","appqid","os","osversion","system","device","model","devicebrand","brand","pixel","screenWidth","screenHeight","userinfo","_getUserInfo","receivedCommonParams","cps","parse","obatchid","Promise","resolve","getNetworkType","success","res","fail","userInfo","uip","ui","params","_params","v","includes","setParams","originOpenid","openid","originUnionid","unionid","isreturn","appver","appverint","ver","map","transferVersion","_getAppqid","_request","url","data","contentType","reject","request","method","header","querystring","launchOptions","getEnterOptionsSync","getLaunchOptionsSync","query","wakeway","scene","xmlog","event1","event2","event3","event4","value1","value2","value3","value4","actentryid","subactid","type","custom","batchid","code","codeinfo","pagetype","gametype","adslot","adunitid","adbatchid","ecpm","_endTime","onlinetime","endtime","starttime","_setOnlineBatchData","batch","_clearOnlineBatchData","catch","err"],"mappings":"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"}
|