@xyz-fe/log 3.6.2 → 3.6.4
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/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/mp.js +2 -2
- package/dist/mp.js.map +1 -1
- package/dist/mp.min.js +2 -2
- package/dist/mp.min.js.map +1 -1
- package/dist/mp.mjs +2 -2
- package/dist/mp.mjs.map +1 -1
- package/dist/web-hw.js +2 -2
- package/dist/web-hw.js.map +1 -1
- package/dist/web-hw.min.js +3 -3
- package/dist/web-hw.min.js.map +1 -1
- package/dist/web-hw.mjs +2 -2
- package/dist/web-hw.mjs.map +1 -1
- package/dist/web.js +2 -2
- package/dist/web.js.map +1 -1
- package/dist/web.min.js +2 -2
- package/dist/web.min.js.map +1 -1
- package/dist/web.mjs +2 -2
- package/dist/web.mjs.map +1 -1
- package/package.json +12 -4
package/dist/web-hw.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-hw.min.js","sources":["../node_modules/.pnpm/tslib@2.4.0/node_modules/tslib/tslib.es6.js","../src/utils/storage.ts","../src/utils/index.ts","../node_modules/.pnpm/ua-parser-js@1.0.2/node_modules/ua-parser-js/src/ua-parser.js","../src/utils/ua-parser.ts","../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js","../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/debug.js","../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/browser.js","../node_modules/.pnpm/jsonp@0.2.1/node_modules/jsonp/index.js","../src/utils/jsonp.ts","../src/utils/req.ts","../src/config/index.ts","../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.mjs","../src/types/index.ts","../src/web-hw.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","const prefix = 'XYZ_LOG_';\n\nexport function getStorage(key: string): string | null {\n if (typeof localStorage !== undefined) {\n return localStorage.getItem(prefix + key);\n }\n return null;\n}\n\nexport function setStorage(key: string, value: string): void {\n if (typeof localStorage !== undefined) {\n localStorage.setItem(prefix + key, value);\n }\n}\n\nexport function getStorageWithSession(key: string): string | null {\n if (typeof sessionStorage !== undefined) {\n return sessionStorage.getItem(prefix + key);\n }\n return null;\n}\n\nexport function setStorageWithSession(key: string, value: string): void {\n if (typeof sessionStorage !== undefined) {\n sessionStorage.setItem(prefix + key, value);\n }\n}\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","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.2\n Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.2',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 255;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof(str) === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY).replace(/\\s\\s*$/, EMPTY);\n return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /\\bqbcore\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 '+BROWSER]], [\n /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ], [NAME, VERSION], [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i // LieBao Browser\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w\\.]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /\\((ip(?:hone|od)[\\w ]*);/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}-[atu]?[ln][01259x][012359][an]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ ([c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)( bui|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+ ([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser.major = majorize(_browser.version);\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","import { UAParser } from 'ua-parser-js';\n// const UAParser = require('ua-parser-js');\n\nexport const parser = new UAParser();\n\nconst { name: browser, version: browserversion } = parser.getBrowser();\nconst { name: engine, version: engineversion } = parser.getEngine();\n\n// 获取系统信息\nexport const getOs = () => {\n const { getOS } = parser;\n const { name, version } = getOS();\n\n return {\n os: name,\n osversion: version,\n };\n};\n\n// 获取设备信息\nexport const getDevice = () => {\n const { getDevice } = parser;\n const { model, vendor } = getDevice();\n\n return {\n device: model,\n devicebrand: vendor,\n };\n};\n\nlet { os, osversion } = getOs();\nlet { device, devicebrand } = getDevice();\n\nos = os || '';\nosversion = osversion || '';\ndevice = device || '';\ndevicebrand = devicebrand || '';\n\nexport { os, osversion, device, devicebrand, browser, browserversion, engine, engineversion };\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","/**\n * Module dependencies\n */\n\nvar debug = require('debug')('jsonp');\n\n/**\n * Module exports.\n */\n\nmodule.exports = jsonp;\n\n/**\n * Callback index.\n */\n\nvar count = 0;\n\n/**\n * Noop function.\n */\n\nfunction noop(){}\n\n/**\n * JSONP handler\n *\n * Options:\n * - param {String} qs parameter (`callback`)\n * - prefix {String} qs parameter (`__jp`)\n * - name {String} qs parameter (`prefix` + incr)\n * - timeout {Number} how long after a timeout error is emitted (`60000`)\n *\n * @param {String} url\n * @param {Object|Function} optional options / callback\n * @param {Function} optional callback\n */\n\nfunction jsonp(url, opts, fn){\n if ('function' == typeof opts) {\n fn = opts;\n opts = {};\n }\n if (!opts) opts = {};\n\n var prefix = opts.prefix || '__jp';\n\n // use the callback name that was passed if one was provided.\n // otherwise generate a unique name by incrementing our counter.\n var id = opts.name || (prefix + (count++));\n\n var param = opts.param || 'callback';\n var timeout = null != opts.timeout ? opts.timeout : 60000;\n var enc = encodeURIComponent;\n var target = document.getElementsByTagName('script')[0] || document.head;\n var script;\n var timer;\n\n\n if (timeout) {\n timer = setTimeout(function(){\n cleanup();\n if (fn) fn(new Error('Timeout'));\n }, timeout);\n }\n\n function cleanup(){\n if (script.parentNode) script.parentNode.removeChild(script);\n window[id] = noop;\n if (timer) clearTimeout(timer);\n }\n\n function cancel(){\n if (window[id]) {\n cleanup();\n }\n }\n\n window[id] = function(data){\n debug('jsonp got', data);\n cleanup();\n if (fn) fn(null, data);\n };\n\n // add qs component\n url += (~url.indexOf('?') ? '&' : '?') + param + '=' + enc(id);\n url = url.replace('?&', '?');\n\n debug('jsonp req \"%s\"', url);\n\n // create script\n script = document.createElement('script');\n script.src = url;\n target.parentNode.insertBefore(script, target);\n\n return cancel;\n}\n","import jsonp from 'jsonp';\nimport { json2params } from '.';\n\nexport default function (url: string, data: Record<string, any> = {}): Promise<any> {\n return new Promise((resolve, reject) => {\n jsonp(\n `${url}?${json2params(data)}`,\n {\n param: 'jsonp',\n name: `__jsonp_cb_${Date.now()}__`,\n },\n function (err: any, result: any) {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n );\n });\n}\n","import jsonp from './jsonp';\n// import xhr from './xhr';\n\ninterface Request {\n (url: string, data: Record<string, any>): Promise<any>;\n}\n\nexport const request: Request = function (url, data) {\n // try {\n // const blob = new Blob([qs.stringify(data)], { type: 'application/json' });\n // window.navigator.sendBeacon(url, blob);\n // return Promise.resolve();\n // } catch (error) {\n // }\n // return xhr({\n // url,\n // data: JSON.stringify(data),\n // });\n return jsonp(url, data);\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","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\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; // 启动日志补报,0=正常上报;1=获取到openid补报;2=获取到unionid补报\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}\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 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 uid?: string; // 【SDK内部处理】网页用户唯一id,一般不传,特殊情况除外。\n platform?: string; // 'h5' | 'pc' | 'pwa'; // 【SDK内部处理】 平台,h5/pc/pwa,一般不传,特殊情况除外。\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 IHwCommonParams,\n IHwActiveLogParams,\n IHwDomain,\n THwCommonParams,\n HwInitParams,\n IHwOpenLogParams,\n TPlatform,\n IHwAdLogParams,\n} from './types';\nimport {\n generateId,\n getId,\n getUtcOffset,\n merge,\n getPlatform,\n urlParams2Json,\n deepMerge,\n} from './utils';\nimport {\n getStorage,\n getStorageWithSession,\n setStorage,\n setStorageWithSession,\n} from './utils/storage';\nimport {\n os,\n osversion,\n device,\n devicebrand,\n browser,\n browserversion,\n engine,\n engineversion,\n} from './utils/ua-parser';\n// import PageLifecycle from 'page-lifecycle';\nimport { request } from './utils/req';\nimport { SDK_VERSION, BUILD_DATE, DEFAULT_QID } from './config';\nimport Cookies from 'js-cookie';\n\n// const SRC_QID = getQueryString('f');\n\n// 获取url参数\n// function getQueryString(name: string) {\n// const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');\n// const r = window.location.search.substring(1).match(reg); //获取url中\"?\"符后的字符串并正则匹配\n// let context = '';\n// if (r != null) context = decodeURIComponent(r[2]);\n// // reg = null;\n// // r = null;\n// return context == null || context == '' || context == 'undefined' ? '' : context;\n// }\n\n// 导出类型,方便调用者使用\nexport * from './types';\n\nconst CACHE_KEY_COMMON_PARAMS = 'HW_COMMON_PARAMS';\n\nexport class XLog {\n version = SDK_VERSION;\n buildDate = BUILD_DATE;\n private _openUrl: string; // 启动日志上报接口\n private _actUrl: string; // 活动(用户行为)日志上报接口\n private _adUrl: string; // 广告日志上报接口\n // 公共参数\n private _commonParams: IHwCommonParams = {};\n // 获取公共参数\n public get commonParams(): IHwCommonParams {\n return this._commonParams;\n }\n // 环境变量,true:生产环境;false:测试环境,默认生产环境\n private _isPro = true;\n // 是否发送启动日志,true:发送;false:不发送,默认发送\n private _sendOpenLog = true;\n // 控制台是否打印日志\n private _consoleLog = true;\n // 公参userinfo -> querystring(url)中的需排除的参数\n private _ignoreUrlParams: string[] = [];\n // 构造函数\n constructor({\n domain,\n commonParams,\n isPro = true,\n sendOpenLog = true,\n consoleLog = true,\n ignoreUrlParams = [],\n }: HwInitParams) {\n this._isPro = isPro;\n this._ignoreUrlParams = ignoreUrlParams;\n this._sendOpenLog = sendOpenLog;\n this._consoleLog = consoleLog;\n const { openUrl, actUrl, adUrl } = this._getApis(domain);\n this._openUrl = openUrl;\n this._actUrl = actUrl;\n this._adUrl = adUrl;\n\n this._init(commonParams);\n }\n\n private _init(commonParams?: THwCommonParams) {\n // 初始化公参\n this._updateCommonParams({\n ...this._filterParams(commonParams),\n obatchid: this._getBatchId(), // 本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n });\n\n // 冷热启动\n this._coldStartUp();\n\n // 注册切后台事件\n this._visibilityChange(\n () => {\n // 切前台(热启动)\n this._updateCommonParams({});\n this._open(1);\n },\n () => {\n // 切后台\n this._open(5);\n }\n );\n }\n\n private _visibilityChange(onShow = () => {}, onHide = () => {}) {\n const onVisibilityChange = () => {\n const visible = document?.visibilityState === 'visible';\n if (visible) {\n onShow();\n } else {\n onHide();\n }\n };\n document.addEventListener('visibilitychange', onVisibilityChange, false);\n // PageLifecycle.addEventListener('statechange',(event:any) => {\n // if(event.newState === 'hidden') {\n // onHide();\n // };\n // if(event.newState === 'active') {\n // onShow();\n // };\n // })\n }\n\n // 获取屏幕信息\n private _getScreen() {\n const { width, height } = window.screen;\n return `${width}*${height}`;\n }\n\n private _getNetWorkType() {\n const navigator = window.navigator as any;\n const connection =\n navigator?.connection || navigator?.mozConnection || navigator?.webkitConnection;\n return connection?.type || connection?.effectiveType || 'other';\n }\n\n // 获取批次号\n private _getBatchId() {\n let bid = getStorageWithSession('BATCH_ID');\n if (!bid) {\n bid = generateId();\n setStorageWithSession('BATCH_ID', bid);\n }\n return bid;\n }\n\n // 冷启动\n private _coldStartUp() {\n let openway: 0 | 1 | 5 | 6 = 0;\n if (window.name == '') {\n // 页面首次加载,当做冷启动处理。\n openway = 0;\n window.name = 'isReload'; // 在首次进入页面时我们可以给window.name设置一个固定值\n } else if (window.name == 'isReload') {\n // 页面被刷新,当做热启动处理。\n openway = 1;\n }\n this._open(openway);\n }\n\n // 获取接口地址。\n private _getApis(domain?: IHwDomain) {\n // 默认接口域名\n const defaultDomain: IHwDomain = this._isPro\n ? {\n open: 'https://wappubog.toktv.cc',\n act: 'https://wappubog.toktv.cc',\n ad: 'https://wappubog.toktv.cc',\n }\n : {\n open: 'https://test-wappubog.toktv.cc',\n act: 'https://test-wappubog.toktv.cc',\n ad: 'https://test-wappubog.toktv.cc',\n };\n const dm: IHwDomain = {\n ...defaultDomain,\n ...domain,\n };\n return {\n openUrl: `${dm.open}/wappubog/h5/open`, // 启动日志上报接口\n actUrl: `${dm.act}/wappubog/h5/activity`, // 打点日志上报接口\n adUrl: `${dm.ad}/gamefunction_logs/h5/advlog`, // 广告日志上报接口\n };\n }\n\n /**\n * 缓存公参\n * @param {object} obj 公共参数对象\n */\n private _cacheCommonParams(obj: IHwCommonParams) {\n const cachedParams = getStorage(CACHE_KEY_COMMON_PARAMS);\n const { userinfo: initUserInfo, ...initParamsRest } = this._getInitParams();\n const { userinfo: cachedUserInfo, ...cachedParamsRest } = JSON.parse(\n cachedParams || '{}'\n ) as IHwCommonParams;\n const { userinfo, ...rest } = obj;\n\n const mergedUserinfo = {\n ...JSON.parse(initUserInfo || '{}'),\n ...JSON.parse(cachedUserInfo || '{}'),\n ...JSON.parse(userinfo || '{}'),\n };\n const mergedRest = merge(merge(initParamsRest, cachedParamsRest), rest);\n this._commonParams = {\n ...mergedRest,\n userinfo: JSON.stringify(mergedUserinfo),\n };\n !!this._consoleLog && console.log('[XLOG] _cacheCommonParams', this._commonParams);\n setStorage(CACHE_KEY_COMMON_PARAMS, JSON.stringify(this._commonParams));\n }\n\n private _getInitParams(): IHwCommonParams {\n return {\n osversion, // 操作系统版本号,如:7.0\n device, // 客户端手机型号,如:xiaomi6\n devicebrand, // 机型品牌,如:HUAWEI\n os, // 操作系统,如:Android、iOS\n platform: getPlatform(), // 平台,h5/pc/pwa\n uid: getId(), // 小程序&公众号用户唯一id;web端js生成唯一id\n appcqid: DEFAULT_QID, // 根据产品自定义的默认渠道号(同一个apptypeid下不能出现相同的默认渠道号)\n pixel: this._getScreen(), // 屏幕分辨率,如:1080*1920\n userinfo: this._getUserInfo(),\n ua: encodeURI(navigator.userAgent), // 【SDK内部处理】userAgent\n timezone: getUtcOffset(), // 【SDK内部处理】所属时区 上报值范围(-12 ~ 0 ~ 12) 例如: 菲律宾上报8 泰国报7\n url: encodeURI(location.href), // 【SDK内部处理】当前URL地址\n // network: '', // 【SDK内部处理】网络环境,如:wifi、4g、3g、2g、other\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 deepMerge(\n {\n lang: navigator.language,\n browser,\n browserversion,\n engine,\n engineversion,\n platform: getPlatform(),\n querystring: urlParams2Json(this._ignoreUrlParams),\n // facebook 回传专用参数\n fbc: Cookies.get('_fbc'),\n fbp: Cookies.get('_fbp'),\n // tiktok 回传专用参数\n ttp: Cookies.get('_ttp'),\n },\n ui,\n uip\n )\n );\n }\n\n // 处理接入方传入的公参,只接受必须的参数,防止垃圾参数合并到公参中。\n private _filterParams(params?: THwCommonParams): THwCommonParams {\n const _params: THwCommonParams = {};\n if (params) {\n const keys: Array<keyof THwCommonParams> = [\n 'accid', // 业务侧用户唯一id,可以为空,有accid的时候传accid\n 'apptypeid', // 项目唯一识别符,如:步多多为100001\n 'appcqid', // 根据产品自定义的默认渠道号(如 url?qid=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'organic')\n 'appver', // 小程序版本号,如:1.1.1;公众号等web项目无此参数\n 'userinfo', // 用户信息 如:'{\"appsubid\": \"123456\", ...}'\n 'srcinfo', // 来源于归因方的归因信息(暂无)\n 'region', // 国家/地区,从服务端接口获取\n 'province', // 二级地区,从服务端接口获取\n 'uid', // 网页用户唯一id\n 'platform', // 平台,h5/pc/pwa,\n ];\n for (const k in params) {\n const _k = k as keyof THwCommonParams;\n const v = params[_k];\n if (keys.includes(_k) && v) {\n if (_k === 'platform') {\n _params[_k] = v as TPlatform;\n } else {\n _params[_k] = v;\n }\n }\n }\n }\n return _params;\n }\n\n /** 设置、更新日志参数 */\n public setParams(params?: THwCommonParams) {\n if (params) {\n !!this._consoleLog && console.log('[XLOG] setParams', params);\n const originRegion = this._commonParams.region;\n const originProvince = this._commonParams.province;\n // 过滤接收到的公参(可能存在垃圾参数)\n params = this._filterParams(params);\n // 更新公参\n this._updateCommonParams(params);\n // 获取到region或者province(且获取到的region(province)和已有的openid(province)不相等),补报启动日志\n if (\n (params.region && params.region !== originRegion) ||\n (params.province && params.province !== originProvince)\n ) {\n this._open(6);\n }\n }\n }\n\n // 用于供业务方退出登录时清空一些必要参数\n public replaceParams(params?: THwCommonParams) {\n if (params) {\n !!this._consoleLog && console.log('[XLOG] replaceParams', params);\n const originRegion = this._commonParams.region;\n const originProvince = this._commonParams.province;\n // 更新公参\n this._updateCommonParams(params);\n // 获取到region或者province(且获取到的region(province)和已有的openid(province)不相等),补报启动日志\n if (\n (params.region && params.region !== originRegion) ||\n (params.province && params.province !== originProvince)\n ) {\n this._open(6);\n }\n }\n }\n\n // SDK内部用于更新公参的方法\n private _updateCommonParams(params: IHwCommonParams) {\n !!this._consoleLog && console.log('[XLOG] _updateCommonParams', params);\n if (params.userinfo) {\n params.userinfo = this._getUserInfo(params.userinfo);\n } else {\n params.userinfo = this._getUserInfo();\n }\n let userInfo: Record<string, any> | undefined;\n try {\n userInfo = JSON.parse(params.userinfo);\n } catch (error) {\n console.error(`[XLOG] userinfo \"${params.userinfo}\" parse error`, error);\n }\n // 如果用户传入了 platform 则用传入的覆盖SDK内部的。\n if (params.platform) {\n params.userinfo = this._getUserInfo(\n JSON.stringify({ ...userInfo, platform: params.platform })\n );\n }\n this._cacheCommonParams({\n ...params,\n url: encodeURI(location.href),\n network: this._getNetWorkType(),\n });\n }\n\n private _request(url: string, data: Record<string, any>) {\n request(url, data);\n }\n\n /** 上报启动日志 */\n public _open(openway: 0 | 1 | 5 | 6) {\n if (!this._sendOpenLog) return;\n const data: IHwCommonParams & IHwOpenLogParams = {\n ...this._commonParams,\n userinfo: encodeURI(this._commonParams.userinfo || ''),\n url: encodeURI(location.href),\n xmlog: SDK_VERSION,\n url_from: document.referrer,\n openway, // 启动方式,0 冷启动;1 热启动;5 切后台\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(OPEN)', data);\n this._request(this._openUrl, data);\n }\n\n /** 上报用户行为、打点日志 */\n public act(params: IHwActiveLogParams) {\n // 行为日志上报参数\n const data: IHwCommonParams & IHwActiveLogParams = {\n ...this._commonParams,\n userinfo: encodeURI(this._commonParams.userinfo || ''),\n url: encodeURI(location.href),\n // 这种方式容易接收垃圾参数\n // ...params,\n actentryid: params.actentryid || '', // actentryid,业务活动ID,保证唯一性\n subactid: params.subactid || '', // subactid,子活动id,保证唯一性\n type: params.type || '', // type,类型:展现传“show”、点击传“click”、关闭传“close”\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(ACT)', data);\n this._request(this._actUrl, data);\n }\n /** 上报广告日志 */\n public ad(params: IHwAdLogParams) {\n // 行为日志上报参数\n const data: IHwCommonParams & IHwAdLogParams = {\n ...this._commonParams,\n userinfo: encodeURI(this._commonParams.userinfo || ''),\n url: encodeURI(location.href),\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 adfrom: params.adfrom || '', // 广告来源。google、facebook等\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(AD)', data);\n this._request(this._adUrl, data);\n }\n}\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__spreadArray","to","from","pack","ar","l","Array","slice","concat","prefix","getStorage","key","undefined","localStorage","getItem","setStorage","value","setItem","generateId","radix","chars","split","uuid","rnd","Math","random","len","rad","join","getId","name","uid","urlParams2Json","ignoreKeys","url","location","href","URL","search","substring","json","forEach","kv","keys","k","includes","merge","o1","o2","tempO1","tempO2","deepMerge","target","sources","_i","source","shift","_a","_b","getPlatform","navigator","standalone","window","matchMedia","matches","userAgent","some","keyword","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SONY","XIAOMI","ZEBRA","FACEBOOK","enumerize","arr","enums","toUpperCase","has","str1","str2","lowerize","str","toLowerCase","trim","replace","rgxMapper","ua","arrays","j","q","match","regex","props","exec","test","strMapper","map","windowsVersionMap","ME","XP","Vista","RT","regexes","browser","CHROME","cpu","device","engine","EDGE","os","UAParser","extensions","getResult","_ua","_rgxmap","mergedRegexes","extend","getBrowser","version","_browser","major","getCPU","_cpu","getDevice","_device","getEngine","_engine","getOS","_os","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","module","exports","$","jQuery","Zepto","parser","get","set","result","prop","browserversion","engineversion","_c","osversion","getOs","_d","model","devicebrand","vendor","m","h","d","y","ms","val","options","type","String","parseFloat","parse","isNaN","long","plural","fmtLong","round","fmtShort","Error","JSON","stringify","floor","ceil","prevTime","createDebug","namespace","debug","enabled","self","curr","Date","diff","prev","args","coerce","unshift","index","format","formatter","formatters","splice","formatArgs","logFn","log","console","bind","useColors","color","hash","charCodeAt","colors","abs","selectColor","init","stack","message","disable","enable","namespaces","save","names","skips","push","RegExp","substr","humanize","require$$0","load","r","storage","process","env","DEBUG","Function","c","lastC","removeItem","document","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","$1","chrome","local","localstorage","v","err","jsonp_1","opts","fn","script","timer","id","count","param","timeout","enc","encodeURIComponent","getElementsByTagName","head","setTimeout","cleanup","parentNode","removeChild","noop","clearTimeout","data","createElement","src","insertBefore","jsonp","Promise","resolve","reject","now","SDK_VERSION","EGender","api","converter","defaultAttributes","attributes","expires","toUTCString","decodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","write","create","cookies","jar","parts","found","read","remove","withAttributes","withConverter","freeze","path","CACHE_KEY_COMMON_PARAMS","XLog","domain","commonParams","isPro","sendOpenLog","consoleLog","_e","ignoreUrlParams","buildDate","_commonParams","_isPro","_sendOpenLog","_consoleLog","_ignoreUrlParams","_f","_getApis","openUrl","actUrl","adUrl","_openUrl","_actUrl","_adUrl","_init","defineProperty","_this","_updateCommonParams","_filterParams","obatchid","_getBatchId","_coldStartUp","_visibilityChange","_open","onShow","onHide","addEventListener","visibilityState","_getScreen","screen","width","height","_getNetWorkType","connection","mozConnection","webkitConnection","effectiveType","bid","sessionStorage","setStorageWithSession","openway","defaultDomain","open","act","ad","dm","_cacheCommonParams","obj","cachedParams","_getInitParams","initUserInfo","userinfo","initParamsRest","cachedUserInfo","cachedParamsRest","rest","mergedUserinfo","mergedRest","platform","appcqid","pixel","_getUserInfo","encodeURI","timezone","offset","getTimezoneOffset","hours","userInfo","uip","error","ui","lang","language","querystring","fbc","Cookies","fbp","ttp","params","_params","_k","setParams","originRegion","region","originProvince","province","replaceParams","network","_request","request","xmlog","url_from","referrer","actentryid","subactid","code","codeinfo","pagetype","gametype","adslot","adunitid","adbatchid","ecpm","adfrom"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web-hw.min.js","sources":["../node_modules/.pnpm/tslib@2.4.0/node_modules/tslib/tslib.es6.js","../src/utils/storage.ts","../src/utils/index.ts","../node_modules/.pnpm/ua-parser-js@1.0.2/node_modules/ua-parser-js/src/ua-parser.js","../src/utils/ua-parser.ts","../node_modules/.pnpm/ms@2.0.0/node_modules/ms/index.js","../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/debug.js","../node_modules/.pnpm/debug@2.6.9/node_modules/debug/src/browser.js","../node_modules/.pnpm/jsonp@0.2.1/node_modules/jsonp/index.js","../src/utils/jsonp.ts","../src/utils/req.ts","../src/config/index.ts","../node_modules/.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.mjs","../src/types/index.ts","../src/web-hw.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","const prefix = 'XYZ_LOG_';\n\nexport function getStorage(key: string): string | null {\n if (typeof localStorage !== undefined) {\n return localStorage.getItem(prefix + key);\n }\n return null;\n}\n\nexport function setStorage(key: string, value: string): void {\n if (typeof localStorage !== undefined) {\n localStorage.setItem(prefix + key, value);\n }\n}\n\nexport function getStorageWithSession(key: string): string | null {\n if (typeof sessionStorage !== undefined) {\n return sessionStorage.getItem(prefix + key);\n }\n return null;\n}\n\nexport function setStorageWithSession(key: string, value: string): void {\n if (typeof sessionStorage !== undefined) {\n sessionStorage.setItem(prefix + key, value);\n }\n}\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","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.2\n Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.2',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 255;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof(str) === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY).replace(/\\s\\s*$/, EMPTY);\n return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i, // Baidu Browser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale|qqbrowserlite|qq)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /\\bqbcore\\/([\\w\\.]+)/i // WeChat Desktop for Windows Built-in Browser\n ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /yabrowser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 '+BROWSER]], [\n /(oculus|samsung|sailfish)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish Browser\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/Baidu App/2345 Browser\n ], [NAME, VERSION], [\n /(metasr)[\\/ ]?([\\w\\.]+)/i, // SouGouBrowser\n /(lbbrowser)/i // LieBao Browser\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(chromium|instagram)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w\\.]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, VERSION]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n // Ordered by popularity\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[pt]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /\\((ip(?:hone|od)[\\w ]*);/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}-[atu]?[ln][01259x][012359][an]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+)(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[12]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ ([c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi)( bui|\\))/i, // Kindle Fire without Silk\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic|sony)[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w ]*; *(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( 2)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows) nt 6\\.2; (arm)/i, // Windows RT\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i, // Windows Phone\n /(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+ ([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _ua = ua || ((typeof window !== UNDEF_TYPE && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser.major = majorize(_browser.version);\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","import { UAParser } from 'ua-parser-js';\n// const UAParser = require('ua-parser-js');\n\nexport const parser = new UAParser();\n\nconst { name: browser, version: browserversion } = parser.getBrowser();\nconst { name: engine, version: engineversion } = parser.getEngine();\n\n// 获取系统信息\nexport const getOs = () => {\n const { getOS } = parser;\n const { name, version } = getOS();\n\n return {\n os: name,\n osversion: version,\n };\n};\n\n// 获取设备信息\nexport const getDevice = () => {\n const { getDevice } = parser;\n const { model, vendor } = getDevice();\n\n return {\n device: model,\n devicebrand: vendor,\n };\n};\n\nlet { os, osversion } = getOs();\nlet { device, devicebrand } = getDevice();\n\nos = os || '';\nosversion = osversion || '';\ndevice = device || '';\ndevicebrand = devicebrand || '';\n\nexport { os, osversion, device, devicebrand, browser, browserversion, engine, engineversion };\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","/**\n * Module dependencies\n */\n\nvar debug = require('debug')('jsonp');\n\n/**\n * Module exports.\n */\n\nmodule.exports = jsonp;\n\n/**\n * Callback index.\n */\n\nvar count = 0;\n\n/**\n * Noop function.\n */\n\nfunction noop(){}\n\n/**\n * JSONP handler\n *\n * Options:\n * - param {String} qs parameter (`callback`)\n * - prefix {String} qs parameter (`__jp`)\n * - name {String} qs parameter (`prefix` + incr)\n * - timeout {Number} how long after a timeout error is emitted (`60000`)\n *\n * @param {String} url\n * @param {Object|Function} optional options / callback\n * @param {Function} optional callback\n */\n\nfunction jsonp(url, opts, fn){\n if ('function' == typeof opts) {\n fn = opts;\n opts = {};\n }\n if (!opts) opts = {};\n\n var prefix = opts.prefix || '__jp';\n\n // use the callback name that was passed if one was provided.\n // otherwise generate a unique name by incrementing our counter.\n var id = opts.name || (prefix + (count++));\n\n var param = opts.param || 'callback';\n var timeout = null != opts.timeout ? opts.timeout : 60000;\n var enc = encodeURIComponent;\n var target = document.getElementsByTagName('script')[0] || document.head;\n var script;\n var timer;\n\n\n if (timeout) {\n timer = setTimeout(function(){\n cleanup();\n if (fn) fn(new Error('Timeout'));\n }, timeout);\n }\n\n function cleanup(){\n if (script.parentNode) script.parentNode.removeChild(script);\n window[id] = noop;\n if (timer) clearTimeout(timer);\n }\n\n function cancel(){\n if (window[id]) {\n cleanup();\n }\n }\n\n window[id] = function(data){\n debug('jsonp got', data);\n cleanup();\n if (fn) fn(null, data);\n };\n\n // add qs component\n url += (~url.indexOf('?') ? '&' : '?') + param + '=' + enc(id);\n url = url.replace('?&', '?');\n\n debug('jsonp req \"%s\"', url);\n\n // create script\n script = document.createElement('script');\n script.src = url;\n target.parentNode.insertBefore(script, target);\n\n return cancel;\n}\n","import jsonp from 'jsonp';\nimport { json2params } from '.';\n\nexport default function (url: string, data: Record<string, any> = {}): Promise<any> {\n return new Promise((resolve, reject) => {\n jsonp(\n `${url}?${json2params(data)}`,\n {\n param: 'jsonp',\n name: `__jsonp_cb_${Date.now()}__`,\n },\n function (err: any, result: any) {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n }\n );\n });\n}\n","import jsonp from './jsonp';\n// import xhr from './xhr';\n\ninterface Request {\n (url: string, data: Record<string, any>): Promise<any>;\n}\n\nexport const request: Request = function (url, data) {\n // try {\n // const blob = new Blob([qs.stringify(data)], { type: 'application/json' });\n // window.navigator.sendBeacon(url, blob);\n // return Promise.resolve();\n // } catch (error) {\n // }\n // return xhr({\n // url,\n // data: JSON.stringify(data),\n // });\n return jsonp(url, data);\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","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\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; // 启动日志补报,0=正常上报;1=获取到openid补报;2=获取到unionid补报\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}\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 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 uid?: string; // 【SDK内部处理】网页用户唯一id,一般不传,特殊情况除外。\n platform?: string; // 'h5' | 'pc' | 'pwa'; // 【SDK内部处理】 平台,h5/pc/pwa,一般不传,特殊情况除外。\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 IHwCommonParams,\n IHwActiveLogParams,\n IHwDomain,\n THwCommonParams,\n HwInitParams,\n IHwOpenLogParams,\n TPlatform,\n IHwAdLogParams,\n} from './types';\nimport {\n generateId,\n getId,\n getUtcOffset,\n merge,\n getPlatform,\n urlParams2Json,\n deepMerge,\n} from './utils';\nimport {\n getStorage,\n getStorageWithSession,\n setStorage,\n setStorageWithSession,\n} from './utils/storage';\nimport {\n os,\n osversion,\n device,\n devicebrand,\n browser,\n browserversion,\n engine,\n engineversion,\n} from './utils/ua-parser';\n// import PageLifecycle from 'page-lifecycle';\nimport { request } from './utils/req';\nimport { SDK_VERSION, BUILD_DATE, DEFAULT_QID } from './config';\nimport Cookies from 'js-cookie';\n\n// const SRC_QID = getQueryString('f');\n\n// 获取url参数\n// function getQueryString(name: string) {\n// const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');\n// const r = window.location.search.substring(1).match(reg); //获取url中\"?\"符后的字符串并正则匹配\n// let context = '';\n// if (r != null) context = decodeURIComponent(r[2]);\n// // reg = null;\n// // r = null;\n// return context == null || context == '' || context == 'undefined' ? '' : context;\n// }\n\n// 导出类型,方便调用者使用\nexport * from './types';\n\nconst CACHE_KEY_COMMON_PARAMS = 'HW_COMMON_PARAMS';\n\nexport class XLog {\n version = SDK_VERSION;\n buildDate = BUILD_DATE;\n private _openUrl: string; // 启动日志上报接口\n private _actUrl: string; // 活动(用户行为)日志上报接口\n private _adUrl: string; // 广告日志上报接口\n // 公共参数\n private _commonParams: IHwCommonParams = {};\n // 获取公共参数\n public get commonParams(): IHwCommonParams {\n return this._commonParams;\n }\n // 环境变量,true:生产环境;false:测试环境,默认生产环境\n private _isPro = true;\n // 是否发送启动日志,true:发送;false:不发送,默认发送\n private _sendOpenLog = true;\n // 控制台是否打印日志\n private _consoleLog = true;\n // 公参userinfo -> querystring(url)中的需排除的参数\n private _ignoreUrlParams: string[] = [];\n // 构造函数\n constructor({\n domain,\n commonParams,\n isPro = true,\n sendOpenLog = true,\n consoleLog = true,\n ignoreUrlParams = [],\n }: HwInitParams) {\n this._isPro = isPro;\n this._ignoreUrlParams = ignoreUrlParams;\n this._sendOpenLog = sendOpenLog;\n this._consoleLog = consoleLog;\n const { openUrl, actUrl, adUrl } = this._getApis(domain);\n this._openUrl = openUrl;\n this._actUrl = actUrl;\n this._adUrl = adUrl;\n\n this._init(commonParams);\n }\n\n private _init(commonParams?: THwCommonParams) {\n // 初始化公参\n this._updateCommonParams({\n ...this._filterParams(commonParams),\n obatchid: this._getBatchId(), // 本次启动唯一ID:每次启动时生成一个唯一批次号,直到下次启动才变更\n });\n\n // 冷热启动\n this._coldStartUp();\n\n // 注册切后台事件\n this._visibilityChange(\n () => {\n // 切前台(热启动)\n this._updateCommonParams({});\n this._open(1);\n },\n () => {\n // 切后台\n this._open(5);\n }\n );\n }\n\n private _visibilityChange(onShow = () => {}, onHide = () => {}) {\n const onVisibilityChange = () => {\n const visible = document?.visibilityState === 'visible';\n if (visible) {\n onShow();\n } else {\n onHide();\n }\n };\n document.addEventListener('visibilitychange', onVisibilityChange, false);\n // PageLifecycle.addEventListener('statechange',(event:any) => {\n // if(event.newState === 'hidden') {\n // onHide();\n // };\n // if(event.newState === 'active') {\n // onShow();\n // };\n // })\n }\n\n // 获取屏幕信息\n private _getScreen() {\n const { width, height } = window.screen;\n return `${width}*${height}`;\n }\n\n private _getNetWorkType() {\n const navigator = window.navigator as any;\n const connection =\n navigator?.connection || navigator?.mozConnection || navigator?.webkitConnection;\n return connection?.type || connection?.effectiveType || 'other';\n }\n\n // 获取批次号\n private _getBatchId() {\n let bid = getStorageWithSession('BATCH_ID');\n if (!bid) {\n bid = generateId();\n setStorageWithSession('BATCH_ID', bid);\n }\n return bid;\n }\n\n // 冷启动\n private _coldStartUp() {\n let openway: 0 | 1 | 5 | 6 = 0;\n if (window.name == '') {\n // 页面首次加载,当做冷启动处理。\n openway = 0;\n window.name = 'isReload'; // 在首次进入页面时我们可以给window.name设置一个固定值\n } else if (window.name == 'isReload') {\n // 页面被刷新,当做热启动处理。\n openway = 1;\n }\n this._open(openway);\n }\n\n // 获取接口地址。\n private _getApis(domain?: IHwDomain) {\n // 默认接口域名\n const defaultDomain: IHwDomain = this._isPro\n ? {\n open: 'https://wappubog.toktv.cc',\n act: 'https://wappubog.toktv.cc',\n ad: 'https://wappubog.toktv.cc',\n }\n : {\n open: 'https://test-wappubog.toktv.cc',\n act: 'https://test-wappubog.toktv.cc',\n ad: 'https://test-wappubog.toktv.cc',\n };\n const dm: IHwDomain = {\n ...defaultDomain,\n ...domain,\n };\n return {\n openUrl: `${dm.open}/wappubog/h5/open`, // 启动日志上报接口\n actUrl: `${dm.act}/wappubog/h5/activity`, // 打点日志上报接口\n adUrl: `${dm.ad}/gamefunction_logs/h5/advlog`, // 广告日志上报接口\n };\n }\n\n /**\n * 缓存公参\n * @param {object} obj 公共参数对象\n */\n private _cacheCommonParams(obj: IHwCommonParams) {\n const cachedParams = getStorage(CACHE_KEY_COMMON_PARAMS);\n const { userinfo: initUserInfo, ...initParamsRest } = this._getInitParams();\n const { userinfo: cachedUserInfo, ...cachedParamsRest } = JSON.parse(\n cachedParams || '{}'\n ) as IHwCommonParams;\n const { userinfo, ...rest } = obj;\n\n const mergedUserinfo = {\n ...JSON.parse(initUserInfo || '{}'),\n ...JSON.parse(cachedUserInfo || '{}'),\n ...JSON.parse(userinfo || '{}'),\n };\n const mergedRest = merge(merge(initParamsRest, cachedParamsRest), rest);\n this._commonParams = {\n ...mergedRest,\n userinfo: JSON.stringify(mergedUserinfo),\n };\n !!this._consoleLog && console.log('[XLOG] _cacheCommonParams', this._commonParams);\n setStorage(CACHE_KEY_COMMON_PARAMS, JSON.stringify(this._commonParams));\n }\n\n private _getInitParams(): IHwCommonParams {\n return {\n osversion, // 操作系统版本号,如:7.0\n device, // 客户端手机型号,如:xiaomi6\n devicebrand, // 机型品牌,如:HUAWEI\n os, // 操作系统,如:Android、iOS\n platform: getPlatform(), // 平台,h5/pc/pwa\n uid: getId(), // 小程序&公众号用户唯一id;web端js生成唯一id\n appcqid: DEFAULT_QID, // 根据产品自定义的默认渠道号(同一个apptypeid下不能出现相同的默认渠道号)\n pixel: this._getScreen(), // 屏幕分辨率,如:1080*1920\n userinfo: this._getUserInfo(),\n ua: encodeURI(navigator.userAgent), // 【SDK内部处理】userAgent\n timezone: getUtcOffset(), // 【SDK内部处理】所属时区 上报值范围(-12 ~ 0 ~ 12) 例如: 菲律宾上报8 泰国报7\n url: encodeURI(location.href), // 【SDK内部处理】当前URL地址\n // network: '', // 【SDK内部处理】网络环境,如:wifi、4g、3g、2g、other\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 deepMerge(\n {\n lang: navigator.language,\n browser,\n browserversion,\n engine,\n engineversion,\n platform: getPlatform(),\n querystring: urlParams2Json(this._ignoreUrlParams),\n // facebook 回传专用参数\n fbc: Cookies.get('_fbc'),\n fbp: Cookies.get('_fbp'),\n // tiktok 回传专用参数\n ttp: Cookies.get('_ttp'),\n },\n ui,\n uip\n )\n );\n }\n\n // 处理接入方传入的公参,只接受必须的参数,防止垃圾参数合并到公参中。\n private _filterParams(params?: THwCommonParams): THwCommonParams {\n const _params: THwCommonParams = {};\n if (params) {\n const keys: Array<keyof THwCommonParams> = [\n 'accid', // 业务侧用户唯一id,可以为空,有accid的时候传accid\n 'apptypeid', // 项目唯一识别符,如:步多多为100001\n 'appcqid', // 根据产品自定义的默认渠道号(如 url?qid=xxx xxx为渠道号,无渠道时,使用产品定义的默认渠道,SDK内部默认渠道是'organic')\n 'appver', // 小程序版本号,如:1.1.1;公众号等web项目无此参数\n 'userinfo', // 用户信息 如:'{\"appsubid\": \"123456\", ...}'\n 'srcinfo', // 来源于归因方的归因信息(暂无)\n 'region', // 国家/地区,从服务端接口获取\n 'province', // 二级地区,从服务端接口获取\n 'uid', // 网页用户唯一id\n 'platform', // 平台,h5/pc/pwa,\n ];\n for (const k in params) {\n const _k = k as keyof THwCommonParams;\n const v = params[_k];\n if (keys.includes(_k) && v) {\n if (_k === 'platform') {\n _params[_k] = v as TPlatform;\n } else {\n _params[_k] = v;\n }\n }\n }\n }\n return _params;\n }\n\n /** 设置、更新日志参数 */\n public setParams(params?: THwCommonParams) {\n if (params) {\n !!this._consoleLog && console.log('[XLOG] setParams', params);\n const originRegion = this._commonParams.region;\n const originProvince = this._commonParams.province;\n // 过滤接收到的公参(可能存在垃圾参数)\n params = this._filterParams(params);\n // 更新公参\n this._updateCommonParams(params);\n // 获取到region或者province(且获取到的region(province)和已有的openid(province)不相等),补报启动日志\n if (\n (params.region && params.region !== originRegion) ||\n (params.province && params.province !== originProvince)\n ) {\n this._open(6);\n }\n }\n }\n\n // 用于供业务方退出登录时清空一些必要参数\n public replaceParams(params?: THwCommonParams) {\n if (params) {\n !!this._consoleLog && console.log('[XLOG] replaceParams', params);\n const originRegion = this._commonParams.region;\n const originProvince = this._commonParams.province;\n // 更新公参\n this._updateCommonParams(params);\n // 获取到region或者province(且获取到的region(province)和已有的openid(province)不相等),补报启动日志\n if (\n (params.region && params.region !== originRegion) ||\n (params.province && params.province !== originProvince)\n ) {\n this._open(6);\n }\n }\n }\n\n // SDK内部用于更新公参的方法\n private _updateCommonParams(params: IHwCommonParams) {\n !!this._consoleLog && console.log('[XLOG] _updateCommonParams', params);\n if (params.userinfo) {\n params.userinfo = this._getUserInfo(params.userinfo);\n } else {\n params.userinfo = this._getUserInfo();\n }\n let userInfo: Record<string, any> | undefined;\n try {\n userInfo = JSON.parse(params.userinfo);\n } catch (error) {\n console.error(`[XLOG] userinfo \"${params.userinfo}\" parse error`, error);\n }\n // 如果用户传入了 platform 则用传入的覆盖SDK内部的。\n if (params.platform) {\n params.userinfo = this._getUserInfo(\n JSON.stringify({ ...userInfo, platform: params.platform })\n );\n }\n this._cacheCommonParams({\n ...params,\n url: encodeURI(location.href),\n network: this._getNetWorkType(),\n });\n }\n\n private _request(url: string, data: Record<string, any>) {\n request(url, data);\n }\n\n /** 上报启动日志 */\n public _open(openway: 0 | 1 | 5 | 6) {\n if (!this._sendOpenLog) return;\n const data: IHwCommonParams & IHwOpenLogParams = {\n ...this._commonParams,\n userinfo: encodeURI(this._commonParams.userinfo || ''),\n url: encodeURI(location.href),\n xmlog: SDK_VERSION,\n url_from: document.referrer,\n openway, // 启动方式,0 冷启动;1 热启动;5 切后台\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(OPEN)', data);\n this._request(this._openUrl, data);\n }\n\n /** 上报用户行为、打点日志 */\n public act(params: IHwActiveLogParams) {\n // 行为日志上报参数\n const data: IHwCommonParams & IHwActiveLogParams = {\n ...this._commonParams,\n userinfo: encodeURI(this._commonParams.userinfo || ''),\n url: encodeURI(location.href),\n // 这种方式容易接收垃圾参数\n // ...params,\n actentryid: params.actentryid || '', // actentryid,业务活动ID,保证唯一性\n subactid: params.subactid || '', // subactid,子活动id,保证唯一性\n type: params.type || '', // type,类型:展现传“show”、点击传“click”、关闭传“close”\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(ACT)', data);\n this._request(this._actUrl, data);\n }\n /** 上报广告日志 */\n public ad(params: IHwAdLogParams) {\n // 行为日志上报参数\n const data: IHwCommonParams & IHwAdLogParams = {\n ...this._commonParams,\n userinfo: encodeURI(this._commonParams.userinfo || ''),\n url: encodeURI(location.href),\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 adfrom: params.adfrom || '', // 广告来源。google、facebook等\n };\n !!this._consoleLog && console.log('[XLOG] PARAMS(AD)', data);\n this._request(this._adUrl, data);\n }\n}\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__spreadArray","to","from","pack","ar","l","Array","slice","concat","prefix","getStorage","key","undefined","localStorage","getItem","setStorage","value","setItem","generateId","radix","chars","split","uuid","rnd","Math","random","len","rad","join","getId","name","uid","urlParams2Json","ignoreKeys","url","location","href","URL","search","substring","json","forEach","kv","keys","k","includes","merge","o1","o2","tempO1","tempO2","deepMerge","target","sources","_i","source","shift","_a","_b","getPlatform","navigator","standalone","window","matchMedia","matches","userAgent","some","keyword","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SONY","XIAOMI","ZEBRA","FACEBOOK","enumerize","arr","enums","toUpperCase","has","str1","str2","lowerize","str","toLowerCase","trim","replace","rgxMapper","ua","arrays","j","q","match","regex","props","exec","test","strMapper","map","windowsVersionMap","ME","XP","Vista","RT","regexes","browser","CHROME","cpu","device","engine","EDGE","os","UAParser","extensions","getResult","_ua","_rgxmap","mergedRegexes","extend","getBrowser","version","_browser","major","getCPU","_cpu","getDevice","_device","getEngine","_engine","getOS","_os","getUA","setUA","BROWSER","CPU","DEVICE","ENGINE","OS","module","exports","$","jQuery","Zepto","parser","get","set","result","prop","browserversion","engineversion","_c","osversion","getOs","_d","model","devicebrand","vendor","m","h","d","y","ms","val","options","type","String","parseFloat","parse","isNaN","long","plural","fmtLong","round","fmtShort","Error","JSON","stringify","floor","ceil","prevTime","createDebug","namespace","debug","enabled","self","curr","Date","diff","prev","args","coerce","unshift","index","format","formatter","formatters","splice","formatArgs","logFn","log","console","bind","useColors","color","hash","charCodeAt","colors","abs","selectColor","init","stack","message","disable","enable","namespaces","save","names","skips","push","RegExp","substr","humanize","require$$0","load","r","storage","process","env","DEBUG","Function","c","lastC","removeItem","document","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","$1","chrome","local","localstorage","v","err","jsonp_1","opts","fn","script","timer","id","count","param","timeout","enc","encodeURIComponent","getElementsByTagName","head","setTimeout","cleanup","parentNode","removeChild","noop","clearTimeout","data","createElement","src","insertBefore","jsonp","Promise","resolve","reject","now","SDK_VERSION","EGender","api","converter","defaultAttributes","attributes","expires","toUTCString","decodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","write","create","cookies","jar","parts","found","read","remove","withAttributes","withConverter","freeze","path","CACHE_KEY_COMMON_PARAMS","XLog","domain","commonParams","isPro","sendOpenLog","consoleLog","_e","ignoreUrlParams","buildDate","_commonParams","_isPro","_sendOpenLog","_consoleLog","_ignoreUrlParams","_f","_getApis","openUrl","actUrl","adUrl","_openUrl","_actUrl","_adUrl","_init","defineProperty","_this","_updateCommonParams","_filterParams","obatchid","_getBatchId","_coldStartUp","_visibilityChange","_open","onShow","onHide","addEventListener","visibilityState","_getScreen","screen","width","height","_getNetWorkType","connection","mozConnection","webkitConnection","effectiveType","bid","sessionStorage","setStorageWithSession","openway","defaultDomain","open","act","ad","dm","_cacheCommonParams","obj","cachedParams","_getInitParams","initUserInfo","userinfo","initParamsRest","cachedUserInfo","cachedParamsRest","rest","mergedUserinfo","mergedRest","platform","appcqid","pixel","_getUserInfo","encodeURI","timezone","offset","getTimezoneOffset","hours","userInfo","uip","error","ui","lang","language","querystring","fbc","Cookies","fbp","ttp","params","_params","_k","setParams","originRegion","region","originProvince","province","replaceParams","network","_request","request","xmlog","url_from","referrer","actentryid","subactid","code","codeinfo","pagetype","gametype","adslot","adunitid","adbatchid","ecpm","adfrom"],"mappings":"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"}
|