isdata-customer-sdk 0.2.74 → 0.2.76
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/cjs/dify.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/portal.js +1 -1
- package/dist/esm/dify.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/portal.js +1 -1
- package/dist/index.common.js +1779 -2301
- package/dist/index.common.js.map +1 -1
- package/dist/index.umd.js +1779 -2301
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +4 -4
- package/dist/index.umd.min.js.map +1 -1
- package/package.json +10 -10
- package/dist/cjs/chat.js.map +0 -1
- package/dist/cjs/dify.js.map +0 -1
- package/dist/cjs/event.js.map +0 -1
- package/dist/cjs/i18n.js.map +0 -1
- package/dist/cjs/iframe.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/portal.js.map +0 -1
- package/dist/cjs/security.js.map +0 -1
- package/dist/cjs/sms.js.map +0 -1
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/chat.js.map +0 -1
- package/dist/esm/dify.js.map +0 -1
- package/dist/esm/event.js.map +0 -1
- package/dist/esm/i18n.js.map +0 -1
- package/dist/esm/iframe.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/portal.js.map +0 -1
- package/dist/esm/security.js.map +0 -1
- package/dist/esm/sms.js.map +0 -1
- package/dist/esm/utils.js.map +0 -1
package/dist/cjs/security.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sources":["../../node_modules/querystringify/index.js","../../src/api/request.js","../../node_modules/ua-parser-js/src/main/ua-parser.mjs","../../src/api/portal.js","../../src/api/i18n/core.js","../../src/api/i18n/i18n.js","../../src/api/security.js"],"sourcesContent":["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","import axios from \"axios\"\r\nimport qs from \"querystringify\"\r\n\r\nlet apiContextPath = \"\"\r\n// const onlineDevelopmentMode = process.env.VUE_APP_ONLINE_DEVELOPMENT_MODE === \"true\" || process.env.REACT_APP_ONLINE_DEVELOPMENT_MODE === \"true\"\r\n// if (process.env.NODE_ENV === \"development\" && !onlineDevelopmentMode) {\r\n// document.cookie =\r\n// \"token=eyJhbGciOiJIUzI1NiJ9.eyJsb2dpblRpbWVzdGFtcCI6MTY0NjcyMjI2ODY4NSwidXNlcklkIjoiMTIzNDU2Nzg5MCJ9.F8wr84ha-dW18J9wZOQeTXj55mXTdqKfLBeNlNueoLY\"\r\n// document.cookie =\r\n// \"refreshToken=eyJhbGciOiJIUzI1NiJ9.eyJsb2dpblRpbWVzdGFtcCI6MTY0NjcyMjI2ODY4Nn0.TEVE_nopHNZlvSQM_RUZrLcCzkaERiHo8nz0q-ksL3E\"\r\n// document.cookie = \"username=admin\"\r\n// document.cookie = \"windowOnline=true\"\r\n// apiContextPath = \"/api\"\r\n// }\r\nexport const getInstance = (prefix = \"\") => {\r\n if (prefix) {\r\n prefix.startsWith(\"/\") && (prefix = prefix.slice(1, prefix.length))\r\n prefix.endsWith(\"/\") && (prefix = prefix.slice(0, -1))\r\n }\r\n const instance = axios.create({\r\n baseURL: `${apiContextPath}/${prefix ? prefix + \"/\" : \"\"}sdata/rest`,\r\n timeout: 60000,\r\n validateStatus: function(status) {\r\n return status >= 200 && status < 300 // default\r\n },\r\n headers:\r\n (window.location.search && qs.parse(window.location.search).token) ||\r\n window.token\r\n ? { token: qs.parse(window.location.search).token || window.token }\r\n : {}\r\n })\r\n\r\n let oldPost = instance.post;\r\n\r\n instance.post = (url, data, config)=> {\r\n let prefix =window.VITE_SERVICE_BASE_URL || \"\";\r\n if (prefix) {\r\n let newUrl = prefix + url;\r\n return oldPost.call(instance, newUrl, data, config);\r\n }\r\n return oldPost.call(instance, url, data, config);\r\n };\r\n\r\n instance.defaults.headers.post[\"Content-Type\"] = \"application/json\"\r\n\r\n instance.interceptors.response.use(\r\n response => {\r\n let { data } = response\r\n if (typeof data === \"string\") {\r\n data = JSON.parse(data)\r\n }\r\n if (data && data.status !== 200 && !(data instanceof Blob)) {\r\n return Promise.reject(response)\r\n }\r\n if (data instanceof Blob) {\r\n response.data = data\r\n return response\r\n }\r\n\r\n response.data = data && data.result\r\n return response\r\n },\r\n error => {\r\n if (error.response && error.response.status === 401) {\r\n return\r\n }\r\n\r\n return Promise.reject(error.response)\r\n }\r\n )\r\n return instance\r\n}\r\nlet prefixPath = window.prefixPath || \"\"\r\n\r\nexport default getInstance(prefixPath)\r\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.6\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.6',\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 /(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 // 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)/i // LieBao Browser/Rekonq\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(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: 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 /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\\d{0,2}\\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\\))/i, // Xiaomi Mi\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 ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield)( bui|\\))/i // Nvidia Portable\n ], [MODEL, [VENDOR, NVIDIA], [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) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel 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))|ip(?:ad|hone)(?: |.+i(?:pad)?)os)[\\/ ]([\\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 if (!NAVIGATOR_UADATA) {\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 };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\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\n this.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n this.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n this.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n this.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 this.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 this.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 setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\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 request from \"./request\";\r\n\r\n/**\r\n * 获取门户应用ID\r\n * @param {*} isPortalAction 是否是门户操作\r\n * 如果是门户操作,则从window.appSdk.getAppId()获取\r\n * 否则从sessionStorage中获取iportal_app_id,如果没有则从appVariables中获取\r\n * @param {*} isPortalAction\r\n * @returns\r\n */\r\nexport const getPoratlAppID = () => {\r\n let portal_app_id = window.sessionStorage.getItem(\"iportal_app_id\");\r\n if (!portal_app_id) {\r\n portal_app_id = getCurrentAppID();\r\n }\r\n return portal_app_id;\r\n};\r\n\r\nexport const getCurrentAppID = () => {\r\n let app_id = window.appSdk.getAppId() || window.localStorage.MobileAppId;\r\n return app_id;\r\n};\r\n\r\n/**\r\n * 取门户应用菜单数据\r\n * @param {*} user_id 用户ID\r\n * @param {*} group_id 组织ID\r\n * @param {*} isPortalAction\r\n * @returns\r\n */\r\nexport const getAppPortalMenuDatas = async (\r\n user_id,\r\n group_id,\r\n isPortalAction,\r\n appVariables\r\n) => {\r\n //获取门户应用ID\r\n let portal_app_id = getPoratlAppID();\r\n //获取当前用户在当前组织下的角色ID\r\n let roleList = await getRoleIDsByUserAndGroupID(\r\n user_id,\r\n portal_app_id,\r\n group_id\r\n );\r\n //获取当前组织下的门户菜单数据\r\n let portalMenuDatas = await getMenuDatasByGroupID(group_id, roleList);\r\n let app_id = window.appSdk.getAppId();\r\n let menuDatas = portalMenuDatas.filter((menuData) => {\r\n // 如果是门户菜单,则直接返回true\r\n // 否则根据app_id和portal_app_id进行过滤\r\n if (isPortalAction) {\r\n return true;\r\n } else {\r\n if (menuData.app_id == portal_app_id) {\r\n return true;\r\n } else {\r\n let types = menuData.children;\r\n let hasTargetMenu = false;\r\n if (types && types.length > 0) {\r\n types.forEach((type) => {\r\n let children = type.children;\r\n if (children && children.length > 0) {\r\n let newTypeChilden = children.filter((child) => {\r\n return child.app_id === app_id;\r\n });\r\n if (newTypeChilden && newTypeChilden.length > 0) {\r\n hasTargetMenu = true;\r\n }\r\n }\r\n });\r\n }\r\n return hasTargetMenu;\r\n }\r\n }\r\n });\r\n return menuDatas;\r\n};\r\n\r\n/**\r\n * 查询当前企业门户菜单信息\r\n * @param id GroupID\r\n *\r\n */\r\nexport const getMenuDatasByGroupID = async (group_id, role_ids) => {\r\n let queryData_groupData = {\r\n param: {\r\n id: group_id,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getMenuDatasByGroupID`,\r\n queryData_groupData\r\n );\r\n //所有的快捷访问菜单信息\r\n let portalMenuDatas = result.data.resultDatas;\r\n //所有的菜单类型\r\n let menuTypes = result.data.menuTypes;\r\n\r\n result = await request.post(\r\n `/dataservice/rest/orchestration/getPortalDefaultQuickMenus`,\r\n {}\r\n );\r\n\r\n let defaultMenuDatas = result.data.resultDatas;\r\n\r\n let defaultMenuType = result.data.menuTypes;\r\n\r\n let tempMenuDatas = portalMenuDatas.concat(defaultMenuDatas);\r\n\r\n let tempMenuType = menuTypes.concat(defaultMenuType);\r\n\r\n let finalMenuDatas = [];\r\n\r\n let finaMenuTypes = [];\r\n\r\n let tempMap = {};\r\n //缓存所有快捷访问菜单信息\r\n for (const tempData of tempMenuDatas) {\r\n let id = tempData.id;\r\n let isList =tempData.status==\"1\";\r\n // 只缓存启用状态的菜单\r\n if(!tempMap[id]&&isList)\r\n {\r\n finalMenuDatas.push(tempData);\r\n tempMap[id] = tempData;\r\n }\r\n }\r\n let tempTypeMap = {};\r\n //缓存所有菜单类型信息\r\n for (const tempType of tempMenuType) {\r\n let id = tempType.id;\r\n if(!tempTypeMap[id])\r\n {\r\n finaMenuTypes.push(tempType);\r\n tempTypeMap[id] = tempType;\r\n }\r\n }\r\n\r\n //如果有角色ID,则获取对应角色的快捷访问菜单映射信息\r\n if (role_ids && role_ids.length > 0) {\r\n //获取当前角色下对应的角色快捷访问菜单的映射信息(到应用自定义菜单)和快捷访问菜单的信息\r\n result = await getMenuMappingDatasByRoleIDs(role_ids, group_id);\r\n //对应角色的快捷访问菜单映射信息\r\n let quickMenuMappingDatas = result.data.quickMenuMappingDatas || [];\r\n let filterObjectMap = {};\r\n\r\n //缓存所有角色的快捷访问菜单映射信息\r\n for (const data of quickMenuMappingDatas) {\r\n let id = data.menu_mapping_id;\r\n let quickMenuMapping = tempMap[id];\r\n filterObjectMap[id] = quickMenuMapping;\r\n }\r\n //返回基于角色关联关系过滤后的快捷访问菜单信息\r\n return transformPortalData(finalMenuDatas, finaMenuTypes, filterObjectMap);\r\n } else {\r\n return transformPortalData(finalMenuDatas, finaMenuTypes, []);\r\n }\r\n};\r\n\r\n/**\r\n * 查询对应角色的门户快捷菜单映射信息\r\n * @param id GroupID\r\n *\r\n */\r\nexport const getMenuMappingDatasByRoleIDs = async (role_ids, group_id) => {\r\n let queryData_groupData = {\r\n param: {\r\n role_ids: role_ids,\r\n group_id: group_id,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getQuckMenuMappingsByRoleIDs`,\r\n queryData_groupData\r\n );\r\n //获取菜单数据\r\n return result;\r\n};\r\n\r\n/**\r\n * 校验SSO页面加载是否正确\r\n * @param id GroupID\r\n *\r\n */\r\nexport const validateSSOPageLoaded = async (app_id, appSecret, returnUrl) => {\r\n let queryData_groupData = {\r\n param: {\r\n app_id: app_id,\r\n appSecret: appSecret,\r\n returnUrl: returnUrl,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/validateSSOPageLoaded`,\r\n queryData_groupData\r\n );\r\n let resultCount = result.data.count;\r\n //获取菜单数据\r\n return resultCount;\r\n};\r\n\r\n/**\r\n * 查询对应角色的门户快捷菜单信息\r\n * @param id GroupID\r\n *\r\n */\r\nexport const getRoleIDsByUserAndGroupID = async (user_id, app_id, group_id) => {\r\n let queryData = {\r\n param: {\r\n user_id: user_id,\r\n app_id: app_id,\r\n group_id: group_id,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getRoleIDsByUserAndGroupID`,\r\n queryData\r\n );\r\n let role_ids = result.data.portal_role_ids;\r\n //获取菜单数据\r\n return role_ids;\r\n};\r\n\r\n/**\r\n * 获取门户知识文档的url\r\n * @param {*} kb_doc_id\r\n * @returns\r\n */\r\nexport const getPortalDocmentInfo = async (kb_doc_id) => {\r\n let queryData = {\r\n param: {\r\n kb_doc_id: kb_doc_id,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getPortalDocmentInfoByKBID`,\r\n queryData\r\n );\r\n let docInfo = result.data.docInfo;\r\n return docInfo;\r\n};\r\n\r\n// export const getLoginPortalAccountKey = async (loginName,groupID) => {\r\n// let queryData = {\r\n// param: {\r\n// loginData: {\r\n// account: loginName,\r\n// group_id: groupID,\r\n// },\r\n// },\r\n// };\r\n// let result = await request.post(\r\n// `/dataservice/rest/orchestration/getLoginPortalAccountKey`,\r\n// queryData\r\n// );\r\n// return result;\r\n// };\r\n\r\n/**\r\n * 获取该平台菜单同祖先(直至根节点)得其他兄弟菜单\r\n * @param {*} menu_id \r\n * @returns \r\n */\r\nexport const getPlatformBortherMenusByMenuID =async (menu_id,role_ids,group_id) =>{\r\n let queryData_groupData = {\r\n \"param\": {\r\n \"menu_id\": menu_id,\r\n }\r\n };\r\n let result =await request.post(`/dataservice/rest/orchestration/getPlatformBortherMenusByMenuID`,queryData_groupData);\r\n let sysMenuDatas = result.data.menuDatas || [];\r\n \r\n //获取当前角色下对应的角色菜单权限的映射信息\r\n let roleMenuMappingDatas = await getPlatformMenuMappingsByRoleIDs(role_ids, group_id);\r\n let roleMenuMappingMap = {};\r\n for (const mappingData of roleMenuMappingDatas) {\r\n let menu_mapping_id = mappingData.menu_id;\r\n roleMenuMappingMap[menu_mapping_id] = mappingData;\r\n }\r\n let menuMaps = {};\r\n //缓存所有菜单信息\r\n for (const item of sysMenuDatas) {\r\n let id = item.id;\r\n let leaf_flag = item.leaf_flag;\r\n //如果是叶子节点 并且当前菜单ID在角色菜单映射信息中不存在,则跳过\r\n if(leaf_flag===1&&(!roleMenuMappingMap[id])){\r\n continue;\r\n }\r\n // 如果当前菜单ID在角色菜单映射信息中存在,则表示该角色有权限访问该菜单\r\n if (!menuMaps[id]) {\r\n // let icon =item.icon;\r\n let iconClass =\"el-icon-menu\";\r\n // if(icon){\r\n // let obj = JSON.parse(icon);\r\n // iconClass =obj?.url?`#${obj.url}`:\"el-icon-menu\";\r\n // }\r\n let tempItem = {\r\n id: item.id,\r\n index: item.id,\r\n name: item.name,\r\n isSys:true,\r\n iconClass: iconClass,\r\n actionType: item.action_type|| \"1\", // 默认值为1\r\n app_id: item.datapp_id,\r\n menu_id: item.id, \r\n url: item.url||\"\",\r\n children: item.children || [],\r\n sort: item.sort || 0,\r\n };\r\n menuMaps[id] = tempItem;\r\n }\r\n }\r\n for (const item of sysMenuDatas) {\r\n let parent_id = item.parent_id;\r\n if (!parent_id) continue;\r\n let parentItem = menuMaps[parent_id];\r\n if (parentItem) {\r\n let menuItem = menuMaps[item.id];\r\n if(!menuItem){\r\n continue;\r\n }\r\n parentItem.children.push(menuItem);\r\n }\r\n }\r\n let menuDatas = [];\r\n for (const key in menuMaps) {\r\n let item = menuMaps[key];\r\n if (item.children && item.children.length > 0) {\r\n menuDatas.push(item);\r\n let children = item.children;\r\n children.sort((data1, data2) => {\r\n if (Number.isNaN(data1.sort)) return 1;\r\n if (Number.isNaN(data2.sort)) return -1;\r\n return data1.sort - data2.sort;\r\n });\r\n }\r\n }\r\n //如果没有数据,说明只有一级节点父亲\r\n if(menuDatas.length==0){\r\n for (const key in menuMaps) {\r\n let item = menuMaps[key];\r\n if (item) {\r\n menuDatas.push(item);\r\n }\r\n }\r\n }\r\n menuDatas.sort((data1, data2) => {\r\n if (Number.isNaN(data1.sort)) return 1;\r\n if (Number.isNaN(data2.sort)) return -1;\r\n return data1.sort - data2.sort;\r\n });\r\n // console.log(\"getPlatformBortherMenusByMenuID\",menuDatas);\r\n //获取菜单数据\r\n return menuDatas;\r\n};\r\n\r\n\r\n\r\n/**\r\n * 通过角色IDS获取该平台菜单权限映射\r\n * @param {*} menu_id \r\n * @returns \r\n */\r\nexport const getPlatformMenuMappingsByRoleIDs =async (role_ids,app_id) =>{\r\n let queryData_groupData = {\r\n \"param\": {\r\n \"role_ids\": role_ids,\r\n \"app_id\":app_id\r\n }\r\n };\r\n let result =await request.post(`/dataservice/rest/orchestration/getPlatformMenuMappingsByRoleIDs`,queryData_groupData);\r\n let mappingDatas = result.data.mappingDatas;\r\n //获取菜单数据\r\n return mappingDatas;\r\n};\r\n\r\n\r\n/**\r\n * 转换门户菜单数据\r\n * @param {*} datas 所有的快捷菜单访问信息\r\n * @param {*} menuTypes 快捷访问菜单类型\r\n * @param {*} filterObjectMap 角色快捷菜单访问映射信息\r\n * @returns\r\n */\r\nconst transformPortalData = (datas, menuTypes, filterObjectMap) => {\r\n let menuMaps = {};\r\n let menuTypeMaps = {};\r\n let parentMaps = {};\r\n //缓存所有父亲菜单信息\r\n for (let key in filterObjectMap) {\r\n let item = filterObjectMap[key];\r\n if(!item) continue;\r\n let parent_id = item.parent_id;\r\n if (parent_id) {\r\n parentMaps[parent_id] = true;\r\n }\r\n }\r\n //缓存所有菜单信息\r\n for (const data of datas) {\r\n let id = data.id;\r\n let tempMenuData = {\r\n id: id,\r\n index: data.menu_id,\r\n name: data.title,\r\n sort: data.sort,\r\n actionType: data.actionType,\r\n url: data.url,\r\n iconClass: data.image?data.image:\"el-icon-menu\",\r\n parent_id: data.parent_id,\r\n children: [],\r\n app_id: data.app_id,\r\n menu_id: data.menu_id,\r\n beyond_type: data.menu_type ? data.menu_type : \"RJVIEW-OTHERS\",\r\n beyond_type_sort: data.menu_type_sort ? data.menu_type_sort : 999,\r\n type:\"MenuItem\",\r\n typeID:data.type,\r\n };\r\n //如果存在快捷菜单映射数据或者是主菜单入口\r\n //如果是主菜单或者存在快捷访问映射或者孩子存在快捷访问映射或者是应用默认的菜单,则纳入到菜单中\r\n if ((filterObjectMap&&filterObjectMap[id]) || data.type == \"4\" || parentMaps[id] || data.is_app_defalut==\"1\") {\r\n //TODO:判断是否有平台系统的menu_id权限,有可能有映射权限,但角色没有平台权限,则不显示\r\n menuMaps[id] = tempMenuData;\r\n }\r\n }\r\n //缓存所有菜单类型信息\r\n for (const menuData of menuTypes) {\r\n let id = menuData.id;\r\n menuTypeMaps[id] = menuData;\r\n }\r\n for (const data of datas) {\r\n let type = data.type;\r\n //5:子菜单入口\r\n if (type == \"5\") {\r\n let tempMenuData = menuMaps[data.id];\r\n //如果没有对应的菜单数据,则跳过\r\n if (!tempMenuData) continue;\r\n let parent_id = data.parent_id;\r\n let tempType = tempMenuData.beyond_type;\r\n // let tempType_sort =tempMenuData.beyond_type_sort;\r\n let tempParentMenu = menuMaps[parent_id];\r\n if (!tempParentMenu) continue;\r\n let parentTypes = tempParentMenu.children;\r\n let parentType = parentTypes.find((tempTypeItem) => {\r\n return tempTypeItem.id == tempType;\r\n });\r\n if (parentType) {\r\n let type_childens = parentType.children;\r\n type_childens.push(tempMenuData);\r\n tempMenuData.typeItem = parentType;\r\n } else {\r\n let menuTypeObj = menuTypeMaps[tempType];\r\n let parentType = menuTypeObj\r\n ? {\r\n id: tempType,\r\n index: tempType,\r\n name: menuTypeObj.title,\r\n children: [],\r\n sort: menuTypeObj.value,\r\n type:\"MenuType\",\r\n }\r\n : {\r\n id: tempType,\r\n index: tempType,\r\n name: \"其他\",\r\n children: [],\r\n sort: 999,\r\n type:\"MenuType\"\r\n };\r\n let type_childens = parentType.children;\r\n type_childens.push(tempMenuData);\r\n parentTypes.push(parentType);\r\n tempMenuData.typeItem = parentType;\r\n }\r\n }\r\n }\r\n const menuList = [];\r\n for (const data of datas) {\r\n let type = data.type;\r\n //4:主菜单入口\r\n if (type == \"4\") {\r\n let tempMenuData = menuMaps[data.id];\r\n //如果没有对应的菜单数据,则跳过\r\n if (!tempMenuData) continue;\r\n let menuTypes = tempMenuData.children;\r\n let count = 0;\r\n for (const menuType of menuTypes) {\r\n let type_childens = menuType.children;\r\n let tempCount = type_childens.length;\r\n count = count + tempCount;\r\n if (tempCount > 0) {\r\n break;\r\n }\r\n }\r\n //如果不是默认菜单,并且没有快捷访问权限,并且孩子没有快捷访问权限,则不显示\r\n if(data.is_app_defalut!=\"1\") {\r\n // 如果没有权限,也没有子菜单时 则跳过\r\n if(filterObjectMap&&!filterObjectMap[data.id]&&count==0) {\r\n continue;\r\n }\r\n }\r\n menuList.push(tempMenuData);\r\n let types = tempMenuData.children;\r\n types.sort((data1, data2) => {\r\n if (Number.isNaN(data1.sort)) return 1;\r\n if (Number.isNaN(data2.sort)) return -1;\r\n return data1.sort - data2.sort;\r\n });\r\n for (let typeItem of types) {\r\n let tempArrys = typeItem.children;\r\n tempArrys.sort((data1, data2) => {\r\n if (Number.isNaN(data1.sort)) return 1;\r\n if (Number.isNaN(data2.sort)) return -1;\r\n return data1.sort - data2.sort;\r\n });\r\n }\r\n }\r\n }\r\n menuList.sort((data1, data2) => {\r\n if (Number.isNaN(data1.sort)) return 1;\r\n if (Number.isNaN(data2.sort)) return -1;\r\n return data1.sort - data2.sort;\r\n });\r\n // console.log(menuList);\r\n return menuList;\r\n};\r\n\r\n/**\r\n * 转换门户用户快捷菜单数据\r\n * @param {*} quickDatas\r\n * @returns\r\n */\r\nexport const transformPortalQuickMenuDatas = (quickDatas,defaultDatas) => {\r\n quickDatas = quickDatas ? quickDatas : [];\r\n defaultDatas = defaultDatas ? defaultDatas : [];\r\n let tempDatas = quickDatas.concat(defaultDatas);\r\n let tempDatasMap = {};\r\n let finalMenuDatas = [];\r\n for (const item of tempDatas) {\r\n let id = item.id;\r\n if(!tempDatasMap[id]) {\r\n tempDatasMap[id] = item;\r\n finalMenuDatas.push(item);\r\n }\r\n }\r\n let quickMenuMaps = {};\r\n for (const data of finalMenuDatas) {\r\n let id = data.id;\r\n let tempMenuData = {\r\n id: id,\r\n label: data.title,\r\n sort: data.sort,\r\n children: [],\r\n parent_id: data.parent_id,\r\n type: data.type,\r\n };\r\n quickMenuMaps[id] = tempMenuData;\r\n }\r\n for (const data of finalMenuDatas) {\r\n let tempMenuData = quickMenuMaps[data.id];\r\n //5:子菜单入口\r\n if (tempMenuData.type == \"5\") {\r\n let parent_id = tempMenuData.parent_id;\r\n let tempParentMenu = quickMenuMaps[parent_id];\r\n if (tempParentMenu) {\r\n let parentChilden = tempParentMenu.children;\r\n parentChilden.push(tempMenuData);\r\n }\r\n }\r\n }\r\n const menuList = [];\r\n for (const data of finalMenuDatas) {\r\n let tempMenuData = quickMenuMaps[data.id];\r\n //4:主菜单入口\r\n if (tempMenuData.type == \"4\") {\r\n menuList.push(tempMenuData);\r\n let tempArrys = tempMenuData.children;\r\n tempArrys.sort((data1, data2) => {\r\n if (Number.isNaN(data1.sort)) return 1;\r\n if (Number.isNaN(data2.sort)) return -1;\r\n return data1.sort - data2.sort;\r\n });\r\n }\r\n }\r\n menuList.sort((data1, data2) => {\r\n if (Number.isNaN(data1.sort)) return 1;\r\n if (Number.isNaN(data2.sort)) return -1;\r\n return data1.sort - data2.sort;\r\n });\r\n return menuList;\r\n};\r\n\r\nexport const transformPortalSystemMenuDatas = (datas) => {\r\n let menuMaps = {};\r\n for (const data of datas) {\r\n let id = data.id;\r\n let tempMenuData = {\r\n id: id,\r\n label: data.name,\r\n sort: data.sort,\r\n icon: data.icon,\r\n children: [],\r\n app_id: data.datapp_id,\r\n parent_id: data.parent_id,\r\n leaf_flag: data.leaf_flag,\r\n };\r\n menuMaps[id] = tempMenuData;\r\n }\r\n for (const data of datas) {\r\n let leaf_flag = data.leaf_flag;\r\n //5:子菜单入口\r\n if (leaf_flag == 1) {\r\n let tempMenuData = menuMaps[data.id];\r\n let parent_id = data.parent_id;\r\n let tempParentMenu = menuMaps[parent_id];\r\n if (tempParentMenu) {\r\n let parentChilden = tempParentMenu.children;\r\n parentChilden.push(tempMenuData);\r\n }\r\n }\r\n }\r\n const menuList = [];\r\n for (const data of datas) {\r\n let leaf_flag = data.leaf_flag;\r\n //4:主菜单入口\r\n if (leaf_flag == 0) {\r\n let tempMenuData = menuMaps[data.id];\r\n menuList.push(tempMenuData);\r\n let tempArrys = tempMenuData.children;\r\n tempArrys.sort((data1, data2) => {\r\n if (Number.isNaN(data1.sort)) return 1;\r\n if (Number.isNaN(data2.sort)) return -1;\r\n return data1.sort - data2.sort;\r\n });\r\n }\r\n }\r\n menuList.sort((data1, data2) => {\r\n if (Number.isNaN(data1.sort)) return 1;\r\n if (Number.isNaN(data2.sort)) return -1;\r\n return data1.sort - data2.sort;\r\n });\r\n return menuList;\r\n};\r\n\r\n/**\r\n * 获取当前用户默认的门户页面ID\r\n *\r\n * 该方法用于获取当前用户在门户中的默认页面ID\r\n * @param {信息} userData\r\n * @returns\r\n */\r\nexport const getCurrentUserPortalPageID = async (userData) => {\r\n let queryData = {\r\n param: {\r\n userData: userData,\r\n },\r\n };\r\n let response = await request.post(\r\n `/dataservice/rest/orchestration/getPortalPageID`,\r\n queryData\r\n );\r\n let portal_id = response.data.portal_id;\r\n return portal_id;\r\n};\r\n\r\n/**\r\n * 获取当前用户默认的门户页面ID\r\n *\r\n * 该方法用于获取当前用户在门户中的默认页面ID\r\n * @param {信息} userData\r\n * @returns\r\n */\r\nexport const getCurrentUserPortalMapping = async (userData) => {\r\n let queryData = {\r\n param: {\r\n userData: userData,\r\n },\r\n };\r\n let response = await request.post(\r\n `/dataservice/rest/orchestration/getPortalMappingInfo`,\r\n queryData\r\n );\r\n let portal_id = response.data.portal_info;\r\n return portal_id;\r\n};\r\n\r\n/**\r\n * 获取当前用户默认的门户页面ID\r\n *\r\n * 该方法用于获取当前用户在门户中的默认页面ID\r\n * @param {信息} userData\r\n * @returns\r\n */\r\nexport const getPortalInfosByID = async (id) => {\r\n let queryData = {\r\n param: {\r\n id: id,\r\n },\r\n };\r\n let response = await request.post(\r\n `/dataservice/rest/orchestration/getPortalInfosByID`,\r\n queryData\r\n );\r\n let portalInfo = response.data.portalInfo;\r\n return portalInfo;\r\n};\r\n\r\n/**\r\n * 通过租户名称模糊匹配获取租户信息\r\n *\r\n * @param {名称信息} name\r\n * @returns\r\n */\r\nexport const getTenetInfoByName = async (name) => {\r\n let queryData = {\r\n param: {\r\n name: name,\r\n },\r\n };\r\n let response = await request.post(\r\n `/dataservice/rest/orchestration/getTenetInfoByName`,\r\n queryData\r\n );\r\n let resultDatas = response.data.resultDatas;\r\n return resultDatas;\r\n};\r\n\r\n/**\r\n * 获取当前用户在门户中的所有映射数据\r\n * @param {信息} data\r\n * @returns\r\n */\r\nexport const getUserAllMappngPortal = (data) => {\r\n let queryData = {\r\n param: {\r\n userData: data,\r\n },\r\n };\r\n return request.post(\r\n `/dataservice/rest/orchestration/getUserAllMappngPortal`,\r\n queryData\r\n );\r\n};\r\n\r\n/**\r\n * 获取用户关联门户关联映射信息\r\n * @param {信息} data\r\n * @returns\r\n */\r\nexport const getPortalUserMappingInfos = async (data) => {\r\n let queryData = {\r\n param: {\r\n operateData: data,\r\n },\r\n };\r\n let responseData = await request.post(\r\n `/dataservice/rest/orchestration/getPortalUserMappingInfos`,\r\n queryData\r\n );\r\n let userMappingData = responseData.data.portalMapping;\r\n return userMappingData;\r\n};\r\n\r\n/**\r\n * 通过页面ID获取页面配置\r\n * @param {信息} data\r\n * @returns\r\n */\r\nexport const getPortalPageConfig = async (pageID) => {\r\n let queryData = {\r\n param: {\r\n id: pageID,\r\n },\r\n };\r\n let pageConfigResponse = await request.post(\r\n `/dataservice/rest/orchestration/getPortalPageConfig`,\r\n queryData\r\n );\r\n let configStr = pageConfigResponse.data.portal_page_config || \"[]\";\r\n return configStr;\r\n};\r\n\r\n/**\r\n * 通过页面ID设置页面配置\r\n * @param {信息} data\r\n * @returns\r\n */\r\nexport const setPortalPageConfig = (configData) => {\r\n let queryData = {\r\n param: configData,\r\n };\r\n return request.post(\r\n `/dataservice/rest/orchestration/setPortalPageConfig`,\r\n queryData\r\n );\r\n};\r\n\r\n/**\r\n * 更新用户选择的门户\r\n * @param {信息} data\r\n * @returns\r\n */\r\nexport const updateUserSelectPortal = (data) => {\r\n let queryData = {\r\n param: {\r\n portalMappingData: data,\r\n },\r\n };\r\n return request.post(\r\n `/dataservice/rest/orchestration/updateUserSelectPortal`,\r\n queryData\r\n );\r\n};\r\n\r\n/**\r\n * 获取当前用户在门户中的默认页面ID\r\n *\r\n * 该方法用于获取当前用户在门户中的默认页面ID\r\n * @param {信息} userData\r\n * @returns\r\n */\r\nexport const getPortalPageMenuID = async (pageID, app_id) => {\r\n let queryData = {\r\n param: {\r\n id: pageID,\r\n appid: app_id,\r\n },\r\n };\r\n let response = await request.post(\r\n `/dataservice/rest/orchestration/getPortalPageMenuID`,\r\n queryData\r\n );\r\n let menu_id = response.data.menu_id;\r\n return menu_id;\r\n};\r\n\r\n// 查询门户映射应用信息\r\n// * @param appID 应用ID\r\n// * @param groupID 集团ID\r\nexport const getMappingAppInfoByID = async (appID, groupID) => {\r\n let queryData = {\r\n param: {\r\n appID: appID,\r\n groupID: groupID,\r\n },\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/getPortalMappingAppInfoByID`,\r\n queryData\r\n );\r\n let appInfo = resultData.data.appInfo;\r\n return appInfo;\r\n};\r\n\r\n/**\r\n *\r\n * @returns 获取门户登录页面的公告信息\r\n */\r\nexport const getLoginPageNotices = async (groupID) => {\r\n let queryData = {\r\n param: {\r\n id: \"1005\",\r\n groupID: groupID, // 集团ID\r\n },\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/getNoticeInfosByAppTypeID`,\r\n queryData\r\n );\r\n let noticeInfos = resultData.data.resultDatas;\r\n return noticeInfos;\r\n};\r\n\r\n/**\r\n * 获取对应租户的组织的公告信息\r\n * @param {*} groupID \r\n * @returns \r\n */\r\nexport const getPortalNotices = async(groupID) => {\r\n let queryData={\r\n \"param\":{\r\n \"id\":groupID\r\n }\r\n };\r\n let resultData = await request.post(`/dataservice/rest/orchestration/getNoticesInfosByGroupID`, queryData);\r\n return resultData;\r\n}\r\n\r\n/**\r\n * 获取门户单点登录接入Token\r\n * @param {*} appKey\r\n * @param {*} appSecret\r\n * @returns\r\n */\r\nexport const getPortalAccessToken = async (appKey, appSecret) => {\r\n let result = await request.get(\r\n `/appAuth/getAccessToken?appKey=${appKey}&appSecret=${appSecret}`\r\n );\r\n let token = result.data;\r\n return token;\r\n};\r\n\r\n/**\r\n * 通过code和接入Token获取用户身份信息\r\n * @param {*} code\r\n * @param {*} access_token\r\n * @returns\r\n */\r\nexport const getPortalUserInfo = async (code, access_token) => {\r\n let result = await request.get(\r\n `/systhirdapp/user/getUserByCode?code=${code}&access_token=${access_token}`\r\n );\r\n let data = result.data;\r\n return data;\r\n};\r\n\r\n/**\r\n * 通过用户ID,平台类型,租户ID获取用户IM的签名ID\r\n * @param {*} userID\r\n * @param {*} platType\r\n * @param {*} groupID\r\n * @returns\r\n */\r\nexport const getPortalUserSig = async (userID, platType, groupID) => {\r\n let queryData = {\r\n param: {\r\n userID: userID,\r\n im_type: platType,\r\n group_id: groupID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getIMUserSigByID`,\r\n queryData\r\n );\r\n let sigID = result.data.userSig;\r\n return sigID;\r\n};\r\n\r\n/**\r\n * 通过租户ID获取门户应用的客户配置\r\n * @param {*} groupID\r\n * @returns\r\n */\r\nexport const getPortalAppCustomConfig = async (groupID) => {\r\n let requestData = {\r\n param: {\r\n groupID: groupID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getPortalAppCustomConfig`,\r\n requestData\r\n );\r\n let appInfo = result.data.configInfo;\r\n return appInfo;\r\n};\r\n\r\n/**\r\n * 查询当前企业组织的集团组织ID\r\n * @param id 组织ID\r\n *\r\n */\r\nexport const queryGroupIDByOfficeId = async (id) => {\r\n let queryData_office = {\r\n param: {\r\n id: id,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getGroupIDByDptID`,\r\n queryData_office\r\n );\r\n let groupDptData = result.data.resultDptData;\r\n let group_id = groupDptData.id;\r\n return group_id;\r\n};\r\n\r\n/**\r\n * 查询app变量\r\n * @param id 组织ID\r\n *\r\n */\r\nexport const queryAppVariable = (name, appVariables) => {\r\n if (appVariables && appVariables.length > 0) {\r\n for (let i = 0; i < appVariables.length; i++) {\r\n if (appVariables[i].name == name) {\r\n return appVariables[i].default_value;\r\n }\r\n }\r\n }\r\n return \"\";\r\n};\r\n\r\nexport const getThirdAppPathByKey = async (appkey, appSecret, groupID) => {\r\n let requestData = {\r\n param: {\r\n appKey: appkey,\r\n appSecret: appSecret,\r\n groupID: groupID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getThirdAppPathByKey`,\r\n requestData\r\n );\r\n let path = result.data.path;\r\n return path;\r\n};\r\n\r\nexport const queryAndStoreAppVariable = (name, appVariables) => {\r\n let value = window.sessionStorage.getItem(\"isdata_app_variable_\" + name);\r\n if (!value) {\r\n value = queryAppVariable(name, appVariables);\r\n if (value) {\r\n window.sessionStorage.setItem(\"isdata_app_variable_\" + name, value);\r\n }\r\n }\r\n return value;\r\n};\r\n\r\n/**\r\n * 添加或更新对象使用次数\r\n * @param {信息} data\r\n * @returns\r\n */\r\nexport const addObjectUsedTimes = (data) => {\r\n let queryData = {\r\n param: {\r\n operateData: data,\r\n },\r\n };\r\n return request.post(\r\n `/dataservice/rest/orchestration/addObjectUsedTimes`,\r\n queryData\r\n );\r\n};\r\n\r\n/**\r\n * 获取对象使用次数\r\n * @param {信息} data\r\n * @returns\r\n */\r\nexport const getObjectUseTimes = (data) => {\r\n let queryData = {\r\n param: {\r\n objectInfo: data,\r\n },\r\n };\r\n return request.post(\r\n `/dataservice/rest/orchestration/getObjectUseTimes`,\r\n queryData\r\n );\r\n};\r\n\r\n/**\r\n * 获取组件的页面ID\r\n * @param {信息} data\r\n * @returns\r\n */\r\nexport const getPageIDByComponentID = async (componentID) => {\r\n let queryData = {\r\n param: {\r\n componentID: componentID,\r\n },\r\n };\r\n let response = await request.post(\r\n `/dataservice/rest/orchestration/getPageIDByComponentID`,\r\n queryData\r\n );\r\n let pageID = response.data.page_id;\r\n return pageID;\r\n};\r\n\r\n/**\r\n * 通过账户名获取集团组织映射数据\r\n * @param {*} account\r\n * @returns\r\n */\r\nexport const getGroupMappingsByAccount = async (account) => {\r\n let queryData = {\r\n param: {\r\n account: account,\r\n },\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/getGourpMappingsByAccountName`,\r\n queryData\r\n );\r\n let tenetGroupDatas = resultData.data.resultGroups;\r\n return tenetGroupDatas;\r\n};\r\n\r\n/**\r\n * 通过手机号获取集团组织映射数据\r\n * @param {*} phone \r\n * @returns \r\n */\r\nexport const getGourpMappingsByPhoneNumber = async (phone) => {\r\n let queryData = {\r\n param: {\r\n phone: phone,\r\n },\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/getGourpMappingsByPhoneNumber`,\r\n queryData\r\n );\r\n let tenetGroupDatas = resultData.data.resultGroups;\r\n return tenetGroupDatas;\r\n};\r\n\r\n/**\r\n * 查询当前企业组织的集团组织ID\r\n * @param id 组织ID\r\n *\r\n */\r\nexport const queryGroupInfosByOfficeId = async (id) => {\r\n let queryData_office = {\r\n param: {\r\n id: id,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getGroupIDByDptID`,\r\n queryData_office\r\n );\r\n let groupDptData = result.data.resultDptData;\r\n return groupDptData;\r\n};\r\n\r\n/**\r\n * 查询当前企业组织信息\r\n * @param id 组织ID\r\n *\r\n */\r\nexport const getOfficeInfosByIDs = async (group_ids) => {\r\n let queryData_groupData = {\r\n param: {\r\n ids: group_ids,\r\n },\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/getOfficeInfosByIDs`,\r\n queryData_groupData\r\n );\r\n let groupDatas = resultData.data.officeInfos;\r\n return groupDatas;\r\n};\r\n\r\n/**\r\n * 查询当前企业组织信息\r\n * @param id 组织ID\r\n *\r\n */\r\nexport const queryOfficeInfosById = async (officeID) => {\r\n let queryData = {\r\n param: {\r\n id: officeID,\r\n },\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/getOfficeInfosByID`,\r\n queryData\r\n );\r\n let groupDptData = resultData.data.officeData;\r\n return groupDptData;\r\n};\r\n\r\n/**\r\n * 获取应用信息通过ID\r\n * @param {*} id\r\n * @returns\r\n */\r\nexport const getAPPInfosByID = async (id) => {\r\n let queryData = {\r\n param: {\r\n id: id,\r\n },\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/getAPPInfosByID`,\r\n queryData\r\n );\r\n let groupDptData = resultData.data.appInfo;\r\n return groupDptData;\r\n};\r\n\r\nexport const getAllUserInfosByGroupID = async (groupID) => {\r\n let requestData = {\r\n param: {\r\n groupID: groupID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getAllUserInfosByGroupID`,\r\n requestData\r\n );\r\n let data = result.data.resultDatas;\r\n return data;\r\n};\r\n\r\nexport const getChildrenOfficeInfosByID = async (officeID) => {\r\n let requestData = {\r\n param: {\r\n officeID: officeID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getChildrenOfficeInfosByID`,\r\n requestData\r\n );\r\n let data = result.data.resultDatas;\r\n return data;\r\n};\r\n\r\nexport const getPojectDptsByUserAndGroupID = async (userID, groupID) => {\r\n let requestData = {\r\n param: {\r\n userID: userID,\r\n groupID: groupID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getPojectDptsByUserAndGroupID`,\r\n requestData\r\n );\r\n let data = {\r\n dptDatas: result.data.officeDatas,\r\n userMappings: result.data.userMappings,\r\n };\r\n return data;\r\n};\r\n\r\n/**\r\n * 添加IM签名ID映射关系\r\n */\r\nexport const addIMMapping = async (userID, platType, groupID, sigID) => {\r\n let queryData = {\r\n param: {\r\n data: {\r\n userID: userID,\r\n im_type: platType,\r\n group_id: groupID,\r\n userSig: sigID,\r\n },\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/addIMMapping`,\r\n queryData\r\n );\r\n let resultData = result.data;\r\n return resultData;\r\n};\r\n\r\nexport const getAIRobotInfos = async (userID, groupID) => {\r\n let requestData = {\r\n param: {\r\n userID: userID,\r\n groupID: groupID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getAIRobotInfos`,\r\n requestData\r\n );\r\n let infos = result.data.robotInfos;\r\n return infos;\r\n};\r\n\r\n/**\r\n * 添加IM签名ID映射关系\r\n */\r\nexport const updateIMMapping = async (userID, platType, groupID, sigID) => {\r\n let queryData = {\r\n param: {\r\n userID: userID,\r\n im_type: platType,\r\n groupID: groupID,\r\n userSig: sigID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/updateIMMapping`,\r\n queryData\r\n );\r\n let resultData = result.data;\r\n return resultData;\r\n};\r\n\r\n/**\r\n * 获取应用自定义数据\r\n * @param {*} appID\r\n * @returns\r\n */\r\nexport const getAppCustomData = async (appID) => {\r\n let requestData = {\r\n param: {\r\n appID: appID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getAppCustomData`,\r\n requestData\r\n );\r\n let infos = result.data.customData;\r\n infos = infos ? JSON.parse(infos) : {};\r\n return infos;\r\n};\r\n\r\n/**\r\n * 获取集成应用的信息\r\n * @param {*} appID\r\n * @returns\r\n */\r\nexport const getIntegrateAppInfoByID = async (appID) => {\r\n let requestData = {\r\n param: {\r\n appID: appID,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getIntegrateAppInfoByID`,\r\n requestData\r\n );\r\n let appInfo = result.data.appInfo;\r\n return appInfo;\r\n};\r\n\r\n// 更新服务器i18n文本\r\nexport const savePortalI18nText=async(key, value,lang,beyondID,i18nType)=>{\r\n let app_id =getPoratlAppID();\r\n let requestData = {\r\n param: {\r\n key: key,\r\n value: value,\r\n appID:app_id,\r\n lang:lang,\r\n beyondID:beyondID,\r\n i18nType:i18nType\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/savePortalI18nText`,\r\n requestData\r\n );\r\n let resultData = result.data.resultData;\r\n return resultData;\r\n};\r\n\r\n\r\n// 通过账户名和租户获取手机号\r\nexport const getPhoneNumberByAccountName=async(accountName,groupID)=>{\r\n let requestData = {\r\n param:{\r\n accountName: accountName,\r\n groupID: groupID,\r\n }\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getPhoneNumberByAccountName`,\r\n requestData\r\n );\r\n let phone = result.data.phone;\r\n return phone;\r\n};\r\n","\nexport const i18n = (key, appID, localID) => {\n let result = window.customI18nObject?.get(`${appID}-${key}-${localID}`) || key;\n return result;\n};\n\n/**\n * 检查文本是否匹配$L{...}格式\n * @param {string} text - 要检查的文本\n * @returns {Object|null} - 匹配结果或null\n */\nexport function checkTextFormat(text) {\n if (!text) return null;\n\n const regex = /\\$L\\{([^}]+)\\}/;\n const match = text.match(regex);\n\n if (match) {\n return {\n fullMatch: match[0],\n key: match[1],\n };\n }\n\n return null;\n}\n\n\n","import request from \"../request\";\r\nimport { registerEventListener } from \"../event\";\r\nimport { getPoratlAppID } from \"../portal\";\r\nimport { nextTick } from \"vue\";\r\nimport { check as tableI18nCheck } from \"./smardaten_i18n/table_i18n\";\r\nimport { check as catalogI18nCheck } from \"./smardaten_i18n/catalog_i18n\";\r\nimport { check as commonI18nCheck } from \"./commom_i18n/common_i18n\";\r\nimport { check as attributeI18nCheck } from \"./commom_i18n/attribute_i18n\";\r\nimport { check as calendarI18nCheck } from \"./smardaten_i18n/calendar_i18n\";\r\nimport { check as dialogI18nCheck } from \"./smardaten_i18n/dialog_i18n\";\r\nimport { check as domViewCheck } from \"./commom_view\";\r\nimport { i18n,checkTextFormat} from \"./core\";\r\n\r\n\r\nexport const getLanguages = async (appID) => {\r\n let queryData = {\r\n param: {\r\n appID: appID,\r\n },\r\n };\r\n let response = await request.post(\r\n `/dataservice/rest/orchestration/getAppLanguages`,\r\n queryData\r\n );\r\n let resultDatas = response.data.resultDatas || [];\r\n return resultDatas;\r\n};\r\n\r\nexport const updateI18nValue = (appID, key,localID, value) => {\r\n let realKey = `${appID}-${key}-${localID}`;\r\n window.customI18nObject.set(realKey, value);\r\n}\r\n\r\nexport function i18nText(key) {\r\n let app_id =getPoratlAppID();\r\n let langID = window.localStorage.getItem(\"iportal_localID\") || \"zh-CN\";\r\n return i18n(key,app_id,langID);\r\n}\r\n\r\nexport const loadi18nTexts = async (appID) => {\r\n let queryData = {\r\n param: { appID: appID},\r\n };\r\n let response = await request.post(\r\n `/dataservice/rest/orchestration/getAllTexts`,\r\n queryData\r\n );\r\n let resultDatas = response.data.resultDatas || [];\r\n window.customI18nObject = new Map();\r\n for (let item of resultDatas) {\r\n window.customI18nObject.set(`${appID}-${item.key}-${item.lang}`, item.value);\r\n }\r\n}\r\n\r\n/**\r\n * 检查元素是否有子DOM元素\r\n * @param {HTMLElement} element - 要检查的DOM元素\r\n * @returns {boolean} - 是否有子元素\r\n */\r\nfunction hasChildElements(element) {\r\n return element && element.children?.length > 0;\r\n}\r\n\r\n\r\nfunction generateUniqueId() {\r\n window.idCounter = window.idCounter || 0;\r\n return `i18n_${Date.now()}_${window.idCounter++}`;\r\n}\r\n\r\n/**\r\n * 检查平台特定元素并返回匹配结果\r\n * @param {*} element \r\n * @returns \r\n */\r\nfunction checkPlatformElementContent(element) {\r\n const checkContentResult = {\r\n result: false,\r\n innerHTMLMatch: null\r\n };\r\n let checkArr = [tableI18nCheck,catalogI18nCheck,calendarI18nCheck,dialogI18nCheck,commonI18nCheck];\r\n for(let i=0;i<checkArr.length;i++){\r\n let checkFunc = checkArr[i];\r\n let checkContentResult = checkFunc(element);\r\n if(checkContentResult.result){\r\n return checkContentResult;\r\n }\r\n }\r\n return checkContentResult;\r\n}\r\n\r\n\r\nexport function processElement(element) {\r\n\r\n if (!element) {\r\n return false;\r\n }\r\n \r\n // 仅处理元素节点\r\n if (element && element.nodeType !==Node.ELEMENT_NODE) {\r\n return false;\r\n }\r\n\r\n // 如果元素有子元素,递归处理子元素\r\n const hasChildren = hasChildElements(element);\r\n if (hasChildren) {\r\n let children = element.children;\r\n for (let i = 0; i < children.length; i++) {\r\n let child = children[i];\r\n if(child.nodeType === Node.ELEMENT_NODE)\r\n {\r\n let childLocalDomID = child.getAttribute(\"localDomID\");\r\n // 如果子元素有localDomID但不在缓存中,移除localDomID属性\r\n if(childLocalDomID && window.i18nElementsMap&&!window.i18nElementsMap.has(childLocalDomID)){\r\n unProcessElement(child);\r\n }\r\n }\r\n processElement(children[i]);\r\n }\r\n }\r\n\r\n // 检查innerHTML是否匹配(仅对没有子元素的元素)\r\n let innerHTMLMatch = null;\r\n\r\n const attrCheckResult = attributeI18nCheck(element);\r\n if(attrCheckResult.result){\r\n console.log(\"检查到属性匹配元素:\",element);\r\n }\r\n\r\n //检查是否是smardaten平台元素\r\n const checkContentResult = checkPlatformElementContent(element);\r\n if (checkContentResult.result) {\r\n innerHTMLMatch = checkContentResult.innerHTMLMatch;\r\n element.setAttribute(\"oldValue\", innerHTMLMatch.oldValue);\r\n }\r\n else\r\n {\r\n if(!hasChildren){\r\n //如果存在历史值,说明之前解析过,有可能是值需要刷新触发 \r\n let newValue = element.innerHTML;\r\n let newMatch = checkTextFormat(newValue);\r\n if(newMatch){\r\n innerHTMLMatch = newMatch;\r\n }\r\n else{\r\n newValue = element.getAttribute(\"oldValue\");\r\n if(!newValue)\r\n {\r\n newValue = element.innerHTML;\r\n }\r\n innerHTMLMatch = checkTextFormat(newValue);\r\n }\r\n if(innerHTMLMatch) {\r\n // console.log(\"检查到innerHTML匹配元素:\",element);\r\n element.setAttribute(\"oldValue\", newValue);\r\n }\r\n }\r\n }\r\n\r\n // 如果没有匹配的内容,则不处理\r\n if (!innerHTMLMatch&&!checkContentResult.result&&!attrCheckResult.result) {\r\n return false;\r\n }\r\n\r\n let elementId = element.getAttribute(\"localDomID\");\r\n if (!elementId) {\r\n elementId = generateUniqueId();\r\n }\r\n else\r\n {\r\n // 已经处理过的元素跳过\r\n return false;\r\n }\r\n\r\n element.setAttribute(\"localDomID\", elementId);\r\n\r\n if(!window.i18nElementsMap){\r\n window.i18nElementsMap = new Map();\r\n }\r\n // 添加到Map缓存\r\n window.i18nElementsMap.set(elementId, {\r\n dom: element,\r\n id: elementId,\r\n isScriptAction:innerHTMLMatch?innerHTMLMatch.isScriptAction||false:false,\r\n scriptFunction:innerHTMLMatch?innerHTMLMatch.scriptFunction||null:null,\r\n isAttibuteAction:attrCheckResult.result,\r\n attrFunction:attrCheckResult.scriptFunction||null,\r\n });\r\n // console.log(\"添加后元素缓冲数:\",window.i18nElementsMap.size);\r\n applyTranslation(element);\r\n return true;\r\n}\r\n\r\nfunction unProcessElement(element) {\r\n if (element && element.nodeType !== 1) {\r\n return;\r\n }\r\n let hasChildren = hasChildElements(element);\r\n if (hasChildren) {\r\n let children = element.children;\r\n for (let i = 0; i < children.length; i++) {\r\n unProcessElement(children[i]);\r\n }\r\n }\r\n const localDomID = element.getAttribute(\"localDomID\");\r\n if(localDomID){\r\n // console.log(`处理元素ID:${localDomID} 移除缓存`);\r\n element.removeAttribute(\"localDomID\");\r\n }\r\n if (localDomID && window.i18nElementsMap.has(localDomID)) {\r\n // let oldValue = element.getAttribute(\"oldValue\");\r\n // if(oldValue){\r\n // element.removeAttribute(\"oldValue\");\r\n // 更新元素的innerHTML\r\n // element.innerHTML = oldValue;\r\n // }\r\n window.i18nElementsMap.delete(localDomID);\r\n // console.log(\"移除后元素缓冲数:\",window.i18nElementsMap.size);\r\n }\r\n}\r\n\r\n/**\r\n * 应用翻译到单个元素\r\n * @param {HTMLElement} element - 要更新的DOM元素\r\n * @param {string} lang - 语言标识符\r\n */\r\nconst applyTranslation = async (element) => {\r\n let parentNode = element.parentNode;\r\n if(!parentNode){\r\n unProcessElement(element);\r\n console.log(\"元素已无父节点,移除缓存\");\r\n return;\r\n }\r\n let lang = window.localStorage.getItem(\"iportal_localID\") || \"zh-CN\";\r\n let appID = getPoratlAppID();\r\n const elementId = element.getAttribute(\"localDomID\");\r\n const cachedItem = window.i18nElementsMap.get(elementId);\r\n if (!cachedItem) return;\r\n // 处理属性\r\n if(cachedItem.isAttibuteAction)\r\n {\r\n cachedItem.attrFunction(appID,lang);\r\n }\r\n // 处理innerHTML\r\n if(cachedItem.isScriptAction)\r\n {\r\n cachedItem.scriptFunction(appID,lang);\r\n }\r\n else\r\n {\r\n const oldValue = element.getAttribute(\"oldValue\");\r\n if (oldValue) {\r\n // 创建正则表达式匹配所有 $L{...} 格式\r\n const regex = /\\$L\\{([^}]+)\\}/g;\r\n // 替换所有 $L{...} 占位符为翻译文本\r\n let newValue = oldValue;\r\n let match;\r\n while ((match = regex.exec(oldValue)) !== null) {\r\n const fullMatch = match[0];\r\n const placeholderKey = match[1];\r\n const translation = i18n(placeholderKey, appID, lang);\r\n newValue = newValue.replace(fullMatch, translation);\r\n }\r\n nextTick(() => {\r\n // 更新元素的innerHTML\r\n element.innerHTML = newValue;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const initDomNodeI18NObserver = () => {\r\n if (!window.i18nElementsMap) {\r\n window.i18nElementsMap = new Map();\r\n } else {\r\n window.i18nElementsMap.clear();\r\n }\r\n registerEventListener(\"IPORTAL_LANGUAGE_CHANGE_EVENT\", async (lang) => {\r\n console.log(\"语言切换事件触发,更新已处理元素的翻译:\", lang);\r\n // 遍历Map,更新每个已处理元素的翻译\r\n for (const [elementId, item] of window.i18nElementsMap.entries()) {\r\n // console.log(\"更新元素翻译:\", elementId, item.dom);\r\n applyTranslation(item.dom);\r\n }\r\n });\r\n // 创建观察器实例\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.type === 'childList') {\r\n // 节点添加\r\n if (mutation.addedNodes.length > 0) {\r\n for (let i = 0; i < mutation.addedNodes.length; i++) {\r\n let node = mutation.addedNodes[i];\r\n // console.log(`处理新增节点:`,node);\r\n if(node.nodeType === Node.TEXT_NODE)\r\n {\r\n node = node.parentNode;\r\n }\r\n processElement(node);\r\n }\r\n }\r\n // 节点移除\r\n if (mutation.removedNodes.length > 0) {\r\n for (let i = 0; i < mutation.removedNodes.length; i++) {\r\n let node = mutation.removedNodes[i];\r\n // console.log(`处理移除节点:`,node);\r\n unProcessElement(node);\r\n }\r\n }\r\n }\r\n else if (mutation.type === 'characterData') {\r\n // 处理文本变化\r\n const oldValue = mutation.oldValue;\r\n const targetNode = mutation.target;\r\n const newValue = targetNode.data;\r\n // 创建日志条目并显示\r\n console.log(`文本修改: ${oldValue} → ${newValue}`);\r\n const parentElement = targetNode.parentNode;\r\n if(parentElement)\r\n {\r\n let localDomID = parentElement.getAttribute(\"localDomID\");\r\n // 如果有localDomID,说明之前处理过,先移除缓存\r\n if(localDomID)\r\n {\r\n unProcessElement(parentElement);\r\n }\r\n }\r\n processElement(parentElement);\r\n }\r\n });\r\n });\r\n\r\n // 配置观察选项\r\n const config = {\r\n childList: true, // 观察子节点变化\r\n subtree: true, // 观察所有后代节点\r\n attributes: false, // 不观察属性变化\r\n characterData: true, // 不观察文本内容变化\r\n characterDataOldValue: true\r\n };\r\n // 开始观察目标节点\r\n const targetNode = document.body;\r\n processElement(targetNode);\r\n observer.observe(targetNode, config);\r\n};\r\n\r\nexport const initDomNodeViewObserver = () => {\r\n // 创建观察器实例\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (mutation.type === 'childList') {\r\n // 节点添加\r\n if (mutation.addedNodes.length > 0) {\r\n for (let i = 0; i < mutation.addedNodes.length; i++) {\r\n let node = mutation.addedNodes[i];\r\n processViewElement(node);\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\r\n // 配置观察选项\r\n const config = {\r\n childList: true, // 观察子节点变化\r\n subtree: true, // 观察所有后代节点\r\n attributes: false, // 不观察属性变化\r\n characterData: true, // 不观察文本内容变化\r\n characterDataOldValue: true\r\n };\r\n // 开始观察目标节点\r\n const targetNode = document.body;\r\n processViewElement(targetNode);\r\n observer.observe(targetNode, config);\r\n};\r\n\r\n\r\n// 处理单个DOM元素的函数\r\nexport function processViewElement(element) {\r\n if (!element) {\r\n return false;\r\n }\r\n // 仅处理元素节点\r\n if (element && element.nodeType !==Node.ELEMENT_NODE) {\r\n return false;\r\n }\r\n // 如果元素有子元素,则不处理innerHTML\r\n const hasChildren = hasChildElements(element);\r\n if (hasChildren) {\r\n let children = element.children;\r\n for (let i = 0; i < children.length; i++) {\r\n let child = children[i];\r\n processViewElement(child);\r\n }\r\n }\r\n let checkState =element.getAttribute(\"viewDomID\");\r\n // 已经处理过的元素跳过\r\n if(checkState)\r\n {\r\n return false;\r\n }\r\n const viewCheckResult = domViewCheck(element);\r\n // 如果没有匹配的内容,则不处理\r\n if (!viewCheckResult.result) {\r\n return false;\r\n }\r\n viewCheckResult.scriptFunction();\r\n return true;\r\n}\r\n\r\n// 获取所有i18n的类型\r\nexport const getAllI18nTypes=async()=>{\r\n let requestData = {\r\n param: {},\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/getAllI18nTypes`,\r\n requestData\r\n );\r\n let resultData = result.data.resultDatas;\r\n return resultData;\r\n};\r\n\r\nexport * from './core';","\r\nimport request from \"./request\";\r\nimport { UAParser } from 'ua-parser-js';\r\nimport CryptoJS from \"crypto-js\";\r\nimport { i18nText } from \"./i18n/i18n\";\r\n\r\n\r\n/**\r\n * \r\n * @returns 获取登录验证码图片\r\n */\r\nexport const getAuthPic = () => request.get(`/system/authority/getAuthPic?module=loginPassword`, { responseType: \"arraybuffer\" });\r\n\r\n\r\n\r\n/**\r\n * 登出账号\r\n * @param endside_type 0: web 1:手机\r\n * @returns {Promise<*>}\r\n * @param endside_type 0: web 1:手机\r\n *\r\n */\r\nexport const logoutAccount = async (endside_type) => {\r\n let resultData =await request.get(\r\n `/system/authority/logout?isMobileLogout=${endside_type}`\r\n );\r\n let response = JSON.parse(resultData.request.response);\r\n let resultCode = response.code;\r\n if (resultCode == \"10110020\") {\r\n window.sessionStorage.clear();\r\n return {\r\n code: resultCode,\r\n message: i18nText(response.message),\r\n };\r\n } else {\r\n return {\r\n code: resultCode,\r\n message: i18nText(response.message),\r\n };\r\n }\r\n};\r\n\r\n/**\r\n * 服务端解密\r\n */\r\nexport const serverDecrypt = async (decryptStr) => {\r\n let questUrl =`/ext/serverDecrypt`;\r\n let queryData = {\r\n param:{\r\n decryptStr:decryptStr,\r\n }\r\n }\r\n //保存的正则2级密码\r\n let resultData =await request.post(questUrl, JSON.stringify(queryData));\r\n decryptStr = resultData.data.decryptStr;\r\n return decryptStr;\r\n};\r\n\r\n/**\r\n * 解密\r\n */\r\nexport const viewDecrypt = async (decryptStr) => {\r\n let secretKey = await getViewKey();\r\n const decrypted = CryptoJS.AES.decrypt(decryptStr, secretKey).toString(\r\n CryptoJS.enc.Utf8\r\n );\r\n return decrypted;\r\n};\r\n\r\n/**\r\n * 加密\r\n */\r\nexport const viewEncrypt = async (decryptStr) => {\r\n let secretKey = await getViewKey();\r\n const encrypted = CryptoJS.AES.encrypt(decryptStr, secretKey).toString();\r\n return encrypted;\r\n};\r\n\r\n/**\r\n * 服务端加密\r\n */\r\nexport const serverEncrypt = async (encryptStr) => {\r\n let questUrl =`/ext/serverEncrypt`;\r\n let queryData = {\r\n param:{\r\n encryptStr:encryptStr,\r\n }\r\n }\r\n //保存的正则2级密码\r\n let resultData =await request.post(questUrl, JSON.stringify(queryData));\r\n encryptStr = resultData.data.encryptStr;\r\n return encryptStr;\r\n};\r\n\r\n/**\r\n * 切换门户登录\r\n */\r\nexport const switchPortalLogin = async (data, appid,endside_type) => {\r\n let old_key =window.sessionStorage.getItem(\"iportal_login_user_key\");\r\n old_key =await viewDecrypt(old_key);\r\n data.password = old_key;\r\n let resultData = await logoutAccount(endside_type);\r\n let resultCode = resultData.code;\r\n let message = resultData.message;\r\n //退出登录成功\r\n if (resultCode == \"10110020\") {\r\n let loginResult =await loginAccount(data, appid);\r\n return loginResult;\r\n }\r\n else {\r\n return {\r\n code: resultCode,\r\n message: i18nText(message),\r\n }\r\n }\r\n};\r\n\r\n\r\n/**\r\n * 是否是安全账号\r\n * @param {*} acccountName \r\n * @param {*} group_id \r\n * @returns \r\n */\r\nexport const isSecurityAccount = async (acccountName, group_id) => {\r\n let queryData = {\r\n param: {\r\n account_name: acccountName,\r\n group_id: group_id,\r\n },\r\n };\r\n let result = await request.post(\r\n `/dataservice/rest/orchestration/isSecurityAccount`,\r\n queryData\r\n );\r\n let isSecurityAccount = result.data.isSecurityAccount;\r\n return isSecurityAccount;\r\n};\r\n\r\n\r\n/**\r\n * 登录账号\r\n * @param data 登录数据\r\n * @param appid 应用ID\r\n *\r\n * @description\r\n * 登录时需要传入验证码(authPicCode)和应用ID(dataappId),\r\n * mobileOrWeb参数用于区分是移动端还是网页端登录。\r\n *\r\n * @returns\r\n */\r\nexport const loginAccount = async (data, appid) => {\r\n let questUrl = `/ext/loginAccount`;\r\n let password = await viewEncrypt(data.password);\r\n let queryData = {\r\n param: {\r\n account_view: data.account_view,\r\n groupid: data.groupid,\r\n password: password,\r\n account: data.account,\r\n appid: appid,\r\n },\r\n };\r\n //保存的正则2级密码\r\n let resultData = await request.post(questUrl, JSON.stringify(queryData));\r\n let code = resultData.data.code;\r\n let key_code = resultData.data.key_code;\r\n let old_code = resultData.data.old_code;\r\n let login_account_id = resultData.data.id;\r\n let message = resultData.data.message;\r\n //登录平台成功\r\n if (code == 10110004) {\r\n key_code = await viewDecrypt(key_code);\r\n key_code = window.appSdk.Encrypt(key_code);\r\n queryData.param.password = key_code;\r\n resultData = await request.post(\r\n `/system/authority/loginAccount4Application?authPicCode=${data.imageCode}&dataappId=${appid}&mobileOrWeb=web`,\r\n queryData.param,\r\n );\r\n let response = JSON.parse(resultData.request.response);\r\n code = response.code;\r\n message = response.message;\r\n if (code == 10110004) {\r\n let id = login_account_id;\r\n // 初始化解析器\r\n const parser = new UAParser();\r\n // 获取浏览器信息\r\n const browser = parser.getBrowser();\r\n let timestamp = new Date().getTime();\r\n let clientID = browser.name + \"_\" + browser.version + \"_\" + timestamp;\r\n window.sessionStorage.setItem(\"iportal_login_user_id\", id);\r\n window.sessionStorage.setItem(\"iportal_group_id\", data.groupid);\r\n window.sessionStorage.setItem(\"iportal_login_user_key\", old_code);\r\n window.sessionStorage.setItem(\"iportal_client_id\", clientID);\r\n window.sessionStorage.setItem(\"iportal_app_id\", appid);\r\n return {\r\n code: code,\r\n message: i18nText(message),\r\n };\r\n } else {\r\n return {\r\n code: code,\r\n message: i18nText(message),\r\n };\r\n }\r\n } else {\r\n return {\r\n code: code,\r\n message: i18nText(message),\r\n };\r\n }\r\n};\r\n\r\n/**\r\n * 获取密钥\r\n * @returns\r\n */\r\nexport const getViewKey = async () => {\r\n let queryData = {\r\n param: {},\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/getViewKey`,\r\n queryData\r\n );\r\n let key = resultData.data.key;\r\n return key;\r\n};\r\n\r\n/**\r\n * 通过账号获取账号数量\r\n * @returns\r\n */\r\nexport const getAccountCountByName = async (name) => {\r\n let queryData = {\r\n param: {\r\n accountName: name,\r\n },\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/getAccountCountByName`,\r\n queryData\r\n );\r\n let count = resultData.data.count;\r\n return count;\r\n};\r\n\r\n/**\r\n * 新建账户注册申请\r\n * @returns\r\n */\r\nexport const createRegistApply = async (registInfo) => {\r\n let queryData = {\r\n param: {\r\n registInfo: registInfo,\r\n },\r\n };\r\n let resultData = await request.post(\r\n `/dataservice/rest/orchestration/createRegistApply`,\r\n queryData\r\n );\r\n let operateResult = resultData.data.operateResult;\r\n return operateResult;\r\n};\r\n"],"names":["has","querystringify_1","apiContextPath","getInstance","prefix","startsWith","slice","length","endsWith","instance","axios","create","baseURL","timeout","validateStatus","status","headers","window","location","search","qs","parse","token","oldPost","post","url","data","config","VITE_SERVICE_BASE_URL","newUrl","call","defaults","interceptors","response","use","JSON","Blob","Promise","reject","result","error","prefixPath","getPoratlAppID","portal_app_id","sessionStorage","getItem","getCurrentAppID","app_id","appSdk","getAppId","localStorage","MobileAppId","i18n","key","appID","localID","customI18nObject","get","i18nText","langID","getAuthPic","request","responseType","logoutAccount","endside_type","resultData","resultCode","code","clear","message","serverDecrypt","decryptStr","questUrl","queryData","param","stringify","viewDecrypt","secretKey","getViewKey","decrypted","CryptoJS","AES","decrypt","toString","enc","Utf8","viewEncrypt","encrypted","encrypt","serverEncrypt","encryptStr","switchPortalLogin","appid","old_key","password","loginResult","loginAccount","isSecurityAccount","acccountName","group_id","account_name","account_view","groupid","account","key_code","old_code","login_account_id","id","Encrypt","imageCode","parser","UAParser","browser","getBrowser","timestamp","Date","getTime","clientID","name","version","setItem","getAccountCountByName","accountName","count","createRegistApply","registInfo","operateResult"],"mappings":"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","x_google_ignoreList":[0,2]}
|
package/dist/cjs/sms.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sms.js","sources":["../../node_modules/querystringify/index.js","../../src/api/request.js","../../src/api/sms.js"],"sourcesContent":["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","import axios from \"axios\"\r\nimport qs from \"querystringify\"\r\n\r\nlet apiContextPath = \"\"\r\n// const onlineDevelopmentMode = process.env.VUE_APP_ONLINE_DEVELOPMENT_MODE === \"true\" || process.env.REACT_APP_ONLINE_DEVELOPMENT_MODE === \"true\"\r\n// if (process.env.NODE_ENV === \"development\" && !onlineDevelopmentMode) {\r\n// document.cookie =\r\n// \"token=eyJhbGciOiJIUzI1NiJ9.eyJsb2dpblRpbWVzdGFtcCI6MTY0NjcyMjI2ODY4NSwidXNlcklkIjoiMTIzNDU2Nzg5MCJ9.F8wr84ha-dW18J9wZOQeTXj55mXTdqKfLBeNlNueoLY\"\r\n// document.cookie =\r\n// \"refreshToken=eyJhbGciOiJIUzI1NiJ9.eyJsb2dpblRpbWVzdGFtcCI6MTY0NjcyMjI2ODY4Nn0.TEVE_nopHNZlvSQM_RUZrLcCzkaERiHo8nz0q-ksL3E\"\r\n// document.cookie = \"username=admin\"\r\n// document.cookie = \"windowOnline=true\"\r\n// apiContextPath = \"/api\"\r\n// }\r\nexport const getInstance = (prefix = \"\") => {\r\n if (prefix) {\r\n prefix.startsWith(\"/\") && (prefix = prefix.slice(1, prefix.length))\r\n prefix.endsWith(\"/\") && (prefix = prefix.slice(0, -1))\r\n }\r\n const instance = axios.create({\r\n baseURL: `${apiContextPath}/${prefix ? prefix + \"/\" : \"\"}sdata/rest`,\r\n timeout: 60000,\r\n validateStatus: function(status) {\r\n return status >= 200 && status < 300 // default\r\n },\r\n headers:\r\n (window.location.search && qs.parse(window.location.search).token) ||\r\n window.token\r\n ? { token: qs.parse(window.location.search).token || window.token }\r\n : {}\r\n })\r\n\r\n let oldPost = instance.post;\r\n\r\n instance.post = (url, data, config)=> {\r\n let prefix =window.VITE_SERVICE_BASE_URL || \"\";\r\n if (prefix) {\r\n let newUrl = prefix + url;\r\n return oldPost.call(instance, newUrl, data, config);\r\n }\r\n return oldPost.call(instance, url, data, config);\r\n };\r\n\r\n instance.defaults.headers.post[\"Content-Type\"] = \"application/json\"\r\n\r\n instance.interceptors.response.use(\r\n response => {\r\n let { data } = response\r\n if (typeof data === \"string\") {\r\n data = JSON.parse(data)\r\n }\r\n if (data && data.status !== 200 && !(data instanceof Blob)) {\r\n return Promise.reject(response)\r\n }\r\n if (data instanceof Blob) {\r\n response.data = data\r\n return response\r\n }\r\n\r\n response.data = data && data.result\r\n return response\r\n },\r\n error => {\r\n if (error.response && error.response.status === 401) {\r\n return\r\n }\r\n\r\n return Promise.reject(error.response)\r\n }\r\n )\r\n return instance\r\n}\r\nlet prefixPath = window.prefixPath || \"\"\r\n\r\nexport default getInstance(prefixPath)\r\n","import request from \"./request\";\n\nexport const sendSms = async(queryData,successCallback,errorCallback) => {\n let smsServerIP = `/ext/sendSms`;\n let options = {\n param:queryData\n }\n request.post(smsServerIP, JSON.stringify(options)).then((res) => {\n console.log(\"发送消息成功:\", res);\n if(successCallback)successCallback(res);\n }).catch((error) => {\n console.error(\"发送消息失败:\", error);\n if(errorCallback)errorCallback(error);\n });\n}\n\n/**\n * 登录账号\n * @param data 登录数据\n * @param appid 应用ID\n *\n * @description\n * 登录时需要传入验证码(authPicCode)和应用ID(dataappId),\n * mobileOrWeb参数用于区分是移动端还是网页端登录。\n *\n * @returns\n */\nexport const isSMSCodeValidate = async (smsCode,sms_service_name_type,beyond_type_id,account_id) => {\n let questUrl = `/ext/validateSMSCode`;\n let queryData = {\n param:{\n smsCode:smsCode,\n sms_service_name_type:sms_service_name_type,\n beyond_type_id:beyond_type_id,\n account_id:account_id\n }\n }\n //保存的正则2级密码\n let resultData =await request.post(questUrl, JSON.stringify(queryData));\n let data = resultData.data;\n return data;\n};"],"names":["querystringify_1","apiContextPath","getInstance","prefix","startsWith","slice","length","endsWith","instance","axios","create","baseURL","timeout","validateStatus","status","headers","window","location","search","qs","parse","token","oldPost","post","url","data","config","VITE_SERVICE_BASE_URL","newUrl","call","defaults","interceptors","response","use","JSON","Blob","Promise","reject","result","error","prefixPath","sendSms","queryData","successCallback","errorCallback","smsServerIP","options","param","request","stringify","then","res","console","log","catch","isSMSCodeValidate","smsCode","sms_service_name_type","beyond_type_id","account_id","questUrl","resultData"],"mappings":"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","x_google_ignoreList":[0]}
|