@lark-sentry/utils 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1875 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +76 -0
- package/dist/index.d.ts +76 -0
- package/dist/index.js +1854 -0
- package/dist/index.js.map +1 -0
- package/dist/index.min.cjs +2 -0
- package/dist/index.min.cjs.map +1 -0
- package/dist/index.min.js +2 -0
- package/dist/index.min.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.min.js","sources":["../src/base64.ts","../src/data-structures.ts","../src/debounce.ts","../src/decorate-prop.ts","../src/dom2str.ts","../src/event2breadcrumb.ts","../src/get-css-selectors.ts","../src/get-time.ts","../../../node_modules/.pnpm/ua-parser-js@2.0.7/node_modules/ua-parser-js/src/main/ua-parser.mjs","../src/sentry.ts","../src/is-excluded-api.ts","../src/is-type.ts","../src/metric2perf-data.ts","../src/throttle.ts","../src/transform-http-data.ts"],"sourcesContent":["function base64(raw: string) {\n return btoa(encodeURIComponent(raw));\n}\n\nfunction base64v2(str: string): string {\n const bytes = new TextEncoder().encode(str);\n let binary = \"\";\n for (const b of bytes) {\n binary += String.fromCharCode(b);\n }\n const base64 = btoa(binary);\n return base64.replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=+$/, \"\");\n}\n\nexport { base64, base64v2 };\n","import { MAX_BREADCRUMBS } from \"@lark-sentry/constants\";\n\nexport class MinHeap<T extends { timestamp: number }> {\n public capacity = MAX_BREADCRUMBS;\n private heap: T[] = [];\n\n get size() {\n return this.heap.length;\n }\n\n constructor(capacity = MAX_BREADCRUMBS, itemArray: T[] = []) {\n this.capacity = capacity;\n this.heap = itemArray.slice(0, capacity);\n this.buildHeap();\n if (itemArray.length > capacity) {\n const rest = itemArray.slice(capacity);\n for (const item of rest) {\n if (item.timestamp >= this.heap[0].timestamp) {\n this.heap[0] = item;\n this.heapifyDown(0);\n }\n }\n }\n }\n\n push(item: T): boolean {\n if (this.size < this.capacity) {\n this.heap.push(item);\n this.heapifyUp(this.size - 1);\n return true;\n }\n if (item.timestamp >= this.heap[0].timestamp) {\n this.heap[0] = item;\n this.heapifyDown(0);\n return true;\n }\n return false;\n }\n\n peek(): T | undefined {\n return this.heap[0];\n }\n\n private heapifyUp(idx: number) {\n while (idx > 0) {\n const parentIdx = Math.floor((idx - 1) / 2);\n if (this.heap[parentIdx].timestamp <= this.heap[idx].timestamp) {\n break;\n }\n [this.heap[idx], this.heap[parentIdx]] = [\n this.heap[parentIdx],\n this.heap[idx],\n ];\n idx = parentIdx;\n }\n }\n\n private heapifyDown(idx: number) {\n while (true) {\n let childIdx = idx;\n const left = idx * 2 + 1;\n const right = idx * 2 + 2;\n if (\n left < this.size &&\n this.heap[left].timestamp < this.heap[childIdx].timestamp\n ) {\n childIdx = left;\n }\n if (\n right < this.size &&\n this.heap[right].timestamp < this.heap[childIdx].timestamp\n ) {\n childIdx = right;\n }\n if (childIdx === idx) {\n break;\n }\n [this.heap[idx], this.heap[childIdx]] = [\n this.heap[childIdx],\n this.heap[idx],\n ];\n idx = childIdx;\n }\n }\n\n private buildHeap() {\n const lastLeafIdx = this.size - 1;\n const lastNonLeafIdx = Math.floor((lastLeafIdx - 1) / 2);\n for (let i = lastNonLeafIdx; i >= 0; i--) {\n this.heapifyDown(i);\n }\n }\n\n dump(): T[] {\n return this.heap;\n }\n\n clear() {\n this.heap = [];\n }\n\n pop(): T | undefined {\n if (this.size === 0) {\n return undefined;\n }\n const peek = this.heap[0];\n this.heap[0] = this.heap[this.size - 1];\n this.heap.pop();\n if (this.size > 0) {\n this.heapifyDown(0);\n }\n return peek;\n }\n}\n\nexport class CallbackQueue {\n private cbList: VoidFunction[] = [];\n\n push(cb: VoidFunction, ctx?: unknown, ...args: unknown[]) {\n if (typeof cb !== \"function\") {\n return;\n }\n this.callByRequestIdleCallback(cb, ctx, ...args);\n }\n\n private callByRequestIdleCallback(\n cb: VoidFunction,\n ctx?: unknown,\n ...args: unknown[]\n ) {\n if (typeof requestIdleCallback !== \"function\") {\n this.callByPromise(cb, ctx, ...args);\n return;\n }\n this.cbList.push(cb.bind(ctx, ...args));\n requestIdleCallback(() => {\n this.flushFuncList();\n });\n }\n\n private callByPromise(cb: VoidFunction, ctx?: unknown, ...args: unknown[]) {\n this.cbList.push(cb.bind(ctx, ...args));\n Promise.resolve().then(() => {\n this.flushFuncList();\n });\n }\n\n clear() {\n this.cbList = [];\n }\n\n private flushFuncList() {\n const oldFuncList = this.cbList;\n this.cbList = [];\n oldFuncList.forEach((func) => {\n func();\n });\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport default function debounce<T extends (...args: any[]) => any>(\n fn: T,\n delay = 300,\n): (...args: Parameters<T>) => void {\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n return function (this: ThisParameterType<T>, ...args: Parameters<T>) {\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n fn.apply(this, args);\n\n // Wrong Answer\n // if (timer !== null) {\n // clearTimeout(timer);\n // }\n timer = null;\n }, delay);\n };\n}\n","function decorateProp<T extends object, K extends keyof T>(\n obj: T,\n propKey: K,\n decorator: (oldPropVal: T[K]) => T[K],\n) {\n const oldPropVal = obj[propKey];\n const propVal = decorator(oldPropVal);\n obj[propKey] = propVal;\n}\n\nexport default decorateProp;\n","function dom2str(target: HTMLElement, maxDepth = 10): string {\n if (maxDepth <= 0) {\n return \"...\";\n }\n const tagName = target.tagName.toLowerCase();\n\n const attrs = Array.from(target.attributes)\n .map((attr) => ` ${attr.name}=\"${attr.value}\"`)\n .join(\"\");\n\n const children = Array.from(target.children)\n .map((child) => dom2str(child as HTMLElement, maxDepth - 1))\n .join(\"\");\n\n return `<${tagName}${attrs}>${children}</${tagName}>`;\n}\n\nexport default dom2str;\n","import { BreadcrumbType, EventType } from \"@lark-sentry/types\";\n\nfunction event2breadcrumb(type: EventType) {\n switch (type) {\n case EventType.Xhr:\n case EventType.Fetch: {\n return BreadcrumbType.Http;\n }\n\n case EventType.Click: {\n return BreadcrumbType.Click;\n }\n\n case EventType.HashChange:\n case EventType.History: {\n return BreadcrumbType.Route;\n }\n\n case EventType.Resource: {\n return BreadcrumbType.Resource;\n }\n\n case EventType.UnhandledRejection: {\n return BreadcrumbType.CodeError;\n }\n\n case EventType.Error:\n case EventType.Vue:\n case EventType.React:\n case EventType.Performance:\n case EventType.ScreenRecord:\n case EventType.WhiteScreen:\n case EventType.Custom: {\n return BreadcrumbType.Custom;\n }\n\n default: {\n return BreadcrumbType.Custom;\n }\n }\n}\n\nexport default event2breadcrumb;\n","export function getCssSelectors(\n elem: Element,\n): [idSelector: string, classAttrSelector: string, elemSelector: string] {\n if (!elem || elem.nodeType !== 1) {\n return [\"\", \"\", \"\"];\n }\n const excludedAttrs = [\"id\", \"class\", \"style\"];\n const idSelector = elem.id ? `#${elem.id}` : \"\";\n const classSelector = Array.from(elem.classList)\n .map((c) => `.${c}`)\n .join(\"\");\n const attrSelector = Array.from(elem.attributes)\n .filter((attr) => !excludedAttrs.includes(attr.name))\n .map((attr) => `[${attr.name}=\"${attr.value}\"]`)\n .join(\"\");\n const elemSelector = elem.tagName.toLowerCase();\n return [idSelector, classSelector + attrSelector, elemSelector];\n}\n\nexport default getCssSelectors;\n","import type { IBaseData } from \"@lark-sentry/types\";\n\nfunction getTime(): Pick<IBaseData, \"time\" | \"timestamp\"> {\n return {\n time: new Date().toISOString(),\n timestamp: Date.now(),\n };\n}\n\nexport default getTime;\n","// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.7\n Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n AGPLv3 License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://uaparser.dev\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n \n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = '2.0.7',\n UA_MAX_LENGTH = 500,\n USER_AGENT = 'user-agent',\n EMPTY = '',\n UNKNOWN = '?',\n TYPEOF = {\n FUNCTION : 'function',\n OBJECT : 'object',\n STRING : 'string',\n UNDEFINED : 'undefined'\n },\n\n // properties\n BROWSER = 'browser',\n CPU = 'cpu',\n DEVICE = 'device',\n ENGINE = 'engine',\n OS = 'os',\n RESULT = 'result',\n\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n MAJOR = 'major',\n MODEL = 'model',\n\n // device types\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n XR = 'xr',\n EMBEDDED = 'embedded',\n\n // browser types\n INAPP = 'inapp',\n\n // client hints\n BRANDS = 'brands',\n FORMFACTORS = 'formFactors',\n FULLVERLIST = 'fullVersionList',\n PLATFORM = 'platform',\n PLATFORMVER = 'platformVersion',\n BITNESS = 'bitness',\n CH = 'sec-ch-ua',\n CH_FULL_VER_LIST= CH + '-full-version-list',\n CH_ARCH = CH + '-arch',\n CH_BITNESS = CH + '-' + BITNESS,\n CH_FORM_FACTORS = CH + '-form-factors',\n CH_MOBILE = CH + '-' + MOBILE,\n CH_MODEL = CH + '-' + MODEL,\n CH_PLATFORM = CH + '-' + PLATFORM,\n CH_PLATFORM_VER = CH_PLATFORM + '-version',\n CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n // device vendors\n AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n HONOR = 'Honor',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n\n // browsers\n CHROME = 'Chrome',\n CHROMIUM = 'Chromium',\n CHROMECAST = 'Chromecast',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n OPERA = 'Opera',\n FACEBOOK = 'Facebook',\n SOGOU = 'Sogou',\n\n PREFIX_MOBILE = 'Mobile ',\n SUFFIX_BROWSER = ' Browser',\n\n // os\n WINDOWS = 'Windows';\n \n var isWindow = typeof window !== TYPEOF.UNDEFINED,\n NAVIGATOR = (isWindow && window.navigator) ? \n window.navigator : \n undefined,\n NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n NAVIGATOR.userAgentData : \n undefined;\n\n ///////////\n // Helper\n //////////\n\n var extend = function (defaultRgx, extensions) {\n var mergedRgx = {};\n var extraRgx = extensions;\n if (!isExtensions(extensions)) {\n extraRgx = {};\n for (var i in extensions) {\n for (var j in extensions[i]) {\n extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n }\n }\n }\n for (var k in defaultRgx) {\n mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n }\n return mergedRgx;\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 if (typeof str1 === TYPEOF.OBJECT && str1.length > 0) {\n for (var i in str1) {\n if (lowerize(str2) == lowerize(str1[i])) return true;\n }\n return false;\n }\n return isString(str1) ? lowerize(str2) == lowerize(str1) : false;\n },\n isExtensions = function (obj, deep) {\n for (var prop in obj) {\n return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n }\n },\n isString = function (val) {\n return typeof val === TYPEOF.STRING;\n },\n itemListToArray = function (header) {\n if (!header) return undefined;\n var arr = [];\n var tokens = strip(/\\\\?\\\"/g, header).split(',');\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(';') > -1) {\n var token = trim(tokens[i]).split(';v=');\n arr[i] = { brand : token[0], version : token[1] };\n } else {\n arr[i] = trim(tokens[i]);\n }\n }\n return arr;\n },\n lowerize = function (str) {\n return isString(str) ? str.toLowerCase() : str;\n },\n majorize = function (version) {\n return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n },\n setProps = function (arr) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n var propName = arr[i];\n if (typeof propName == TYPEOF.OBJECT && propName.length == 2) {\n this[propName[0]] = propName[1];\n } else {\n this[propName] = undefined;\n }\n }\n return this;\n },\n strip = function (pattern, str) {\n return isString(str) ? str.replace(pattern, EMPTY) : str;\n },\n stripQuotes = function (str) {\n return strip(/\\\\?\\\"/g, str); \n },\n trim = function (str, len) {\n str = strip(/^\\s\\s*/, String(str));\n return typeof len === TYPEOF.UNDEFINED ? str : str.substring(0, len);\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n if(!ua || !arrays) return;\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 if (!regex[j]) { break; }\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 === TYPEOF.OBJECT && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == TYPEOF.FUNCTION) {\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 q[1] FUNCTION or REGEX\n if (typeof q[1] === TYPEOF.FUNCTION && !(q[1].exec && q[1].test)) {\n if (q.length > 3) {\n this[q[0]] = match ? q[1].apply(this, q.slice(2)) : undefined;\n } else {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n }\n } else {\n if (q.length == 3) {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n } else if (q.length > 4) {\n this[q[0]] = match ? q[3].apply(this, [match.replace(q[1], q[2])].concat(q.slice(4))) : undefined;\n }\n }\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] === TYPEOF.OBJECT && 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 map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n var windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.51': '3.51',\n 'NT 4.0': '4.0',\n '2000' : ['5.0', '5.01'],\n 'XP' : ['5.1', '5.2'],\n 'Vista' : '6.0',\n '7' : '6.1',\n '8' : '6.2',\n '8.1' : '6.3',\n '10' : ['6.4', '10.0'],\n 'NT' : ''\n },\n \n formFactorsMap = {\n 'embedded' : 'Automotive',\n 'mobile' : 'Mobile',\n 'tablet' : ['Tablet', 'EInk'],\n 'smarttv' : 'TV',\n 'wearable' : 'Watch',\n 'xr' : ['VR', 'XR'],\n '?' : ['Desktop', 'Unknown'],\n '*' : undefined\n },\n\n browserHintsMap = {\n 'Chrome' : 'Google Chrome',\n 'Edge' : 'Microsoft Edge',\n 'Edge WebView2' : 'Microsoft Edge WebView2',\n 'Chrome WebView': 'Android WebView',\n 'Chrome Headless':'HeadlessChrome',\n 'Huawei Browser': 'HuaweiBrowser',\n 'MIUI Browser' : 'Miui Browser',\n 'Opera Mobi' : 'OperaMobile',\n 'Yandex' : 'YaBrowser'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var defaultRegexes = {\n\n browser : [[\n\n // Most common regardless engine\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n /webview.+edge\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, EDGE+' WebView']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i \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 /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble/Palemoon\n /(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser|palemoon)\\/([-\\w\\.]+)/i,\n // Atlas/Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115|surf|qwant)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115/Surf\n /(qwant)(?:ios|mobile)\\/([\\d\\.]+)/i, // Qwant\n /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i // Ecosia/Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\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 /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_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' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq|steam(?= (clie|tenf|gameo)))/i // LieBao Browser/Rekonq/Steam\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(bing)(?:web|sapphire)\\/([\\w\\.]+)/i, // Bing\n /(instagram|snapchat|klarna)[\\/ ]([-\\w\\.]+)/i // Instagram/Snapchat/Klarna\n ], [NAME, VERSION, [TYPE, INAPP]], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME, [TYPE, INAPP]], [\n /(zalo(?:app)?)[\\/\\sa-z]*([\\w\\.-]+)/i // Zalo \n ], [[NAME, /(.+)/, 'Zalo'], VERSION, [TYPE, INAPP]], [\n\n /(chromium)[\\/ ]([-\\w\\.]+)/i // Chromium\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n /wv\\).+chrome\\/([\\w\\.]+).+edgw\\//i // Edge WebView2\n ], [VERSION, [NAME, EDGE+' WebView2']], [\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' + SUFFIX_BROWSER]], [\n\n /chrome\\/([\\w\\.]+) mobile/i // Chrome Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\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 // Safari Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n /version\\/([\\w\\.\\,]+) .*(safari)/i // Safari\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, '1']], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i // Firefox Mobile\n ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, 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)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|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+)|[0-4][\\w\\.]+(?!.+compatible))/i, // Mozilla\n\n // Other\n /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?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 /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n ], [[ARCHITECTURE, 'arm']], [\n\n / sun4\\w[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i,\n /((ppc|powerpc)(64)?)( mac|;|\\))/i, // PowerPC\n /(?:osf1|[freopnt]{3,4}bsd) (alpha)/i // Alpha\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n /mc680.0/i\n ], [[ARCHITECTURE, '68k']], [\n /winnt.+\\[axp/i\n ], [[ARCHITECTURE, 'alpha']]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\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)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr]|browser)[-\\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 /\\b(?:ios|apple\\w+)\\/.+[\\(\\/](ipad)/i, // iPad\n /\\b(ipad)[\\d,]*[;\\] ].+(mac |i(pad)?)os/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei) ?([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][\\dc][adnt]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b(?:xiao)?((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n // Xiaomi Redmi / POCO / Black Shark / Qin\n /oid[^\\)]+; (redmi[\\-_ ]?(?:note|k)?[\\w_ ]+|m?[12]\\d[01]\\d\\w{3,6}|poco[\\w ]+|(shark )?\\w{3}-[ah]0|qin ?[1-3](s\\+|ultra| pro)?)( bui|; wv|\\))/i,\n // Xiaomi Mi\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\\d{0,2}\\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\\))/i,\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OnePlus\n /droid.+; (cph2[3-6]\\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\\d|p[g-k]\\w[1m]10)\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\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 /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['203', '304', '403', '404', '413', '415'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // BLU\n /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i // Vivo series\n ], [MODEL, [VENDOR, 'BLU'], [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[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [ \n /lenovo[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ]([\\w\\s]+)(\\)| bui)/i,\n /((?:moto(?! 360)[-\\w\\(\\) ]+|xt\\d{3,4}[cgkosw\\+]?[-\\d]*|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|watch|webos))(\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*?))( bui|\\)|;|\\/)/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n // Google Pixel\n /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\\d ]*a?( pro)?( xl)?( fold)?( \\(5g\\))?)( bui|\\))/i\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n /(google) (pixelbook( go)?)/i\n ], [VENDOR, MODEL], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-\\w\\w\\d\\d)(?= 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 // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\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 /(?:blackberry|\\(bb10;) (\\w+)/i\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(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /tcl (xess p17aa)/i,\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : '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 // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // Archos\n /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n /archos ([\\w ]+)( b|\\))/i,\n /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n // HMD\n /; (n159v)/i\n ], [MODEL, [VENDOR, 'HMD'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i // Infinix XPad / Tecno\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan\n // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL/Wiko\n /; (blu|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i,\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(oppo) ?([\\w ]+) bui/i, // OPPO\n /(hisense) ([ehv][\\w ]+)\\)/i, // Hisense\n /droid[^;]+; (philips)[_ ]([sv-x][\\d]{3,4}[xz]?)/i // Philips\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i // Kindle\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 /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia 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.+; ([c6]+|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 // SMARTTVS\n ///////////////////\n\n /(philips)[\\w ]+tv/i, // Philips\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(vizio)(?: |.+model\\/)(\\w+-\\w+)/i, // Vizio\n /tcast.+(lg)e?. ([-\\w]+)/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/chromecast/i // Google Chromecast Third Generation\n ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/([^/]*)/i // Google Chromecast with specific device type\n ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /fuchsia.*crkey/i // Google Chromecast Nest Hub\n ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast, Linux-based or unknown\n ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /(portaltv)/i // Facebook Portal TV\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mi(tv|box)-?\\w+) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, /.+\\/(\\w+)/, '$1', strMapper, {'LG':'lge'}], [MODEL, trim], [TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n /(ouya)/i, // Ouya\n /(nintendo) (\\w+)/i, // Nintendo\n /(retroid) (pocket ([^\\)]+))/i, // Retroid Pocket\n /(valve).+(steam deck)/i,\n /droid.+; ((shield|rgcube|gr0006))( bui|\\))/i // Nvidia Portable/Anbernic/Logitech\n ], [[VENDOR, strMapper, { 'Nvidia': 'Shield', 'Anbernic': 'RGCUBE', 'Logitech': 'GR0006' }], MODEL, [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch / Xiaomi Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n /(pico) ([\\w ]+) os\\d/i // Pico\n ], [VENDOR, MODEL, [TYPE, XR]], [\n /(quest( \\d| pro)?s?).+vr/i // Meta Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n /mobile vr; rv.+firefox/i // Unidentifiable VR device using Firefox Reality / Wolvic\n ], [[TYPE, XR]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i // Unidentifiable embedded device using Windows IoT\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid.+; ([\\w- ]+) (4k|android|smart|google)[- ]?tv/i // Unidentifiable SmartTV\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\\w ]+safari)\\b/i\n ], [[TYPE, SMARTTV]], [\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew|; hmsc).+?(mobile|vr|\\d) safari/i\n ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /droid .+?; ([\\w\\. -]+)( bui|\\))/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 /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\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|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /(windows nt) (6\\.[23]); arm/i // Windows RT\n ], [[NAME, /N/, 'R'], [VERSION, strMapper, windowsVersionMap]], [\n /(windows (?:phone|mobile|iot))(?: os)?[\\/ ]?([\\d\\.]*( se)?)/i, // Windows IoT/Mobile/Phone\n // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11\n /(windows)[\\/ ](1[01]|2000|3\\.1|7|8(\\.1)?|9[58]|me|server 20\\d\\d( r2)?|vista|xp)/i\n ], [NAME, VERSION], [\n /windows nt ?([\\d\\.\\)]*)(?!.+xbox)/i,\n /\\bwin(?=3| ?9|n)(?:nt| 9x )?([\\d\\.;]*)/i\n ], [[VERSION, /(;|\\))/g, '', strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n /(windows ce)\\/?([\\d\\.]*)/i // Windows CE\n ], [NAME, VERSION], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\\/ ]([\\w\\.]+)/i,\n /\\btvos ?([\\w\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+(haiku|morphos))/i // Mac OS\n ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n // Google Chromecast\n /android ([\\d\\.]+).*crkey/i // Google Chromecast, Android-based\n ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n /fuchsia.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Fuchsia-based\n ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker\n ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n /linux.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Legacy Linux-based\n ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n /crkey\\/([\\d\\.]+)/i // Google Chromecast, unknown\n ], [VERSION, [NAME, CHROMECAST]], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n /(harmonyos)[\\/ ]?([\\d\\.]*)/i, // HarmonyOS\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\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 /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i, // WebOS\n /webos(?:[ \\/]?|\\.tv-20(?=2[2-9]))(\\d[\\d\\.]*)/i\n ], [VERSION, [NAME, 'webOS']], [\n /web0s;.+?(?:chr[o0]me|safari)\\/(\\d+)/i\n // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine\n ], [[VERSION, strMapper, {'25':'120','24':'108','23':'94','22':'87','6':'79','5':'68','4':'53','3':'38','2':'538','1':'537','*':'TV'}], [NAME, 'webOS']], [ \n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google ChromeOS\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, \"Chrome OS\"], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) (\\w+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n /(pico) .+os([\\w\\.]+)/i, // Pico\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /linux.+(mint)[\\/\\(\\) ]?([\\w\\.]*)/i, // Mint\n /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\\d\\.]*)/i, // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /\\b(aix)[; ]([1-9\\.]{0,4})/i, // AIX\n /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux/MorphOS\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) ?(r\\d)?/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\d\\.]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /\\b(beos|os\\/2|amigaos|openvms|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Factories\n ////////////////\n\n var defaultProps = (function () {\n var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n setProps.call(props.init, [\n [BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n [CPU, [ARCHITECTURE]],\n [DEVICE, [TYPE, MODEL, VENDOR]],\n [ENGINE, [NAME, VERSION]],\n [OS, [NAME, VERSION]]\n ]);\n setProps.call(props.isIgnore, [\n [BROWSER, [VERSION, MAJOR]],\n [ENGINE, [VERSION]],\n [OS, [VERSION]]\n ]);\n setProps.call(props.isIgnoreRgx, [\n [BROWSER, / ?browser$/i],\n [OS, / ?os$/i]\n ]);\n setProps.call(props.toString, [\n [BROWSER, [NAME, VERSION]],\n [CPU, [ARCHITECTURE]],\n [DEVICE, [VENDOR, MODEL]],\n [ENGINE, [NAME, VERSION]],\n [OS, [NAME, VERSION]]\n ]);\n return props;\n })();\n\n var createIData = function (item, itemType) {\n\n var init_props = defaultProps.init[itemType],\n is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n toString_props = defaultProps.toString[itemType] || 0;\n\n function IData () {\n setProps.call(this, init_props);\n }\n\n IData.prototype.getItem = function () {\n return item;\n };\n\n IData.prototype.withClientHints = function () {\n\n // nodejs / non-client-hints browsers\n if (!NAVIGATOR_UADATA) {\n return item\n .parseCH()\n .get();\n }\n\n // browsers based on chromium 85+\n return NAVIGATOR_UADATA\n .getHighEntropyValues(CH_ALL_VALUES)\n .then(function (res) {\n return item\n .setCH(new UACHData(res, false))\n .parseCH()\n .get();\n });\n };\n\n IData.prototype.withFeatureCheck = function () {\n return item.detectFeature().get();\n };\n\n if (itemType != RESULT) {\n IData.prototype.is = function (strToCheck) {\n var is = false;\n for (var i in this) {\n if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n is = true;\n if (strToCheck != TYPEOF.UNDEFINED) break;\n } else if (strToCheck == TYPEOF.UNDEFINED && is) {\n is = !is;\n break;\n }\n }\n return is;\n };\n IData.prototype.toString = function () {\n var str = EMPTY;\n for (var i in toString_props) {\n if (typeof(this[toString_props[i]]) !== TYPEOF.UNDEFINED) {\n str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n }\n }\n return str || TYPEOF.UNDEFINED;\n };\n }\n\n IData.prototype.then = function (cb) { \n var that = this;\n var IDataResolve = function () {\n for (var prop in that) {\n if (that.hasOwnProperty(prop)) {\n this[prop] = that[prop];\n }\n }\n };\n IDataResolve.prototype = {\n is : IData.prototype.is,\n toString : IData.prototype.toString,\n withClientHints : IData.prototype.withClientHints,\n withFeatureCheck : IData.prototype.withFeatureCheck\n };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\n\n return new IData();\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n function UACHData (uach, isHttpUACH) {\n uach = uach || {};\n setProps.call(this, CH_ALL_VALUES);\n if (isHttpUACH) {\n setProps.call(this, [\n [BRANDS, itemListToArray(uach[CH])],\n [FULLVERLIST, itemListToArray(uach[CH_FULL_VER_LIST])],\n [MOBILE, /\\?1/.test(uach[CH_MOBILE])],\n [MODEL, stripQuotes(uach[CH_MODEL])],\n [PLATFORM, stripQuotes(uach[CH_PLATFORM])],\n [PLATFORMVER, stripQuotes(uach[CH_PLATFORM_VER])],\n [ARCHITECTURE, stripQuotes(uach[CH_ARCH])],\n [FORMFACTORS, itemListToArray(uach[CH_FORM_FACTORS])],\n [BITNESS, stripQuotes(uach[CH_BITNESS])]\n ]);\n } else {\n for (var prop in uach) {\n if(this.hasOwnProperty(prop) && typeof uach[prop] !== TYPEOF.UNDEFINED) this[prop] = uach[prop];\n }\n }\n }\n\n function UAItem (itemType, ua, rgxMap, uaCH) {\n setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\n return this;\n }\n\n UAItem.prototype.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n UAItem.prototype.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n UAItem.prototype.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n UAItem.prototype.detectFeature = function () {\n if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n switch (this.itemType) {\n case BROWSER:\n // Brave-specific detection\n if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == TYPEOF.FUNCTION) {\n this.set(NAME, 'Brave');\n }\n break;\n case DEVICE:\n // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== TYPEOF.UNDEFINED && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n this.set(MODEL, 'iPad')\n .set(TYPE, TABLET);\n }\n break;\n case OS:\n // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n }\n break;\n case RESULT:\n var data = this.data;\n var detect = function (itemType) {\n return data[itemType]\n .getItem()\n .detectFeature()\n .get();\n };\n this.set(BROWSER, detect(BROWSER))\n .set(CPU, detect(CPU))\n .set(DEVICE, detect(DEVICE))\n .set(ENGINE, detect(ENGINE))\n .set(OS, detect(OS));\n }\n }\n return this;\n };\n\n UAItem.prototype.parseUA = function () {\n if (this.itemType != RESULT) {\n rgxMapper.call(this.data, this.ua, this.rgxMap);\n }\n switch (this.itemType) {\n case BROWSER:\n this.set(MAJOR, majorize(this.get(VERSION)));\n break;\n case OS:\n if (this.get(NAME) == 'iOS' && this.get(VERSION) == '18.6') {\n // Based on the assumption that iOS version is tightly coupled with Safari version\n var realVersion = /\\) Version\\/([\\d\\.]+)/.exec(this.ua); // Get Safari version\n if (realVersion && parseInt(realVersion[1].substring(0,2), 10) >= 26) {\n this.set(VERSION, realVersion[1]); // Set as iOS version\n }\n }\n break;\n }\n return this;\n };\n\n UAItem.prototype.parseCH = function () {\n var uaCH = this.uaCH,\n rgxMap = this.rgxMap;\n\n switch (this.itemType) {\n case BROWSER:\n case ENGINE:\n var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n if (brands) {\n for (var i=0; i<brands.length; i++) {\n var brandName = brands[i].brand || brands[i],\n brandVersion = brands[i].version;\n if (this.itemType == BROWSER && \n !/not.a.brand/i.test(brandName) && \n (!prevName || \n (/Chrom/.test(prevName) && brandName != CHROMIUM) || \n (prevName == EDGE && /WebView2/.test(brandName))\n )) {\n brandName = strMapper(brandName, browserHintsMap);\n prevName = this.get(NAME);\n if (!(prevName && !/Chrom/.test(prevName) && /Chrom/.test(brandName))) {\n this.set(NAME, brandName)\n .set(VERSION, brandVersion)\n .set(MAJOR, majorize(brandVersion));\n }\n prevName = brandName;\n }\n if (this.itemType == ENGINE && brandName == CHROMIUM) {\n this.set(VERSION, brandVersion);\n }\n }\n }\n break;\n case CPU:\n var archName = uaCH[ARCHITECTURE];\n if (archName) {\n if (archName && uaCH[BITNESS] == '64') archName += '64';\n rgxMapper.call(this.data, archName + ';', rgxMap);\n }\n break;\n case DEVICE:\n if (uaCH[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n if (uaCH[MODEL]) {\n this.set(MODEL, uaCH[MODEL]);\n if (!this.get(TYPE) || !this.get(VENDOR)) {\n var reParse = {};\n rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n if (!this.get(TYPE) && !!reParse.type) {\n this.set(TYPE, reParse.type);\n }\n if (!this.get(VENDOR) && !!reParse.vendor) {\n this.set(VENDOR, reParse.vendor);\n }\n }\n }\n if (uaCH[FORMFACTORS]) {\n var ff;\n if (typeof uaCH[FORMFACTORS] !== 'string') {\n var idx = 0;\n while (!ff && idx < uaCH[FORMFACTORS].length) {\n ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n }\n } else {\n ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n }\n this.set(TYPE, ff);\n }\n break;\n case OS:\n var osName = uaCH[PLATFORM];\n if(osName) {\n var osVersion = uaCH[PLATFORMVER];\n if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n this.set(NAME, osName)\n .set(VERSION, osVersion);\n }\n // Xbox-Specific Detection\n if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n this.set(NAME, 'Xbox')\n .set(VERSION, undefined);\n } \n break;\n case RESULT:\n var data = this.data;\n var parse = function (itemType) {\n return data[itemType]\n .getItem()\n .setCH(uaCH)\n .parseCH()\n .get();\n };\n this.set(BROWSER, parse(BROWSER))\n .set(CPU, parse(CPU))\n .set(DEVICE, parse(DEVICE))\n .set(ENGINE, parse(ENGINE))\n .set(OS, parse(OS));\n }\n return this;\n };\n\n function UAParser (ua, extensions, headers) {\n\n if (typeof ua === TYPEOF.OBJECT) {\n if (isExtensions(ua, true)) {\n if (typeof extensions === TYPEOF.OBJECT) {\n headers = extensions; // case UAParser(extensions, headers) \n }\n extensions = ua; // case UAParser(extensions)\n } else {\n headers = ua; // case UAParser(headers)\n extensions = undefined;\n }\n ua = undefined;\n } else if (typeof ua === TYPEOF.STRING && !isExtensions(extensions, true)) {\n headers = extensions; // case UAParser(ua, headers)\n extensions = undefined;\n }\n\n if (headers) {\n if (typeof headers.append === TYPEOF.FUNCTION) {\n // Convert Headers object into a plain object\n var kv = {};\n headers.forEach(function (v, k) { kv[String(k).toLowerCase()] = v; });\n headers = kv;\n } else {\n // Normalize headers field name into lowercase\n var normalized = {};\n for (var header in headers) {\n if (headers.hasOwnProperty(header)) {\n normalized[String(header).toLowerCase()] = headers[header];\n }\n }\n headers = normalized;\n }\n }\n \n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions, headers).getResult();\n }\n\n var userAgent = typeof ua === TYPEOF.STRING ? ua : // Passed user-agent string\n (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers\n ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n EMPTY)), // empty string\n\n httpUACH = new UACHData(headers, true),\n regexMap = extensions ? \n extend(defaultRegexes, extensions) : \n defaultRegexes,\n\n createItemFunc = function (itemType) {\n if (itemType == RESULT) {\n return function () {\n return new UAItem(itemType, userAgent, regexMap, httpUACH)\n .set('ua', userAgent)\n .set(BROWSER, this.getBrowser())\n .set(CPU, this.getCPU())\n .set(DEVICE, this.getDevice())\n .set(ENGINE, this.getEngine())\n .set(OS, this.getOS())\n .get();\n };\n } else {\n return function () {\n return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n .parseUA()\n .get();\n };\n }\n };\n \n // public methods\n setProps.call(this, [\n ['getBrowser', createItemFunc(BROWSER)],\n ['getCPU', createItemFunc(CPU)],\n ['getDevice', createItemFunc(DEVICE)],\n ['getEngine', createItemFunc(ENGINE)],\n ['getOS', createItemFunc(OS)],\n ['getResult', createItemFunc(RESULT)],\n ['getUA', function () { return userAgent; }],\n ['setUA', function (ua) {\n if (isString(ua)) userAgent = trim(ua, UA_MAX_LENGTH);\n return this;\n }]\n ])\n .setUA(userAgent);\n\n return this;\n }\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);\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 export {UAParser};","import type { IDeviceInfo, IOptions, ISentry } from \"@lark-sentry/types\";\n\nimport { DEFAULT_OPTIONS, UNKNOWN } from \"@lark-sentry/constants\";\n\nimport { UAParser } from \"ua-parser-js\";\n\ndeclare global {\n var __sentry__: ISentry | undefined;\n}\n\nclass Sentry implements ISentry {\n static #instance: Sentry;\n\n static get instance() {\n if (!this.#instance) {\n this.#instance = new Sentry();\n globalThis.__sentry__ = this.#instance;\n }\n return this.#instance;\n }\n\n codeErrors = new Set<string>();\n\n whiteScreenTimer: number | null = null;\n\n options: IOptions = DEFAULT_OPTIONS;\n\n deviceInfo: IDeviceInfo;\n\n shouldRecordScreen = false;\n\n constructor() {\n const res = new UAParser().getResult();\n this.deviceInfo = {\n browserName: res.browser.name ?? UNKNOWN,\n browserVersion: res.browser.version ?? UNKNOWN,\n osName: res.os.name ?? UNKNOWN,\n osVersion: res.os.version ?? UNKNOWN,\n userAgent: res.ua,\n deviceModel: res.device.model ?? UNKNOWN,\n deviceType: res.device.type ?? UNKNOWN,\n };\n }\n\n setOptions(newOptions: Partial<IOptions>) {\n Sentry.#instance.options = {\n ...this.options,\n ...newOptions,\n };\n }\n}\n\nexport default Sentry.instance;\n","import sentry from \"./sentry.js\";\n\nfunction isExcludedApi(api: string) {\n for (const excludedApi of sentry.options.excludeApis) {\n if (typeof excludedApi === \"string\") {\n if (api === excludedApi) {\n return true;\n }\n } else {\n if (excludedApi.test(api)) {\n return true;\n }\n }\n }\n return false;\n}\n\nexport default isExcludedApi;\n","import type { IExtendedErrorEvent, TUnknownError } from \"@lark-sentry/types\";\n\nfunction isHTMLElement(node: Node): node is HTMLElement {\n return node.nodeType === Node.ELEMENT_NODE;\n}\n\nfunction isError(err: TUnknownError): err is Error {\n return err instanceof Error;\n}\n\nfunction isErrorEvent(err: TUnknownError): err is ErrorEvent {\n return err instanceof ErrorEvent;\n}\n\nfunction isIExtendedErrorEvent(err: TUnknownError): err is IExtendedErrorEvent {\n return (\n err instanceof ErrorEvent &&\n err.target !== null &&\n \"src\" in err.target &&\n typeof err.target.src === \"string\" &&\n \"href\" in err.target &&\n typeof err.target.href === \"string\" &&\n \"localName\" in err.target &&\n typeof err.target.localName === \"string\"\n );\n}\n\nexport { isHTMLElement, isError, isErrorEvent, isIExtendedErrorEvent };\n","import { EventType, Status, type IPerformanceData } from \"@lark-sentry/types\";\n\nimport getTime from \"./get-time.js\";\n\nimport type { Metric } from \"web-vitals\";\n\nfunction metric2perfData(\n metric: Omit<Metric, \"name\"> & { name: string },\n): IPerformanceData {\n const { id, name, value, rating } = metric;\n return {\n id,\n name,\n value,\n rating,\n message: \"\",\n ...getTime(),\n type: EventType.Performance,\n status: Status.OK,\n };\n}\n\nexport default metric2perfData;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function throttle<T extends (...args: any[]) => any>(\n fn: T,\n delay = 300,\n): (...args: Parameters<T>) => void {\n let latestTimestamp = 0;\n\n return function (this: ThisParameterType<T>, ...args: Parameters<T>) {\n const now = Date.now();\n if (now - latestTimestamp > delay) {\n latestTimestamp = Date.now();\n fn.apply(this, args);\n return;\n }\n };\n}\n\nexport function throttleV2<T extends (...args: any[]) => any>(\n fn: T,\n delay = 300,\n): (...args: Parameters<T>) => void {\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n return function (this: ThisParameterType<T>, ...args: Parameters<T>) {\n if (timer) {\n return;\n }\n timer = setTimeout(() => {\n fn.apply(this, args);\n timer = null;\n }, delay);\n };\n}\n","import type { IHttpData } from \"@lark-sentry/types\";\n\nfunction transformHttpData(data: IHttpData): IHttpData {\n const { statusCode } = data;\n if (statusCode >= 100 && statusCode < 200) {\n data.message = \"Informational response\";\n } else if (statusCode >= 200 && statusCode < 300) {\n data.message = \"Successful responses\";\n } else if (statusCode >= 300 && statusCode < 400) {\n data.message = \"Redirection messages\";\n } else if (statusCode >= 400 && statusCode < 500) {\n data.message = \"Client error responses\";\n } else if (statusCode >= 500 && statusCode < 600) {\n data.message = \"Server error responses\";\n } else {\n data.message = \"Invalid status code\";\n }\n return data;\n}\n\nexport default transformHttpData;\n"],"names":["base64","raw","btoa","encodeURIComponent","base64v2","str","bytes","TextEncoder","encode","binary","b","String","fromCharCode","replace","MinHeap","constructor","capacity","MAX_BREADCRUMBS","itemArray","__publicField","this","heap","slice","buildHeap","length","rest","item","timestamp","heapifyDown","size","push","heapifyUp","peek","idx","parentIdx","Math","floor","childIdx","left","right","lastLeafIdx","i","dump","clear","pop","CallbackQueue","cb","ctx","args","callByRequestIdleCallback","requestIdleCallback","cbList","bind","flushFuncList","callByPromise","Promise","resolve","then","oldFuncList","forEach","func","debounce","fn","delay","timer","clearTimeout","setTimeout","apply","decorateProp","obj","propKey","decorator","propVal","dom2str","target","maxDepth","tagName","toLowerCase","Array","from","attributes","map","attr","name","value","join","children","child","event2breadcrumb","type","EventType","Xhr","Fetch","BreadcrumbType","Http","Click","HashChange","History","Route","Resource","UnhandledRejection","CodeError","Error","Vue","React","Performance","ScreenRecord","WhiteScreen","Custom","getCssSelectors","elem","nodeType","excludedAttrs","id","classList","c","filter","includes","getTime","time","Date","toISOString","now","props","USER_AGENT","EMPTY","TYPEOF","BROWSER","CPU","DEVICE","ENGINE","OS","RESULT","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","MAJOR","MODEL","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","XR","EMBEDDED","INAPP","BRANDS","FORMFACTORS","FULLVERLIST","PLATFORM","PLATFORMVER","BITNESS","CH","CH_FULL_VER_LIST","CH_ARCH","CH_BITNESS","CH_FORM_FACTORS","CH_MOBILE","CH_MODEL","CH_PLATFORM","CH_PLATFORM_VER","CH_ALL_VALUES","AMAZON","APPLE","ASUS","BLACKBERRY","GOOGLE","HUAWEI","LENOVO","HONOR","LG","MICROSOFT","MOTOROLA","NVIDIA","ONEPLUS","OPPO","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","CHROME","CHROMIUM","CHROMECAST","EDGE","FIREFOX","OPERA","FACEBOOK","SOGOU","PREFIX_MOBILE","SUFFIX_BROWSER","WINDOWS","NAVIGATOR","window","navigator","undefined","NAVIGATOR_UADATA","userAgentData","enumerize","arr","enums","toUpperCase","has","str1","str2","lowerize","isString","isExtensions","deep","prop","test","val","itemListToArray","header","tokens","strip","split","indexOf","token","trim","brand","version","majorize","setProps","hasOwnProperty","propName","pattern","stripQuotes","len","substring","rgxMapper","ua","arrays","j","k","p","q","matches","match","regex","exec","call","concat","strMapper","windowsVersionMap","ME","XP","Vista","NT","formFactorsMap","embedded","mobile","tablet","smarttv","wearable","xr","browserHintsMap","Chrome","Edge","Yandex","defaultRegexes","browser","cpu","device","OnePlus","Nvidia","Anbernic","Logitech","engine","os","defaultProps","init","isIgnore","isIgnoreRgx","toString","createIData","itemType","init_props","is_ignoreProps","is_ignoreRgx","toString_props","IData","prototype","getItem","withClientHints","getHighEntropyValues","res","setCH","UACHData","parseCH","get","withFeatureCheck","detectFeature","is","strToCheck","that","IDataResolve","resolveData","uach","isHttpUACH","UAItem","rgxMap","uaCH","UAParser","extensions","headers","append","kv","v","normalized","getResult","userAgent","httpUACH","regexMap","defaultRgx","mergedRgx","extraRgx","extend","createItemFunc","set","getBrowser","getCPU","getDevice","getEngine","getOS","parseUA","setUA","data","ch","brave","isBrave","standalone","maxTouchPoints","detect","realVersion","parseInt","prevName","brands","brandName","brandVersion","archName","reParse","vendor","ff","osName","osVersion","parse","_instance","_Sentry","Set","DEFAULT_OPTIONS","deviceInfo","browserName","UNKNOWN","browserVersion","deviceModel","model","deviceType","instance","__privateGet","globalThis","__sentry__","setOptions","newOptions","options","WeakMap","sentry","isExcludedApi","api","excludedApi","excludeApis","isHTMLElement","node","Node","ELEMENT_NODE","isError","err","isErrorEvent","ErrorEvent","isIExtendedErrorEvent","src","href","localName","metric2perfData","metric","rating","message","status","Status","OK","throttle","latestTimestamp","throttleV2","transformHttpData","statusCode"],"mappings":"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","x_google_ignoreList":[8]}
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lark-sentry/utils",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Sentry sdk utils",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.cjs"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"sentry",
|
|
24
|
+
"sdk",
|
|
25
|
+
"utils"
|
|
26
|
+
],
|
|
27
|
+
"author": "github.com/161043261",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"ua-parser-js": "^2.0.7",
|
|
31
|
+
"web-vitals": "^5.1.0",
|
|
32
|
+
"@lark-sentry/constants": "^1.0.0",
|
|
33
|
+
"@lark-sentry/types": "^1.0.0"
|
|
34
|
+
}
|
|
35
|
+
}
|