reporting-lib 0.4.5 → 0.4.7
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/api/fetch.d.ts.map +1 -1
- package/dist/api/fetch.js +13 -1
- package/dist/api/fetch.js.map +1 -1
- package/dist/api/xhr.d.ts.map +1 -1
- package/dist/api/xhr.js +29 -0
- package/dist/api/xhr.js.map +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.global.js +3 -3
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/util/tool.d.ts +2 -0
- package/dist/util/tool.d.ts.map +1 -1
- package/dist/util/tool.js +45 -0
- package/dist/util/tool.js.map +1 -1
- package/package.json +1 -1
package/dist/index.global.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/index.js","../src/util/cache.js","../src/report/index.js","../src/util/tool.js","../src/config/publicParams.js","../src/error/index.js","../../node_modules/.pnpm/web-vitals@5.1.0/node_modules/web-vitals/dist/web-vitals.js","../src/performance/index.js","../src/api/xhr.js","../src/api/fetch.js","../src/api/index.js","../src/util/slsLogger.ts","../src/report/reportSLS.js","../src/performance/pageStayTime.ts","../src/util/pageDuration.ts","../src/performance/pageStayTimeTracker.ts","../src/index.ts"],"names":["config","version","config_default","setConfig","options","key","cache","cacheSLS","getCache","addCache","type","data","clearCache","getCacheSLS","addCacheSLS","clearCacheSLS","report","isImmediate","reportData","sendBeacon","timer","lazyReportCache","timeout","dataMap","reportUrl","reportWithXHR","xhr","detectWhiteScreen","samplePoints","whiteTags","onDetected","isWhiteScreen","detail","threshold","viewportWidth","viewportHeight","points","i","whiteCount","x","y","el","tag","isWhite","debounce","fn","delay","immediate","args","context","debouncedDetectWhiteScreen","resolve","pendingPromise","detectionWhiteScreen","getFullBrowserInfo","ua","name","getOSInfo","normalizeMaterialResourceUrl","url","str","materialMatch","mbpMatch","isValidOssVideoUrl","u","toReadableString","getRequestBodySize","body","total","value","publicParams","publicParams_default","browserInfor","FULL_MATCH","STACK_TRACE_LIMIT","parseStackLine","line","lineMatch","filename","functionName","lineno","colno","parseStackFrames","error","stack","frames","frame","event","target","errs","msg","reason","e","t","n","s","o","r","c","a","d","h","f","l","m","p","v","g","E","b","L","P","T","_","M","w","C","I","F","k","A","B","S","N","q","H","O","$","performance","sendToAnalytics","metric","originalPrototype","originalOpen","originalSend","overWriteOpenAndSend","onLoadEnd","status","duration","startTime","endTime","method","response","requestSize","code","request_url","parsed","originalFetch","overWriteFetch","res","clonedRes","fiterUrl","err","fetch","api","sendLogsToSLS","logs","project","endpoint","logstore","timestamp","logData","item","acc","responseText","sendLog","lazyReportCacheSLS","reportFn","trackPageStayTime","onLeave","minDuration","debounceMs","isReported","debounceTimer","lastVisibleTime","lastPagePath","currentPageTag","hasInitializedPageTag","meta","handleVisibility","handlePageHide","handleBeforeUnload","handlePopState","reset","manualLeave","setPageTag","now","getBasePageName","fallbackPath","pathname","buildPageDurationPayload","pagePath","pageTag","basePageName","decoratedName","formatPageName","pageStayTracker","historyUnlisten","initPageStayTimeTracker","historyInstance","defaultOnLeave","enabled","location","action","switchPageStayTag","initPageStayTracking","trackOptions","payload","listenRouteChange","callback","history","isInit","monitor","index_default"],"mappings":"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","file":"index.global.js","sourcesContent":["const config = {\n // 项目名称\n source:'mbp', //使用平台\n userId: '', //用户信息(支持 string | number)\n //上报地址\n reportUrl: 'http://localhost:3001/report/actions',\n //是否全埋点\n trackerAll: false,\n slsProject: '',\n slsEndpoint: '',\n slsLogstore: '',\n // 路由 history 实例\n history: null\n};\n\nexport let version = '';\n\nexport default config;\n\nexport function setConfig(options) { \n for (const key in config) { \n if (options[key]) { \n config[key] = options[key];\n }\n }\n if(options['version']){\n version = options['version'];\n }\n}\n","//把上报的数据存储在map键值对中\n//key就是上报的类型\n//value就是上报的数据,是一个数组\nconst cache = new Map();\nconst cacheSLS = new Map();\n\nexport function getCache() { \n return cache;\n}\n\nexport function addCache(type, data) { \n //如果有这个类型的数据,就往数组中添加\n //没有就在map中创建新的类型,并且将data放入到数组中\n cache.get(type)? cache.get(type).push(data) : cache.set(type, [data]);\n}\n\nexport function clearCache() { \n cache.clear();\n}\n\nexport function getCacheSLS() { \n return cacheSLS;\n}\n\nexport function addCacheSLS(type, data) { \n //如果有这个类型的数据,就往数组中添加\n //没有就在map中创建新的类型,并且将data放入到数组中\n cacheSLS.get(type)? cacheSLS.get(type).push(data) : cacheSLS.set(type, [data]);\n}\n\nexport function clearCacheSLS() { \n cacheSLS.clear();\n}\n","import config from '../config/index.js'\nimport getUniqueID from \"../util/getUniqueID.js\";\nimport { getCache,addCache,clearCache } from '../util/cache.js';\n\nconst uniqueID = getUniqueID();\n/**\n * 由于我们有很多内容需要上报,\n * 所以我这里为了简单区分和上报\n * 用type来区分上报的内容是什么\n * @param {string} type 上报类型 “error” | \"action\" | \"api\" | \"performance\"\n * @param {Object} data 上报信息\n * @param {boolean} isImmediate 是否立即上报,默认为false\n */\nexport function report(type, data, isImmediate = false) { \n if (config.reportUrl === null) { \n console.error(\"请先配置上报地址\");\n return;\n }\n\n const reportData = JSON.stringify({\n user_id: Number(config.userId) || 0, //用户id\n source: config.source, //来源\n type, //上报类型\n url: window.location.pathname, //当前页面\n data, //上报信息\n })\n \n //立即上传\n if (isImmediate) { \n sendBeacon(config.reportUrl, reportData);\n return;\n }\n \n // 浏览器空闲时间进行上报\n if (window.requestIdleCallback) {\n window.requestIdleCallback(() => {\n sendBeacon(config.reportUrl, reportData);\n }, { timeout: 3000 });\n }else { \n setTimeout(() => { \n sendBeacon(config.reportUrl, reportData);\n })\n }\n \n}\n\nlet timer = null;\n//延迟上传,一定时间之后再进行上传\nexport function lazyReportCache(type, data, timeout = 3000) { \n //把数据加入到map缓存中\n addCache(type, data);\n \n clearTimeout(timer);\n timer = setTimeout(() => { \n //获取缓存中的数据\n const dataMap = getCache();\n\n if (dataMap.size) { \n for (const [type, data] of dataMap) { \n report(type, data);\n }\n\n clearCache();\n }\n\n },timeout)\n}\n\n\n//Navigator.sendBeacon()方式上报\nfunction sendBeacon(reportUrl, reportData) {\n if (navigator.sendBeacon) {\n navigator.sendBeacon(reportUrl, reportData);\n }\n else { \n reportWithXHR(reportUrl, reportData);\n }\n \n} \n\n// XMLHttpRequest方式上报\nfunction reportWithXHR(reportUrl, reportData) { \n const xhr = new XMLHttpRequest();\n xhr.open('POST', reportUrl, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.send(reportData);\n}\n","export const detectWhiteScreen = ({\n samplePoints = 6,\n whiteTags = ['HTML', 'BODY', \"IFRAME\"],\n onDetected = (isWhiteScreen, detail) => { },\n threshold = 0.9,\n} = {}) => {\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n const points = [];\n\n for (let i = 1; i <= samplePoints; i++) {\n points.push([\n viewportWidth / 2,\n (viewportHeight / (samplePoints + 1)) * i,\n ]);\n }\n\n let whiteCount = 0;\n const detail = [];\n\n points.forEach(([x, y]) => {\n const el = document.elementFromPoint(x, y);\n const tag = el?.tagName || 'NULL';\n detail.push({ x, y, tag });\n\n if (!el || whiteTags.includes(tag)) {\n whiteCount++;\n }\n });\n\n const isWhite = whiteCount / samplePoints >= threshold;\n\n onDetected(isWhite, detail);\n};\n\nexport const debounce = (fn, delay = 300, immediate = false) => {\n let timer = null;\n\n return function (...args) {\n const context = this;\n\n if (timer) clearTimeout(timer);\n\n if (immediate && !timer) {\n fn.apply(context, args);\n }\n\n timer = setTimeout(() => {\n if (!immediate) {\n fn.apply(context, args);\n }\n timer = null;\n }, delay);\n };\n};\n\nconst debouncedDetectWhiteScreen = debounce((resolve) => {\n detectWhiteScreen({\n onDetected: (isWhite, detail) => {\n resolve(isWhite);\n pendingPromise = null;\n },\n });\n}, 1000);\n\nlet pendingPromise = null;\nexport const detectionWhiteScreen = () => {\n if (!pendingPromise) {\n pendingPromise = new Promise((resolve) => {\n setTimeout(() => {\n debouncedDetectWhiteScreen(resolve);\n }, 3000);\n })\n }\n return pendingPromise;\n};\n\nexport const getFullBrowserInfo = () => {\n const ua = navigator.userAgent;\n let name = 'Unknown';\n let version = 'Unknown';\n\n if (/edg/i.test(ua)) {\n name = 'Edge';\n version = ua.match(/edg\\/([\\d\\.]+)/i)?.[1];\n } else if (/opr/i.test(ua)) {\n name = 'Opera';\n version = ua.match(/opr\\/([\\d\\.]+)/i)?.[1];\n } else if (/chrome/i.test(ua)) {\n name = 'Chrome';\n version = ua.match(/chrome\\/([\\d\\.]+)/i)?.[1];\n } else if (/firefox/i.test(ua)) {\n name = 'Firefox';\n version = ua.match(/firefox\\/([\\d\\.]+)/i)?.[1];\n } else if (/safari/i.test(ua) && !/chrome/i.test(ua)) {\n name = 'Safari';\n version = ua.match(/version\\/([\\d\\.]+)/i)?.[1];\n } else if (/msie/i.test(ua) || /trident/i.test(ua)) {\n name = 'Internet Explorer';\n version = ua.match(/(msie\\s|rv:)([\\d\\.]+)/i)?.[2];\n }\n\n return { name, version };\n}\nexport const getOSInfo = () => {\n const ua = navigator.userAgent || navigator.vendor || window.opera;\n\n if (/windows phone/i.test(ua)) {\n return \"Windows Phone\";\n }\n if (/win/i.test(ua)) {\n return \"Windows\";\n }\n if (/android/i.test(ua)) {\n return \"Android\";\n }\n if (/iPad|iPhone|iPod/.test(ua) && !window.MSStream) {\n return \"iOS\";\n }\n if (/Macintosh|MacIntel|MacPPC|Mac68K/.test(ua)) {\n return \"macOS\";\n }\n if (/Linux/.test(ua)) {\n return \"Linux\";\n }\n\n return \"Unknown OS\";\n}\n// 归一化资源类链接,去掉文件路径、文件名和 query,便于在 SLS 按维度聚合\n// 例如:\n// https://xxx/material_resource/image/1169/xxx.jpg\n// -> https://xxx/material_resource/image\n// https://xxx/material_resource/video/1169/xxx.mp4?partNumber=1&uploadId=xxx\n// -> https://xxx/material_resource/video\n// https://xxx/mbp/1335/picture/rc-upload-xxx.png\n// -> https://xxx/mbp/picture\n// https://xxx/mbp/1335/video/xxx.mp4?partNumber=1&uploadId=xxx\n// -> https://xxx/mbp/video\nexport const normalizeMaterialResourceUrl = (url) => {\n try {\n const str = String(url);\n\n // /material_resource/{type}/{id}/{file}... -> /material_resource/{type}\n // 要求 {id} 为数字,避免误命中其它业务接口\n const materialMatch = str.match(/^(https?:\\/\\/[^/]+)\\/material_resource\\/([^/?#]+)\\/\\d+\\/[^/?#]+(?:[/?#].*)?$/i);\n if (materialMatch) return `${materialMatch[1]}/material_resource/${materialMatch[2]}`;\n\n // /mbp/{id}/{type}/{file}... -> /mbp/{type}\n // 要求 {id} 为数字,避免误命中其它业务接口\n const mbpMatch = str.match(/^(https?:\\/\\/[^/]+)\\/mbp\\/\\d+\\/([^/?#]+)\\/[^/?#]+(?:[/?#].*)?$/i);\n if (mbpMatch) return `${mbpMatch[1]}/mbp/${mbpMatch[2]}`;\n\n return url;\n } catch {\n return url;\n }\n}\n\n// 识别是上传视频的链接\nexport const isValidOssVideoUrl = (url) => {\n try {\n const u = new URL(url.indexOf('http') === -1 ? `https:${url}` : url);\n\n // 域名和协议必须匹配\n // const hostOk = (\n // u.protocol === 'https:' &&\n // u.hostname === 'sd-cms-bmp.oss-accelerate.aliyuncs.com' &&\n // u.port === '443'\n // );\n\n // 路径必须匹配 /mbp/数字/video/文件名.扩展名\n const pathOk = /^\\/mbp\\/\\d+\\/video\\/[^/?#]+\\.[^/?#]+$/i.test(u.pathname);\n\n // return hostOk && pathOk;\n return pathOk;\n } catch {\n return false; // 非法 URL\n }\n}\nexport const toReadableString = (data) => {\n try {\n return JSON.stringify(data, null, 2);\n } catch (e) {\n return String(data);\n }\n}\n\nexport const getRequestBodySize = (body) => {\n if (!body) return 0;\n try {\n if (typeof body === \"string\") return new TextEncoder().encode(body).length;\n if (body instanceof Blob) return body.size;\n if (body instanceof ArrayBuffer) return body.byteLength;\n if (ArrayBuffer.isView(body)) return body.byteLength;\n if (body instanceof URLSearchParams) return new TextEncoder().encode(body.toString()).length;\n\n if (body instanceof FormData) {\n let total = 0;\n for (const [key, value] of body.entries()) {\n total += new TextEncoder().encode(key).length;\n if (typeof value === \"string\") {\n total += new TextEncoder().encode(value).length;\n } else if (value instanceof Blob) {\n total += value.size;\n }\n }\n return total;\n }\n } catch (error) {\n return 0;\n }\n\n return 0;\n}\nexport const getRequestBodySizeFetch = (body) => {\n if (!body) return 0;\n try {\n if (typeof body === \"string\") return new TextEncoder().encode(body).length;\n if (body instanceof Blob) return body.size;\n if (body instanceof ArrayBuffer) return body.byteLength;\n if (ArrayBuffer.isView(body)) return body.byteLength;\n if (body instanceof URLSearchParams) return new TextEncoder().encode(body.toString()).length;\n\n if (body instanceof FormData) {\n let total = 0;\n for (const [key, value] of body.entries()) {\n total += new TextEncoder().encode(key).length;\n if (typeof value === \"string\") {\n total += new TextEncoder().encode(value).length;\n } else if (value instanceof Blob) {\n total += value.size;\n }\n }\n return total;\n }\n } catch (error) {\n return 0;\n }\n\n return 0;\n}\n\n","import {detectionWhiteScreen,getFullBrowserInfo,getOSInfo,toReadableString} from '../util/tool.js';\n\nconst publicParams = {\n browserInfo: getFullBrowserInfo(),\n platform:getOSInfo(),\n}\n\nexport default publicParams;","import { lazyReportCache } from \"../report/index.js\";\nimport {detectionWhiteScreen,getFullBrowserInfo,getOSInfo,toReadableString} from '../util/tool.js';\nimport {version} from '../config/index.js';\nimport publicParams from '../config/publicParams.js';\n\nconst browserInfor = publicParams.browserInfor;\n\nconst reportData = {\n user_agent:browserInfor?.name+browserInfor?.version,\n platform:publicParams.platform,\n}\n\n/**\n * 这个正则表达式用于匹配 JavaScript 错误栈中的堆栈跟踪信息中的单个条目,其中包含文件名、行号和列号等信息。\n * 具体来说,它匹配以下格式的文本:\n * at functionName (filename:lineNumber:columnNumber)\n * at filename:lineNumber:columnNumber\n * at http://example.com/filename:lineNumber:columnNumber\n * at https://example.com/filename:lineNumber:columnNumber\n */\nconst FULL_MATCH =\n /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\n//限制追溯的错误堆栈数量\nconst STACK_TRACE_LIMIT = 10;\n\n//通过正则表达式解析一行的错误信息\nfunction parseStackLine(line) { \n const lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) return {};\n const filename = lineMatch[2] || '<anonymous>';\n const functionName = lineMatch[1] || '';\n const lineno = parseInt(lineMatch[3], 10) || undefined;\n const colno = parseInt(lineMatch[4], 10) || undefined;\n\n return {\n filename,\n functionName,\n lineno,\n colno\n }\n}\n\n//解析错误堆栈\nfunction parseStackFrames(error) { \n const { stack } = error;\n //如果没有stack直接返回[]\n if (!stack) return [];\n const frames = [];\n\n for (const line of stack.split('\\n').slice(1)) { \n const frame = parseStackLine(line); //分析一行的错误信息\n if (frame.filename) { \n //放入到堆栈错误信息数组中\n frames.push(frame);\n }\n }\n return frames.slice(0, STACK_TRACE_LIMIT);\n} \n\n\nexport default function error() {\n //资源错误没有冒泡,所以只能在捕获阶段采集获取错误\n window.addEventListener('error', async function (event) {\n const target = event.target;\n\n //要判断是资源错误,还是js错误,很简单,直接判断事件对象有没有src或者href属性就可以了\n if (target && (target.src || target.href)) {\n //上报资源错误 todo...\n const data = {\n error_type: 'resource',\n ...reportData,\n msg:toReadableString(`加载${target.tagName}失败:${target.src || target.href}`),\n version,\n }\n lazyReportCache('error', data)\n }\n else {\n const errs = parseStackFrames(event.error);\n let msg = event.message;\n if(errs?.[0]){\n const { filename,functionName,lineno, colno } = errs[0];\n msg = `${event.message},${filename},line:${lineno}:${colno}`;\n }\n \n const data = {\n error_type: 'js',\n msg:toReadableString(msg),\n ...reportData,\n version,\n }\n \n lazyReportCache('error', data)\n const isWhite = await detectionWhiteScreen();\n if(isWhite){\n lazyReportCache('error', {...data,error_type:'whiteScreen'})\n }\n }\n }, true)\n \n //promise错误\n window.addEventListener('unhandledrejection', function (event) {\n const reason = event.reason;\n const errs = parseStackFrames(reason);\n let msg = reason;\n\n if(errs?.[0]){\n const {filename,functionName,lineno,colno} = errs[0]; \n msg = `${event?.reason?.message || event?.reason},${filename},line:${lineno}:${colno}`;\n }\n \n const data = {\n error_type: 'js',\n msg:toReadableString(msg),\n ...reportData,\n version,\n }\n\n lazyReportCache('error', data)\n })\n}\n","let e=-1;const t=t=>{addEventListener(\"pageshow\",(n=>{n.persisted&&(e=n.timeStamp,t(n))}),!0)},n=(e,t,n,i)=>{let s,o;return r=>{t.value>=0&&(r||i)&&(o=t.value-(s??0),(o||void 0===s)&&(s=t.value,t.delta=o,t.rating=((e,t)=>e>t[1]?\"poor\":e>t[0]?\"needs-improvement\":\"good\")(t.value,n),e(t)))}},i=e=>{requestAnimationFrame((()=>requestAnimationFrame((()=>e()))))},s=()=>{const e=performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},o=()=>{const e=s();return e?.activationStart??0},r=(t,n=-1)=>{const i=s();let r=\"navigate\";e>=0?r=\"back-forward-cache\":i&&(document.prerendering||o()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":i.type&&(r=i.type.replace(/_/g,\"-\")));return{name:t,value:n,rating:\"good\",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:r}},c=new WeakMap;function a(e,t){return c.get(e)||c.set(e,new t),c.get(e)}class d{t;i=0;o=[];h(e){if(e.hadRecentInput)return;const t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}}const h=(e,t,n={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const i=new PerformanceObserver((e=>{Promise.resolve().then((()=>{t(e.getEntries())}))}));return i.observe({type:e,buffered:!0,...n}),i}}catch{}},f=e=>{let t=!1;return()=>{t||(e(),t=!0)}};let u=-1;const l=new Set,m=()=>\"hidden\"!==document.visibilityState||document.prerendering?1/0:0,p=e=>{if(\"hidden\"===document.visibilityState){if(\"visibilitychange\"===e.type)for(const e of l)e();isFinite(u)||(u=\"visibilitychange\"===e.type?e.timeStamp:0,removeEventListener(\"prerenderingchange\",p,!0))}},v=()=>{if(u<0){const e=o(),n=document.prerendering?void 0:globalThis.performance.getEntriesByType(\"visibility-state\").filter((t=>\"hidden\"===t.name&&t.startTime>e))[0]?.startTime;u=n??m(),addEventListener(\"visibilitychange\",p,!0),addEventListener(\"prerenderingchange\",p,!0),t((()=>{setTimeout((()=>{u=m()}))}))}return{get firstHiddenTime(){return u},onHidden(e){l.add(e)}}},g=e=>{document.prerendering?addEventListener(\"prerenderingchange\",(()=>e()),!0):e()},y=[1800,3e3],E=(e,s={})=>{g((()=>{const c=v();let a,d=r(\"FCP\");const f=h(\"paint\",(e=>{for(const t of e)\"first-contentful-paint\"===t.name&&(f.disconnect(),t.startTime<c.firstHiddenTime&&(d.value=Math.max(t.startTime-o(),0),d.entries.push(t),a(!0)))}));f&&(a=n(e,d,y,s.reportAllChanges),t((t=>{d=r(\"FCP\"),a=n(e,d,y,s.reportAllChanges),i((()=>{d.value=performance.now()-t.timeStamp,a(!0)}))})))}))},b=[.1,.25],L=(e,s={})=>{const o=v();E(f((()=>{let c,f=r(\"CLS\",0);const u=a(s,d),l=e=>{for(const t of e)u.h(t);u.i>f.value&&(f.value=u.i,f.entries=u.o,c())},m=h(\"layout-shift\",l);m&&(c=n(e,f,b,s.reportAllChanges),o.onHidden((()=>{l(m.takeRecords()),c(!0)})),t((()=>{u.i=0,f=r(\"CLS\",0),c=n(e,f,b,s.reportAllChanges),i((()=>c()))})),setTimeout(c))})))};let P=0,T=1/0,_=0;const M=e=>{for(const t of e)t.interactionId&&(T=Math.min(T,t.interactionId),_=Math.max(_,t.interactionId),P=_?(_-T)/7+1:0)};let w;const C=()=>w?P:performance.interactionCount??0,I=()=>{\"interactionCount\"in performance||w||(w=h(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))};let F=0;class k{u=[];l=new Map;m;p;v(){F=C(),this.u.length=0,this.l.clear()}L(){const e=Math.min(this.u.length-1,Math.floor((C()-F)/50));return this.u[e]}h(e){if(this.m?.(e),!e.interactionId&&\"first-input\"!==e.entryType)return;const t=this.u.at(-1);let n=this.l.get(e.interactionId);if(n||this.u.length<10||e.duration>t.P){if(n?e.duration>n.P?(n.entries=[e],n.P=e.duration):e.duration===n.P&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],P:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort(((e,t)=>t.P-e.P)),this.u.length>10){const e=this.u.splice(10);for(const t of e)this.l.delete(t.id)}this.p?.(n)}}}const A=e=>{const t=globalThis.requestIdleCallback||setTimeout;\"hidden\"===document.visibilityState?e():(e=f(e),addEventListener(\"visibilitychange\",e,{once:!0,capture:!0}),t((()=>{e(),removeEventListener(\"visibilitychange\",e,{capture:!0})})))},B=[200,500],S=(e,i={})=>{if(!globalThis.PerformanceEventTiming||!(\"interactionId\"in PerformanceEventTiming.prototype))return;const s=v();g((()=>{I();let o,c=r(\"INP\");const d=a(i,k),f=e=>{A((()=>{for(const t of e)d.h(t);const t=d.L();t&&t.P!==c.value&&(c.value=t.P,c.entries=t.entries,o())}))},u=h(\"event\",f,{durationThreshold:i.durationThreshold??40});o=n(e,c,B,i.reportAllChanges),u&&(u.observe({type:\"first-input\",buffered:!0}),s.onHidden((()=>{f(u.takeRecords()),o(!0)})),t((()=>{d.v(),c=r(\"INP\"),o=n(e,c,B,i.reportAllChanges)})))}))};class N{m;h(e){this.m?.(e)}}const q=[2500,4e3],x=(e,s={})=>{g((()=>{const c=v();let d,u=r(\"LCP\");const l=a(s,N),m=e=>{s.reportAllChanges||(e=e.slice(-1));for(const t of e)l.h(t),t.startTime<c.firstHiddenTime&&(u.value=Math.max(t.startTime-o(),0),u.entries=[t],d())},p=h(\"largest-contentful-paint\",m);if(p){d=n(e,u,q,s.reportAllChanges);const o=f((()=>{m(p.takeRecords()),p.disconnect(),d(!0)})),c=e=>{e.isTrusted&&(A(o),removeEventListener(e.type,c,{capture:!0}))};for(const e of[\"keydown\",\"click\",\"visibilitychange\"])addEventListener(e,c,{capture:!0});t((t=>{u=r(\"LCP\"),d=n(e,u,q,s.reportAllChanges),i((()=>{u.value=performance.now()-t.timeStamp,d(!0)}))}))}}))},H=[800,1800],O=e=>{document.prerendering?g((()=>O(e))):\"complete\"!==document.readyState?addEventListener(\"load\",(()=>O(e)),!0):setTimeout(e)},$=(e,i={})=>{let c=r(\"TTFB\"),a=n(e,c,H,i.reportAllChanges);O((()=>{const d=s();d&&(c.value=Math.max(d.responseStart-o(),0),c.entries=[d],a(!0),t((()=>{c=r(\"TTFB\",0),a=n(e,c,H,i.reportAllChanges),a(!0)})))}))};export{b as CLSThresholds,y as FCPThresholds,B as INPThresholds,q as LCPThresholds,H as TTFBThresholds,L as onCLS,E as onFCP,S as onINP,x as onLCP,$ as onTTFB};\n","import { onCLS, onFCP, onLCP, onTTFB,onINP } from \"web-vitals\";\nimport { lazyReportCache } from \"../report/index.js\";\n\nexport default function performance() {\n onCLS(sendToAnalytics);\n onINP(sendToAnalytics);\n onLCP(sendToAnalytics);\n onFCP(sendToAnalytics);\n onTTFB(sendToAnalytics);\n}\n\nfunction sendToAnalytics(metric) {\n const data = {\n name: metric.name,\n value: metric.value,\n // rating: metric.rating,\n }\n lazyReportCache('performance', data);\n}\n\n","import { lazyReportCache } from '../report/index.js';\nimport {isValidOssVideoUrl,getRequestBodySize,normalizeMaterialResourceUrl} from '../util/tool.js';\n\nconst originalPrototype = XMLHttpRequest.prototype;\nconst originalOpen = originalPrototype.open;\nconst originalSend = originalPrototype.send;\n\nfunction overWriteOpenAndSend() { \n originalPrototype.open = function newOpen(...args) { \n try {\n this.url = args[1];\n this.method = args[0];\n } catch (e) {\n // ignore\n }\n originalOpen.apply(this, args);\n }\n originalPrototype.send = function newSend(...args) { \n // 注意:本段所有埋点逻辑都要保证不抛错,否则会让 originalSend 不被执行、请求发不出去\n try {\n this.startTime = Date.now();\n const body = args[0];\n this.requestSize = getRequestBodySize(body);\n } catch (e) {\n // ignore\n }\n\n const onLoadEnd = () => { \n // 整个回调包一层兜底,避免任何异常污染 console / 触发 window.onerror\n try {\n this.endTime = Date.now();\n this.duration = this.endTime - this.startTime;\n\n const { status, duration, startTime, endTime, method,response,requestSize } = this;\n let { url } = this;\n let code = status;\n let request_url = url;\n try {\n const parsed = JSON.parse(response);\n code = parsed && typeof parsed === 'object' ? parsed.code : status;\n }catch {\n \n }\n\n let reportData = {\n status,\n request_url: normalizeMaterialResourceUrl(request_url),\n method: method || 'GET',\n code,\n duration,\n // sub_type: 'xhr',\n }\n\n if(isValidOssVideoUrl(request_url)){\n reportData.request_url = `https://sd-cms-bmp.oss-accelerate.aliyuncs.com:443/mbp/video`;\n try {\n reportData.request_size = parseInt(requestSize/1000);\n } catch (error) {\n \n }\n }\n\n lazyReportCache('api', reportData);\n } catch (e) {\n // 上报失败不能影响业务\n } finally {\n try { this.removeEventListener('loadend', onLoadEnd, true); } catch (e) {}\n }\n }\n\n //当请求结束时触发,无论请求成功 (load) 还是失败 (abort 或 error)\n try { this.addEventListener('loadend', onLoadEnd, true); } catch (e) {}\n originalSend.apply(this, args);\n }\n\n\n}\n\nexport default function xhr() { \n overWriteOpenAndSend();\n}\n","import { lazyReportCache} from '../report/index.js';\nimport {isValidOssVideoUrl,getRequestBodySize,normalizeMaterialResourceUrl} from '../util/tool.js';\n\nconst originalFetch = window.fetch;\n\nfunction overWriteFetch() { \n window.fetch = function newFetch(url, config) { \n const startTime = Date.now();\n let request_url = url;\n const reportData = {\n request_url: normalizeMaterialResourceUrl(request_url),\n method: config?.method || 'GET',\n // sub_type: 'fetch',\n }\n if(isValidOssVideoUrl(request_url)){\n reportData.request_url = `https://sd-cms-bmp.oss-accelerate.aliyuncs.com:443/mbp/video`;\n try {\n reportData.request_size = parseInt(getRequestBodySize(config?.body)/1000);\n } catch (error) {\n \n }\n }\n\n \n\n return originalFetch(url, config)\n .then(res => { \n // 把上报逻辑整体包一层 try/catch,避免内部任何异常冒泡到业务的 .then/.catch\n try {\n const endTime = Date.now();\n reportData.duration = (endTime - startTime);\n\n reportData.status = res.status;\n const clonedRes = res.clone();\n if(fiterUrl(url)){\n if (!clonedRes.ok) {\n reportData.code = reportData.status;\n lazyReportCache('api', reportData);\n }else{\n clonedRes.json().then(data => {\n reportData.code = data && typeof data === 'object' ? data.code : undefined;\n lazyReportCache('api', reportData);\n }).catch(() => {\n // 响应非 JSON 时静默忽略,仅上报基础信息\n lazyReportCache('api', reportData);\n })\n }\n }\n } catch (e) {\n // 上报失败不能影响业务\n }\n return res;\n })\n .catch(err => { \n try {\n const endTime = Date.now();\n reportData.duration = (endTime - startTime);\n \n reportData.status = 0;\n reportData.code = reportData.status;\n\n lazyReportCache('api', reportData);\n } catch (e) {\n // 上报失败不能影响业务\n }\n\n return err;\n })\n }\n}\n\nfunction fiterUrl(url) { \n // 入参可能是 string / URL / Request,统一转成 string 再判断,避免 indexOf 报错\n let str = '';\n try {\n if (typeof url === 'string') str = url;\n else if (url && typeof url.url === 'string') str = url.url; // Request 对象\n else str = String(url);\n } catch (e) {\n return true;\n }\n if (str.indexOf('.js.map') !== -1 || str.indexOf('.log.aliyuncs.com') !== -1) {\n return false;\n }\n return true;\n}\n\nexport default function fetch() { \n overWriteFetch();\n}\n","import xhr from './xhr.js';\nimport fetch from './fetch.js';\n\nexport default function api() { \n xhr();\n fetch();\n}\n","// 发送日志到阿里云SLS - 使用Track API\nexport async function sendLogsToSLS(logs: any[], {project,endpoint,logstore}:{project:string,endpoint:string,logstore:string}) {\n if (!project || !endpoint || !logstore) return\n const timestamp = Math.floor(Date.now() / 1000);\n\n // 构建日志数据 - 使用Track API格式\n const logData = {\n __logs__: logs.map((item: any) => ({\n __time__: timestamp,\n ...Object.keys(item).reduce((acc: any, key) => {\n acc[key] = String(item[key]);\n return acc;\n }, {})\n })),\n __topic__: 'default',\n __source__: 'frontend'\n };\n\n const body = JSON.stringify(logData);\n const url = `https://${project}.${endpoint}/logstores/${logstore}/track?APIVersion=0.6.0`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n // 'Content-Type': 'application/x-protobuf',\n 'Content-Type': 'application/json', \n 'x-log-apiversion': '0.6.0',\n 'x-log-bodyrawsize': body.length.toString()\n },\n body: body\n });\n\n const responseText = await response.text();\n // console.log('SLS Response:', response.status, responseText);\n\n if (!response.ok) {\n throw new Error(`SLS API error: ${response.status} ${response.statusText} - ${responseText}`);\n }\n\n return response;\n}","import config from '../config/index.js'\nimport getUniqueID from \"../util/getUniqueID.js\";\nimport { getCacheSLS,addCacheSLS,clearCacheSLS } from '../util/cache.js';\nimport { sendLogsToSLS } from '../util/slsLogger.js';\nimport publicParams from '../config/publicParams.js';\n\nconst uniqueID = getUniqueID();\n/**\n * 由于我们有很多内容需要上报,\n * 所以我这里为了简单区分和上报\n * 用type来区分上报的内容是什么\n * @param {string} type 上报类型 “error” | \"action\" | \"api\" | \"performance\"\n * @param {Object} data 上报信息\n * @param {boolean} isImmediate 是否立即上报,默认为false\n */\nexport function report(type, data, isImmediate = false) { \n if (config.reportUrl === null) { \n console.error(\"请先配置上报地址\");\n return;\n }\n \n const reportData = [{\n user_id: Number(config.userId) || 0, //用户id\n source: config.source, //来源\n type, //上报类型\n url: window.location.pathname, //当前页面\n data, //上报信息\n }];\n \n //立即上传\n if (isImmediate) { \n sendLog(reportData)\n return;\n }\n \n // 浏览器空闲时间进行上报\n if (window.requestIdleCallback) {\n window.requestIdleCallback(() => {\n sendLog(reportData)\n }, { timeout: 3000 });\n }else { \n sendLog(reportData)\n }\n \n}\n\nlet timer = null;\n//延迟上传,一定时间之后再进行上传\nexport function lazyReportCacheSLS(type, data,isImmediate ,timeout = 3000) { \n data = JSON.stringify({\n ...publicParams,\n ...data,\n });\n //把数据加入到map缓存中\n addCacheSLS(type, data);\n\n if(isImmediate){\n reportFn(isImmediate);\n return;\n }\n \n clearTimeout(timer);\n timer = setTimeout(() => { \n reportFn();\n },timeout)\n}\n\nfunction reportFn(isImmediate = false){\n //获取缓存中的数据\n const dataMap = getCacheSLS();\n\n if (dataMap.size) { \n for (const [type, data] of dataMap) { \n report(type, data,isImmediate);\n }\n\n clearCacheSLS();\n }\n}\n\nfunction sendLog(reportData){\n sendLogsToSLS(reportData, {\n project: config.slsProject,\n endpoint: config.slsEndpoint,\n logstore: config.slsLogstore\n }).catch(err => {\n console.error('[reporting-lib] SLS上报失败:', err);\n });\n}\n","/**\n * 追踪页面停留时间\n * @param onLeave 离开时的回调函数,接收停留时长(毫秒)和离开原因\n * @param options 配置选项\n * @param options.minDuration 最小上报时长(毫秒),低于此值不上报,默认 1000\n * @param options.debounceMs 防抖时间(毫秒),防止短时间内重复上报,默认 300\n * @returns 返回包含 manualLeave、reset、stop 和 getCurrentDuration 方法的对象\n */\nimport { PageLeaveMeta } from \"../util/pageDuration.js\";\n\ntype TimeoutHandle = ReturnType<typeof setTimeout> | null;\n\nexport function trackPageStayTime(\n onLeave: (duration: number, reason: string, meta: PageLeaveMeta) => void,\n options: { minDuration?: number; debounceMs?: number } = {},\n) {\n const { minDuration = 1000, debounceMs = 300 } = options;\n let isReported = false; // 防止重复上报\n let debounceTimer: TimeoutHandle = null;\n let lastVisibleTime = Date.now(); // 上次可见的时间点\n let lastPagePath = (() => {\n try {\n return window.location?.pathname || \"/\";\n } catch {\n return \"/\";\n }\n })();\n let currentPageTag: string | undefined;\n let hasInitializedPageTag = false;\n\n const report = (reason: string, duration: number, meta: PageLeaveMeta) => {\n // 防止重复上报\n if (isReported) return;\n\n // 防抖处理\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n\n debounceTimer = setTimeout(() => {\n if (isReported) return;\n\n // 只有超过最小时长才上报\n if (duration >= minDuration) {\n try {\n onLeave(duration, reason, meta);\n isReported = true;\n } catch (error) {\n console.error('[trackPageStayTime] onLeave callback error:', error);\n }\n }\n }, debounceMs);\n };\n\n // 1. 标签页可见性变化(切走 / 切回来)\n const handleVisibility = () => {\n if (document.visibilityState === 'hidden') {\n // 切走:计算当前会话时间并触发上报\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n report(\"visibilitychange-hidden\", duration, {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n });\n } else if (document.visibilityState === 'visible') {\n // 切回来:重新开始计时\n lastVisibleTime = Date.now();\n try {\n lastPagePath = window.location?.pathname || lastPagePath;\n } catch {\n // ignore\n }\n // 保持 currentPageTag 不变\n // 重置上报状态,允许下次切走时再次上报\n isReported = false;\n }\n };\n\n document.addEventListener(\"visibilitychange\", handleVisibility);\n\n // 2. pagehide(包含 BFCache 场景)\n const handlePageHide = (e: PageTransitionEvent) => {\n // 如果页面可能进入 BFCache,使用 persisted 标记\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n const meta: PageLeaveMeta = {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n };\n if (e.persisted) {\n // BFCache 场景:计算时间并上报\n report(\"pagehide-bfcache\", duration, meta);\n } else {\n // 普通离开场景\n report(\"pagehide\", duration, meta);\n }\n };\n window.addEventListener(\"pagehide\", handlePageHide);\n\n // 3. beforeunload(刷新 / 关闭浏览器)\n // 注意:beforeunload 中只能做同步操作,异步操作可能无法执行\n const handleBeforeUnload = () => {\n // 立即计算并上报(不使用防抖)\n if (!isReported) {\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n const meta: PageLeaveMeta = {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n };\n\n if (duration >= minDuration) {\n try {\n // 使用 sendBeacon 或同步方式上报\n onLeave(duration, \"beforeunload\", meta);\n isReported = true;\n } catch (error) {\n console.error('[trackPageStayTime] onLeave callback error:', error);\n }\n }\n }\n };\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n\n // 4. 路由切换(SPA)- 注意:popstate 只监听浏览器前进/后退\n // 对于 Umi 等框架,建议在路由守卫中手动调用 manualLeave\n const handlePopState = () => {\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n report(\"popstate\", duration, {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n });\n };\n window.addEventListener(\"popstate\", handlePopState);\n\n // 重置计时器(用于路由切换后重新开始计时)\n const reset = () => {\n lastVisibleTime = Date.now();\n try {\n lastPagePath = window.location?.pathname || lastPagePath;\n } catch {\n // ignore\n }\n // 重置后沿用当前 tab 标记\n isReported = false;\n // 清理防抖定时器\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n debounceTimer = null;\n }\n };\n\n // 5. 手动提供一个 API,方便在路由跳转中主动调用\n const manualLeave = (reason = \"manual\") => {\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n\n report(reason, duration, {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n });\n \n // 如果是路由切换,上报后重置计时器,以便新页面重新开始计时\n if (reason === 'route-change') {\n // 延迟重置,确保上报完成\n setTimeout(() => {\n reset();\n }, debounceMs + 50);\n }\n };\n\n const setPageTag = (tag?: string) => {\n currentPageTag = tag || undefined;\n if (tag) {\n hasInitializedPageTag = true;\n }\n };\n\n const switchPageTag = (tag: string, reason = \"page-tag-change\") => {\n if (currentPageTag && currentPageTag !== tag) {\n isReported = false;\n manualLeave(reason);\n lastVisibleTime = Date.now();\n } else if (!hasInitializedPageTag) {\n // 首次设置 tag,重置起始时间,防止把之前停留算到旧页面\n lastVisibleTime = Date.now();\n isReported = false;\n }\n setPageTag(tag);\n };\n\n // 停止追踪\n const stop = () => {\n // 清理防抖定时器\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n debounceTimer = null;\n }\n // 移除事件监听\n document.removeEventListener(\"visibilitychange\", handleVisibility);\n window.removeEventListener(\"pagehide\", handlePageHide);\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n window.removeEventListener(\"popstate\", handlePopState);\n };\n\n // 获取当前累计停留时间(不触发上报)\n const getCurrentDuration = (): number => {\n const now = Date.now();\n const currentSessionTime = document.visibilityState === 'visible' \n ? now - lastVisibleTime \n : 0;\n return currentSessionTime;\n };\n\n return {\n manualLeave,\n reset,\n stop,\n getCurrentDuration,\n setPageTag,\n switchPageTag,\n };\n}\n\n","export type PageLeaveMeta = {\n startTime: number;\n endTime: number;\n pagePath?: string; // 离开的页面路径(不含域名),如果有则优先使用\n pageTag?: string; // 额外标记(例如 tab key)\n};\n\ntype FormatPageName = (\n pageName: string,\n context: {\n duration: number;\n reason: string;\n startTime: number;\n endTime: number;\n pagePath?: string;\n pageTag?: string;\n },\n) => string;\n\nexport interface BuildPayloadOptions {\n formatPageName?: FormatPageName;\n}\n\nexport interface PageDurationPayload {\n pageName: string;\n duration: number;\n startTime: number;\n endTime: number;\n}\n\nexport const getBasePageName = (fallbackPath?: string) => {\n try {\n if (fallbackPath) return fallbackPath || \"/\";\n const { pathname = \"/\" } = window.location || {};\n return pathname || \"/\";\n } catch {\n return \"/\";\n }\n};\n\nexport const buildPageDurationPayload = (\n duration: number,\n reason: string,\n meta: PageLeaveMeta,\n options: BuildPayloadOptions = {},\n): PageDurationPayload => {\n const { startTime, endTime, pagePath, pageTag } = meta;\n const basePageName = getBasePageName(pagePath);\n const decoratedName = pageTag ? `${basePageName}#${pageTag}` : basePageName;\n const { formatPageName } = options;\n const pageName =\n typeof formatPageName === \"function\"\n ? formatPageName(decoratedName, { duration, reason, ...meta })\n : decoratedName;\n\n return {\n pageName,\n duration,\n startTime,\n endTime,\n };\n};\n\n","import { trackPageStayTime } from \"./pageStayTime.js\";\nimport { PageLeaveMeta, buildPageDurationPayload } from \"../util/pageDuration.js\";\nimport { lazyReportCacheSLS as sendReportToSLS } from \"../report/reportSLS.js\";\nimport type { TrackPageStayTimeOptions, HistoryInstance } from \"../types/index.js\";\nimport config from \"../config/index.js\";\n\nlet pageStayTracker: ReturnType<typeof trackPageStayTime> | null = null;\nlet historyUnlisten: (() => void) | null = null;\n\ninterface PageStayTimeOptions {\n enabled?: boolean; // 是否启用,默认 false\n minDuration?: number; // 最小上报时长(毫秒),默认 1000\n debounceMs?: number; // 防抖时间(毫秒),默认 300\n onLeave?: (duration: number, reason: string, meta?: PageLeaveMeta) => void; // 离开时的回调\n}\n\n/**\n * 初始化页面停留时间追踪\n * @param options 配置选项\n * @param historyInstance 路由 history 实例(可选)\n * @param defaultOnLeave 默认的上报回调函数(可选)\n */\nexport function initPageStayTimeTracker(\n options: PageStayTimeOptions = {},\n historyInstance?: HistoryInstance,\n defaultOnLeave?: (duration: number, reason: string) => void,\n) {\n const { enabled, minDuration, debounceMs, onLeave } = options;\n \n if (enabled) {\n // 如果已经初始化过,先停止之前的追踪\n if (pageStayTracker) {\n pageStayTracker.stop();\n pageStayTracker = null;\n }\n\n // 创建页面停留时间追踪器\n const finalOnLeave =\n onLeave ||\n defaultOnLeave ||\n ((duration: number, reason: string, meta?: PageLeaveMeta) => {\n \n });\n\n pageStayTracker = trackPageStayTime(finalOnLeave, {\n minDuration,\n debounceMs,\n });\n\n // 如果传入了 history,自动监听路由变化\n if (historyInstance && historyInstance.listen) {\n // 如果之前有监听,先取消\n if (historyUnlisten) {\n historyUnlisten();\n historyUnlisten = null;\n }\n\n // 监听路由变化\n historyUnlisten = historyInstance.listen(({ location, action }) => {\n // 路由切换时,上报当前页面的停留时间\n // action: 'PUSH' | 'POP' | 'REPLACE'\n if (pageStayTracker && (action === 'PUSH' || action === 'REPLACE')) {\n pageStayTracker.manualLeave('route-change');\n }\n });\n }\n } else if (pageStayTracker) {\n // 如果禁用了,停止追踪\n pageStayTracker.stop();\n pageStayTracker = null;\n if (historyUnlisten) {\n historyUnlisten();\n historyUnlisten = null;\n }\n }\n}\n\nexport function switchPageStayTag(tag: string, reason?: string) {\n pageStayTracker?.switchPageTag(tag, reason);\n}\n\n/**\n * 初始化页面停留时间追踪(带默认上报逻辑)\n * @param trackOptions 追踪配置选项\n * @param historyInstance 路由 history 实例(可选)\n */\nexport function initPageStayTracking(\n trackOptions?: TrackPageStayTimeOptions,\n historyInstance?: HistoryInstance\n) {\n if (!trackOptions) return;\n \n const defaultOnLeave = (duration: number, reason: string, meta?: PageLeaveMeta) => {\n const payload = buildPageDurationPayload(\n duration,\n reason,\n meta || { startTime: 0, endTime: 0 },\n { formatPageName: trackOptions?.formatPageName }\n );\n sendReportToSLS('pd', payload);\n };\n \n initPageStayTimeTracker(trackOptions, historyInstance, defaultOnLeave);\n}\n\n/**\n * 停止页面停留时间追踪\n */\nexport function stopPageStayTimeTracker() {\n if (pageStayTracker) {\n pageStayTracker.stop();\n pageStayTracker = null;\n }\n if (historyUnlisten) {\n historyUnlisten();\n historyUnlisten = null;\n }\n}\n\n/**\n * 监听路由变化(仅监听,不做其他操作)\n * @param callback 路由变化时的回调函数\n * @param historyInstance 路由 history 实例(可选,如果不传则使用 init 时传入的 history)\n * @returns 返回取消监听的函数\n */\nexport function listenRouteChange(\n callback: (location: { location: any; action: string }) => void,\n historyInstance?: HistoryInstance\n): () => void {\n // 如果没有传入 history,从 config 中获取\n const history = historyInstance || ((config as any).history as HistoryInstance | null);\n \n if (!history || !history.listen) {\n console.warn('[reporting-lib] No history instance available. Please provide history in init() or pass it as parameter.');\n return () => {};\n }\n\n const unlisten = history.listen(callback);\n return unlisten;\n}\n\n","import config,{ setConfig } from \"./config/index.js\";\nimport error from \"./error/index.js\";\nimport performance from \"./performance/index.js\";\nimport api from \"./api/index.js\";\nimport { lazyReportCacheSLS as sendReportToSLS } from \"./report/reportSLS.js\";\nimport { switchPageStayTag, initPageStayTracking, listenRouteChange } from \"./performance/pageStayTimeTracker.js\";\nimport type { InitOptions, HistoryInstance } from \"./types/index.js\";\n\nlet isInit = false;\n\nconst monitor = {\n init(options: InitOptions = {}) {\n setConfig(options); //配置全局参数\n \n // 初始化页面停留时间追踪(仅在显式传入配置时执行)\n initPageStayTracking(options.trackPageStayTime, options.history);\n \n // 多次初始化只执行一次挂载监听的逻辑\n if(!isInit){\n error(); //错误监听处理\n performance(); //性能监控\n api(); //api远程请求数据采集\n isInit = true;\n }\n },\n /**\n * 自定义上报到阿里云SLS\n * @param type 上报类型\n * @param data 上报数据\n * @param options 配置选项\n * @param options.immediate 是否立即上报(默认 false)\n * @param options.timeout 延迟上报时间,单位ms(默认 3000)\n */\n reportToSLS(type: string, data: Record<string, any> = {}, options: { immediate?: boolean; timeout?: number } = {}) {\n const { immediate = false, timeout = 3000 } = options;\n sendReportToSLS(type, data,immediate, timeout);\n },\n /**\n * 切换页面标签(例如 Tab),自动结束上一标签并重置计时\n * @param tag 标识名称,如 tab key\n * @param reason 可选,默认为 'page-tag-change'\n */\n switchPageTag(tag: string, reason = \"page-tag-change\") {\n switchPageStayTag(tag, reason);\n },\n /**\n * 监听路由变化(仅监听,不做其他操作)\n * @param callback 路由变化时的回调函数,接收 { location, action } 参数\n * @param historyInstance 路由 history 实例(可选,如果不传则使用 init 时传入的 history)\n * @returns 返回取消监听的函数\n */\n listenRouteChange(\n callback: (location: { location: any; action: string }) => void,\n historyInstance?: HistoryInstance\n ) {\n return listenRouteChange(callback, historyInstance);\n },\n};\n\nexport default monitor;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/config/index.js","../src/util/cache.js","../src/report/index.js","../src/util/tool.js","../src/config/publicParams.js","../src/error/index.js","../../node_modules/.pnpm/web-vitals@5.1.0/node_modules/web-vitals/dist/web-vitals.js","../src/performance/index.js","../src/api/xhr.js","../src/api/fetch.js","../src/api/index.js","../src/util/slsLogger.ts","../src/report/reportSLS.js","../src/performance/pageStayTime.ts","../src/util/pageDuration.ts","../src/performance/pageStayTimeTracker.ts","../src/index.ts"],"names":["config","version","config_default","setConfig","options","key","cache","cacheSLS","getCache","addCache","type","data","clearCache","getCacheSLS","addCacheSLS","clearCacheSLS","report","isImmediate","reportData","sendBeacon","timer","lazyReportCache","timeout","dataMap","reportUrl","reportWithXHR","xhr","detectWhiteScreen","samplePoints","whiteTags","onDetected","isWhiteScreen","detail","threshold","viewportWidth","viewportHeight","points","i","whiteCount","x","y","el","tag","isWhite","debounce","fn","delay","immediate","args","context","debouncedDetectWhiteScreen","resolve","pendingPromise","detectionWhiteScreen","getFullBrowserInfo","ua","name","getOSInfo","normalizeMaterialResourceUrl","url","str","materialMatch","mbpMatch","getHeaderValue","headers","target","v","item","getFetchRequestHeader","input","fromConfig","isValidOssVideoUrl","u","toReadableString","getRequestBodySize","body","total","value","publicParams","publicParams_default","browserInfor","FULL_MATCH","STACK_TRACE_LIMIT","parseStackLine","line","lineMatch","filename","functionName","lineno","colno","parseStackFrames","error","stack","frames","frame","event","errs","msg","reason","e","t","n","s","o","r","c","a","d","h","f","l","m","p","g","E","b","L","P","T","_","M","w","C","I","F","k","A","B","S","N","q","H","O","$","performance","sendToAnalytics","metric","originalPrototype","originalOpen","originalSend","overWriteOpenAndSend","instanceSetHeader","onLoadEnd","status","duration","startTime","endTime","method","response","requestSize","code","request_url","parsed","uuid","originalFetch","overWriteFetch","res","clonedRes","fiterUrl","err","fetch","api","sendLogsToSLS","logs","project","endpoint","logstore","timestamp","logData","acc","responseText","sendLog","lazyReportCacheSLS","reportFn","trackPageStayTime","onLeave","minDuration","debounceMs","isReported","debounceTimer","lastVisibleTime","lastPagePath","currentPageTag","hasInitializedPageTag","meta","handleVisibility","handlePageHide","handleBeforeUnload","handlePopState","reset","manualLeave","setPageTag","now","getBasePageName","fallbackPath","pathname","buildPageDurationPayload","pagePath","pageTag","basePageName","decoratedName","formatPageName","pageStayTracker","historyUnlisten","initPageStayTimeTracker","historyInstance","defaultOnLeave","enabled","location","action","switchPageStayTag","initPageStayTracking","trackOptions","payload","listenRouteChange","callback","history","isInit","monitor","index_default"],"mappings":"0CAAA,IAAMA,CAAAA,CAAS,CAEb,MAAA,CAAO,KAAA,CACP,MAAA,CAAQ,EAAA,CAER,SAAA,CAAW,sCAAA,CAEX,UAAA,CAAY,KAAA,CACZ,UAAA,CAAY,EAAA,CACZ,YAAa,EAAA,CACb,WAAA,CAAa,EAAA,CAEb,OAAA,CAAS,IACX,CAAA,CAEWC,CAAAA,CAAU,EAAA,CAEdC,CAAAA,CAAQF,CAAAA,CAER,SAASG,EAAAA,CAAUC,CAAAA,CAAS,CACjC,IAAA,IAAWC,CAAAA,IAAOL,EACZI,CAAAA,CAAQC,CAAG,CAAA,GACbL,CAAAA,CAAOK,CAAG,CAAA,CAAID,CAAAA,CAAQC,CAAG,CAAA,CAAA,CAG1BD,CAAAA,CAAQ,OAAA,GACTH,CAAAA,CAAUG,CAAAA,CAAQ,OAAA,EAEtB,CCzBA,IAAME,CAAAA,CAAQ,IAAI,GAAA,CACZC,CAAAA,CAAW,IAAI,GAAA,CAEd,SAASC,EAAAA,EAAW,CACzB,OAAOF,CACT,CAEO,SAASG,EAAAA,CAASC,CAAAA,CAAMC,EAAM,CAGnCL,CAAAA,CAAM,GAAA,CAAII,CAAI,CAAA,CAAGJ,CAAAA,CAAM,GAAA,CAAII,CAAI,CAAA,CAAE,IAAA,CAAKC,CAAI,CAAA,CAAIL,CAAAA,CAAM,GAAA,CAAII,CAAAA,CAAM,CAACC,CAAI,CAAC,EACtE,CAEO,SAASC,EAAAA,EAAa,CAC3BN,CAAAA,CAAM,KAAA,GACR,CAEO,SAASO,EAAAA,EAAc,CAC5B,OAAON,CACT,CAEO,SAASO,EAAAA,CAAYJ,CAAAA,CAAMC,CAAAA,CAAM,CAGtCJ,CAAAA,CAAS,GAAA,CAAIG,CAAI,CAAA,CAAGH,EAAS,GAAA,CAAIG,CAAI,CAAA,CAAE,IAAA,CAAKC,CAAI,CAAA,CAAIJ,CAAAA,CAAS,GAAA,CAAIG,EAAM,CAACC,CAAI,CAAC,EAC/E,CAEO,SAASI,EAAAA,EAAgB,CAC9BR,CAAAA,CAAS,KAAA,GACX,CCnBO,SAASS,EAAAA,CAAON,CAAAA,CAAMC,CAAAA,CAAMM,CAAAA,CAAc,KAAA,CAAO,CACtD,GAAIf,CAAAA,CAAO,SAAA,GAAc,IAAA,CAAM,CAC7B,OAAA,CAAQ,KAAA,CAAM,kDAAU,CAAA,CACxB,MACF,CAEA,IAAMgB,CAAAA,CAAa,IAAA,CAAK,SAAA,CAAU,CAChC,OAAA,CAAS,MAAA,CAAOhB,CAAAA,CAAO,MAAM,CAAA,EAAK,CAAA,CAClC,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,IAAA,CAAAQ,CAAAA,CACA,IAAK,MAAA,CAAO,QAAA,CAAS,QAAA,CACrB,IAAA,CAAAC,CACF,CAAC,CAAA,CAGD,GAAIM,EAAa,CACfE,CAAAA,CAAWjB,CAAAA,CAAO,SAAA,CAAWgB,CAAU,CAAA,CACvC,MACF,CAGI,OAAO,mBAAA,CACT,MAAA,CAAO,mBAAA,CAAoB,IAAM,CAC/BC,CAAAA,CAAWjB,CAAAA,CAAO,SAAA,CAAWgB,CAAU,EACzC,CAAA,CAAG,CAAE,OAAA,CAAS,GAAK,CAAC,CAAA,CAEpB,WAAW,IAAM,CACfC,CAAAA,CAAWjB,CAAAA,CAAO,SAAA,CAAWgB,CAAU,EACzC,CAAC,EAGL,CAEA,IAAIE,EAAAA,CAAQ,IAAA,CAEL,SAASC,CAAAA,CAAgBX,CAAAA,CAAMC,CAAAA,CAAMW,EAAU,GAAA,CAAM,CAE1Db,EAAAA,CAASC,CAAAA,CAAMC,CAAI,CAAA,CAEnB,YAAA,CAAaS,EAAK,CAAA,CAClBA,EAAAA,CAAQ,UAAA,CAAW,IAAM,CAEvB,IAAMG,CAAAA,CAAUf,EAAAA,GAEhB,GAAIe,CAAAA,CAAQ,IAAA,CAAM,CAChB,IAAA,GAAW,CAACb,CAAAA,CAAMC,CAAI,IAAKY,CAAAA,CACzBP,EAAAA,CAAON,CAAAA,CAAMC,CAAI,CAAA,CAGnBC,EAAAA,GACF,CAEF,EAAEU,CAAO,EACX,CAIA,SAASH,CAAAA,CAAWK,CAAAA,CAAWN,CAAAA,CAAY,CACrC,SAAA,CAAU,UAAA,CACZ,SAAA,CAAU,UAAA,CAAWM,CAAAA,CAAWN,CAAU,CAAA,CAG1CO,EAAAA,CAAcD,EAAWN,CAAU,EAGvC,CAGA,SAASO,EAAAA,CAAcD,CAAAA,CAAWN,CAAAA,CAAY,CAC5C,IAAMQ,CAAAA,CAAM,IAAI,cAAA,CAChBA,CAAAA,CAAI,IAAA,CAAK,MAAA,CAAQF,CAAAA,CAAW,IAAI,CAAA,CAChCE,CAAAA,CAAI,gBAAA,CAAiB,cAAA,CAAgB,kBAAkB,CAAA,CACvDA,CAAAA,CAAI,IAAA,CAAKR,CAAU,EACrB,CCtFO,IAAMS,EAAAA,CAAoB,CAAC,CAChC,YAAA,CAAAC,EAAe,CAAA,CACf,SAAA,CAAAC,CAAAA,CAAY,CAAC,MAAA,CAAQ,MAAA,CAAQ,QAAQ,CAAA,CACrC,WAAAC,CAAAA,CAAa,CAACC,CAAAA,CAAeC,CAAAA,GAAW,CAAE,CAAA,CAC1C,SAAA,CAAAC,CAAAA,CAAY,EACd,CAAA,CAAI,EAAC,GAAM,CACT,IAAMC,CAAAA,CAAgB,MAAA,CAAO,UAAA,CACvBC,CAAAA,CAAiB,MAAA,CAAO,WAAA,CAExBC,CAAAA,CAAS,EAAC,CAEhB,IAAA,IAASC,CAAAA,CAAI,EAAGA,CAAAA,EAAKT,CAAAA,CAAcS,CAAAA,EAAAA,CACjCD,CAAAA,CAAO,IAAA,CAAK,CACVF,CAAAA,CAAgB,CAAA,CACfC,GAAkBP,CAAAA,CAAe,CAAA,CAAA,CAAMS,CAC1C,CAAC,CAAA,CAGH,IAAIC,CAAAA,CAAa,CAAA,CACXN,EAAS,EAAC,CAEhBI,CAAAA,CAAO,OAAA,CAAQ,CAAC,CAACG,CAAAA,CAAGC,CAAC,CAAA,GAAM,CACzB,IAAMC,CAAAA,CAAK,QAAA,CAAS,gBAAA,CAAiBF,CAAAA,CAAGC,CAAC,EACnCE,CAAAA,CAAMD,CAAAA,EAAI,OAAA,EAAW,MAAA,CAC3BT,CAAAA,CAAO,IAAA,CAAK,CAAE,CAAA,CAAAO,EAAG,CAAA,CAAAC,CAAAA,CAAG,GAAA,CAAAE,CAAI,CAAC,CAAA,CAAA,CAErB,CAACD,CAAAA,EAAMZ,EAAU,QAAA,CAASa,CAAG,CAAA,GAC/BJ,CAAAA,GAEJ,CAAC,CAAA,CAED,IAAMK,CAAAA,CAAUL,CAAAA,CAAaV,CAAAA,EAAgBK,CAAAA,CAE7CH,CAAAA,CAAWa,CAAAA,CAASX,CAAM,EAC5B,CAAA,CAEaY,GAAW,CAACC,CAAAA,CAAIC,CAAAA,CAAQ,GAAA,CAAKC,CAAAA,CAAY,KAAA,GAAU,CAC9D,IAAI3B,CAAAA,CAAQ,IAAA,CAEZ,OAAO,SAAA,GAAa4B,CAAAA,CAAM,CACxB,IAAMC,CAAAA,CAAU,KAEZ7B,CAAAA,EAAO,YAAA,CAAaA,CAAK,CAAA,CAEzB2B,CAAAA,EAAa,CAAC3B,CAAAA,EAChByB,CAAAA,CAAG,KAAA,CAAMI,CAAAA,CAASD,CAAI,CAAA,CAGxB5B,CAAAA,CAAQ,UAAA,CAAW,IAAM,CAClB2B,GACHF,CAAAA,CAAG,KAAA,CAAMI,CAAAA,CAASD,CAAI,CAAA,CAExB5B,CAAAA,CAAQ,KACV,CAAA,CAAG0B,CAAK,EACV,CACF,CAAA,CAEMI,EAAAA,CAA6BN,EAAAA,CAAUO,CAAAA,EAAY,CACvDxB,EAAAA,CAAkB,CAChB,UAAA,CAAY,CAACgB,CAAAA,CAASX,CAAAA,GAAW,CAC/BmB,CAAAA,CAAQR,CAAO,CAAA,CACfS,CAAAA,CAAiB,KACnB,CACF,CAAC,EACH,CAAA,CAAG,GAAI,CAAA,CAEHA,EAAiB,IAAA,CACRC,EAAAA,CAAuB,KAC7BD,CAAAA,GACHA,CAAAA,CAAiB,IAAI,OAAA,CAASD,CAAAA,EAAY,CACxC,UAAA,CAAW,IAAM,CACfD,EAAAA,CAA2BC,CAAO,EACpC,CAAA,CAAG,GAAI,EACT,CAAC,CAAA,CAAA,CAEIC,CAAAA,CAAAA,CAGIE,EAAAA,CAAqB,IAAM,CACtC,IAAMC,CAAAA,CAAK,SAAA,CAAU,SAAA,CACjBC,CAAAA,CAAO,SAAA,CACPvD,CAAAA,CAAU,SAAA,CAEd,OAAI,MAAA,CAAO,KAAKsD,CAAE,CAAA,EAChBC,CAAAA,CAAO,MAAA,CACPvD,CAAAA,CAAUsD,CAAAA,CAAG,KAAA,CAAM,iBAAiB,IAAI,CAAC,CAAA,EAChC,MAAA,CAAO,IAAA,CAAKA,CAAE,CAAA,EACvBC,CAAAA,CAAO,OAAA,CACPvD,EAAUsD,CAAAA,CAAG,KAAA,CAAM,iBAAiB,CAAA,GAAI,CAAC,CAAA,EAChC,SAAA,CAAU,IAAA,CAAKA,CAAE,CAAA,EAC1BC,CAAAA,CAAO,QAAA,CACPvD,CAAAA,CAAUsD,CAAAA,CAAG,KAAA,CAAM,oBAAoB,IAAI,CAAC,CAAA,EACnC,UAAA,CAAW,IAAA,CAAKA,CAAE,CAAA,EAC3BC,CAAAA,CAAO,SAAA,CACPvD,CAAAA,CAAUsD,CAAAA,CAAG,KAAA,CAAM,qBAAqB,CAAA,GAAI,CAAC,CAAA,EACpC,SAAA,CAAU,KAAKA,CAAE,CAAA,EAAK,CAAC,SAAA,CAAU,IAAA,CAAKA,CAAE,CAAA,EACjDC,CAAAA,CAAO,QAAA,CACPvD,CAAAA,CAAUsD,CAAAA,CAAG,KAAA,CAAM,qBAAqB,CAAA,GAAI,CAAC,CAAA,EAAA,CACpC,QAAQ,IAAA,CAAKA,CAAE,CAAA,EAAK,UAAA,CAAW,IAAA,CAAKA,CAAE,CAAA,IAC/CC,CAAAA,CAAO,oBACPvD,CAAAA,CAAUsD,CAAAA,CAAG,KAAA,CAAM,wBAAwB,CAAA,GAAI,CAAC,CAAA,CAAA,CAG3C,CAAE,KAAAC,CAAAA,CAAM,OAAA,CAAAvD,CAAQ,CACzB,CAAA,CACawD,EAAAA,CAAY,IAAM,CAC7B,IAAMF,CAAAA,CAAK,SAAA,CAAU,SAAA,EAAa,SAAA,CAAU,MAAA,EAAU,MAAA,CAAO,KAAA,CAE7D,OAAI,gBAAA,CAAiB,IAAA,CAAKA,CAAE,CAAA,CACnB,eAAA,CAEL,MAAA,CAAO,IAAA,CAAKA,CAAE,EACT,SAAA,CAEL,UAAA,CAAW,IAAA,CAAKA,CAAE,CAAA,CACb,SAAA,CAEL,kBAAA,CAAmB,IAAA,CAAKA,CAAE,CAAA,EAAK,CAAC,MAAA,CAAO,QAAA,CAClC,KAAA,CAEL,kCAAA,CAAmC,IAAA,CAAKA,CAAE,CAAA,CACrC,OAAA,CAEL,OAAA,CAAQ,IAAA,CAAKA,CAAE,CAAA,CACV,OAAA,CAGF,YACT,EAWaG,CAAAA,CAAgCC,CAAAA,EAAQ,CACnD,GAAI,CACF,IAAMC,CAAAA,CAAM,MAAA,CAAOD,CAAG,CAAA,CAIhBE,CAAAA,CAAgBD,CAAAA,CAAI,KAAA,CAAM,+EAA+E,CAAA,CAC/G,GAAIC,CAAAA,CAAe,OAAO,CAAA,EAAGA,CAAAA,CAAc,CAAC,CAAC,CAAA,mBAAA,EAAsBA,CAAAA,CAAc,CAAC,CAAC,CAAA,CAAA,CAInF,IAAMC,CAAAA,CAAWF,CAAAA,CAAI,KAAA,CAAM,iEAAiE,CAAA,CAC5F,OAAIE,EAAiB,CAAA,EAAGA,CAAAA,CAAS,CAAC,CAAC,CAAA,KAAA,EAAQA,CAAAA,CAAS,CAAC,CAAC,CAAA,CAAA,CAE/CH,CACT,CAAA,KAAQ,CACN,OAAOA,CACT,CACF,CAAA,CAGaI,GAAiB,CAACC,CAAAA,CAASR,CAAAA,GAAS,CAC/C,GAAI,CAACQ,CAAAA,CAAS,OACd,IAAMC,CAAAA,CAAS,MAAA,CAAOT,CAAI,CAAA,CAAE,WAAA,EAAY,CACxC,GAAI,CACF,GAAI,OAAOQ,CAAAA,CAAQ,GAAA,EAAQ,UAAA,CAAY,CACrC,IAAME,CAAAA,CAAIF,EAAQ,GAAA,CAAIR,CAAI,CAAA,CAC1B,OAAOU,CAAAA,EAAY,KAAA,CACrB,CACA,GAAI,MAAM,OAAA,CAAQF,CAAO,CAAA,CAAG,CAC1B,IAAA,IAAWG,CAAAA,IAAQH,CAAAA,CACjB,GAAI,KAAA,CAAM,OAAA,CAAQG,CAAI,CAAA,EAAK,MAAA,CAAOA,CAAAA,CAAK,CAAC,CAAC,EAAE,WAAA,EAAY,GAAMF,CAAAA,CAC3D,OAAOE,CAAAA,CAAK,CAAC,CAAA,CAGjB,MACF,CACA,GAAI,OAAOH,CAAAA,EAAY,QAAA,CAAA,CACrB,IAAA,IAAW3D,CAAAA,IAAO,MAAA,CAAO,IAAA,CAAK2D,CAAO,CAAA,CACnC,GAAI3D,CAAAA,CAAI,WAAA,EAAY,GAAM4D,CAAAA,CAAQ,OAAOD,CAAAA,CAAQ3D,CAAG,CAAA,CAG1D,CAAA,KAAY,CAEZ,CAEF,CAAA,CAGa+D,EAAAA,CAAwB,CAACC,EAAOrE,CAAAA,CAAQwD,CAAAA,GAAS,CAC5D,IAAMc,CAAAA,CAAaP,EAAAA,CAAe/D,CAAAA,EAAUA,CAAAA,CAAO,QAASwD,CAAI,CAAA,CAChE,GAAIc,CAAAA,EAAc,IAAA,CAAM,OAAOA,CAAAA,CAC/B,GAAI,CACF,GAAID,CAAAA,EAAS,OAAOA,CAAAA,EAAU,QAAA,EAAYA,CAAAA,CAAM,OAAA,CAC9C,OAAON,EAAAA,CAAeM,CAAAA,CAAM,OAAA,CAASb,CAAI,CAE7C,CAAA,KAAY,CAEZ,CAEF,EAGae,CAAAA,CAAsBZ,CAAAA,EAAQ,CACzC,GAAI,CACF,IAAMa,CAAAA,CAAI,IAAI,GAAA,CAAIb,CAAAA,CAAI,OAAA,CAAQ,MAAM,CAAA,GAAM,CAAA,CAAA,CAAK,CAAA,MAAA,EAASA,CAAG,GAAKA,CAAG,CAAA,CAanE,OAHe,wCAAA,CAAyC,IAAA,CAAKa,CAAAA,CAAE,QAAQ,CAIzE,CAAA,KAAQ,CACN,OAAO,MACT,CACF,CAAA,CACaC,CAAAA,CAAoB9D,CAAAA,EAAS,CACxC,GAAI,CACF,OAAO,IAAA,CAAK,SAAA,CAAUA,CAAAA,CAAM,IAAA,CAAM,CAAC,CACrC,CAAA,KAAY,CACV,OAAO,MAAA,CAAOA,CAAI,CACpB,CACF,CAAA,CAEa+D,EAAsBC,CAAAA,EAAS,CAC1C,GAAI,CAACA,CAAAA,CAAM,OAAO,CAAA,CAClB,GAAI,CACF,GAAI,OAAOA,CAAAA,EAAS,QAAA,CAAU,OAAO,IAAI,WAAA,GAAc,MAAA,CAAOA,CAAI,CAAA,CAAE,MAAA,CACpE,GAAIA,CAAAA,YAAgB,IAAA,CAAM,OAAOA,EAAK,IAAA,CAEtC,GADIA,CAAAA,YAAgB,WAAA,EAChB,WAAA,CAAY,MAAA,CAAOA,CAAI,CAAA,CAAG,OAAOA,CAAAA,CAAK,UAAA,CAC1C,GAAIA,CAAAA,YAAgB,eAAA,CAAiB,OAAO,IAAI,WAAA,EAAY,CAAE,MAAA,CAAOA,CAAAA,CAAK,QAAA,EAAU,CAAA,CAAE,MAAA,CAEtF,GAAIA,aAAgB,QAAA,CAAU,CAC5B,IAAIC,CAAAA,CAAQ,CAAA,CACZ,IAAA,GAAW,CAACvE,CAAAA,CAAKwE,CAAK,CAAA,GAAKF,CAAAA,CAAK,OAAA,EAAQ,CACtCC,CAAAA,EAAS,IAAI,WAAA,EAAY,CAAE,OAAOvE,CAAG,CAAA,CAAE,MAAA,CACnC,OAAOwE,CAAAA,EAAU,QAAA,CACnBD,CAAAA,EAAS,IAAI,WAAA,EAAY,CAAE,MAAA,CAAOC,CAAK,CAAA,CAAE,MAAA,CAChCA,CAAAA,YAAiB,IAAA,GAC1BD,GAASC,CAAAA,CAAM,IAAA,CAAA,CAGnB,OAAOD,CACT,CACF,CAAA,KAAgB,CACd,OAAO,CACT,CAEA,OAAO,CACT,CAAA,CC9PA,IAAME,EAAAA,CAAe,CACnB,YAAaxB,EAAAA,EAAmB,CAChC,QAAA,CAASG,EAAAA,EACX,CAAA,CAEOsB,CAAAA,CAAQD,EAAAA,CCFf,IAAME,EAAAA,CAAeD,CAAAA,CAAa,YAAA,CAE5B7D,CAAAA,CAAa,CACjB,UAAA,CAAW8D,EAAAA,EAAc,KAAKA,EAAAA,EAAc,OAAA,CAC5C,QAAA,CAASD,CAAAA,CAAa,QACxB,CAAA,CAUME,EAAAA,CACJ,4JAAA,CAGIC,GAAoB,EAAA,CAG1B,SAASC,EAAAA,CAAeC,CAAAA,CAAM,CAC5B,IAAMC,CAAAA,CAAYD,CAAAA,CAAK,MAAMH,EAAU,CAAA,CACvC,GAAI,CAACI,CAAAA,CAAW,OAAO,EAAC,CACxB,IAAMC,CAAAA,CAAWD,CAAAA,CAAU,CAAC,CAAA,EAAK,aAAA,CAC3BE,CAAAA,CAAeF,CAAAA,CAAU,CAAC,CAAA,EAAK,EAAA,CAC/BG,CAAAA,CAAS,QAAA,CAASH,CAAAA,CAAU,CAAC,CAAA,CAAG,EAAE,GAAK,MAAA,CACvCI,CAAAA,CAAQ,QAAA,CAASJ,CAAAA,CAAU,CAAC,CAAA,CAAG,EAAE,CAAA,EAAK,OAE5C,OAAO,CACL,QAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CACF,CACF,CAGA,SAASC,EAAAA,CAAiBC,CAAAA,CAAO,CAC/B,GAAM,CAAE,KAAA,CAAAC,CAAM,CAAA,CAAID,CAAAA,CAElB,GAAI,CAACC,CAAAA,CAAO,OAAO,EAAC,CACpB,IAAMC,CAAAA,CAAS,EAAC,CAEhB,IAAA,IAAWT,CAAAA,IAAQQ,EAAM,KAAA,CAAM;AAAA,CAAI,CAAA,CAAE,MAAM,CAAC,CAAA,CAAG,CAC7C,IAAME,CAAAA,CAAQX,GAAeC,CAAI,CAAA,CAC7BU,EAAM,QAAA,EAERD,CAAAA,CAAO,KAAKC,CAAK,EAErB,CACA,OAAOD,CAAAA,CAAO,KAAA,CAAM,CAAA,CAAGX,EAAiB,CAC1C,CAGe,SAARS,CAAAA,EAAyB,CAE9B,MAAA,CAAO,gBAAA,CAAiB,QAAS,eAAgBI,CAAAA,CAAO,CACtD,IAAM9B,CAAAA,CAAS8B,CAAAA,CAAM,OAGrB,GAAI9B,CAAAA,GAAWA,EAAO,GAAA,EAAOA,CAAAA,CAAO,MAAO,CAEzC,IAAMtD,CAAAA,CAAO,CACX,UAAA,CAAY,UAAA,CACZ,GAAGO,CAAAA,CACH,GAAA,CAAIuD,EAAiB,CAAA,YAAA,EAAKR,CAAAA,CAAO,OAAO,CAAA,kBAAA,EAAMA,CAAAA,CAAO,GAAA,EAAOA,CAAAA,CAAO,IAAI,CAAA,CAAE,EACzE,OAAA,CAAAhE,CACF,EACAoB,CAAAA,CAAgB,OAAA,CAASV,CAAI,EAC/B,CAAA,KACK,CACH,IAAMqF,CAAAA,CAAON,EAAAA,CAAiBK,EAAM,KAAK,CAAA,CACrCE,EAAMF,CAAAA,CAAM,OAAA,CAChB,GAAGC,CAAAA,GAAO,CAAC,CAAA,CAAE,CACX,GAAM,CAAE,SAAAV,CAAAA,CAAS,YAAA,CAAAC,EAAa,MAAA,CAAAC,CAAAA,CAAQ,MAAAC,CAAM,CAAA,CAAIO,CAAAA,CAAK,CAAC,CAAA,CACtDC,CAAAA,CAAM,GAAGF,CAAAA,CAAM,OAAO,IAAIT,CAAQ,CAAA,MAAA,EAASE,CAAM,CAAA,CAAA,EAAIC,CAAK,GAC5D,CAEA,IAAM9E,EAAO,CACX,UAAA,CAAY,KACZ,GAAA,CAAI8D,CAAAA,CAAiBwB,CAAG,CAAA,CACxB,GAAG/E,CAAAA,CACH,OAAA,CAAAjB,CACF,CAAA,CAEAoB,EAAgB,OAAA,CAASV,CAAI,EACb,MAAM0C,EAAAA,IAEpBhC,CAAAA,CAAgB,OAAA,CAAS,CAAC,GAAGV,CAAAA,CAAK,UAAA,CAAW,aAAa,CAAC,EAE/D,CACF,CAAA,CAAG,IAAI,EAGP,MAAA,CAAO,gBAAA,CAAiB,oBAAA,CAAsB,SAAUoF,CAAAA,CAAO,CAC7D,IAAMG,CAAAA,CAASH,CAAAA,CAAM,OACfC,CAAAA,CAAON,EAAAA,CAAiBQ,CAAM,CAAA,CAChCD,CAAAA,CAAMC,CAAAA,CAEV,GAAGF,CAAAA,GAAO,CAAC,EAAE,CACX,GAAM,CAAC,QAAA,CAAAV,CAAAA,CAAS,aAAAC,CAAAA,CAAa,MAAA,CAAAC,CAAAA,CAAO,KAAA,CAAAC,CAAK,CAAA,CAAIO,EAAK,CAAC,CAAA,CACnDC,EAAM,CAAA,EAAGF,CAAAA,EAAO,QAAQ,OAAA,EAAWA,CAAAA,EAAO,MAAM,CAAA,CAAA,EAAIT,CAAQ,CAAA,MAAA,EAASE,CAAM,CAAA,CAAA,EAAIC,CAAK,GACtF,CAEA,IAAM9E,EAAO,CACX,UAAA,CAAY,IAAA,CACX,GAAA,CAAI8D,CAAAA,CAAiBwB,CAAG,EACzB,GAAG/E,CAAAA,CACH,QAAAjB,CACF,CAAA,CAEAoB,EAAgB,OAAA,CAASV,CAAI,EAC/B,CAAC,EACH,CCxHA,IAAIwF,EAAAA,CAAE,GAASC,CAAAA,CAAEA,CAAAA,EAAG,CAAC,gBAAA,CAAiB,UAAA,CAAYC,CAAAA,EAAG,CAACA,CAAAA,CAAE,SAAA,GAAYF,GAAEE,CAAAA,CAAE,SAAA,CAAUD,EAAEC,CAAC,CAAA,EAAE,EAAG,IAAE,EAAC,CAAA,CAAEA,CAAAA,CAAE,CAAC,CAAA,CAAE,EAAEA,CAAAA,CAAEhE,CAAAA,GAAI,CAAC,IAAIiE,CAAAA,CAAEC,EAAE,OAAOC,CAAAA,EAAG,CAAC,CAAA,CAAE,KAAA,EAAO,CAAA,GAAIA,GAAGnE,CAAAA,CAAAA,GAAKkE,CAAAA,CAAE,EAAE,KAAA,EAAOD,CAAAA,EAAG,IAAIC,CAAAA,EAAYD,CAAAA,GAAT,MAAA,IAAcA,CAAAA,CAAE,CAAA,CAAE,KAAA,CAAM,EAAE,KAAA,CAAMC,CAAAA,CAAE,EAAE,MAAA,CAAA,CAAQ,CAACJ,EAAEC,CAAAA,GAAID,CAAAA,CAAEC,CAAAA,CAAE,CAAC,CAAA,CAAE,MAAA,CAAOD,EAAEC,CAAAA,CAAE,CAAC,EAAE,mBAAA,CAAoB,MAAA,EAAQ,EAAE,KAAA,CAAMC,CAAC,CAAA,CAAE,CAAA,CAAE,CAAC,CAAA,CAAA,EAAG,CAAC,CAAA,CAAEhE,EAAAA,CAAE,GAAG,CAAC,qBAAA,CAAuB,IAAI,qBAAA,CAAuB,IAAI,CAAA,EAAI,CAAE,EAAC,EAAEiE,EAAAA,CAAE,IAAI,CAAC,IAAM,CAAA,CAAE,YAAY,gBAAA,CAAiB,YAAY,CAAA,CAAE,CAAC,CAAA,CAAE,GAAG,GAAG,CAAA,CAAE,aAAA,CAAc,GAAG,CAAA,CAAE,aAAA,CAAc,YAAY,GAAA,EAAI,CAAE,OAAO,CAAC,CAAA,CAAEC,CAAAA,CAAE,IAAaD,EAAAA,EAAE,EAAY,iBAAiB,CAAA,CAAGE,CAAAA,CAAE,CAACJ,CAAAA,CAAEC,CAAAA,CAAE,EAAA,GAAK,CAAC,IAAMhE,CAAAA,CAAEiE,IAAE,CAAME,CAAAA,CAAE,WAAW,OAAAL,EAAAA,EAAG,EAAEK,CAAAA,CAAE,oBAAA,CAAqBnE,CAAAA,GAAI,QAAA,CAAS,YAAA,EAAckE,CAAAA,GAAI,CAAA,CAAEC,CAAAA,CAAE,YAAY,QAAA,CAAS,YAAA,CAAaA,EAAE,SAAA,CAAUnE,CAAAA,CAAE,IAAA,GAAOmE,CAAAA,CAAEnE,CAAAA,CAAE,IAAA,CAAK,QAAQ,IAAA,CAAK,GAAG,IAAU,CAAC,IAAA,CAAK+D,EAAE,KAAA,CAAMC,CAAAA,CAAE,MAAA,CAAO,MAAA,CAAO,KAAA,CAAM,CAAA,CAAE,QAAQ,EAAC,CAAE,GAAG,CAAA,GAAA,EAAM,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,aAAA,CAAc,IAAA,CAAK,QAAQ,CAAA,CAAE,IAAI,CAAA,CAAA,CAAG,cAAA,CAAeG,CAAC,CAAC,CAAA,CAAEC,CAAAA,CAAE,IAAI,OAAA,CAAQ,SAASC,GAAE,CAAA,CAAE,CAAA,CAAE,CAAC,OAAOD,CAAAA,CAAE,IAAI,CAAC,CAAA,EAAGA,EAAE,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA,CAAEA,EAAE,GAAA,CAAI,CAAC,CAAC,CAAC,IAAME,CAAAA,CAAN,KAAO,CAAC,CAAA,CAAE,EAAE,CAAA,CAAE,CAAA,CAAE,EAAC,CAAE,CAAA,CAAER,EAAE,CAAC,GAAGA,CAAAA,CAAE,cAAA,CAAe,OAAO,IAAMC,EAAE,IAAA,CAAK,CAAA,CAAE,CAAC,CAAA,CAAE,CAAA,CAAE,KAAK,CAAA,CAAE,EAAA,CAAG,EAAE,CAAA,CAAE,IAAA,CAAK,CAAA,EAAGA,GAAG,CAAA,EAAGD,CAAAA,CAAE,UAAU,CAAA,CAAE,SAAA,CAAU,KAAKA,CAAAA,CAAE,SAAA,CAAUC,CAAAA,CAAE,SAAA,CAAU,GAAA,EAAK,IAAA,CAAK,GAAGD,CAAAA,CAAE,KAAA,CAAM,KAAK,CAAA,CAAE,IAAA,CAAKA,CAAC,CAAA,GAAI,IAAA,CAAK,CAAA,CAAEA,CAAAA,CAAE,KAAA,CAAM,IAAA,CAAK,EAAE,CAACA,CAAC,GAAG,IAAA,CAAK,CAAA,GAAIA,CAAC,EAAC,CAAC,CAAA,CAAOS,CAAAA,CAAE,CAAC,CAAA,CAAE,EAAEP,CAAAA,CAAE,KAAK,CAAC,GAAG,CAAC,GAAG,mBAAA,CAAoB,mBAAA,CAAoB,QAAA,CAAS,CAAC,CAAA,CAAE,CAAC,IAAMhE,CAAAA,CAAE,IAAI,mBAAA,CAAqB8D,CAAAA,EAAG,CAAC,OAAA,CAAQ,OAAA,EAAQ,CAAE,IAAA,CAAM,IAAI,CAAC,EAAEA,CAAAA,CAAE,UAAA,EAAY,EAAC,CAAE,EAAC,CAAE,CAAA,CAAE,OAAO9D,CAAAA,CAAE,OAAA,CAAQ,CAAC,KAAK,CAAA,CAAE,QAAA,CAAS,GAAG,GAAGgE,CAAC,CAAC,CAAA,CAAEhE,CAAC,CAAC,CAAA,KAAM,CAAC,CAAC,EAAEwE,EAAAA,CAAE,CAAA,EAAG,CAAC,IAAI,CAAA,CAAE,MAAG,OAAM,IAAI,CAAC,CAAA,GAAI,CAAA,EAAE,CAAE,EAAE,IAAA,EAAG,CAAC,EAAMrC,CAAAA,CAAE,EAAA,CAASsC,GAAE,IAAI,GAAA,CAAIC,EAAAA,CAAE,IAAe,QAAA,CAAS,eAAA,GAApB,UAAqC,QAAA,CAAS,YAAA,CAAa,IAAI,CAAA,CAAEC,CAAAA,CAAE,GAAG,CAAC,GAAc,QAAA,CAAS,eAAA,GAApB,QAAA,CAAoC,CAAC,GAAwB,CAAA,CAAE,IAAA,GAAvB,mBAA4B,IAAA,IAAUb,CAAAA,IAAKW,GAAEX,CAAAA,EAAE,CAAE,QAAA,CAAS3B,CAAC,CAAA,GAAIA,CAAAA,CAAuB,EAAE,IAAA,GAAvB,kBAAA,CAA4B,EAAE,SAAA,CAAU,CAAA,CAAE,oBAAoB,oBAAA,CAAqBwC,CAAAA,CAAE,IAAE,CAAA,EAAE,CAAC,CAAA,CAAE9C,EAAE,IAAI,CAAC,GAAGM,CAAAA,CAAE,CAAA,CAAE,CAAC,IAAM,CAAA,CAAE+B,GAAE,CAAyJ/B,CAAAA,CAAAA,CAArJ,SAAS,YAAA,CAAa,MAAA,CAAO,WAAW,WAAA,CAAY,gBAAA,CAAiB,kBAAkB,CAAA,CAAE,MAAA,CAAQ4B,CAAAA,EAAcA,CAAAA,CAAE,IAAA,GAAb,QAAA,EAAmBA,EAAE,SAAA,CAAU,CAAE,EAAE,CAAC,CAAA,EAAG,YAAeW,EAAAA,EAAE,CAAE,gBAAA,CAAiB,kBAAA,CAAmBC,CAAAA,CAAE,IAAE,EAAE,gBAAA,CAAiB,oBAAA,CAAqBA,EAAE,IAAE,CAAA,CAAEZ,EAAG,IAAI,CAAC,UAAA,CAAY,IAAI,CAAC5B,CAAAA,CAAEuC,KAAG,CAAE,EAAC,CAAE,EAAC,CAAC,OAAM,CAAC,IAAI,eAAA,EAAiB,CAAC,OAAOvC,CAAC,CAAA,CAAE,QAAA,CAAS,EAAE,CAACsC,EAAAA,CAAE,IAAI,CAAC,EAAC,CAAC,CAAC,CAAA,CAAEG,CAAAA,CAAE,GAAG,CAAC,QAAA,CAAS,aAAa,gBAAA,CAAiB,oBAAA,CAAsB,IAAI,CAAA,EAAE,CAAG,IAAE,CAAA,CAAE,CAAA,GAAG,EAAEzE,EAAAA,CAAE,CAAC,KAAK,GAAG,CAAA,CAAE0E,GAAE,CAAC,CAAA,CAAEZ,CAAAA,CAAE,EAAC,GAAI,CAACW,EAAG,IAAI,CAAC,IAAMR,CAAAA,CAAEvC,CAAAA,GAAQwC,CAAAA,CAAEC,CAAAA,CAAEH,CAAAA,CAAE,KAAK,CAAA,CAAQK,CAAAA,CAAED,EAAE,OAAA,CAAST,CAAAA,EAAG,CAAC,IAAA,IAAUC,CAAAA,IAAKD,EAA6BC,CAAAA,CAAE,IAAA,GAA7B,wBAAA,GAAoCS,CAAAA,CAAE,UAAA,EAAW,CAAET,EAAE,SAAA,CAAUK,CAAAA,CAAE,kBAAkBE,CAAAA,CAAE,KAAA,CAAM,KAAK,GAAA,CAAIP,CAAAA,CAAE,SAAA,CAAUG,CAAAA,EAAE,CAAE,CAAC,EAAEI,CAAAA,CAAE,OAAA,CAAQ,KAAKP,CAAC,CAAA,CAAEM,EAAE,IAAE,CAAA,CAAA,EAAG,CAAE,CAAA,CAAEG,CAAAA,GAAIH,CAAAA,CAAEL,EAAE,CAAA,CAAEM,CAAAA,CAAEnE,GAAE8D,CAAAA,CAAE,gBAAgB,EAAEF,CAAAA,CAAGA,CAAAA,EAAG,CAACO,CAAAA,CAAEH,CAAAA,CAAE,KAAK,EAAEE,CAAAA,CAAEL,CAAAA,CAAE,EAAEM,CAAAA,CAAEnE,EAAAA,CAAE8D,EAAE,gBAAgB,CAAA,CAAEjE,EAAAA,CAAG,IAAI,CAACsE,CAAAA,CAAE,MAAM,WAAA,CAAY,GAAA,GAAMP,CAAAA,CAAE,SAAA,CAAUM,EAAE,IAAE,EAAC,CAAE,EAAC,CAAE,CAAA,EAAE,CAAE,EAAC,CAAA,CAAES,GAAE,CAAC,EAAA,CAAG,GAAG,CAAA,CAAEC,EAAAA,CAAE,CAAC,CAAA,CAAEd,CAAAA,CAAE,KAAK,CAAC,IAAMC,EAAErC,CAAAA,EAAE,CAAEgD,GAAEL,EAAAA,CAAG,IAAI,CAAC,IAAIJ,CAAAA,CAAEI,EAAEL,CAAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAQhC,CAAAA,CAAEkC,GAAEJ,CAAAA,CAAEK,CAAC,CAAA,CAAEG,CAAAA,CAAEX,CAAAA,EAAG,CAAC,QAAUC,CAAAA,IAAKD,CAAAA,CAAE3B,EAAE,CAAA,CAAE4B,CAAC,EAAE5B,CAAAA,CAAE,CAAA,CAAEqC,CAAAA,CAAE,KAAA,GAAQA,CAAAA,CAAE,KAAA,CAAMrC,EAAE,CAAA,CAAEqC,CAAAA,CAAE,QAAQrC,CAAAA,CAAE,CAAA,CAAEiC,GAAE,EAAE,CAAA,CAAEM,CAAAA,CAAEH,CAAAA,CAAE,cAAA,CAAeE,CAAC,EAAEC,CAAAA,GAAIN,CAAAA,CAAEJ,EAAE,CAAA,CAAEQ,CAAAA,CAAEM,GAAEb,CAAAA,CAAE,gBAAgB,CAAA,CAAEC,CAAAA,CAAE,QAAA,CAAU,IAAI,CAACO,CAAAA,CAAEC,CAAAA,CAAE,aAAa,CAAA,CAAEN,EAAE,IAAE,EAAC,CAAE,CAAA,CAAEL,CAAAA,CAAG,IAAI,CAAC5B,CAAAA,CAAE,CAAA,CAAE,EAAEqC,CAAAA,CAAEL,CAAAA,CAAE,MAAM,CAAC,CAAA,CAAEC,CAAAA,CAAEJ,CAAAA,CAAE,CAAA,CAAEQ,CAAAA,CAAEM,GAAEb,CAAAA,CAAE,gBAAgB,EAAEjE,EAAAA,CAAG,IAAIoE,GAAI,EAAC,CAAE,CAAA,CAAE,UAAA,CAAWA,CAAC,GAAE,CAAE,CAAC,EAAC,CAAA,CAAMY,EAAAA,CAAE,EAAEC,CAAAA,CAAE,CAAA,CAAA,CAAA,CAAIC,EAAE,CAAA,CAAQC,EAAAA,CAAE,GAAG,CAAC,IAAA,IAAU,KAAK,CAAA,CAAE,CAAA,CAAE,gBAAgBF,CAAAA,CAAE,IAAA,CAAK,GAAA,CAAIA,CAAAA,CAAE,CAAA,CAAE,aAAa,EAAEC,CAAAA,CAAE,IAAA,CAAK,IAAIA,CAAAA,CAAE,CAAA,CAAE,aAAa,CAAA,CAAEF,EAAAA,CAAEE,CAAAA,CAAAA,CAAGA,CAAAA,CAAED,CAAAA,EAAG,CAAA,CAAE,EAAE,CAAA,EAAE,CAAA,CAAMG,EAAQC,EAAAA,CAAE,IAAID,EAAEJ,EAAAA,CAAE,WAAA,CAAY,gBAAA,EAAkB,CAAA,CAAEM,EAAAA,CAAE,IAAI,CAAC,kBAAA,GAAqB,WAAA,EAAaF,IAAIA,CAAAA,CAAEb,CAAAA,CAAE,QAAQY,EAAAA,CAAE,CAAC,IAAA,CAAK,OAAA,CAAQ,QAAA,CAAS,IAAA,CAAG,kBAAkB,CAAC,CAAC,GAAE,CAAA,CAAMI,EAAAA,CAAE,EAAQC,EAAAA,CAAN,KAAO,CAAC,CAAA,CAAE,EAAC,CAAE,EAAE,IAAI,GAAA,CAAI,EAAE,CAAA,CAAE,CAAA,EAAG,CAACD,EAAAA,CAAEF,EAAAA,EAAE,CAAE,IAAA,CAAK,CAAA,CAAE,MAAA,CAAO,EAAE,IAAA,CAAK,CAAA,CAAE,QAAO,CAAC,GAAG,CAAC,IAAMvB,CAAAA,CAAE,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,EAAE,MAAA,CAAO,CAAA,CAAE,KAAK,KAAA,CAAA,CAAOuB,EAAAA,GAAIE,EAAAA,EAAG,EAAE,CAAC,CAAA,CAAE,OAAO,KAAK,CAAA,CAAEzB,CAAC,CAAC,CAAC,CAAA,CAAEA,EAAE,CAAC,GAAG,IAAA,CAAK,CAAA,GAAIA,CAAC,CAAA,CAAE,CAACA,CAAAA,CAAE,aAAA,EAA+BA,EAAE,SAAA,GAAlB,aAAA,CAA4B,OAAO,IAAMC,CAAAA,CAAE,IAAA,CAAK,CAAA,CAAE,EAAA,CAAG,EAAE,EAAM,CAAA,CAAE,IAAA,CAAK,EAAE,GAAA,CAAID,CAAAA,CAAE,aAAa,CAAA,CAAE,GAAG,CAAA,EAAG,IAAA,CAAK,CAAA,CAAE,MAAA,CAAO,IAAIA,CAAAA,CAAE,QAAA,CAASC,EAAE,CAAA,CAAE,CAAC,GAAG,CAAA,CAAED,CAAAA,CAAE,QAAA,CAAS,CAAA,CAAE,CAAA,EAAG,CAAA,CAAE,QAAQ,CAACA,CAAC,EAAE,CAAA,CAAE,CAAA,CAAEA,EAAE,QAAA,EAAUA,CAAAA,CAAE,QAAA,GAAW,CAAA,CAAE,CAAA,EAAGA,CAAAA,CAAE,YAAY,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,SAAA,EAAW,EAAE,OAAA,CAAQ,IAAA,CAAKA,CAAC,CAAA,EAAG,CAAA,CAAE,CAAC,GAAGA,CAAAA,CAAE,aAAA,CAAc,QAAQ,CAACA,CAAC,EAAE,CAAA,CAAEA,CAAAA,CAAE,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,IAAI,CAAA,CAAE,EAAA,CAAG,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,IAAA,CAAK,CAAC,CAAA,CAAA,CAAG,IAAA,CAAK,CAAA,CAAE,IAAA,CAAM,CAACA,CAAAA,CAAEC,CAAAA,GAAIA,EAAE,CAAA,CAAED,CAAAA,CAAE,CAAE,CAAA,CAAE,IAAA,CAAK,CAAA,CAAE,MAAA,CAAO,EAAA,CAAG,CAAC,IAAMA,CAAAA,CAAE,IAAA,CAAK,EAAE,MAAA,CAAO,EAAE,EAAE,IAAA,IAAUC,CAAAA,IAAKD,CAAAA,CAAE,IAAA,CAAK,CAAA,CAAE,MAAA,CAAOC,EAAE,EAAE,EAAC,CAAC,IAAA,CAAK,CAAA,GAAI,CAAC,EAAC,CAAC,CAAC,CAAA,CAAO0B,EAAAA,CAAE,CAAA,EAAG,CAAC,IAAM,CAAA,CAAE,WAAW,mBAAA,EAAqB,UAAA,CAAsB,SAAS,eAAA,GAApB,QAAA,CAAoC,CAAA,EAAE,EAAG,CAAA,CAAEjB,EAAAA,CAAE,CAAC,CAAA,CAAE,gBAAA,CAAiB,mBAAmB,CAAA,CAAE,CAAC,KAAK,IAAA,CAAG,OAAA,CAAQ,IAAE,CAAC,CAAA,CAAE,CAAA,CAAG,IAAI,CAAC,CAAA,GAAI,mBAAA,CAAoB,kBAAA,CAAmB,EAAE,CAAC,OAAA,CAAQ,IAAE,CAAC,EAAC,CAAE,GAAE,CAAA,CAAEkB,EAAAA,CAAE,CAAC,GAAA,CAAI,GAAG,EAAEC,EAAAA,CAAE,CAAC,CAAA,CAAE3F,CAAAA,CAAE,EAAC,GAAI,CAAC,GAAG,CAAC,WAAW,sBAAA,EAAwB,EAAE,kBAAkB,sBAAA,CAAuB,SAAA,CAAA,CAAW,OAAO,IAAMiE,CAAAA,CAAEpC,GAAE,CAAE+C,CAAAA,CAAG,IAAI,CAACU,EAAAA,GAAI,IAAIpB,CAAAA,CAAEE,CAAAA,CAAED,CAAAA,CAAE,KAAK,CAAA,CAAQG,EAAED,EAAAA,CAAErE,CAAAA,CAAEwF,EAAC,CAAA,CAAEhB,CAAAA,CAAEV,GAAG,CAAC2B,EAAAA,CAAG,IAAI,CAAC,IAAA,IAAU1B,CAAAA,IAAKD,EAAEQ,CAAAA,CAAE,CAAA,CAAEP,CAAC,CAAA,CAAE,IAAMA,EAAEO,CAAAA,CAAE,CAAA,EAAE,CAAEP,CAAAA,EAAGA,CAAAA,CAAE,CAAA,GAAIK,EAAE,KAAA,GAAQA,CAAAA,CAAE,MAAML,CAAAA,CAAE,CAAA,CAAEK,EAAE,OAAA,CAAQL,CAAAA,CAAE,OAAA,CAAQG,CAAAA,EAAE,EAAE,CAAE,EAAC,CAAA,CAAE/B,CAAAA,CAAEoC,EAAE,OAAA,CAAQC,CAAAA,CAAE,CAAC,iBAAA,CAAkBxE,CAAAA,CAAE,iBAAA,EAAmB,EAAE,CAAC,CAAA,CAAEkE,EAAEF,CAAAA,CAAE,CAAA,CAAEI,EAAEsB,EAAAA,CAAE1F,CAAAA,CAAE,gBAAgB,CAAA,CAAEmC,CAAAA,GAAIA,CAAAA,CAAE,OAAA,CAAQ,CAAC,IAAA,CAAK,cAAc,QAAA,CAAS,IAAE,CAAC,CAAA,CAAE8B,CAAAA,CAAE,SAAU,IAAI,CAACO,CAAAA,CAAErC,CAAAA,CAAE,WAAA,EAAa,EAAE+B,CAAAA,CAAE,IAAE,EAAC,CAAE,CAAA,CAAEH,EAAG,IAAI,CAACO,CAAAA,CAAE,CAAA,EAAE,CAAEF,CAAAA,CAAED,EAAE,KAAK,CAAA,CAAED,EAAEF,CAAAA,CAAE,CAAA,CAAEI,EAAEsB,EAAAA,CAAE1F,CAAAA,CAAE,gBAAgB,EAAC,CAAE,CAAA,EAAE,CAAE,EAAC,CAAA,CAAQ4F,GAAN,KAAO,CAAC,EAAE,CAAA,CAAE9B,CAAAA,CAAE,CAAC,IAAA,CAAK,CAAA,GAAIA,CAAC,EAAC,CAAC,CAAA,CAAO+B,GAAE,CAAC,IAAA,CAAK,GAAG,CAAA,CAAE3F,EAAAA,CAAE,CAAC,CAAA,CAAE+D,CAAAA,CAAE,KAAK,CAACW,CAAAA,CAAG,IAAI,CAAC,IAAMR,EAAEvC,CAAAA,EAAE,CAAMyC,CAAAA,CAAEnC,CAAAA,CAAEgC,CAAAA,CAAE,KAAK,EAAQM,CAAAA,CAAEJ,EAAAA,CAAEJ,EAAE2B,EAAC,CAAA,CAAElB,EAAEZ,CAAAA,EAAG,CAACG,CAAAA,CAAE,gBAAA,GAAmBH,CAAAA,CAAEA,CAAAA,CAAE,MAAM,EAAE,CAAA,CAAA,CAAG,QAAUC,CAAAA,IAAKD,CAAAA,CAAEW,EAAE,CAAA,CAAEV,CAAC,CAAA,CAAEA,CAAAA,CAAE,SAAA,CAAUK,CAAAA,CAAE,kBAAkBjC,CAAAA,CAAE,KAAA,CAAM,KAAK,GAAA,CAAI4B,CAAAA,CAAE,UAAUG,CAAAA,EAAE,CAAE,CAAC,CAAA,CAAE/B,CAAAA,CAAE,OAAA,CAAQ,CAAC4B,CAAC,CAAA,CAAEO,GAAE,EAAE,CAAA,CAAEK,EAAEJ,CAAAA,CAAE,0BAAA,CAA2BG,CAAC,CAAA,CAAE,GAAGC,EAAE,CAACL,CAAAA,CAAEN,EAAE,CAAA,CAAE7B,CAAAA,CAAE0D,GAAE5B,CAAAA,CAAE,gBAAgB,CAAA,CAAE,IAAMC,CAAAA,CAAEM,EAAAA,CAAG,IAAI,CAACE,CAAAA,CAAEC,EAAE,WAAA,EAAa,EAAEA,CAAAA,CAAE,UAAA,EAAW,CAAEL,CAAAA,CAAE,IAAE,EAAC,CAAE,CAAA,CAAEF,CAAAA,CAAEN,GAAG,CAACA,CAAAA,CAAE,YAAY2B,EAAAA,CAAEvB,CAAC,CAAA,CAAE,mBAAA,CAAoBJ,CAAAA,CAAE,IAAA,CAAKM,EAAE,CAAC,OAAA,CAAQ,IAAE,CAAC,CAAA,EAAE,EAAE,IAAA,IAAUN,CAAAA,IAAI,CAAC,SAAA,CAAU,OAAA,CAAQ,kBAAkB,EAAE,gBAAA,CAAiBA,CAAAA,CAAEM,EAAE,CAAC,OAAA,CAAQ,IAAE,CAAC,CAAA,CAAEL,CAAAA,CAAGA,CAAAA,EAAG,CAAC5B,CAAAA,CAAEgC,EAAE,KAAK,CAAA,CAAEG,EAAEN,CAAAA,CAAE,CAAA,CAAE7B,EAAE0D,EAAAA,CAAE5B,CAAAA,CAAE,gBAAgB,CAAA,CAAEjE,EAAAA,CAAG,IAAI,CAACmC,CAAAA,CAAE,KAAA,CAAM,YAAY,GAAA,EAAI,CAAE4B,EAAE,SAAA,CAAUO,CAAAA,CAAE,IAAE,EAAC,CAAE,EAAC,CAAE,EAAC,CAAC,CAAE,EAAC,CAAA,CAAEwB,GAAE,CAAC,GAAA,CAAI,IAAI,CAAA,CAAEC,EAAAA,CAAE,CAAA,EAAG,CAAC,QAAA,CAAS,YAAA,CAAanB,EAAG,IAAImB,EAAAA,CAAE,CAAC,CAAE,CAAA,CAAe,QAAA,CAAS,UAAA,GAAtB,UAAA,CAAiC,gBAAA,CAAiB,OAAQ,IAAIA,EAAAA,CAAE,CAAC,CAAA,CAAG,IAAE,EAAE,UAAA,CAAW,CAAC,EAAC,CAAA,CAAEC,EAAAA,CAAE,CAAC,EAAEhG,CAAAA,CAAE,KAAK,CAAC,IAAIoE,EAAED,CAAAA,CAAE,MAAM,CAAA,CAAEE,CAAAA,CAAEL,CAAAA,CAAE,CAAA,CAAEI,EAAE0B,EAAAA,CAAE9F,CAAAA,CAAE,gBAAgB,CAAA,CAAE+F,EAAAA,CAAG,IAAI,CAAC,IAAMzB,CAAAA,CAAEL,EAAAA,EAAE,CAAEK,CAAAA,GAAIF,EAAE,KAAA,CAAM,IAAA,CAAK,IAAIE,CAAAA,CAAE,aAAA,CAAcJ,GAAE,CAAE,CAAC,CAAA,CAAEE,CAAAA,CAAE,OAAA,CAAQ,CAACE,CAAC,CAAA,CAAED,CAAAA,CAAE,IAAE,CAAA,CAAEN,CAAAA,CAAG,IAAI,CAACK,CAAAA,CAAED,CAAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAEE,EAAEL,CAAAA,CAAE,CAAA,CAAEI,EAAE0B,EAAAA,CAAE9F,CAAAA,CAAE,gBAAgB,CAAA,CAAEqE,CAAAA,CAAE,IAAE,EAAC,CAAE,CAAA,EAAE,CAAE,EAAC,CAAA,CCGzjL,SAAR4B,EAAAA,EAA+B,CACpClB,GAAMmB,CAAe,CAAA,CACrBP,GAAMO,CAAe,CAAA,CACrBhG,GAAMgG,CAAe,CAAA,CACrBrB,GAAMqB,CAAe,CAAA,CACrBF,GAAOE,CAAe,EACxB,CAEA,SAASA,CAAAA,CAAgBC,CAAAA,CAAQ,CAC/B,IAAM7H,CAAAA,CAAO,CACX,IAAA,CAAM6H,CAAAA,CAAO,KACb,KAAA,CAAOA,CAAAA,CAAO,KAEhB,CAAA,CACAnH,CAAAA,CAAgB,aAAA,CAAeV,CAAI,EACrC,CCfA,IAAM8H,CAAAA,CAAoB,cAAA,CAAe,UACnCC,EAAAA,CAAeD,CAAAA,CAAkB,IAAA,CACjCE,EAAAA,CAAeF,CAAAA,CAAkB,IAAA,CAEvC,SAASG,EAAAA,EAAuB,CAC9BH,EAAkB,IAAA,CAAO,SAAA,GAAoBzF,EAAM,CACjD,GAAI,CASF,GARA,IAAA,CAAK,GAAA,CAAMA,EAAK,CAAC,CAAA,CACjB,KAAK,MAAA,CAASA,CAAAA,CAAK,CAAC,CAAA,CAGpB,IAAA,CAAK,cAAA,CAAiB,EAAC,CAInB,CAAC,KAAK,mBAAA,CAAqB,CAC7B,KAAK,mBAAA,CAAsB,CAAA,CAAA,CAC3B,IAAM6F,CAAAA,CAAoB,IAAA,CAAK,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA,CACzD,KAAK,gBAAA,CAAmB,CAACrF,EAAMqB,CAAAA,GAAU,CACvC,GAAI,CACG,IAAA,CAAK,cAAA,GAAgB,IAAA,CAAK,cAAA,CAAiB,IAChD,IAAA,CAAK,cAAA,CAAe,OAAOrB,CAAI,CAAA,CAAE,aAAa,CAAA,CAAIqB,EACpD,CAAA,KAAY,CAEZ,CACA,OAAOgE,CAAAA,CAAkBrF,EAAMqB,CAAK,CACtC,EACF,CACF,CAAA,KAAY,CAEZ,CACA6D,EAAAA,CAAa,KAAA,CAAM,KAAM1F,CAAI,EAC/B,EACAyF,CAAAA,CAAkB,IAAA,CAAO,YAAoBzF,CAAAA,CAAM,CAEjD,GAAI,CACF,IAAA,CAAK,SAAA,CAAY,KAAK,GAAA,EAAI,CAC1B,IAAM2B,CAAAA,CAAO3B,CAAAA,CAAK,CAAC,CAAA,CACnB,IAAA,CAAK,WAAA,CAAc0B,CAAAA,CAAmBC,CAAI,EAC5C,MAAY,CAEZ,CAEA,IAAMmE,CAAAA,CAAY,IAAM,CAEtB,GAAI,CACF,IAAA,CAAK,OAAA,CAAU,IAAA,CAAK,GAAA,GACpB,IAAA,CAAK,QAAA,CAAW,KAAK,OAAA,CAAU,IAAA,CAAK,UAEpC,GAAM,CAAE,MAAA,CAAAC,CAAAA,CAAQ,QAAA,CAAAC,CAAAA,CAAU,UAAAC,CAAAA,CAAW,OAAA,CAAAC,EAAS,MAAA,CAAAC,CAAAA,CAAO,SAAAC,CAAAA,CAAS,WAAA,CAAAC,CAAY,CAAA,CAAI,IAAA,CAC1E,CAAE,IAAA1F,CAAI,CAAA,CAAI,KACV2F,CAAAA,CAAOP,CAAAA,CACPQ,EAAc5F,CAAAA,CAClB,GAAI,CACF,IAAM6F,CAAAA,CAAS,IAAA,CAAK,MAAMJ,CAAQ,CAAA,CAClCE,EAAOE,CAAAA,EAAU,OAAOA,GAAW,QAAA,CAAWA,CAAAA,CAAO,KAAOT,EAC9D,CAAA,KAAO,CAEP,CAEA,IAAI7H,EAAa,CACf,MAAA,CAAA6H,EACA,WAAA,CAAarF,CAAAA,CAA6B6F,CAAW,CAAA,CACrD,MAAA,CAAQJ,CAAAA,EAAU,MAClB,IAAA,CAAAG,CAAAA,CACA,SAAAN,CAAAA,CACA,SAAA,CAAAC,EACA,OAAA,CAAAC,CAEF,CAAA,CAEA,GAAI,CACF,IAAMO,EAAO,IAAA,CAAK,cAAA,EAAkB,KAAK,cAAA,CAAe,IAAA,CACpDA,IAAMvI,CAAAA,CAAW,IAAA,CAAOuI,CAAAA,EAC9B,CAAA,KAAY,CAEZ,CAEA,GAAGlF,CAAAA,CAAmBgF,CAAW,EAAE,CACjCrI,CAAAA,CAAW,YAAc,8DAAA,CACzB,GAAI,CACFA,CAAAA,CAAW,YAAA,CAAe,QAAA,CAASmI,EAAY,GAAI,EACrD,MAAgB,CAEhB,CACF,CAEAhI,CAAAA,CAAgB,KAAA,CAAOH,CAAU,EACnC,CAAA,KAAY,CAEZ,QAAE,CACA,GAAI,CAAE,IAAA,CAAK,mBAAA,CAAoB,UAAW4H,CAAAA,CAAW,CAAA,CAAI,EAAG,CAAA,KAAY,CAAC,CAC3E,CACF,CAAA,CAGA,GAAI,CAAE,IAAA,CAAK,gBAAA,CAAiB,UAAWA,CAAAA,CAAW,CAAA,CAAI,EAAG,CAAA,KAAY,CAAC,CACtEH,GAAa,KAAA,CAAM,IAAA,CAAM3F,CAAI,EAC/B,EAGF,CAEe,SAARtB,EAAAA,EAAuB,CAC5BkH,EAAAA,GACF,CCzGA,IAAMc,EAAAA,CAAgB,MAAA,CAAO,MAE7B,SAASC,EAAAA,EAAiB,CACxB,MAAA,CAAO,KAAA,CAAQ,SAAkBhG,CAAAA,CAAK3D,CAAAA,CAAQ,CAC5C,IAAMiJ,CAAAA,CAAY,IAAA,CAAK,KAAI,CACvBM,CAAAA,CAAc5F,EACZzC,CAAAA,CAAa,CACjB,WAAA,CAAawC,CAAAA,CAA6B6F,CAAW,CAAA,CACrD,OAAQvJ,CAAAA,EAAQ,MAAA,EAAU,KAE5B,CAAA,CACA,GAAI,CACF,IAAMyJ,CAAAA,CAAOrF,EAAAA,CAAsBT,CAAAA,CAAK3D,CAAAA,CAAQ,MAAM,EAClDyJ,CAAAA,GAAMvI,CAAAA,CAAW,KAAOuI,CAAAA,EAC9B,CAAA,KAAY,CAEZ,CACA,GAAGlF,CAAAA,CAAmBgF,CAAW,CAAA,CAAE,CACjCrI,EAAW,WAAA,CAAc,8DAAA,CACzB,GAAI,CACFA,CAAAA,CAAW,aAAe,QAAA,CAASwD,CAAAA,CAAmB1E,CAAAA,EAAQ,IAAI,CAAA,CAAE,GAAI,EAC1E,CAAA,KAAgB,CAEhB,CACF,CAIA,OAAO0J,GAAc/F,CAAAA,CAAK3D,CAAM,CAAA,CAC7B,IAAA,CAAK4J,CAAAA,EAAO,CAEX,GAAI,CACF,IAAMV,EAAU,IAAA,CAAK,GAAA,GACrBhI,CAAAA,CAAW,QAAA,CAAYgI,CAAAA,CAAUD,CAAAA,CACjC/H,CAAAA,CAAW,SAAA,CAAY+H,EACvB/H,CAAAA,CAAW,OAAA,CAAUgI,EACrBhI,CAAAA,CAAW,MAAA,CAAS0I,EAAI,MAAA,CACxB,IAAMC,EAAYD,CAAAA,CAAI,KAAA,GACnBE,EAAAA,CAASnG,CAAG,IACRkG,CAAAA,CAAU,EAAA,CAIbA,EAAU,IAAA,EAAK,CAAE,IAAA,CAAKlJ,CAAAA,EAAQ,CAC5BO,CAAAA,CAAW,KAAOP,CAAAA,EAAQ,OAAOA,GAAS,QAAA,CAAWA,CAAAA,CAAK,KAAO,KAAA,CAAA,CACjEU,CAAAA,CAAgB,KAAA,CAAOH,CAAU,EACnC,CAAC,EAAE,KAAA,CAAM,IAAM,CAEbG,CAAAA,CAAgB,KAAA,CAAOH,CAAU,EACnC,CAAC,CAAA,EATDA,CAAAA,CAAW,IAAA,CAAOA,CAAAA,CAAW,OAC7BG,CAAAA,CAAgB,KAAA,CAAOH,CAAU,CAAA,CAAA,EAWvC,CAAA,KAAY,CAEZ,CACA,OAAO0I,CACT,CAAC,CAAA,CACA,KAAA,CAAMG,GAAO,CACZ,GAAI,CACF,IAAMb,CAAAA,CAAU,KAAK,GAAA,EAAI,CACzBhI,CAAAA,CAAW,QAAA,CAAYgI,CAAAA,CAAUD,CAAAA,CACjC/H,EAAW,SAAA,CAAY+H,CAAAA,CACvB/H,EAAW,OAAA,CAAUgI,CAAAA,CACrBhI,EAAW,MAAA,CAAS,CAAA,CACpBA,CAAAA,CAAW,IAAA,CAAOA,CAAAA,CAAW,MAAA,CAE7BG,EAAgB,KAAA,CAAOH,CAAU,EACnC,CAAA,KAAY,CAEZ,CAEA,OAAO6I,CACT,CAAC,CACL,EACF,CAEA,SAASD,EAAAA,CAASnG,CAAAA,CAAK,CAErB,IAAIC,CAAAA,CAAM,GACV,GAAI,CACE,OAAOD,CAAAA,EAAQ,QAAA,CAAUC,CAAAA,CAAMD,EAC1BA,CAAAA,EAAO,OAAOA,EAAI,GAAA,EAAQ,QAAA,CAAUC,EAAMD,CAAAA,CAAI,GAAA,CAClDC,CAAAA,CAAM,MAAA,CAAOD,CAAG,EACvB,MAAY,CACV,OAAO,KACT,CACA,OAAI,EAAAC,CAAAA,CAAI,OAAA,CAAQ,SAAS,CAAA,GAAM,EAAA,EAAMA,CAAAA,CAAI,QAAQ,mBAAmB,CAAA,GAAM,GAI5E,CAEe,SAARoG,IAAyB,CAC9BL,EAAAA,GACF,CC9Fe,SAARM,EAAAA,EAAuB,CAC5BvI,EAAAA,EAAI,CACJsI,KACF,CCLA,eAAsBE,EAAAA,CAAcC,CAAAA,CAAa,CAAC,OAAA,CAAAC,CAAAA,CAAQ,QAAA,CAAAC,EAAS,QAAA,CAAAC,CAAQ,EAAoD,CAC7H,GAAI,CAACF,CAAAA,EAAW,CAACC,CAAAA,EAAY,CAACC,CAAAA,CAAU,OACxC,IAAMC,CAAAA,CAAY,IAAA,CAAK,MAAM,IAAA,CAAK,GAAA,GAAQ,GAAI,CAAA,CAGxCC,CAAAA,CAAU,CACd,QAAA,CAAUL,CAAAA,CAAK,IAAKhG,CAAAA,GAAe,CACjC,SAAUoG,CAAAA,CACV,GAAG,OAAO,IAAA,CAAKpG,CAAI,CAAA,CAAE,MAAA,CAAO,CAACsG,CAAAA,CAAUpK,KACrCoK,CAAAA,CAAIpK,CAAG,EAAI,MAAA,CAAO8D,CAAAA,CAAK9D,CAAG,CAAC,CAAA,CACpBoK,GACN,EAAE,CACP,CAAA,CAAE,CAAA,CACF,UAAW,SAAA,CACX,UAAA,CAAY,UACd,CAAA,CAEM9F,CAAAA,CAAO,IAAA,CAAK,SAAA,CAAU6F,CAAO,CAAA,CAC7B7G,EAAM,CAAA,QAAA,EAAWyG,CAAO,IAAIC,CAAQ,CAAA,WAAA,EAAcC,CAAQ,CAAA,uBAAA,CAAA,CAE1DlB,CAAAA,CAAW,MAAM,KAAA,CAAMzF,CAAAA,CAAK,CAChC,OAAQ,MAAA,CACR,OAAA,CAAS,CAEP,cAAA,CAAgB,kBAAA,CAChB,mBAAoB,OAAA,CACpB,mBAAA,CAAqBgB,CAAAA,CAAK,MAAA,CAAO,QAAA,EACnC,EACA,IAAA,CAAMA,CACR,CAAC,CAAA,CAEK+F,CAAAA,CAAe,MAAMtB,CAAAA,CAAS,IAAA,EAAK,CAGzC,GAAI,CAACA,CAAAA,CAAS,GACZ,MAAM,IAAI,MAAM,CAAA,eAAA,EAAkBA,CAAAA,CAAS,MAAM,CAAA,CAAA,EAAIA,CAAAA,CAAS,UAAU,CAAA,GAAA,EAAMsB,CAAY,CAAA,CAAE,EAG9F,OAAOtB,CACT,CCzBO,SAASpI,EAAAA,CAAON,CAAAA,CAAMC,CAAAA,CAAMM,CAAAA,CAAc,MAAO,CACtD,GAAIf,EAAO,SAAA,GAAc,IAAA,CAAM,CAC7B,OAAA,CAAQ,KAAA,CAAM,kDAAU,CAAA,CACxB,MACF,CAEA,IAAMgB,CAAAA,CAAa,CAAC,CAClB,OAAA,CAAS,MAAA,CAAOhB,EAAO,MAAM,CAAA,EAAK,CAAA,CAClC,MAAA,CAAQA,CAAAA,CAAO,MAAA,CACf,KAAAQ,CAAAA,CACA,GAAA,CAAK,OAAO,QAAA,CAAS,QAAA,CACrB,KAAAC,CACF,CAAC,CAAA,CAGD,GAAIM,CAAAA,CAAa,CACf0J,GAAQzJ,CAAU,CAAA,CAClB,MACF,CAGI,MAAA,CAAO,oBACT,MAAA,CAAO,mBAAA,CAAoB,IAAM,CAC/ByJ,EAAAA,CAAQzJ,CAAU,EACpB,CAAA,CAAG,CAAE,QAAS,GAAK,CAAC,EAEpByJ,EAAAA,CAAQzJ,CAAU,EAGtB,CAEA,IAAIE,EAAAA,CAAQ,KAEL,SAASwJ,CAAAA,CAAmBlK,EAAMC,CAAAA,CAAKM,CAAAA,CAAaK,EAAU,GAAA,CAAM,CAQzE,GAPCX,CAAAA,CAAO,IAAA,CAAK,SAAA,CAAU,CACrB,GAAGoE,CAAAA,CACH,GAAGpE,CACL,CAAC,EAEDG,EAAAA,CAAYJ,CAAAA,CAAMC,CAAI,CAAA,CAEnBM,CAAAA,CAAY,CACb4J,GAAS5J,CAAW,CAAA,CACpB,MACF,CAEA,YAAA,CAAaG,EAAK,CAAA,CAClBA,EAAAA,CAAQ,UAAA,CAAW,IAAM,CACvByJ,EAAAA,GACF,CAAA,CAAEvJ,CAAO,EACX,CAEA,SAASuJ,GAAS5J,CAAAA,CAAc,KAAA,CAAM,CAEpC,IAAMM,CAAAA,CAAUV,EAAAA,GAEhB,GAAIU,CAAAA,CAAQ,KAAM,CAChB,IAAA,GAAW,CAACb,CAAAA,CAAMC,CAAI,IAAKY,CAAAA,CACzBP,EAAAA,CAAON,EAAMC,CAAAA,CAAKM,CAAW,EAG/BF,EAAAA,GACF,CACF,CAEA,SAAS4J,EAAAA,CAAQzJ,CAAAA,CAAW,CAC1BgJ,EAAAA,CAAchJ,EAAY,CACxB,OAAA,CAAShB,EAAO,UAAA,CAChB,QAAA,CAAUA,EAAO,WAAA,CACjB,QAAA,CAAUA,CAAAA,CAAO,WACnB,CAAC,CAAA,CAAE,MAAM6J,CAAAA,EAAO,CACd,QAAQ,KAAA,CAAM,8CAAA,CAA4BA,CAAG,EAC/C,CAAC,EACH,CC5EO,SAASe,EAAAA,CACdC,EACA3K,CAAAA,CAAyD,GACzD,CACA,GAAM,CAAE,WAAA,CAAA4K,CAAAA,CAAc,GAAA,CAAM,UAAA,CAAAC,CAAAA,CAAa,GAAI,EAAI7K,CAAAA,CAC7C8K,CAAAA,CAAa,MACbC,CAAAA,CAA+B,IAAA,CAC/BC,EAAkB,IAAA,CAAK,GAAA,EAAI,CAC3BC,CAAAA,CAAAA,CAAgB,IAAM,CACxB,GAAI,CACF,OAAO,OAAO,QAAA,EAAU,QAAA,EAAY,GACtC,CAAA,KAAQ,CACN,OAAO,GACT,CACF,CAAA,IACIC,CAAAA,CACAC,CAAAA,CAAwB,MAEtBvK,CAAAA,CAAS,CAACkF,EAAgB8C,CAAAA,CAAkBwC,CAAAA,GAAwB,CAEpEN,CAAAA,GAGAC,CAAAA,EACF,YAAA,CAAaA,CAAa,CAAA,CAG5BA,CAAAA,CAAgB,WAAW,IAAM,CAC/B,GAAI,CAAAD,CAAAA,EAGAlC,GAAYgC,CAAAA,CACd,GAAI,CACFD,CAAAA,CAAQ/B,CAAAA,CAAU9C,EAAQsF,CAAI,CAAA,CAC9BN,EAAa,CAAA,EACf,CAAA,MAASvF,CAAAA,CAAO,CACd,OAAA,CAAQ,KAAA,CAAM,8CAA+CA,CAAK,EACpE,CAEJ,CAAA,CAAGsF,CAAU,GACf,CAAA,CAGMQ,CAAAA,CAAmB,IAAM,CAC7B,GAAI,QAAA,CAAS,kBAAoB,QAAA,CAAU,CAEzC,IAAMvC,CAAAA,CAAU,IAAA,CAAK,KAAI,CACnBF,CAAAA,CAAWE,CAAAA,CAAUkC,CAAAA,CAC3BpK,CAAAA,CAAO,yBAAA,CAA2BgI,EAAU,CAC1C,SAAA,CAAWoC,EACX,OAAA,CAAAlC,CAAAA,CACA,SAAUmC,CAAAA,CACV,OAAA,CAASC,CACX,CAAC,EACH,CAAA,KAAA,GAAW,SAAS,eAAA,GAAoB,SAAA,CAAW,CAEjDF,CAAAA,CAAkB,IAAA,CAAK,KAAI,CAC3B,GAAI,CACFC,CAAAA,CAAe,MAAA,CAAO,QAAA,EAAU,UAAYA,EAC9C,CAAA,KAAQ,CAER,CAGAH,CAAAA,CAAa,MACf,CACF,CAAA,CAEA,QAAA,CAAS,gBAAA,CAAiB,kBAAA,CAAoBO,CAAgB,EAG9D,IAAMC,CAAAA,CAAkBvF,GAA2B,CAEjD,IAAM+C,EAAU,IAAA,CAAK,GAAA,EAAI,CACnBF,CAAAA,CAAWE,CAAAA,CAAUkC,CAAAA,CACrBI,EAAsB,CAC1B,SAAA,CAAWJ,EACX,OAAA,CAAAlC,CAAAA,CACA,SAAUmC,CAAAA,CACV,OAAA,CAASC,CACX,CAAA,CACInF,CAAAA,CAAE,UAEJnF,CAAAA,CAAO,kBAAA,CAAoBgI,EAAUwC,CAAI,CAAA,CAGzCxK,EAAO,UAAA,CAAYgI,CAAAA,CAAUwC,CAAI,EAErC,CAAA,CACA,MAAA,CAAO,iBAAiB,UAAA,CAAYE,CAAc,EAIlD,IAAMC,CAAAA,CAAqB,IAAM,CAE/B,GAAI,CAACT,CAAAA,CAAY,CACf,IAAMhC,EAAU,IAAA,CAAK,GAAA,GACfF,CAAAA,CAAWE,CAAAA,CAAUkC,EACrBI,CAAAA,CAAsB,CAC1B,SAAA,CAAWJ,CAAAA,CACX,OAAA,CAAAlC,CAAAA,CACA,SAAUmC,CAAAA,CACV,OAAA,CAASC,CACX,CAAA,CAEA,GAAItC,GAAYgC,CAAAA,CACd,GAAI,CAEFD,CAAAA,CAAQ/B,CAAAA,CAAU,cAAA,CAAgBwC,CAAI,CAAA,CACtCN,CAAAA,CAAa,GACf,CAAA,MAASvF,CAAAA,CAAO,CACd,OAAA,CAAQ,KAAA,CAAM,6CAAA,CAA+CA,CAAK,EACpE,CAEJ,CACF,CAAA,CACA,MAAA,CAAO,iBAAiB,cAAA,CAAgBgG,CAAkB,EAI1D,IAAMC,CAAAA,CAAiB,IAAM,CAC3B,IAAM1C,CAAAA,CAAU,KAAK,GAAA,EAAI,CACnBF,EAAWE,CAAAA,CAAUkC,CAAAA,CAC3BpK,EAAO,UAAA,CAAYgI,CAAAA,CAAU,CAC3B,SAAA,CAAWoC,CAAAA,CACX,OAAA,CAAAlC,EACA,QAAA,CAAUmC,CAAAA,CACV,QAASC,CACX,CAAC,EACH,CAAA,CACA,MAAA,CAAO,gBAAA,CAAiB,UAAA,CAAYM,CAAc,CAAA,CAGlD,IAAMC,EAAAA,CAAQ,IAAM,CAClBT,CAAAA,CAAkB,IAAA,CAAK,KAAI,CAC3B,GAAI,CACFC,CAAAA,CAAe,MAAA,CAAO,QAAA,EAAU,UAAYA,EAC9C,CAAA,KAAQ,CAER,CAEAH,CAAAA,CAAa,MAETC,CAAAA,GACF,YAAA,CAAaA,CAAa,CAAA,CAC1BA,CAAAA,CAAgB,IAAA,EAEpB,EAGMW,EAAAA,CAAc,CAAC5F,EAAS,QAAA,GAAa,CACzC,IAAMgD,CAAAA,CAAU,IAAA,CAAK,GAAA,EAAI,CACnBF,CAAAA,CAAWE,CAAAA,CAAUkC,EAE3BpK,CAAAA,CAAOkF,CAAAA,CAAQ8C,EAAU,CACvB,SAAA,CAAWoC,EACX,OAAA,CAAAlC,CAAAA,CACA,QAAA,CAAUmC,CAAAA,CACV,OAAA,CAASC,CACX,CAAC,CAAA,CAGGpF,CAAAA,GAAW,gBAEb,UAAA,CAAW,IAAM,CACf2F,EAAAA,GACF,CAAA,CAAGZ,CAAAA,CAAa,EAAE,EAEtB,EAEMc,EAAAA,CAAcrJ,CAAAA,EAAiB,CACnC4I,CAAAA,CAAiB5I,CAAAA,EAAO,OACpBA,CAAAA,GACF6I,CAAAA,CAAwB,IAAA,EAE5B,CAAA,CAsCA,OAAO,CACL,YAAAO,EAAAA,CACA,KAAA,CAAAD,GACA,IAAA,CAzBW,IAAM,CAEbV,CAAAA,GACF,YAAA,CAAaA,CAAa,CAAA,CAC1BA,CAAAA,CAAgB,IAAA,CAAA,CAGlB,SAAS,mBAAA,CAAoB,kBAAA,CAAoBM,CAAgB,CAAA,CACjE,MAAA,CAAO,oBAAoB,UAAA,CAAYC,CAAc,EACrD,MAAA,CAAO,mBAAA,CAAoB,eAAgBC,CAAkB,CAAA,CAC7D,OAAO,mBAAA,CAAoB,UAAA,CAAYC,CAAc,EACvD,CAAA,CAeE,kBAAA,CAZyB,IAAc,CACvC,IAAMI,EAAM,IAAA,CAAK,GAAA,GAIjB,OAH2B,QAAA,CAAS,kBAAoB,SAAA,CACpDA,CAAAA,CAAMZ,CAAAA,CACN,CAEN,CAAA,CAOE,UAAA,CAAAW,GACA,aAAA,CA1CoB,CAACrJ,EAAawD,CAAAA,CAAS,iBAAA,GAAsB,CAC7DoF,CAAAA,EAAkBA,CAAAA,GAAmB5I,CAAAA,EACvCwI,CAAAA,CAAa,KAAA,CACbY,EAAAA,CAAY5F,CAAM,CAAA,CAClBkF,CAAAA,CAAkB,KAAK,GAAA,EAAI,EACjBG,IAEVH,CAAAA,CAAkB,IAAA,CAAK,GAAA,EAAI,CAC3BF,CAAAA,CAAa,KAAA,CAAA,CAEfa,GAAWrJ,CAAG,EAChB,CAgCA,CACF,CC3MO,IAAMuJ,EAAAA,CAAmBC,CAAAA,EAA0B,CACxD,GAAI,CACF,GAAIA,EAAc,OAAOA,CAAAA,EAAgB,IACzC,GAAM,CAAE,SAAAC,CAAAA,CAAW,GAAI,CAAA,CAAI,MAAA,CAAO,QAAA,EAAY,GAC9C,OAAOA,CAAAA,EAAY,GACrB,CAAA,KAAQ,CACN,OAAO,GACT,CACF,CAAA,CAEaC,EAAAA,CAA2B,CACtCpD,CAAAA,CACA9C,EACAsF,CAAAA,CACApL,CAAAA,CAA+B,EAAC,GACR,CACxB,GAAM,CAAE,SAAA,CAAA6I,CAAAA,CAAW,OAAA,CAAAC,CAAAA,CAAS,QAAA,CAAAmD,EAAU,OAAA,CAAAC,CAAQ,EAAId,CAAAA,CAC5Ce,CAAAA,CAAeN,GAAgBI,CAAQ,CAAA,CACvCG,CAAAA,CAAgBF,CAAAA,CAAU,CAAA,EAAGC,CAAY,IAAID,CAAO,CAAA,CAAA,CAAKC,EACzD,CAAE,cAAA,CAAAE,CAAe,CAAA,CAAIrM,CAAAA,CAM3B,OAAO,CACL,QAAA,CALA,OAAOqM,GAAmB,UAAA,CACtBA,CAAAA,CAAeD,EAAe,CAAE,QAAA,CAAAxD,EAAU,MAAA,CAAA9C,CAAAA,CAAQ,GAAGsF,CAAK,CAAC,CAAA,CAC3DgB,EAIJ,QAAA,CAAAxD,CAAAA,CACA,UAAAC,CAAAA,CACA,OAAA,CAAAC,CACF,CACF,CAAA,CCvDA,IAAIwD,CAAAA,CAA+D,IAAA,CAC/DC,CAAAA,CAAuC,KAepC,SAASC,EAAAA,CACdxM,EAA+B,EAAC,CAChCyM,EACAC,CAAAA,CACA,CACA,GAAM,CAAE,OAAA,CAAAC,CAAAA,CAAS,YAAA/B,CAAAA,CAAa,UAAA,CAAAC,EAAY,OAAA,CAAAF,CAAQ,EAAI3K,CAAAA,CAElD2M,CAAAA,EAEEL,CAAAA,GACFA,CAAAA,CAAgB,IAAA,EAAK,CACrBA,EAAkB,IAAA,CAAA,CAWpBA,CAAAA,CAAkB5B,GANhBC,CAAAA,EACA+B,CAAAA,GACC,CAAC9D,CAAAA,CAAkB9C,CAAAA,CAAgBsF,CAAAA,GAAyB,CAE7D,CAAA,CAAA,CAEgD,CAChD,YAAAR,CAAAA,CACA,UAAA,CAAAC,CACF,CAAC,CAAA,CAGG4B,GAAmBA,CAAAA,CAAgB,MAAA,GAEjCF,IACFA,CAAAA,EAAgB,CAChBA,EAAkB,IAAA,CAAA,CAIpBA,CAAAA,CAAkBE,EAAgB,MAAA,CAAO,CAAC,CAAE,QAAA,CAAAG,CAAAA,CAAU,MAAA,CAAAC,CAAO,CAAA,GAAM,CAG7DP,IAAoBO,CAAAA,GAAW,MAAA,EAAUA,IAAW,SAAA,CAAA,EACtDP,CAAAA,CAAgB,YAAY,cAAc,EAE9C,CAAC,CAAA,CAAA,EAEMA,CAAAA,GAETA,CAAAA,CAAgB,MAAK,CACrBA,CAAAA,CAAkB,KACdC,CAAAA,GACFA,CAAAA,GACAA,CAAAA,CAAkB,IAAA,CAAA,EAGxB,CAEO,SAASO,EAAAA,CAAkBxK,CAAAA,CAAawD,EAAiB,CAC9DwG,CAAAA,EAAiB,cAAchK,CAAAA,CAAKwD,CAAM,EAC5C,CAOO,SAASiH,EAAAA,CACdC,CAAAA,CACAP,CAAAA,CACA,CACA,GAAI,CAACO,CAAAA,CAAc,OAYnBR,EAAAA,CAAwBQ,CAAAA,CAAcP,EAVf,CAAC7D,CAAAA,CAAkB9C,CAAAA,CAAgBsF,CAAAA,GAAyB,CACjF,IAAM6B,EAAUjB,EAAAA,CACdpD,CAAAA,CACA9C,EACAsF,CAAAA,EAAQ,CAAE,UAAW,CAAA,CAAG,OAAA,CAAS,CAAE,CAAA,CACnC,CAAE,cAAA,CAAgB4B,GAAc,cAAe,CACjD,EACAxC,CAAAA,CAAgB,IAAA,CAAMyC,CAAO,EAC/B,CAEqE,EACvE,CAsBO,SAASC,EAAAA,CACdC,EACAV,CAAAA,CACY,CAEZ,IAAMW,CAAAA,CAAUX,CAAAA,EAAqB3M,EAAe,OAAA,CAEpD,OAAI,CAACsN,CAAAA,EAAW,CAACA,CAAAA,CAAQ,QACvB,OAAA,CAAQ,IAAA,CAAK,0GAA0G,CAAA,CAChH,IAAM,CAAC,CAAA,EAGCA,CAAAA,CAAQ,MAAA,CAAOD,CAAQ,CAE1C,KCnIIE,EAAAA,CAAS,KAAA,CAEPC,GAAU,CACd,IAAA,CAAKtN,EAAuB,EAAC,CAAG,CAC9BD,EAAAA,CAAUC,CAAO,CAAA,CAGjB+M,GAAqB/M,CAAAA,CAAQ,iBAAA,CAAmBA,EAAQ,OAAO,CAAA,CAG3DqN,KACF9H,CAAAA,EAAM,CACN2C,EAAAA,EAAY,CACZ2B,EAAAA,EAAI,CACJwD,GAAS,IAAA,EAEb,CAAA,CASA,YAAY/M,CAAAA,CAAcC,CAAAA,CAA4B,EAAC,CAAGP,CAAAA,CAAqD,EAAC,CAAG,CACjH,GAAM,CAAE,SAAA,CAAA2C,CAAAA,CAAY,MAAO,OAAA,CAAAzB,CAAAA,CAAU,GAAK,CAAA,CAAIlB,CAAAA,CAC9CwK,CAAAA,CAAgBlK,CAAAA,CAAMC,CAAAA,CAAKoC,CAAAA,CAAWzB,CAAO,EAC/C,CAAA,CAMA,cAAcoB,CAAAA,CAAawD,CAAAA,CAAS,kBAAmB,CACrDgH,EAAAA,CAAkBxK,CAAAA,CAAKwD,CAAM,EAC/B,CAAA,CAOA,kBACEqH,CAAAA,CACAV,CAAAA,CACA,CACA,OAAOS,EAAAA,CAAkBC,EAAUV,CAAe,CACpD,CACF,CAAA,CAEOc,EAAAA,CAAQD","file":"index.global.js","sourcesContent":["const config = {\n // 项目名称\n source:'mbp', //使用平台\n userId: '', //用户信息(支持 string | number)\n //上报地址\n reportUrl: 'http://localhost:3001/report/actions',\n //是否全埋点\n trackerAll: false,\n slsProject: '',\n slsEndpoint: '',\n slsLogstore: '',\n // 路由 history 实例\n history: null\n};\n\nexport let version = '';\n\nexport default config;\n\nexport function setConfig(options) { \n for (const key in config) { \n if (options[key]) { \n config[key] = options[key];\n }\n }\n if(options['version']){\n version = options['version'];\n }\n}\n","//把上报的数据存储在map键值对中\n//key就是上报的类型\n//value就是上报的数据,是一个数组\nconst cache = new Map();\nconst cacheSLS = new Map();\n\nexport function getCache() { \n return cache;\n}\n\nexport function addCache(type, data) { \n //如果有这个类型的数据,就往数组中添加\n //没有就在map中创建新的类型,并且将data放入到数组中\n cache.get(type)? cache.get(type).push(data) : cache.set(type, [data]);\n}\n\nexport function clearCache() { \n cache.clear();\n}\n\nexport function getCacheSLS() { \n return cacheSLS;\n}\n\nexport function addCacheSLS(type, data) { \n //如果有这个类型的数据,就往数组中添加\n //没有就在map中创建新的类型,并且将data放入到数组中\n cacheSLS.get(type)? cacheSLS.get(type).push(data) : cacheSLS.set(type, [data]);\n}\n\nexport function clearCacheSLS() { \n cacheSLS.clear();\n}\n","import config from '../config/index.js'\nimport getUniqueID from \"../util/getUniqueID.js\";\nimport { getCache,addCache,clearCache } from '../util/cache.js';\n\nconst uniqueID = getUniqueID();\n/**\n * 由于我们有很多内容需要上报,\n * 所以我这里为了简单区分和上报\n * 用type来区分上报的内容是什么\n * @param {string} type 上报类型 “error” | \"action\" | \"api\" | \"performance\"\n * @param {Object} data 上报信息\n * @param {boolean} isImmediate 是否立即上报,默认为false\n */\nexport function report(type, data, isImmediate = false) { \n if (config.reportUrl === null) { \n console.error(\"请先配置上报地址\");\n return;\n }\n\n const reportData = JSON.stringify({\n user_id: Number(config.userId) || 0, //用户id\n source: config.source, //来源\n type, //上报类型\n url: window.location.pathname, //当前页面\n data, //上报信息\n })\n \n //立即上传\n if (isImmediate) { \n sendBeacon(config.reportUrl, reportData);\n return;\n }\n \n // 浏览器空闲时间进行上报\n if (window.requestIdleCallback) {\n window.requestIdleCallback(() => {\n sendBeacon(config.reportUrl, reportData);\n }, { timeout: 3000 });\n }else { \n setTimeout(() => { \n sendBeacon(config.reportUrl, reportData);\n })\n }\n \n}\n\nlet timer = null;\n//延迟上传,一定时间之后再进行上传\nexport function lazyReportCache(type, data, timeout = 3000) { \n //把数据加入到map缓存中\n addCache(type, data);\n \n clearTimeout(timer);\n timer = setTimeout(() => { \n //获取缓存中的数据\n const dataMap = getCache();\n\n if (dataMap.size) { \n for (const [type, data] of dataMap) { \n report(type, data);\n }\n\n clearCache();\n }\n\n },timeout)\n}\n\n\n//Navigator.sendBeacon()方式上报\nfunction sendBeacon(reportUrl, reportData) {\n if (navigator.sendBeacon) {\n navigator.sendBeacon(reportUrl, reportData);\n }\n else { \n reportWithXHR(reportUrl, reportData);\n }\n \n} \n\n// XMLHttpRequest方式上报\nfunction reportWithXHR(reportUrl, reportData) { \n const xhr = new XMLHttpRequest();\n xhr.open('POST', reportUrl, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.send(reportData);\n}\n","export const detectWhiteScreen = ({\n samplePoints = 6,\n whiteTags = ['HTML', 'BODY', \"IFRAME\"],\n onDetected = (isWhiteScreen, detail) => { },\n threshold = 0.9,\n} = {}) => {\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n const points = [];\n\n for (let i = 1; i <= samplePoints; i++) {\n points.push([\n viewportWidth / 2,\n (viewportHeight / (samplePoints + 1)) * i,\n ]);\n }\n\n let whiteCount = 0;\n const detail = [];\n\n points.forEach(([x, y]) => {\n const el = document.elementFromPoint(x, y);\n const tag = el?.tagName || 'NULL';\n detail.push({ x, y, tag });\n\n if (!el || whiteTags.includes(tag)) {\n whiteCount++;\n }\n });\n\n const isWhite = whiteCount / samplePoints >= threshold;\n\n onDetected(isWhite, detail);\n};\n\nexport const debounce = (fn, delay = 300, immediate = false) => {\n let timer = null;\n\n return function (...args) {\n const context = this;\n\n if (timer) clearTimeout(timer);\n\n if (immediate && !timer) {\n fn.apply(context, args);\n }\n\n timer = setTimeout(() => {\n if (!immediate) {\n fn.apply(context, args);\n }\n timer = null;\n }, delay);\n };\n};\n\nconst debouncedDetectWhiteScreen = debounce((resolve) => {\n detectWhiteScreen({\n onDetected: (isWhite, detail) => {\n resolve(isWhite);\n pendingPromise = null;\n },\n });\n}, 1000);\n\nlet pendingPromise = null;\nexport const detectionWhiteScreen = () => {\n if (!pendingPromise) {\n pendingPromise = new Promise((resolve) => {\n setTimeout(() => {\n debouncedDetectWhiteScreen(resolve);\n }, 3000);\n })\n }\n return pendingPromise;\n};\n\nexport const getFullBrowserInfo = () => {\n const ua = navigator.userAgent;\n let name = 'Unknown';\n let version = 'Unknown';\n\n if (/edg/i.test(ua)) {\n name = 'Edge';\n version = ua.match(/edg\\/([\\d\\.]+)/i)?.[1];\n } else if (/opr/i.test(ua)) {\n name = 'Opera';\n version = ua.match(/opr\\/([\\d\\.]+)/i)?.[1];\n } else if (/chrome/i.test(ua)) {\n name = 'Chrome';\n version = ua.match(/chrome\\/([\\d\\.]+)/i)?.[1];\n } else if (/firefox/i.test(ua)) {\n name = 'Firefox';\n version = ua.match(/firefox\\/([\\d\\.]+)/i)?.[1];\n } else if (/safari/i.test(ua) && !/chrome/i.test(ua)) {\n name = 'Safari';\n version = ua.match(/version\\/([\\d\\.]+)/i)?.[1];\n } else if (/msie/i.test(ua) || /trident/i.test(ua)) {\n name = 'Internet Explorer';\n version = ua.match(/(msie\\s|rv:)([\\d\\.]+)/i)?.[2];\n }\n\n return { name, version };\n}\nexport const getOSInfo = () => {\n const ua = navigator.userAgent || navigator.vendor || window.opera;\n\n if (/windows phone/i.test(ua)) {\n return \"Windows Phone\";\n }\n if (/win/i.test(ua)) {\n return \"Windows\";\n }\n if (/android/i.test(ua)) {\n return \"Android\";\n }\n if (/iPad|iPhone|iPod/.test(ua) && !window.MSStream) {\n return \"iOS\";\n }\n if (/Macintosh|MacIntel|MacPPC|Mac68K/.test(ua)) {\n return \"macOS\";\n }\n if (/Linux/.test(ua)) {\n return \"Linux\";\n }\n\n return \"Unknown OS\";\n}\n// 归一化资源类链接,去掉文件路径、文件名和 query,便于在 SLS 按维度聚合\n// 例如:\n// https://xxx/material_resource/image/1169/xxx.jpg\n// -> https://xxx/material_resource/image\n// https://xxx/material_resource/video/1169/xxx.mp4?partNumber=1&uploadId=xxx\n// -> https://xxx/material_resource/video\n// https://xxx/mbp/1335/picture/rc-upload-xxx.png\n// -> https://xxx/mbp/picture\n// https://xxx/mbp/1335/video/xxx.mp4?partNumber=1&uploadId=xxx\n// -> https://xxx/mbp/video\nexport const normalizeMaterialResourceUrl = (url) => {\n try {\n const str = String(url);\n\n // /material_resource/{type}/{id}/{file}... -> /material_resource/{type}\n // 要求 {id} 为数字,避免误命中其它业务接口\n const materialMatch = str.match(/^(https?:\\/\\/[^/]+)\\/material_resource\\/([^/?#]+)\\/\\d+\\/[^/?#]+(?:[/?#].*)?$/i);\n if (materialMatch) return `${materialMatch[1]}/material_resource/${materialMatch[2]}`;\n\n // /mbp/{id}/{type}/{file}... -> /mbp/{type}\n // 要求 {id} 为数字,避免误命中其它业务接口\n const mbpMatch = str.match(/^(https?:\\/\\/[^/]+)\\/mbp\\/\\d+\\/([^/?#]+)\\/[^/?#]+(?:[/?#].*)?$/i);\n if (mbpMatch) return `${mbpMatch[1]}/mbp/${mbpMatch[2]}`;\n\n return url;\n } catch {\n return url;\n }\n}\n\n// 大小写不敏感地从 headers 里取字段,兼容 Headers 实例 / 普通对象 / 二维数组\nexport const getHeaderValue = (headers, name) => {\n if (!headers) return undefined;\n const target = String(name).toLowerCase();\n try {\n if (typeof headers.get === 'function') {\n const v = headers.get(name);\n return v == null ? undefined : v;\n }\n if (Array.isArray(headers)) {\n for (const item of headers) {\n if (Array.isArray(item) && String(item[0]).toLowerCase() === target) {\n return item[1];\n }\n }\n return undefined;\n }\n if (typeof headers === 'object') {\n for (const key of Object.keys(headers)) {\n if (key.toLowerCase() === target) return headers[key];\n }\n }\n } catch (e) {\n // ignore\n }\n return undefined;\n}\n\n// 从 fetch 的入参里拿请求头字段:第一个参数可能是 Request 对象,也可能在 config.headers 上\nexport const getFetchRequestHeader = (input, config, name) => {\n const fromConfig = getHeaderValue(config && config.headers, name);\n if (fromConfig != null) return fromConfig;\n try {\n if (input && typeof input === 'object' && input.headers) {\n return getHeaderValue(input.headers, name);\n }\n } catch (e) {\n // ignore\n }\n return undefined;\n}\n\n// 识别是上传视频的链接\nexport const isValidOssVideoUrl = (url) => {\n try {\n const u = new URL(url.indexOf('http') === -1 ? `https:${url}` : url);\n\n // 域名和协议必须匹配\n // const hostOk = (\n // u.protocol === 'https:' &&\n // u.hostname === 'sd-cms-bmp.oss-accelerate.aliyuncs.com' &&\n // u.port === '443'\n // );\n\n // 路径必须匹配 /mbp/数字/video/文件名.扩展名\n const pathOk = /^\\/mbp\\/\\d+\\/video\\/[^/?#]+\\.[^/?#]+$/i.test(u.pathname);\n\n // return hostOk && pathOk;\n return pathOk;\n } catch {\n return false; // 非法 URL\n }\n}\nexport const toReadableString = (data) => {\n try {\n return JSON.stringify(data, null, 2);\n } catch (e) {\n return String(data);\n }\n}\n\nexport const getRequestBodySize = (body) => {\n if (!body) return 0;\n try {\n if (typeof body === \"string\") return new TextEncoder().encode(body).length;\n if (body instanceof Blob) return body.size;\n if (body instanceof ArrayBuffer) return body.byteLength;\n if (ArrayBuffer.isView(body)) return body.byteLength;\n if (body instanceof URLSearchParams) return new TextEncoder().encode(body.toString()).length;\n\n if (body instanceof FormData) {\n let total = 0;\n for (const [key, value] of body.entries()) {\n total += new TextEncoder().encode(key).length;\n if (typeof value === \"string\") {\n total += new TextEncoder().encode(value).length;\n } else if (value instanceof Blob) {\n total += value.size;\n }\n }\n return total;\n }\n } catch (error) {\n return 0;\n }\n\n return 0;\n}\nexport const getRequestBodySizeFetch = (body) => {\n if (!body) return 0;\n try {\n if (typeof body === \"string\") return new TextEncoder().encode(body).length;\n if (body instanceof Blob) return body.size;\n if (body instanceof ArrayBuffer) return body.byteLength;\n if (ArrayBuffer.isView(body)) return body.byteLength;\n if (body instanceof URLSearchParams) return new TextEncoder().encode(body.toString()).length;\n\n if (body instanceof FormData) {\n let total = 0;\n for (const [key, value] of body.entries()) {\n total += new TextEncoder().encode(key).length;\n if (typeof value === \"string\") {\n total += new TextEncoder().encode(value).length;\n } else if (value instanceof Blob) {\n total += value.size;\n }\n }\n return total;\n }\n } catch (error) {\n return 0;\n }\n\n return 0;\n}\n\n","import {detectionWhiteScreen,getFullBrowserInfo,getOSInfo,toReadableString} from '../util/tool.js';\n\nconst publicParams = {\n browserInfo: getFullBrowserInfo(),\n platform:getOSInfo(),\n}\n\nexport default publicParams;","import { lazyReportCache } from \"../report/index.js\";\nimport {detectionWhiteScreen,getFullBrowserInfo,getOSInfo,toReadableString} from '../util/tool.js';\nimport {version} from '../config/index.js';\nimport publicParams from '../config/publicParams.js';\n\nconst browserInfor = publicParams.browserInfor;\n\nconst reportData = {\n user_agent:browserInfor?.name+browserInfor?.version,\n platform:publicParams.platform,\n}\n\n/**\n * 这个正则表达式用于匹配 JavaScript 错误栈中的堆栈跟踪信息中的单个条目,其中包含文件名、行号和列号等信息。\n * 具体来说,它匹配以下格式的文本:\n * at functionName (filename:lineNumber:columnNumber)\n * at filename:lineNumber:columnNumber\n * at http://example.com/filename:lineNumber:columnNumber\n * at https://example.com/filename:lineNumber:columnNumber\n */\nconst FULL_MATCH =\n /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\n//限制追溯的错误堆栈数量\nconst STACK_TRACE_LIMIT = 10;\n\n//通过正则表达式解析一行的错误信息\nfunction parseStackLine(line) { \n const lineMatch = line.match(FULL_MATCH);\n if (!lineMatch) return {};\n const filename = lineMatch[2] || '<anonymous>';\n const functionName = lineMatch[1] || '';\n const lineno = parseInt(lineMatch[3], 10) || undefined;\n const colno = parseInt(lineMatch[4], 10) || undefined;\n\n return {\n filename,\n functionName,\n lineno,\n colno\n }\n}\n\n//解析错误堆栈\nfunction parseStackFrames(error) { \n const { stack } = error;\n //如果没有stack直接返回[]\n if (!stack) return [];\n const frames = [];\n\n for (const line of stack.split('\\n').slice(1)) { \n const frame = parseStackLine(line); //分析一行的错误信息\n if (frame.filename) { \n //放入到堆栈错误信息数组中\n frames.push(frame);\n }\n }\n return frames.slice(0, STACK_TRACE_LIMIT);\n} \n\n\nexport default function error() {\n //资源错误没有冒泡,所以只能在捕获阶段采集获取错误\n window.addEventListener('error', async function (event) {\n const target = event.target;\n\n //要判断是资源错误,还是js错误,很简单,直接判断事件对象有没有src或者href属性就可以了\n if (target && (target.src || target.href)) {\n //上报资源错误 todo...\n const data = {\n error_type: 'resource',\n ...reportData,\n msg:toReadableString(`加载${target.tagName}失败:${target.src || target.href}`),\n version,\n }\n lazyReportCache('error', data)\n }\n else {\n const errs = parseStackFrames(event.error);\n let msg = event.message;\n if(errs?.[0]){\n const { filename,functionName,lineno, colno } = errs[0];\n msg = `${event.message},${filename},line:${lineno}:${colno}`;\n }\n \n const data = {\n error_type: 'js',\n msg:toReadableString(msg),\n ...reportData,\n version,\n }\n \n lazyReportCache('error', data)\n const isWhite = await detectionWhiteScreen();\n if(isWhite){\n lazyReportCache('error', {...data,error_type:'whiteScreen'})\n }\n }\n }, true)\n \n //promise错误\n window.addEventListener('unhandledrejection', function (event) {\n const reason = event.reason;\n const errs = parseStackFrames(reason);\n let msg = reason;\n\n if(errs?.[0]){\n const {filename,functionName,lineno,colno} = errs[0]; \n msg = `${event?.reason?.message || event?.reason},${filename},line:${lineno}:${colno}`;\n }\n \n const data = {\n error_type: 'js',\n msg:toReadableString(msg),\n ...reportData,\n version,\n }\n\n lazyReportCache('error', data)\n })\n}\n","let e=-1;const t=t=>{addEventListener(\"pageshow\",(n=>{n.persisted&&(e=n.timeStamp,t(n))}),!0)},n=(e,t,n,i)=>{let s,o;return r=>{t.value>=0&&(r||i)&&(o=t.value-(s??0),(o||void 0===s)&&(s=t.value,t.delta=o,t.rating=((e,t)=>e>t[1]?\"poor\":e>t[0]?\"needs-improvement\":\"good\")(t.value,n),e(t)))}},i=e=>{requestAnimationFrame((()=>requestAnimationFrame((()=>e()))))},s=()=>{const e=performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},o=()=>{const e=s();return e?.activationStart??0},r=(t,n=-1)=>{const i=s();let r=\"navigate\";e>=0?r=\"back-forward-cache\":i&&(document.prerendering||o()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":i.type&&(r=i.type.replace(/_/g,\"-\")));return{name:t,value:n,rating:\"good\",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:r}},c=new WeakMap;function a(e,t){return c.get(e)||c.set(e,new t),c.get(e)}class d{t;i=0;o=[];h(e){if(e.hadRecentInput)return;const t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}}const h=(e,t,n={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const i=new PerformanceObserver((e=>{Promise.resolve().then((()=>{t(e.getEntries())}))}));return i.observe({type:e,buffered:!0,...n}),i}}catch{}},f=e=>{let t=!1;return()=>{t||(e(),t=!0)}};let u=-1;const l=new Set,m=()=>\"hidden\"!==document.visibilityState||document.prerendering?1/0:0,p=e=>{if(\"hidden\"===document.visibilityState){if(\"visibilitychange\"===e.type)for(const e of l)e();isFinite(u)||(u=\"visibilitychange\"===e.type?e.timeStamp:0,removeEventListener(\"prerenderingchange\",p,!0))}},v=()=>{if(u<0){const e=o(),n=document.prerendering?void 0:globalThis.performance.getEntriesByType(\"visibility-state\").filter((t=>\"hidden\"===t.name&&t.startTime>e))[0]?.startTime;u=n??m(),addEventListener(\"visibilitychange\",p,!0),addEventListener(\"prerenderingchange\",p,!0),t((()=>{setTimeout((()=>{u=m()}))}))}return{get firstHiddenTime(){return u},onHidden(e){l.add(e)}}},g=e=>{document.prerendering?addEventListener(\"prerenderingchange\",(()=>e()),!0):e()},y=[1800,3e3],E=(e,s={})=>{g((()=>{const c=v();let a,d=r(\"FCP\");const f=h(\"paint\",(e=>{for(const t of e)\"first-contentful-paint\"===t.name&&(f.disconnect(),t.startTime<c.firstHiddenTime&&(d.value=Math.max(t.startTime-o(),0),d.entries.push(t),a(!0)))}));f&&(a=n(e,d,y,s.reportAllChanges),t((t=>{d=r(\"FCP\"),a=n(e,d,y,s.reportAllChanges),i((()=>{d.value=performance.now()-t.timeStamp,a(!0)}))})))}))},b=[.1,.25],L=(e,s={})=>{const o=v();E(f((()=>{let c,f=r(\"CLS\",0);const u=a(s,d),l=e=>{for(const t of e)u.h(t);u.i>f.value&&(f.value=u.i,f.entries=u.o,c())},m=h(\"layout-shift\",l);m&&(c=n(e,f,b,s.reportAllChanges),o.onHidden((()=>{l(m.takeRecords()),c(!0)})),t((()=>{u.i=0,f=r(\"CLS\",0),c=n(e,f,b,s.reportAllChanges),i((()=>c()))})),setTimeout(c))})))};let P=0,T=1/0,_=0;const M=e=>{for(const t of e)t.interactionId&&(T=Math.min(T,t.interactionId),_=Math.max(_,t.interactionId),P=_?(_-T)/7+1:0)};let w;const C=()=>w?P:performance.interactionCount??0,I=()=>{\"interactionCount\"in performance||w||(w=h(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))};let F=0;class k{u=[];l=new Map;m;p;v(){F=C(),this.u.length=0,this.l.clear()}L(){const e=Math.min(this.u.length-1,Math.floor((C()-F)/50));return this.u[e]}h(e){if(this.m?.(e),!e.interactionId&&\"first-input\"!==e.entryType)return;const t=this.u.at(-1);let n=this.l.get(e.interactionId);if(n||this.u.length<10||e.duration>t.P){if(n?e.duration>n.P?(n.entries=[e],n.P=e.duration):e.duration===n.P&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],P:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort(((e,t)=>t.P-e.P)),this.u.length>10){const e=this.u.splice(10);for(const t of e)this.l.delete(t.id)}this.p?.(n)}}}const A=e=>{const t=globalThis.requestIdleCallback||setTimeout;\"hidden\"===document.visibilityState?e():(e=f(e),addEventListener(\"visibilitychange\",e,{once:!0,capture:!0}),t((()=>{e(),removeEventListener(\"visibilitychange\",e,{capture:!0})})))},B=[200,500],S=(e,i={})=>{if(!globalThis.PerformanceEventTiming||!(\"interactionId\"in PerformanceEventTiming.prototype))return;const s=v();g((()=>{I();let o,c=r(\"INP\");const d=a(i,k),f=e=>{A((()=>{for(const t of e)d.h(t);const t=d.L();t&&t.P!==c.value&&(c.value=t.P,c.entries=t.entries,o())}))},u=h(\"event\",f,{durationThreshold:i.durationThreshold??40});o=n(e,c,B,i.reportAllChanges),u&&(u.observe({type:\"first-input\",buffered:!0}),s.onHidden((()=>{f(u.takeRecords()),o(!0)})),t((()=>{d.v(),c=r(\"INP\"),o=n(e,c,B,i.reportAllChanges)})))}))};class N{m;h(e){this.m?.(e)}}const q=[2500,4e3],x=(e,s={})=>{g((()=>{const c=v();let d,u=r(\"LCP\");const l=a(s,N),m=e=>{s.reportAllChanges||(e=e.slice(-1));for(const t of e)l.h(t),t.startTime<c.firstHiddenTime&&(u.value=Math.max(t.startTime-o(),0),u.entries=[t],d())},p=h(\"largest-contentful-paint\",m);if(p){d=n(e,u,q,s.reportAllChanges);const o=f((()=>{m(p.takeRecords()),p.disconnect(),d(!0)})),c=e=>{e.isTrusted&&(A(o),removeEventListener(e.type,c,{capture:!0}))};for(const e of[\"keydown\",\"click\",\"visibilitychange\"])addEventListener(e,c,{capture:!0});t((t=>{u=r(\"LCP\"),d=n(e,u,q,s.reportAllChanges),i((()=>{u.value=performance.now()-t.timeStamp,d(!0)}))}))}}))},H=[800,1800],O=e=>{document.prerendering?g((()=>O(e))):\"complete\"!==document.readyState?addEventListener(\"load\",(()=>O(e)),!0):setTimeout(e)},$=(e,i={})=>{let c=r(\"TTFB\"),a=n(e,c,H,i.reportAllChanges);O((()=>{const d=s();d&&(c.value=Math.max(d.responseStart-o(),0),c.entries=[d],a(!0),t((()=>{c=r(\"TTFB\",0),a=n(e,c,H,i.reportAllChanges),a(!0)})))}))};export{b as CLSThresholds,y as FCPThresholds,B as INPThresholds,q as LCPThresholds,H as TTFBThresholds,L as onCLS,E as onFCP,S as onINP,x as onLCP,$ as onTTFB};\n","import { onCLS, onFCP, onLCP, onTTFB,onINP } from \"web-vitals\";\nimport { lazyReportCache } from \"../report/index.js\";\n\nexport default function performance() {\n onCLS(sendToAnalytics);\n onINP(sendToAnalytics);\n onLCP(sendToAnalytics);\n onFCP(sendToAnalytics);\n onTTFB(sendToAnalytics);\n}\n\nfunction sendToAnalytics(metric) {\n const data = {\n name: metric.name,\n value: metric.value,\n // rating: metric.rating,\n }\n lazyReportCache('performance', data);\n}\n\n","import { lazyReportCache } from '../report/index.js';\nimport {isValidOssVideoUrl,getRequestBodySize,normalizeMaterialResourceUrl} from '../util/tool.js';\n\nconst originalPrototype = XMLHttpRequest.prototype;\nconst originalOpen = originalPrototype.open;\nconst originalSend = originalPrototype.send;\n\nfunction overWriteOpenAndSend() { \n originalPrototype.open = function newOpen(...args) { \n try {\n this.url = args[1];\n this.method = args[0];\n\n // 每次 open 重置缓存,避免复用同一个 xhr 实例时上一次请求的 uuid 串到下一次\n this._reportHeaders = {};\n\n // 方案 A:仅在该 xhr 实例上劫持 setRequestHeader,不污染 XMLHttpRequest.prototype\n // 仅用于缓存请求头,真正写入仍交由原生方法处理,因此不会改变实际发出去的请求头\n if (!this._reportHeaderHooked) {\n this._reportHeaderHooked = true;\n const instanceSetHeader = this.setRequestHeader.bind(this);\n this.setRequestHeader = (name, value) => {\n try {\n if (!this._reportHeaders) this._reportHeaders = {};\n this._reportHeaders[String(name).toLowerCase()] = value;\n } catch (e) {\n // ignore\n }\n return instanceSetHeader(name, value);\n };\n }\n } catch (e) {\n // ignore\n }\n originalOpen.apply(this, args);\n }\n originalPrototype.send = function newSend(...args) { \n // 注意:本段所有埋点逻辑都要保证不抛错,否则会让 originalSend 不被执行、请求发不出去\n try {\n this.startTime = Date.now();\n const body = args[0];\n this.requestSize = getRequestBodySize(body);\n } catch (e) {\n // ignore\n }\n\n const onLoadEnd = () => { \n // 整个回调包一层兜底,避免任何异常污染 console / 触发 window.onerror\n try {\n this.endTime = Date.now();\n this.duration = this.endTime - this.startTime;\n\n const { status, duration, startTime, endTime, method,response,requestSize } = this;\n let { url } = this;\n let code = status;\n let request_url = url;\n try {\n const parsed = JSON.parse(response);\n code = parsed && typeof parsed === 'object' ? parsed.code : status;\n }catch {\n \n }\n\n let reportData = {\n status,\n request_url: normalizeMaterialResourceUrl(request_url),\n method: method || 'GET',\n code,\n duration,\n startTime,\n endTime,\n // sub_type: 'xhr',\n }\n\n try {\n const uuid = this._reportHeaders && this._reportHeaders['uuid'];\n if (uuid) reportData.uuid = uuid;\n } catch (e) {\n // ignore\n }\n\n if(isValidOssVideoUrl(request_url)){\n reportData.request_url = `https://sd-cms-bmp.oss-accelerate.aliyuncs.com:443/mbp/video`;\n try {\n reportData.request_size = parseInt(requestSize/1000);\n } catch (error) {\n \n }\n }\n\n lazyReportCache('api', reportData);\n } catch (e) {\n // 上报失败不能影响业务\n } finally {\n try { this.removeEventListener('loadend', onLoadEnd, true); } catch (e) {}\n }\n }\n\n //当请求结束时触发,无论请求成功 (load) 还是失败 (abort 或 error)\n try { this.addEventListener('loadend', onLoadEnd, true); } catch (e) {}\n originalSend.apply(this, args);\n }\n\n\n}\n\nexport default function xhr() { \n overWriteOpenAndSend();\n}\n","import { lazyReportCache} from '../report/index.js';\nimport {isValidOssVideoUrl,getRequestBodySize,normalizeMaterialResourceUrl,getFetchRequestHeader} from '../util/tool.js';\n\nconst originalFetch = window.fetch;\n\nfunction overWriteFetch() { \n window.fetch = function newFetch(url, config) { \n const startTime = Date.now();\n let request_url = url;\n const reportData = {\n request_url: normalizeMaterialResourceUrl(request_url),\n method: config?.method || 'GET',\n // sub_type: 'fetch',\n }\n try {\n const uuid = getFetchRequestHeader(url, config, 'uuid');\n if (uuid) reportData.uuid = uuid;\n } catch (e) {\n // ignore\n }\n if(isValidOssVideoUrl(request_url)){\n reportData.request_url = `https://sd-cms-bmp.oss-accelerate.aliyuncs.com:443/mbp/video`;\n try {\n reportData.request_size = parseInt(getRequestBodySize(config?.body)/1000);\n } catch (error) {\n \n }\n }\n\n \n\n return originalFetch(url, config)\n .then(res => { \n // 把上报逻辑整体包一层 try/catch,避免内部任何异常冒泡到业务的 .then/.catch\n try {\n const endTime = Date.now();\n reportData.duration = (endTime - startTime);\n reportData.startTime = startTime;\n reportData.endTime = endTime;\n reportData.status = res.status;\n const clonedRes = res.clone();\n if(fiterUrl(url)){\n if (!clonedRes.ok) {\n reportData.code = reportData.status;\n lazyReportCache('api', reportData);\n }else{\n clonedRes.json().then(data => {\n reportData.code = data && typeof data === 'object' ? data.code : undefined;\n lazyReportCache('api', reportData);\n }).catch(() => {\n // 响应非 JSON 时静默忽略,仅上报基础信息\n lazyReportCache('api', reportData);\n })\n }\n }\n } catch (e) {\n // 上报失败不能影响业务\n }\n return res;\n })\n .catch(err => { \n try {\n const endTime = Date.now();\n reportData.duration = (endTime - startTime);\n reportData.startTime = startTime;\n reportData.endTime = endTime;\n reportData.status = 0;\n reportData.code = reportData.status;\n\n lazyReportCache('api', reportData);\n } catch (e) {\n // 上报失败不能影响业务\n }\n\n return err;\n })\n }\n}\n\nfunction fiterUrl(url) { \n // 入参可能是 string / URL / Request,统一转成 string 再判断,避免 indexOf 报错\n let str = '';\n try {\n if (typeof url === 'string') str = url;\n else if (url && typeof url.url === 'string') str = url.url; // Request 对象\n else str = String(url);\n } catch (e) {\n return true;\n }\n if (str.indexOf('.js.map') !== -1 || str.indexOf('.log.aliyuncs.com') !== -1) {\n return false;\n }\n return true;\n}\n\nexport default function fetch() { \n overWriteFetch();\n}\n","import xhr from './xhr.js';\nimport fetch from './fetch.js';\n\nexport default function api() { \n xhr();\n fetch();\n}\n","// 发送日志到阿里云SLS - 使用Track API\nexport async function sendLogsToSLS(logs: any[], {project,endpoint,logstore}:{project:string,endpoint:string,logstore:string}) {\n if (!project || !endpoint || !logstore) return\n const timestamp = Math.floor(Date.now() / 1000);\n\n // 构建日志数据 - 使用Track API格式\n const logData = {\n __logs__: logs.map((item: any) => ({\n __time__: timestamp,\n ...Object.keys(item).reduce((acc: any, key) => {\n acc[key] = String(item[key]);\n return acc;\n }, {})\n })),\n __topic__: 'default',\n __source__: 'frontend'\n };\n\n const body = JSON.stringify(logData);\n const url = `https://${project}.${endpoint}/logstores/${logstore}/track?APIVersion=0.6.0`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n // 'Content-Type': 'application/x-protobuf',\n 'Content-Type': 'application/json', \n 'x-log-apiversion': '0.6.0',\n 'x-log-bodyrawsize': body.length.toString()\n },\n body: body\n });\n\n const responseText = await response.text();\n // console.log('SLS Response:', response.status, responseText);\n\n if (!response.ok) {\n throw new Error(`SLS API error: ${response.status} ${response.statusText} - ${responseText}`);\n }\n\n return response;\n}","import config from '../config/index.js'\nimport getUniqueID from \"../util/getUniqueID.js\";\nimport { getCacheSLS,addCacheSLS,clearCacheSLS } from '../util/cache.js';\nimport { sendLogsToSLS } from '../util/slsLogger.js';\nimport publicParams from '../config/publicParams.js';\n\nconst uniqueID = getUniqueID();\n/**\n * 由于我们有很多内容需要上报,\n * 所以我这里为了简单区分和上报\n * 用type来区分上报的内容是什么\n * @param {string} type 上报类型 “error” | \"action\" | \"api\" | \"performance\"\n * @param {Object} data 上报信息\n * @param {boolean} isImmediate 是否立即上报,默认为false\n */\nexport function report(type, data, isImmediate = false) { \n if (config.reportUrl === null) { \n console.error(\"请先配置上报地址\");\n return;\n }\n \n const reportData = [{\n user_id: Number(config.userId) || 0, //用户id\n source: config.source, //来源\n type, //上报类型\n url: window.location.pathname, //当前页面\n data, //上报信息\n }];\n \n //立即上传\n if (isImmediate) { \n sendLog(reportData)\n return;\n }\n \n // 浏览器空闲时间进行上报\n if (window.requestIdleCallback) {\n window.requestIdleCallback(() => {\n sendLog(reportData)\n }, { timeout: 3000 });\n }else { \n sendLog(reportData)\n }\n \n}\n\nlet timer = null;\n//延迟上传,一定时间之后再进行上传\nexport function lazyReportCacheSLS(type, data,isImmediate ,timeout = 3000) { \n data = JSON.stringify({\n ...publicParams,\n ...data,\n });\n //把数据加入到map缓存中\n addCacheSLS(type, data);\n\n if(isImmediate){\n reportFn(isImmediate);\n return;\n }\n \n clearTimeout(timer);\n timer = setTimeout(() => { \n reportFn();\n },timeout)\n}\n\nfunction reportFn(isImmediate = false){\n //获取缓存中的数据\n const dataMap = getCacheSLS();\n\n if (dataMap.size) { \n for (const [type, data] of dataMap) { \n report(type, data,isImmediate);\n }\n\n clearCacheSLS();\n }\n}\n\nfunction sendLog(reportData){\n sendLogsToSLS(reportData, {\n project: config.slsProject,\n endpoint: config.slsEndpoint,\n logstore: config.slsLogstore\n }).catch(err => {\n console.error('[reporting-lib] SLS上报失败:', err);\n });\n}\n","/**\n * 追踪页面停留时间\n * @param onLeave 离开时的回调函数,接收停留时长(毫秒)和离开原因\n * @param options 配置选项\n * @param options.minDuration 最小上报时长(毫秒),低于此值不上报,默认 1000\n * @param options.debounceMs 防抖时间(毫秒),防止短时间内重复上报,默认 300\n * @returns 返回包含 manualLeave、reset、stop 和 getCurrentDuration 方法的对象\n */\nimport { PageLeaveMeta } from \"../util/pageDuration.js\";\n\ntype TimeoutHandle = ReturnType<typeof setTimeout> | null;\n\nexport function trackPageStayTime(\n onLeave: (duration: number, reason: string, meta: PageLeaveMeta) => void,\n options: { minDuration?: number; debounceMs?: number } = {},\n) {\n const { minDuration = 1000, debounceMs = 300 } = options;\n let isReported = false; // 防止重复上报\n let debounceTimer: TimeoutHandle = null;\n let lastVisibleTime = Date.now(); // 上次可见的时间点\n let lastPagePath = (() => {\n try {\n return window.location?.pathname || \"/\";\n } catch {\n return \"/\";\n }\n })();\n let currentPageTag: string | undefined;\n let hasInitializedPageTag = false;\n\n const report = (reason: string, duration: number, meta: PageLeaveMeta) => {\n // 防止重复上报\n if (isReported) return;\n\n // 防抖处理\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n\n debounceTimer = setTimeout(() => {\n if (isReported) return;\n\n // 只有超过最小时长才上报\n if (duration >= minDuration) {\n try {\n onLeave(duration, reason, meta);\n isReported = true;\n } catch (error) {\n console.error('[trackPageStayTime] onLeave callback error:', error);\n }\n }\n }, debounceMs);\n };\n\n // 1. 标签页可见性变化(切走 / 切回来)\n const handleVisibility = () => {\n if (document.visibilityState === 'hidden') {\n // 切走:计算当前会话时间并触发上报\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n report(\"visibilitychange-hidden\", duration, {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n });\n } else if (document.visibilityState === 'visible') {\n // 切回来:重新开始计时\n lastVisibleTime = Date.now();\n try {\n lastPagePath = window.location?.pathname || lastPagePath;\n } catch {\n // ignore\n }\n // 保持 currentPageTag 不变\n // 重置上报状态,允许下次切走时再次上报\n isReported = false;\n }\n };\n\n document.addEventListener(\"visibilitychange\", handleVisibility);\n\n // 2. pagehide(包含 BFCache 场景)\n const handlePageHide = (e: PageTransitionEvent) => {\n // 如果页面可能进入 BFCache,使用 persisted 标记\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n const meta: PageLeaveMeta = {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n };\n if (e.persisted) {\n // BFCache 场景:计算时间并上报\n report(\"pagehide-bfcache\", duration, meta);\n } else {\n // 普通离开场景\n report(\"pagehide\", duration, meta);\n }\n };\n window.addEventListener(\"pagehide\", handlePageHide);\n\n // 3. beforeunload(刷新 / 关闭浏览器)\n // 注意:beforeunload 中只能做同步操作,异步操作可能无法执行\n const handleBeforeUnload = () => {\n // 立即计算并上报(不使用防抖)\n if (!isReported) {\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n const meta: PageLeaveMeta = {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n };\n\n if (duration >= minDuration) {\n try {\n // 使用 sendBeacon 或同步方式上报\n onLeave(duration, \"beforeunload\", meta);\n isReported = true;\n } catch (error) {\n console.error('[trackPageStayTime] onLeave callback error:', error);\n }\n }\n }\n };\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n\n // 4. 路由切换(SPA)- 注意:popstate 只监听浏览器前进/后退\n // 对于 Umi 等框架,建议在路由守卫中手动调用 manualLeave\n const handlePopState = () => {\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n report(\"popstate\", duration, {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n });\n };\n window.addEventListener(\"popstate\", handlePopState);\n\n // 重置计时器(用于路由切换后重新开始计时)\n const reset = () => {\n lastVisibleTime = Date.now();\n try {\n lastPagePath = window.location?.pathname || lastPagePath;\n } catch {\n // ignore\n }\n // 重置后沿用当前 tab 标记\n isReported = false;\n // 清理防抖定时器\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n debounceTimer = null;\n }\n };\n\n // 5. 手动提供一个 API,方便在路由跳转中主动调用\n const manualLeave = (reason = \"manual\") => {\n const endTime = Date.now();\n const duration = endTime - lastVisibleTime;\n\n report(reason, duration, {\n startTime: lastVisibleTime,\n endTime,\n pagePath: lastPagePath,\n pageTag: currentPageTag,\n });\n \n // 如果是路由切换,上报后重置计时器,以便新页面重新开始计时\n if (reason === 'route-change') {\n // 延迟重置,确保上报完成\n setTimeout(() => {\n reset();\n }, debounceMs + 50);\n }\n };\n\n const setPageTag = (tag?: string) => {\n currentPageTag = tag || undefined;\n if (tag) {\n hasInitializedPageTag = true;\n }\n };\n\n const switchPageTag = (tag: string, reason = \"page-tag-change\") => {\n if (currentPageTag && currentPageTag !== tag) {\n isReported = false;\n manualLeave(reason);\n lastVisibleTime = Date.now();\n } else if (!hasInitializedPageTag) {\n // 首次设置 tag,重置起始时间,防止把之前停留算到旧页面\n lastVisibleTime = Date.now();\n isReported = false;\n }\n setPageTag(tag);\n };\n\n // 停止追踪\n const stop = () => {\n // 清理防抖定时器\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n debounceTimer = null;\n }\n // 移除事件监听\n document.removeEventListener(\"visibilitychange\", handleVisibility);\n window.removeEventListener(\"pagehide\", handlePageHide);\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n window.removeEventListener(\"popstate\", handlePopState);\n };\n\n // 获取当前累计停留时间(不触发上报)\n const getCurrentDuration = (): number => {\n const now = Date.now();\n const currentSessionTime = document.visibilityState === 'visible' \n ? now - lastVisibleTime \n : 0;\n return currentSessionTime;\n };\n\n return {\n manualLeave,\n reset,\n stop,\n getCurrentDuration,\n setPageTag,\n switchPageTag,\n };\n}\n\n","export type PageLeaveMeta = {\n startTime: number;\n endTime: number;\n pagePath?: string; // 离开的页面路径(不含域名),如果有则优先使用\n pageTag?: string; // 额外标记(例如 tab key)\n};\n\ntype FormatPageName = (\n pageName: string,\n context: {\n duration: number;\n reason: string;\n startTime: number;\n endTime: number;\n pagePath?: string;\n pageTag?: string;\n },\n) => string;\n\nexport interface BuildPayloadOptions {\n formatPageName?: FormatPageName;\n}\n\nexport interface PageDurationPayload {\n pageName: string;\n duration: number;\n startTime: number;\n endTime: number;\n}\n\nexport const getBasePageName = (fallbackPath?: string) => {\n try {\n if (fallbackPath) return fallbackPath || \"/\";\n const { pathname = \"/\" } = window.location || {};\n return pathname || \"/\";\n } catch {\n return \"/\";\n }\n};\n\nexport const buildPageDurationPayload = (\n duration: number,\n reason: string,\n meta: PageLeaveMeta,\n options: BuildPayloadOptions = {},\n): PageDurationPayload => {\n const { startTime, endTime, pagePath, pageTag } = meta;\n const basePageName = getBasePageName(pagePath);\n const decoratedName = pageTag ? `${basePageName}#${pageTag}` : basePageName;\n const { formatPageName } = options;\n const pageName =\n typeof formatPageName === \"function\"\n ? formatPageName(decoratedName, { duration, reason, ...meta })\n : decoratedName;\n\n return {\n pageName,\n duration,\n startTime,\n endTime,\n };\n};\n\n","import { trackPageStayTime } from \"./pageStayTime.js\";\nimport { PageLeaveMeta, buildPageDurationPayload } from \"../util/pageDuration.js\";\nimport { lazyReportCacheSLS as sendReportToSLS } from \"../report/reportSLS.js\";\nimport type { TrackPageStayTimeOptions, HistoryInstance } from \"../types/index.js\";\nimport config from \"../config/index.js\";\n\nlet pageStayTracker: ReturnType<typeof trackPageStayTime> | null = null;\nlet historyUnlisten: (() => void) | null = null;\n\ninterface PageStayTimeOptions {\n enabled?: boolean; // 是否启用,默认 false\n minDuration?: number; // 最小上报时长(毫秒),默认 1000\n debounceMs?: number; // 防抖时间(毫秒),默认 300\n onLeave?: (duration: number, reason: string, meta?: PageLeaveMeta) => void; // 离开时的回调\n}\n\n/**\n * 初始化页面停留时间追踪\n * @param options 配置选项\n * @param historyInstance 路由 history 实例(可选)\n * @param defaultOnLeave 默认的上报回调函数(可选)\n */\nexport function initPageStayTimeTracker(\n options: PageStayTimeOptions = {},\n historyInstance?: HistoryInstance,\n defaultOnLeave?: (duration: number, reason: string) => void,\n) {\n const { enabled, minDuration, debounceMs, onLeave } = options;\n \n if (enabled) {\n // 如果已经初始化过,先停止之前的追踪\n if (pageStayTracker) {\n pageStayTracker.stop();\n pageStayTracker = null;\n }\n\n // 创建页面停留时间追踪器\n const finalOnLeave =\n onLeave ||\n defaultOnLeave ||\n ((duration: number, reason: string, meta?: PageLeaveMeta) => {\n \n });\n\n pageStayTracker = trackPageStayTime(finalOnLeave, {\n minDuration,\n debounceMs,\n });\n\n // 如果传入了 history,自动监听路由变化\n if (historyInstance && historyInstance.listen) {\n // 如果之前有监听,先取消\n if (historyUnlisten) {\n historyUnlisten();\n historyUnlisten = null;\n }\n\n // 监听路由变化\n historyUnlisten = historyInstance.listen(({ location, action }) => {\n // 路由切换时,上报当前页面的停留时间\n // action: 'PUSH' | 'POP' | 'REPLACE'\n if (pageStayTracker && (action === 'PUSH' || action === 'REPLACE')) {\n pageStayTracker.manualLeave('route-change');\n }\n });\n }\n } else if (pageStayTracker) {\n // 如果禁用了,停止追踪\n pageStayTracker.stop();\n pageStayTracker = null;\n if (historyUnlisten) {\n historyUnlisten();\n historyUnlisten = null;\n }\n }\n}\n\nexport function switchPageStayTag(tag: string, reason?: string) {\n pageStayTracker?.switchPageTag(tag, reason);\n}\n\n/**\n * 初始化页面停留时间追踪(带默认上报逻辑)\n * @param trackOptions 追踪配置选项\n * @param historyInstance 路由 history 实例(可选)\n */\nexport function initPageStayTracking(\n trackOptions?: TrackPageStayTimeOptions,\n historyInstance?: HistoryInstance\n) {\n if (!trackOptions) return;\n \n const defaultOnLeave = (duration: number, reason: string, meta?: PageLeaveMeta) => {\n const payload = buildPageDurationPayload(\n duration,\n reason,\n meta || { startTime: 0, endTime: 0 },\n { formatPageName: trackOptions?.formatPageName }\n );\n sendReportToSLS('pd', payload);\n };\n \n initPageStayTimeTracker(trackOptions, historyInstance, defaultOnLeave);\n}\n\n/**\n * 停止页面停留时间追踪\n */\nexport function stopPageStayTimeTracker() {\n if (pageStayTracker) {\n pageStayTracker.stop();\n pageStayTracker = null;\n }\n if (historyUnlisten) {\n historyUnlisten();\n historyUnlisten = null;\n }\n}\n\n/**\n * 监听路由变化(仅监听,不做其他操作)\n * @param callback 路由变化时的回调函数\n * @param historyInstance 路由 history 实例(可选,如果不传则使用 init 时传入的 history)\n * @returns 返回取消监听的函数\n */\nexport function listenRouteChange(\n callback: (location: { location: any; action: string }) => void,\n historyInstance?: HistoryInstance\n): () => void {\n // 如果没有传入 history,从 config 中获取\n const history = historyInstance || ((config as any).history as HistoryInstance | null);\n \n if (!history || !history.listen) {\n console.warn('[reporting-lib] No history instance available. Please provide history in init() or pass it as parameter.');\n return () => {};\n }\n\n const unlisten = history.listen(callback);\n return unlisten;\n}\n\n","import config,{ setConfig } from \"./config/index.js\";\nimport error from \"./error/index.js\";\nimport performance from \"./performance/index.js\";\nimport api from \"./api/index.js\";\nimport { lazyReportCacheSLS as sendReportToSLS } from \"./report/reportSLS.js\";\nimport { switchPageStayTag, initPageStayTracking, listenRouteChange } from \"./performance/pageStayTimeTracker.js\";\nimport type { InitOptions, HistoryInstance } from \"./types/index.js\";\n\nlet isInit = false;\n\nconst monitor = {\n init(options: InitOptions = {}) {\n setConfig(options); //配置全局参数\n \n // 初始化页面停留时间追踪(仅在显式传入配置时执行)\n initPageStayTracking(options.trackPageStayTime, options.history);\n \n // 多次初始化只执行一次挂载监听的逻辑\n if(!isInit){\n error(); //错误监听处理\n performance(); //性能监控\n api(); //api远程请求数据采集\n isInit = true;\n }\n },\n /**\n * 自定义上报到阿里云SLS\n * @param type 上报类型\n * @param data 上报数据\n * @param options 配置选项\n * @param options.immediate 是否立即上报(默认 false)\n * @param options.timeout 延迟上报时间,单位ms(默认 3000)\n */\n reportToSLS(type: string, data: Record<string, any> = {}, options: { immediate?: boolean; timeout?: number } = {}) {\n const { immediate = false, timeout = 3000 } = options;\n sendReportToSLS(type, data,immediate, timeout);\n },\n /**\n * 切换页面标签(例如 Tab),自动结束上一标签并重置计时\n * @param tag 标识名称,如 tab key\n * @param reason 可选,默认为 'page-tag-change'\n */\n switchPageTag(tag: string, reason = \"page-tag-change\") {\n switchPageStayTag(tag, reason);\n },\n /**\n * 监听路由变化(仅监听,不做其他操作)\n * @param callback 路由变化时的回调函数,接收 { location, action } 参数\n * @param historyInstance 路由 history 实例(可选,如果不传则使用 init 时传入的 history)\n * @returns 返回取消监听的函数\n */\n listenRouteChange(\n callback: (location: { location: any; action: string }) => void,\n historyInstance?: HistoryInstance\n ) {\n return listenRouteChange(callback, historyInstance);\n },\n};\n\nexport default monitor;\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
2
|
-
`).slice(1)){let o=ct(n);o.filename&&r.push(o);}return r.slice(0,st)}function X(){window.addEventListener("error",async function(e){let t=e.target;if(t&&(t.src||t.href)){let r={error_type:"resource",...J,msg:F(`\u52A0\u8F7D${t.tagName}\u5931\u8D25\uFF1A${t.src||t.href}`),version:I};p("error",r);}else {let r=Ee(e.error),n=e.message;if(r?.[0]){let{filename:a,functionName:s,lineno:c,colno:l}=r[0];n=`${e.message},${a},line:${c}:${l}`;}let o={error_type:"js",msg:F(n),...J,version:I};p("error",o),await be()&&p("error",{...o,error_type:"whiteScreen"});}},true),window.addEventListener("unhandledrejection",function(e){let t=e.reason,r=Ee(t),n=t;if(r?.[0]){let{filename:i,functionName:a,lineno:s,colno:c}=r[0];n=`${e?.reason?.message||e?.reason},${i},line:${s}:${c}`;}let o={error_type:"js",msg:F(n),...J,version:I};p("error",o);});}var Be=-1,C=e=>{addEventListener("pageshow",t=>{t.persisted&&(Be=t.timeStamp,e(t));},true);},T=(e,t,r,n)=>{let o,i;return a=>{t.value>=0&&(a||n)&&(i=t.value-(o??0),(i||o===void 0)&&(o=t.value,t.delta=i,t.rating=((s,c)=>s>c[1]?"poor":s>c[0]?"needs-improvement":"good")(t.value,r),e(t)));}},re=e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()));},oe=()=>{let e=performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},O=()=>oe()?.activationStart??0,y=(e,t=-1)=>{let r=oe(),n="navigate";return Be>=0?n="back-forward-cache":r&&(document.prerendering||O()>0?n="prerender":document.wasDiscarded?n="restore":r.type&&(n=r.type.replace(/_/g,"-"))),{name:e,value:t,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:n}},G=new WeakMap;function ie(e,t){return G.get(e)||G.set(e,new t),G.get(e)}var Y=class{t;i=0;o=[];h(t){if(t.hadRecentInput)return;let r=this.o[0],n=this.o.at(-1);this.i&&r&&n&&t.startTime-n.startTime<1e3&&t.startTime-r.startTime<5e3?(this.i+=t.value,this.o.push(t)):(this.i=t.value,this.o=[t]),this.t?.(t);}},k=(e,t,r={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){let n=new PerformanceObserver(o=>{Promise.resolve().then(()=>{t(o.getEntries());});});return n.observe({type:e,buffered:!0,...r}),n}}catch{}},ae=e=>{let t=false;return ()=>{t||(e(),t=true);}},x=-1,Fe=new Set,Me=()=>document.visibilityState!=="hidden"||document.prerendering?1/0:0,Q=e=>{if(document.visibilityState==="hidden"){if(e.type==="visibilitychange")for(let t of Fe)t();isFinite(x)||(x=e.type==="visibilitychange"?e.timeStamp:0,removeEventListener("prerenderingchange",Q,true));}},z=()=>{if(x<0){let e=O();x=(document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter(r=>r.name==="hidden"&&r.startTime>e)[0]?.startTime)??Me(),addEventListener("visibilitychange",Q,true),addEventListener("prerenderingchange",Q,true),C(()=>{setTimeout(()=>{x=Me();});});}return {get firstHiddenTime(){return x},onHidden(e){Fe.add(e);}}},H=e=>{document.prerendering?addEventListener("prerenderingchange",()=>e(),true):e();},De=[1800,3e3],se=(e,t={})=>{H(()=>{let r=z(),n,o=y("FCP"),i=k("paint",a=>{for(let s of a)s.name==="first-contentful-paint"&&(i.disconnect(),s.startTime<r.firstHiddenTime&&(o.value=Math.max(s.startTime-O(),0),o.entries.push(s),n(true)));});i&&(n=T(e,o,De,t.reportAllChanges),C(a=>{o=y("FCP"),n=T(e,o,De,t.reportAllChanges),re(()=>{o.value=performance.now()-a.timeStamp,n(true);});}));});},Re=[.1,.25],Ne=(e,t={})=>{let r=z();se(ae(()=>{let n,o=y("CLS",0),i=ie(t,Y),a=c=>{for(let l of c)i.h(l);i.i>o.value&&(o.value=i.i,o.entries=i.o,n());},s=k("layout-shift",a);s&&(n=T(e,o,Re,t.reportAllChanges),r.onHidden(()=>{a(s.takeRecords()),n(true);}),C(()=>{i.i=0,o=y("CLS",0),n=T(e,o,Re,t.reportAllChanges),re(()=>n());}),setTimeout(n));}));},qe=0,K=1/0,q=0,lt=e=>{for(let t of e)t.interactionId&&(K=Math.min(K,t.interactionId),q=Math.max(q,t.interactionId),qe=q?(q-K)/7+1:0);},Z,Oe=()=>Z?qe:performance.interactionCount??0,ut=()=>{"interactionCount"in performance||Z||(Z=k("event",lt,{type:"event",buffered:true,durationThreshold:0}));},ke=0,ee=class{u=[];l=new Map;m;p;v(){ke=Oe(),this.u.length=0,this.l.clear();}L(){let t=Math.min(this.u.length-1,Math.floor((Oe()-ke)/50));return this.u[t]}h(t){if(this.m?.(t),!t.interactionId&&t.entryType!=="first-input")return;let r=this.u.at(-1),n=this.l.get(t.interactionId);if(n||this.u.length<10||t.duration>r.P){if(n?t.duration>n.P?(n.entries=[t],n.P=t.duration):t.duration===n.P&&t.startTime===n.entries[0].startTime&&n.entries.push(t):(n={id:t.interactionId,entries:[t],P:t.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort((o,i)=>i.P-o.P),this.u.length>10){let o=this.u.splice(10);for(let i of o)this.l.delete(i.id);}this.p?.(n);}}},ze=e=>{let t=globalThis.requestIdleCallback||setTimeout;document.visibilityState==="hidden"?e():(e=ae(e),addEventListener("visibilitychange",e,{once:true,capture:true}),t(()=>{e(),removeEventListener("visibilitychange",e,{capture:true});}));},_e=[200,500],He=(e,t={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;let r=z();H(()=>{ut();let n,o=y("INP"),i=ie(t,ee),a=c=>{ze(()=>{for(let u of c)i.h(u);let l=i.L();l&&l.P!==o.value&&(o.value=l.P,o.entries=l.entries,n());});},s=k("event",a,{durationThreshold:t.durationThreshold??40});n=T(e,o,_e,t.reportAllChanges),s&&(s.observe({type:"first-input",buffered:true}),r.onHidden(()=>{a(s.takeRecords()),n(true);}),C(()=>{i.v(),o=y("INP"),n=T(e,o,_e,t.reportAllChanges);}));});},te=class{m;h(t){this.m?.(t);}},$e=[2500,4e3],Ue=(e,t={})=>{H(()=>{let r=z(),n,o=y("LCP"),i=ie(t,te),a=c=>{t.reportAllChanges||(c=c.slice(-1));for(let l of c)i.h(l),l.startTime<r.firstHiddenTime&&(o.value=Math.max(l.startTime-O(),0),o.entries=[l],n());},s=k("largest-contentful-paint",a);if(s){n=T(e,o,$e,t.reportAllChanges);let c=ae(()=>{a(s.takeRecords()),s.disconnect(),n(true);}),l=u=>{u.isTrusted&&(ze(c),removeEventListener(u.type,l,{capture:true}));};for(let u of ["keydown","click","visibilitychange"])addEventListener(u,l,{capture:true});C(u=>{o=y("LCP"),n=T(e,o,$e,t.reportAllChanges),re(()=>{o.value=performance.now()-u.timeStamp,n(true);});});}});},Ae=[800,1800],ne=e=>{document.prerendering?H(()=>ne(e)):document.readyState!=="complete"?addEventListener("load",()=>ne(e),true):setTimeout(e);},We=(e,t={})=>{let r=y("TTFB"),n=T(e,r,Ae,t.reportAllChanges);ne(()=>{let o=oe();o&&(r.value=Math.max(o.responseStart-O(),0),r.entries=[o],n(true),C(()=>{r=y("TTFB",0),n=T(e,r,Ae,t.reportAllChanges),n(true);}));});};function ce(){Ne(_),He(_),Ue(_),se(_),We(_);}function _(e){let t={name:e.name,value:e.value};p("performance",t);}var U=XMLHttpRequest.prototype,dt=U.open,mt=U.send;function ft(){U.open=function(...t){try{this.url=t[1],this.method=t[0];}catch{}dt.apply(this,t);},U.send=function(...t){try{this.startTime=Date.now();let n=t[0];this.requestSize=N(n);}catch{}let r=()=>{try{this.endTime=Date.now(),this.duration=this.endTime-this.startTime;let{status:n,duration:o,startTime:i,endTime:a,method:s,response:c,requestSize:l}=this,{url:u}=this,h=n,g=u;try{let P=JSON.parse(c);h=P&&typeof P=="object"?P.code:n;}catch{}let w={status:n,request_url:A(g),method:s||"GET",code:h,duration:o};if(B(g)){w.request_url="https://sd-cms-bmp.oss-accelerate.aliyuncs.com:443/mbp/video";try{w.request_size=parseInt(l/1e3);}catch{}}p("api",w);}catch{}finally{try{this.removeEventListener("loadend",r,!0);}catch{}}};try{this.addEventListener("loadend",r,!0);}catch{}mt.apply(this,t);};}function le(){ft();}var pt=window.fetch;function ht(){window.fetch=function(t,r){let n=Date.now(),o=t,i={request_url:A(o),method:r?.method||"GET"};if(B(o)){i.request_url="https://sd-cms-bmp.oss-accelerate.aliyuncs.com:443/mbp/video";try{i.request_size=parseInt(N(r?.body)/1e3);}catch{}}return pt(t,r).then(a=>{try{let s=Date.now();i.duration=s-n,i.status=a.status;let c=a.clone();gt(t)&&(c.ok?c.json().then(l=>{i.code=l&&typeof l=="object"?l.code:void 0,p("api",i);}).catch(()=>{p("api",i);}):(i.code=i.status,p("api",i)));}catch{}return a}).catch(a=>{try{let s=Date.now();i.duration=s-n,i.status=0,i.code=i.status,p("api",i);}catch{}return a})};}function gt(e){let t="";try{typeof e=="string"?t=e:e&&typeof e.url=="string"?t=e.url:t=String(e);}catch{return true}return !(t.indexOf(".js.map")!==-1||t.indexOf(".log.aliyuncs.com")!==-1)}function ue(){ht();}function de(){le(),ue();}async function je(e,{project:t,endpoint:r,logstore:n}){if(!t||!r||!n)return;let o=Math.floor(Date.now()/1e3),i={__logs__:e.map(u=>({__time__:o,...Object.keys(u).reduce((h,g)=>(h[g]=String(u[g]),h),{})})),__topic__:"default",__source__:"frontend"},a=JSON.stringify(i),s=`https://${t}.${r}/logstores/${n}/track?APIVersion=0.6.0`,c=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json","x-log-apiversion":"0.6.0","x-log-bodyrawsize":a.length.toString()},body:a}),l=await c.text();if(!c.ok)throw new Error(`SLS API error: ${c.status} ${c.statusText} - ${l}`);return c}function Tt(e,t,r=false){if(f.reportUrl===null){console.error("\u8BF7\u5148\u914D\u7F6E\u4E0A\u62A5\u5730\u5740");return}let n=[{user_id:Number(f.userId)||0,source:f.source,type:e,url:window.location.pathname,data:t}];if(r){me(n);return}window.requestIdleCallback?window.requestIdleCallback(()=>{me(n);},{timeout:3e3}):me(n);}var Ve=null;function W(e,t,r,n=3e3){if(t=JSON.stringify({...R,...t}),Se(e,t),r){Je(r);return}clearTimeout(Ve),Ve=setTimeout(()=>{Je();},n);}function Je(e=false){let t=we();if(t.size){for(let[r,n]of t)Tt(r,n,e);Pe();}}function me(e){je(e,{project:f.slsProject,endpoint:f.slsEndpoint,logstore:f.slsLogstore}).catch(t=>{console.error("[reporting-lib] SLS\u4E0A\u62A5\u5931\u8D25:",t);});}function Xe(e,t={}){let{minDuration:r=1e3,debounceMs:n=300}=t,o=false,i=null,a=Date.now(),s=(()=>{try{return window.location?.pathname||"/"}catch{return "/"}})(),c,l=false,u=(d,m,S)=>{o||(i&&clearTimeout(i),i=setTimeout(()=>{if(!o&&m>=r)try{e(m,d,S),o=!0;}catch(b){console.error("[trackPageStayTime] onLeave callback error:",b);}},n));},h=()=>{if(document.visibilityState==="hidden"){let d=Date.now(),m=d-a;u("visibilitychange-hidden",m,{startTime:a,endTime:d,pagePath:s,pageTag:c});}else if(document.visibilityState==="visible"){a=Date.now();try{s=window.location?.pathname||s;}catch{}o=false;}};document.addEventListener("visibilitychange",h);let g=d=>{let m=Date.now(),S=m-a,b={startTime:a,endTime:m,pagePath:s,pageTag:c};d.persisted?u("pagehide-bfcache",S,b):u("pagehide",S,b);};window.addEventListener("pagehide",g);let w=()=>{if(!o){let d=Date.now(),m=d-a,S={startTime:a,endTime:d,pagePath:s,pageTag:c};if(m>=r)try{e(m,"beforeunload",S),o=!0;}catch(b){console.error("[trackPageStayTime] onLeave callback error:",b);}}};window.addEventListener("beforeunload",w);let P=()=>{let d=Date.now(),m=d-a;u("popstate",m,{startTime:a,endTime:d,pagePath:s,pageTag:c});};window.addEventListener("popstate",P);let fe=()=>{a=Date.now();try{s=window.location?.pathname||s;}catch{}o=false,i&&(clearTimeout(i),i=null);},pe=(d="manual")=>{let m=Date.now(),S=m-a;u(d,S,{startTime:a,endTime:m,pagePath:s,pageTag:c}),d==="route-change"&&setTimeout(()=>{fe();},n+50);},he=d=>{c=d||void 0,d&&(l=true);};return {manualLeave:pe,reset:fe,stop:()=>{i&&(clearTimeout(i),i=null),document.removeEventListener("visibilitychange",h),window.removeEventListener("pagehide",g),window.removeEventListener("beforeunload",w),window.removeEventListener("popstate",P);},getCurrentDuration:()=>{let d=Date.now();return document.visibilityState==="visible"?d-a:0},setPageTag:he,switchPageTag:(d,m="page-tag-change")=>{c&&c!==d?(o=false,pe(m),a=Date.now()):l||(a=Date.now(),o=false),he(d);}}}var yt=e=>{try{if(e)return e||"/";let{pathname:t="/"}=window.location||{};return t||"/"}catch{return "/"}},Ge=(e,t,r,n={})=>{let{startTime:o,endTime:i,pagePath:a,pageTag:s}=r,c=yt(a),l=s?`${c}#${s}`:c,{formatPageName:u}=n;return {pageName:typeof u=="function"?u(l,{duration:e,reason:t,...r}):l,duration:e,startTime:o,endTime:i}};var v=null,L=null;function vt(e={},t,r){let{enabled:n,minDuration:o,debounceMs:i,onLeave:a}=e;n?(v&&(v.stop(),v=null),v=Xe(a||r||((c,l,u)=>{}),{minDuration:o,debounceMs:i}),t&&t.listen&&(L&&(L(),L=null),L=t.listen(({location:c,action:l})=>{v&&(l==="PUSH"||l==="REPLACE")&&v.manualLeave("route-change");}))):v&&(v.stop(),v=null,L&&(L(),L=null));}function Ke(e,t){v?.switchPageTag(e,t);}function Ye(e,t){if(!e)return;vt(e,t,(n,o,i)=>{let a=Ge(n,o,i||{startTime:0,endTime:0},{formatPageName:e?.formatPageName});W("pd",a);});}function Qe(e,t){let r=t||f.history;return !r||!r.listen?(console.warn("[reporting-lib] No history instance available. Please provide history in init() or pass it as parameter."),()=>{}):r.listen(e)}var Ze=false,wt={init(e={}){ge(e),Ye(e.trackPageStayTime,e.history),Ze||(X(),ce(),de(),Ze=true);},reportToSLS(e,t={},r={}){let{immediate:n=false,timeout:o=3e3}=r;W(e,t,n,o);},switchPageTag(e,t="page-tag-change"){Ke(e,t);},listenRouteChange(e,t){return Qe(e,t)}},In=wt;
|
|
3
|
-
export{
|
|
1
|
+
var W={source:"mbp",userId:"",reportUrl:"http://localhost:3001/report/actions",trackerAll:false,slsProject:"",slsEndpoint:"",slsLogstore:"",history:null},I="",m=W;function ge(e){for(let t in W)e[t]&&(W[t]=e[t]);e.version&&(I=e.version);}var M=new Map,R=new Map;function Te(){return M}function ye(e,t){M.get(e)?M.get(e).push(t):M.set(e,[t]);}function ve(){M.clear();}function we(){return R}function Se(e,t){R.get(e)?R.get(e).push(t):R.set(e,[t]);}function Pe(){R.clear();}function nt(e,t,r=false){if(m.reportUrl===null){console.error("\u8BF7\u5148\u914D\u7F6E\u4E0A\u62A5\u5730\u5740");return}let n=JSON.stringify({user_id:Number(m.userId)||0,source:m.source,type:e,url:window.location.pathname,data:t});if(r){V(m.reportUrl,n);return}window.requestIdleCallback?window.requestIdleCallback(()=>{V(m.reportUrl,n);},{timeout:3e3}):setTimeout(()=>{V(m.reportUrl,n);});}var Le=null;function p(e,t,r=3e3){ye(e,t),clearTimeout(Le),Le=setTimeout(()=>{let n=Te();if(n.size){for(let[o,i]of n)nt(o,i);ve();}},r);}function V(e,t){navigator.sendBeacon?navigator.sendBeacon(e,t):rt(e,t);}function rt(e,t){let r=new XMLHttpRequest;r.open("POST",e,true),r.setRequestHeader("Content-Type","application/json"),r.send(t);}var ot=({samplePoints:e=6,whiteTags:t=["HTML","BODY","IFRAME"],onDetected:r=(o,i)=>{},threshold:n=.9}={})=>{let o=window.innerWidth,i=window.innerHeight,a=[];for(let l=1;l<=e;l++)a.push([o/2,i/(e+1)*l]);let s=0,c=[];a.forEach(([l,h])=>{let g=document.elementFromPoint(l,h),y=g?.tagName||"NULL";c.push({x:l,y:h,tag:y}),(!g||t.includes(y))&&s++;});let u=s/e>=n;r(u,c);},it=(e,t=300,r=false)=>{let n=null;return function(...o){let i=this;n&&clearTimeout(n),r&&!n&&e.apply(i,o),n=setTimeout(()=>{r||e.apply(i,o),n=null;},t);}},at=it(e=>{ot({onDetected:(t,r)=>{e(t),O=null;}});},1e3),O=null,xe=()=>(O||(O=new Promise(e=>{setTimeout(()=>{at(e);},3e3);})),O),Ce=()=>{let e=navigator.userAgent,t="Unknown",r="Unknown";return /edg/i.test(e)?(t="Edge",r=e.match(/edg\/([\d\.]+)/i)?.[1]):/opr/i.test(e)?(t="Opera",r=e.match(/opr\/([\d\.]+)/i)?.[1]):/chrome/i.test(e)?(t="Chrome",r=e.match(/chrome\/([\d\.]+)/i)?.[1]):/firefox/i.test(e)?(t="Firefox",r=e.match(/firefox\/([\d\.]+)/i)?.[1]):/safari/i.test(e)&&!/chrome/i.test(e)?(t="Safari",r=e.match(/version\/([\d\.]+)/i)?.[1]):(/msie/i.test(e)||/trident/i.test(e))&&(t="Internet Explorer",r=e.match(/(msie\s|rv:)([\d\.]+)/i)?.[2]),{name:t,version:r}},Ie=()=>{let e=navigator.userAgent||navigator.vendor||window.opera;return /windows phone/i.test(e)?"Windows Phone":/win/i.test(e)?"Windows":/android/i.test(e)?"Android":/iPad|iPhone|iPod/.test(e)&&!window.MSStream?"iOS":/Macintosh|MacIntel|MacPPC|Mac68K/.test(e)?"macOS":/Linux/.test(e)?"Linux":"Unknown OS"},A=e=>{try{let t=String(e),r=t.match(/^(https?:\/\/[^/]+)\/material_resource\/([^/?#]+)\/\d+\/[^/?#]+(?:[/?#].*)?$/i);if(r)return `${r[1]}/material_resource/${r[2]}`;let n=t.match(/^(https?:\/\/[^/]+)\/mbp\/\d+\/([^/?#]+)\/[^/?#]+(?:[/?#].*)?$/i);return n?`${n[1]}/mbp/${n[2]}`:e}catch{return e}},be=(e,t)=>{if(!e)return;let r=String(t).toLowerCase();try{if(typeof e.get=="function"){let n=e.get(t);return n??void 0}if(Array.isArray(e)){for(let n of e)if(Array.isArray(n)&&String(n[0]).toLowerCase()===r)return n[1];return}if(typeof e=="object"){for(let n of Object.keys(e))if(n.toLowerCase()===r)return e[n]}}catch{}},Ee=(e,t,r)=>{let n=be(t&&t.headers,r);if(n!=null)return n;try{if(e&&typeof e=="object"&&e.headers)return be(e.headers,r)}catch{}},q=e=>{try{let t=new URL(e.indexOf("http")===-1?`https:${e}`:e);return /^\/mbp\/\d+\/video\/[^/?#]+\.[^/?#]+$/i.test(t.pathname)}catch{return false}},F=e=>{try{return JSON.stringify(e,null,2)}catch{return String(e)}},$=e=>{if(!e)return 0;try{if(typeof e=="string")return new TextEncoder().encode(e).length;if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e.byteLength;if(e instanceof URLSearchParams)return new TextEncoder().encode(e.toString()).length;if(e instanceof FormData){let t=0;for(let[r,n]of e.entries())t+=new TextEncoder().encode(r).length,typeof n=="string"?t+=new TextEncoder().encode(n).length:n instanceof Blob&&(t+=n.size);return t}}catch{return 0}return 0};var st={browserInfo:Ce(),platform:Ie()},_=st;var Me=_.browserInfor,J={user_agent:Me?.name+Me?.version,platform:_.platform},ct=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack|<anonymous>|[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,ut=10;function lt(e){let t=e.match(ct);if(!t)return {};let r=t[2]||"<anonymous>",n=t[1]||"",o=parseInt(t[3],10)||void 0,i=parseInt(t[4],10)||void 0;return {filename:r,functionName:n,lineno:o,colno:i}}function Re(e){let{stack:t}=e;if(!t)return [];let r=[];for(let n of t.split(`
|
|
2
|
+
`).slice(1)){let o=lt(n);o.filename&&r.push(o);}return r.slice(0,ut)}function X(){window.addEventListener("error",async function(e){let t=e.target;if(t&&(t.src||t.href)){let r={error_type:"resource",...J,msg:F(`\u52A0\u8F7D${t.tagName}\u5931\u8D25\uFF1A${t.src||t.href}`),version:I};p("error",r);}else {let r=Re(e.error),n=e.message;if(r?.[0]){let{filename:a,functionName:s,lineno:c,colno:u}=r[0];n=`${e.message},${a},line:${c}:${u}`;}let o={error_type:"js",msg:F(n),...J,version:I};p("error",o),await xe()&&p("error",{...o,error_type:"whiteScreen"});}},true),window.addEventListener("unhandledrejection",function(e){let t=e.reason,r=Re(t),n=t;if(r?.[0]){let{filename:i,functionName:a,lineno:s,colno:c}=r[0];n=`${e?.reason?.message||e?.reason},${i},line:${s}:${c}`;}let o={error_type:"js",msg:F(n),...J,version:I};p("error",o);});}var $e=-1,C=e=>{addEventListener("pageshow",t=>{t.persisted&&($e=t.timeStamp,e(t));},true);},v=(e,t,r,n)=>{let o,i;return a=>{t.value>=0&&(a||n)&&(i=t.value-(o??0),(i||o===void 0)&&(o=t.value,t.delta=i,t.rating=((s,c)=>s>c[1]?"poor":s>c[0]?"needs-improvement":"good")(t.value,r),e(t)));}},re=e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()));},oe=()=>{let e=performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},D=()=>oe()?.activationStart??0,w=(e,t=-1)=>{let r=oe(),n="navigate";return $e>=0?n="back-forward-cache":r&&(document.prerendering||D()>0?n="prerender":document.wasDiscarded?n="restore":r.type&&(n=r.type.replace(/_/g,"-"))),{name:e,value:t,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:n}},G=new WeakMap;function ie(e,t){return G.get(e)||G.set(e,new t),G.get(e)}var Y=class{t;i=0;o=[];h(t){if(t.hadRecentInput)return;let r=this.o[0],n=this.o.at(-1);this.i&&r&&n&&t.startTime-n.startTime<1e3&&t.startTime-r.startTime<5e3?(this.i+=t.value,this.o.push(t)):(this.i=t.value,this.o=[t]),this.t?.(t);}},k=(e,t,r={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){let n=new PerformanceObserver(o=>{Promise.resolve().then(()=>{t(o.getEntries());});});return n.observe({type:e,buffered:!0,...r}),n}}catch{}},ae=e=>{let t=false;return ()=>{t||(e(),t=true);}},x=-1,Be=new Set,_e=()=>document.visibilityState!=="hidden"||document.prerendering?1/0:0,Q=e=>{if(document.visibilityState==="hidden"){if(e.type==="visibilitychange")for(let t of Be)t();isFinite(x)||(x=e.type==="visibilitychange"?e.timeStamp:0,removeEventListener("prerenderingchange",Q,true));}},N=()=>{if(x<0){let e=D();x=(document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter(r=>r.name==="hidden"&&r.startTime>e)[0]?.startTime)??_e(),addEventListener("visibilitychange",Q,true),addEventListener("prerenderingchange",Q,true),C(()=>{setTimeout(()=>{x=_e();});});}return {get firstHiddenTime(){return x},onHidden(e){Be.add(e);}}},z=e=>{document.prerendering?addEventListener("prerenderingchange",()=>e(),true):e();},De=[1800,3e3],se=(e,t={})=>{z(()=>{let r=N(),n,o=w("FCP"),i=k("paint",a=>{for(let s of a)s.name==="first-contentful-paint"&&(i.disconnect(),s.startTime<r.firstHiddenTime&&(o.value=Math.max(s.startTime-D(),0),o.entries.push(s),n(true)));});i&&(n=v(e,o,De,t.reportAllChanges),C(a=>{o=w("FCP"),n=v(e,o,De,t.reportAllChanges),re(()=>{o.value=performance.now()-a.timeStamp,n(true);});}));});},ke=[.1,.25],Ne=(e,t={})=>{let r=N();se(ae(()=>{let n,o=w("CLS",0),i=ie(t,Y),a=c=>{for(let u of c)i.h(u);i.i>o.value&&(o.value=i.i,o.entries=i.o,n());},s=k("layout-shift",a);s&&(n=v(e,o,ke,t.reportAllChanges),r.onHidden(()=>{a(s.takeRecords()),n(true);}),C(()=>{i.i=0,o=w("CLS",0),n=v(e,o,ke,t.reportAllChanges),re(()=>n());}),setTimeout(n));}));},ze=0,K=1/0,B=0,dt=e=>{for(let t of e)t.interactionId&&(K=Math.min(K,t.interactionId),B=Math.max(B,t.interactionId),ze=B?(B-K)/7+1:0);},Z,He=()=>Z?ze:performance.interactionCount??0,ft=()=>{"interactionCount"in performance||Z||(Z=k("event",dt,{type:"event",buffered:true,durationThreshold:0}));},Oe=0,ee=class{u=[];l=new Map;m;p;v(){Oe=He(),this.u.length=0,this.l.clear();}L(){let t=Math.min(this.u.length-1,Math.floor((He()-Oe)/50));return this.u[t]}h(t){if(this.m?.(t),!t.interactionId&&t.entryType!=="first-input")return;let r=this.u.at(-1),n=this.l.get(t.interactionId);if(n||this.u.length<10||t.duration>r.P){if(n?t.duration>n.P?(n.entries=[t],n.P=t.duration):t.duration===n.P&&t.startTime===n.entries[0].startTime&&n.entries.push(t):(n={id:t.interactionId,entries:[t],P:t.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort((o,i)=>i.P-o.P),this.u.length>10){let o=this.u.splice(10);for(let i of o)this.l.delete(i.id);}this.p?.(n);}}},Ue=e=>{let t=globalThis.requestIdleCallback||setTimeout;document.visibilityState==="hidden"?e():(e=ae(e),addEventListener("visibilitychange",e,{once:true,capture:true}),t(()=>{e(),removeEventListener("visibilitychange",e,{capture:true});}));},Ae=[200,500],je=(e,t={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;let r=N();z(()=>{ft();let n,o=w("INP"),i=ie(t,ee),a=c=>{Ue(()=>{for(let l of c)i.h(l);let u=i.L();u&&u.P!==o.value&&(o.value=u.P,o.entries=u.entries,n());});},s=k("event",a,{durationThreshold:t.durationThreshold??40});n=v(e,o,Ae,t.reportAllChanges),s&&(s.observe({type:"first-input",buffered:true}),r.onHidden(()=>{a(s.takeRecords()),n(true);}),C(()=>{i.v(),o=w("INP"),n=v(e,o,Ae,t.reportAllChanges);}));});},te=class{m;h(t){this.m?.(t);}},qe=[2500,4e3],We=(e,t={})=>{z(()=>{let r=N(),n,o=w("LCP"),i=ie(t,te),a=c=>{t.reportAllChanges||(c=c.slice(-1));for(let u of c)i.h(u),u.startTime<r.firstHiddenTime&&(o.value=Math.max(u.startTime-D(),0),o.entries=[u],n());},s=k("largest-contentful-paint",a);if(s){n=v(e,o,qe,t.reportAllChanges);let c=ae(()=>{a(s.takeRecords()),s.disconnect(),n(true);}),u=l=>{l.isTrusted&&(Ue(c),removeEventListener(l.type,u,{capture:true}));};for(let l of ["keydown","click","visibilitychange"])addEventListener(l,u,{capture:true});C(l=>{o=w("LCP"),n=v(e,o,qe,t.reportAllChanges),re(()=>{o.value=performance.now()-l.timeStamp,n(true);});});}});},Fe=[800,1800],ne=e=>{document.prerendering?z(()=>ne(e)):document.readyState!=="complete"?addEventListener("load",()=>ne(e),true):setTimeout(e);},Ve=(e,t={})=>{let r=w("TTFB"),n=v(e,r,Fe,t.reportAllChanges);ne(()=>{let o=oe();o&&(r.value=Math.max(o.responseStart-D(),0),r.entries=[o],n(true),C(()=>{r=w("TTFB",0),n=v(e,r,Fe,t.reportAllChanges),n(true);}));});};function ce(){Ne(H),je(H),We(H),se(H),Ve(H);}function H(e){let t={name:e.name,value:e.value};p("performance",t);}var U=XMLHttpRequest.prototype,mt=U.open,pt=U.send;function ht(){U.open=function(...t){try{if(this.url=t[1],this.method=t[0],this._reportHeaders={},!this._reportHeaderHooked){this._reportHeaderHooked=!0;let r=this.setRequestHeader.bind(this);this.setRequestHeader=(n,o)=>{try{this._reportHeaders||(this._reportHeaders={}),this._reportHeaders[String(n).toLowerCase()]=o;}catch{}return r(n,o)};}}catch{}mt.apply(this,t);},U.send=function(...t){try{this.startTime=Date.now();let n=t[0];this.requestSize=$(n);}catch{}let r=()=>{try{this.endTime=Date.now(),this.duration=this.endTime-this.startTime;let{status:n,duration:o,startTime:i,endTime:a,method:s,response:c,requestSize:u}=this,{url:l}=this,h=n,g=l;try{let T=JSON.parse(c);h=T&&typeof T=="object"?T.code:n;}catch{}let y={status:n,request_url:A(g),method:s||"GET",code:h,duration:o,startTime:i,endTime:a};try{let T=this._reportHeaders&&this._reportHeaders.uuid;T&&(y.uuid=T);}catch{}if(q(g)){y.request_url="https://sd-cms-bmp.oss-accelerate.aliyuncs.com:443/mbp/video";try{y.request_size=parseInt(u/1e3);}catch{}}p("api",y);}catch{}finally{try{this.removeEventListener("loadend",r,!0);}catch{}}};try{this.addEventListener("loadend",r,!0);}catch{}pt.apply(this,t);};}function ue(){ht();}var gt=window.fetch;function Tt(){window.fetch=function(t,r){let n=Date.now(),o=t,i={request_url:A(o),method:r?.method||"GET"};try{let a=Ee(t,r,"uuid");a&&(i.uuid=a);}catch{}if(q(o)){i.request_url="https://sd-cms-bmp.oss-accelerate.aliyuncs.com:443/mbp/video";try{i.request_size=parseInt($(r?.body)/1e3);}catch{}}return gt(t,r).then(a=>{try{let s=Date.now();i.duration=s-n,i.startTime=n,i.endTime=s,i.status=a.status;let c=a.clone();yt(t)&&(c.ok?c.json().then(u=>{i.code=u&&typeof u=="object"?u.code:void 0,p("api",i);}).catch(()=>{p("api",i);}):(i.code=i.status,p("api",i)));}catch{}return a}).catch(a=>{try{let s=Date.now();i.duration=s-n,i.startTime=n,i.endTime=s,i.status=0,i.code=i.status,p("api",i);}catch{}return a})};}function yt(e){let t="";try{typeof e=="string"?t=e:e&&typeof e.url=="string"?t=e.url:t=String(e);}catch{return true}return !(t.indexOf(".js.map")!==-1||t.indexOf(".log.aliyuncs.com")!==-1)}function le(){Tt();}function de(){ue(),le();}async function Je(e,{project:t,endpoint:r,logstore:n}){if(!t||!r||!n)return;let o=Math.floor(Date.now()/1e3),i={__logs__:e.map(l=>({__time__:o,...Object.keys(l).reduce((h,g)=>(h[g]=String(l[g]),h),{})})),__topic__:"default",__source__:"frontend"},a=JSON.stringify(i),s=`https://${t}.${r}/logstores/${n}/track?APIVersion=0.6.0`,c=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json","x-log-apiversion":"0.6.0","x-log-bodyrawsize":a.length.toString()},body:a}),u=await c.text();if(!c.ok)throw new Error(`SLS API error: ${c.status} ${c.statusText} - ${u}`);return c}function vt(e,t,r=false){if(m.reportUrl===null){console.error("\u8BF7\u5148\u914D\u7F6E\u4E0A\u62A5\u5730\u5740");return}let n=[{user_id:Number(m.userId)||0,source:m.source,type:e,url:window.location.pathname,data:t}];if(r){fe(n);return}window.requestIdleCallback?window.requestIdleCallback(()=>{fe(n);},{timeout:3e3}):fe(n);}var Xe=null;function j(e,t,r,n=3e3){if(t=JSON.stringify({..._,...t}),Se(e,t),r){Ge(r);return}clearTimeout(Xe),Xe=setTimeout(()=>{Ge();},n);}function Ge(e=false){let t=we();if(t.size){for(let[r,n]of t)vt(r,n,e);Pe();}}function fe(e){Je(e,{project:m.slsProject,endpoint:m.slsEndpoint,logstore:m.slsLogstore}).catch(t=>{console.error("[reporting-lib] SLS\u4E0A\u62A5\u5931\u8D25:",t);});}function Ke(e,t={}){let{minDuration:r=1e3,debounceMs:n=300}=t,o=false,i=null,a=Date.now(),s=(()=>{try{return window.location?.pathname||"/"}catch{return "/"}})(),c,u=false,l=(d,f,P)=>{o||(i&&clearTimeout(i),i=setTimeout(()=>{if(!o&&f>=r)try{e(f,d,P),o=!0;}catch(b){console.error("[trackPageStayTime] onLeave callback error:",b);}},n));},h=()=>{if(document.visibilityState==="hidden"){let d=Date.now(),f=d-a;l("visibilitychange-hidden",f,{startTime:a,endTime:d,pagePath:s,pageTag:c});}else if(document.visibilityState==="visible"){a=Date.now();try{s=window.location?.pathname||s;}catch{}o=false;}};document.addEventListener("visibilitychange",h);let g=d=>{let f=Date.now(),P=f-a,b={startTime:a,endTime:f,pagePath:s,pageTag:c};d.persisted?l("pagehide-bfcache",P,b):l("pagehide",P,b);};window.addEventListener("pagehide",g);let y=()=>{if(!o){let d=Date.now(),f=d-a,P={startTime:a,endTime:d,pagePath:s,pageTag:c};if(f>=r)try{e(f,"beforeunload",P),o=!0;}catch(b){console.error("[trackPageStayTime] onLeave callback error:",b);}}};window.addEventListener("beforeunload",y);let T=()=>{let d=Date.now(),f=d-a;l("popstate",f,{startTime:a,endTime:d,pagePath:s,pageTag:c});};window.addEventListener("popstate",T);let me=()=>{a=Date.now();try{s=window.location?.pathname||s;}catch{}o=false,i&&(clearTimeout(i),i=null);},pe=(d="manual")=>{let f=Date.now(),P=f-a;l(d,P,{startTime:a,endTime:f,pagePath:s,pageTag:c}),d==="route-change"&&setTimeout(()=>{me();},n+50);},he=d=>{c=d||void 0,d&&(u=true);};return {manualLeave:pe,reset:me,stop:()=>{i&&(clearTimeout(i),i=null),document.removeEventListener("visibilitychange",h),window.removeEventListener("pagehide",g),window.removeEventListener("beforeunload",y),window.removeEventListener("popstate",T);},getCurrentDuration:()=>{let d=Date.now();return document.visibilityState==="visible"?d-a:0},setPageTag:he,switchPageTag:(d,f="page-tag-change")=>{c&&c!==d?(o=false,pe(f),a=Date.now()):u||(a=Date.now(),o=false),he(d);}}}var wt=e=>{try{if(e)return e||"/";let{pathname:t="/"}=window.location||{};return t||"/"}catch{return "/"}},Ye=(e,t,r,n={})=>{let{startTime:o,endTime:i,pagePath:a,pageTag:s}=r,c=wt(a),u=s?`${c}#${s}`:c,{formatPageName:l}=n;return {pageName:typeof l=="function"?l(u,{duration:e,reason:t,...r}):u,duration:e,startTime:o,endTime:i}};var S=null,L=null;function St(e={},t,r){let{enabled:n,minDuration:o,debounceMs:i,onLeave:a}=e;n?(S&&(S.stop(),S=null),S=Ke(a||r||((c,u,l)=>{}),{minDuration:o,debounceMs:i}),t&&t.listen&&(L&&(L(),L=null),L=t.listen(({location:c,action:u})=>{S&&(u==="PUSH"||u==="REPLACE")&&S.manualLeave("route-change");}))):S&&(S.stop(),S=null,L&&(L(),L=null));}function Qe(e,t){S?.switchPageTag(e,t);}function Ze(e,t){if(!e)return;St(e,t,(n,o,i)=>{let a=Ye(n,o,i||{startTime:0,endTime:0},{formatPageName:e?.formatPageName});j("pd",a);});}function et(e,t){let r=t||m.history;return !r||!r.listen?(console.warn("[reporting-lib] No history instance available. Please provide history in init() or pass it as parameter."),()=>{}):r.listen(e)}var tt=false,Pt={init(e={}){ge(e),Ze(e.trackPageStayTime,e.history),tt||(X(),ce(),de(),tt=true);},reportToSLS(e,t={},r={}){let{immediate:n=false,timeout:o=3e3}=r;j(e,t,n,o);},switchPageTag(e,t="page-tag-change"){Qe(e,t);},listenRouteChange(e,t){return et(e,t)}},Mn=Pt;
|
|
3
|
+
export{Mn as default};//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|