vue-eye-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor.js","sources":["../src/config.js","../src/utils.js","../src/cache.js","../src/report.js","../src/performance/fetch.js","../src/performance/observerEntries.js","../src/performance/observeLCP.js","../src/performance/observerFCP.js","../src/performance/observerLoad.js","../src/performance/observerPaint.js","../src/performance/xhr.js","../src/performance/index.js","../src/error/index.js","../src/behavior/onClick.js","../src/behavior/pageChange.js","../src/behavior/pv.js","../src/behavior/index.js","../src/webEyeSDK.js"],"sourcesContent":["const config = {\r\n url: '',\r\n projectName: 'eyesdk',\r\n appId: '123456',\r\n userId: '123456',\r\n isImageUpload: false,\r\n batchSize: 5,\r\n};\r\nexport function setConfig(options) {\r\n for (const key in config) {\r\n if (options[key]) {\r\n config[key] = options[key];\r\n }\r\n }\r\n}\r\nexport default config;","\r\nexport function deepCopy(target) {\r\n if (typeof target === 'object') {\r\n const result = Array.isArray(target) ? [] : {};\r\n for (const key in target) {\r\n if (typeof target[key] == 'object') {\r\n result[key] = deepCopy(target[key]);\r\n } else {\r\n result[key] = target[key];\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n return target\r\n}\r\n\r\nexport function generateUniqueId() {\r\n return 'id-' + Date.now() + '-' + Math.random().toString(36).substring(2, 9)\r\n}","import { deepCopy } from './utils.js';\r\n\r\n\r\nconst cache = [];\r\nexport function getCache() {\r\n return deepCopy(cache);\r\n}\r\nexport function addCache(data) {\r\n cache.push(data);\r\n}\r\nexport function clearCache() {\r\n cache.length = 0;\r\n}","import config from './config';\r\nimport {generateUniqueId} from './utils';\r\nimport {addCache, getCache, clearCache} from './cache';\r\nexport const originalProto = XMLHttpRequest.prototype;\r\nexport const originalOpen = XMLHttpRequest.prototype.open;\r\nexport const originalSend = XMLHttpRequest.prototype.send;\r\nexport function isSupportSendBeacon() {\r\n return 'sendBeacon' in navigator;\r\n}\r\nexport function report(data) {\r\n if (!config.url) {\r\n console.error('请设置上传 url 地址');\r\n }\r\n const reportData = JSON.stringify({\r\n id: generateUniqueId(),\r\n data,\r\n });\r\n // 上报数据,使用图片的方式\r\n if (config.isImageUpload) {\r\n imgRequest(reportData);\r\n } else {\r\n // 优先使用 sendBeacon\r\n if (window.navigator.sendBeacon) {\r\n return beaconRequest(reportData);\r\n } else {\r\n xhrRequest(reportData);\r\n }\r\n }\r\n}\r\n// 批量上报数据\r\nexport function lazyReportBatch(data) {\r\n addCache(data);\r\n const dataCache = getCache();\r\n console.error('dataCache', dataCache);\r\n if (dataCache.length && dataCache.length > config.batchSize) {\r\n report(dataCache);\r\n clearCache();\r\n }\r\n //\r\n}\r\n// 图片发送数据\r\nexport function imgRequest(data) {\r\n const img = new Image();\r\n // http://127.0.0.1:8080/api?data=encodeURIComponent(data)\r\n img.src = `${config.url}?data=${encodeURIComponent(JSON.stringify(data))}`;\r\n}\r\n// 普通ajax发送请求数据\r\nexport function xhrRequest(data) {\r\n if (window.requestIdleCallback) {\r\n window.requestIdleCallback(\r\n () => {\r\n const xhr = new XMLHttpRequest();\r\n originalOpen.call(xhr, 'post', config.url);\r\n originalSend.call(xhr, JSON.stringify(data));\r\n },\r\n { timeout: 3000 }\r\n );\r\n } else {\r\n setTimeout(() => {\r\n const xhr = new XMLHttpRequest();\r\n originalOpen.call(xhr, 'post', url);\r\n originalSend.call(xhr, JSON.stringify(data));\r\n });\r\n }\r\n}\r\n\r\n// const sendBeacon = isSupportSendBeacon() ? navigator.sendBeacon : xhrRequest\r\nexport function beaconRequest(data) {\r\n if (window.requestIdleCallback) {\r\n window.requestIdleCallback(\r\n () => {\r\n window.navigator.sendBeacon(config.url, data);\r\n },\r\n { timeout: 3000 }\r\n );\r\n } else {\r\n setTimeout(() => {\r\n window.navigator.sendBeacon(config.url, data);\r\n });\r\n }\r\n}","import { lazyReportBatch } from '../report';\r\nconst originalFetch = window.fetch;\r\nfunction overwriteFetch() {\r\n window.fetch = function newFetch(url, config) {\r\n const startTime = Date.now();\r\n const reportData = {\r\n type: 'performance',\r\n subType: 'fetch',\r\n url,\r\n startTime,\r\n method: config.method,\r\n }\r\n return originalFetch(url, config).then((res) => {\r\n const endTime = Date.now();\r\n reportData.endTime = endTime;\r\n reportData.duration = endTime - startTime;\r\n const data = res.clone();\r\n reportData.status = data.status;\r\n reportData.success = data.ok;\r\n // todo 上报数据\r\n lazyReportBatch(reportData);\r\n return res;\r\n }).catch((err) => {\r\n const endTime = Date.now();\r\n reportData.endTime = endTime;\r\n reportData.duration = endTime - startTime;\r\n reportData.status = 0;\r\n reportData.success = false;\r\n // todo 上报数据\r\n lazyReportBatch(reportData);\r\n });\r\n }\r\n}\r\nexport default function fetch() {\r\n overwriteFetch();\r\n}","\r\nimport { lazyReportBatch } from '../report';\r\nexport default function observerEntries() {\r\n if (document.readyState === 'complete') {\r\n observerEvent();\r\n } else {\r\n const onLoad = () => {\r\n observerEvent();\r\n window.removeEventListener('load', onLoad, true);\r\n };\r\n window.addEventListener('load', onLoad, true);\r\n }\r\n}\r\nexport function observerEvent() {\r\n const entryHandler = (list) => {\r\n const data = list.getEntries();\r\n for (let entry of data) {\r\n if (observer) {\r\n observer.disconnect();\r\n }\r\n const reportData = {\r\n name: entry.name, // 资源的名字\r\n type: 'performance', // 类型\r\n subType: entry.entryType, //类型\r\n sourceType: entry.initiatorType, // 资源类型\r\n duration: entry.duration, // 加载时间\r\n dns: entry.domainLookupEnd - entry.domainLookupStart, // dns解析时间\r\n tcp: entry.connectEnd - entry.connectStart, // tcp连接时间\r\n redirect: entry.redirectEnd - entry.redirectStart, // 重定向时间\r\n ttfb: entry.responseStart, // 首字节时间\r\n protocol: entry.nextHopProtocol, // 请求协议\r\n responseBodySize: entry.encodedBodySize, // 响应内容大小\r\n responseHeaderSize: entry.transferSize - entry.encodedBodySize, // 响应头部大小\r\n transferSize: entry.transferSize, // 请求内容大小\r\n resourceSize: entry.decodedBodySize, // 资源解压后的大小\r\n startTime: performance.now(),\r\n };\r\n console.log(\"=================loading===========\")\r\n lazyReportBatch(reportData);\r\n // console.log(entry);\r\n }\r\n };\r\n\r\n let observer = new PerformanceObserver(entryHandler);\r\n observer.observe({ type: ['resource'], buffered: true });\r\n}","import { lazyReportBatch } from '../report';\r\nexport default function observerLCP() {\r\n const entryHandler = (list) => {\r\n if (observer) {\r\n observer.disconnect();\r\n } \r\n for (const entry of list.getEntries()) {\r\n const json = entry.toJSON();\r\n console.log(json);\r\n const reportData = {\r\n ...json,\r\n type: 'performance',\r\n subType: entry.name,\r\n pageUrl: window.location.href,\r\n }\r\n // 发送数据 todo;\r\n lazyReportBatch(reportData);\r\n }\r\n\r\n }\r\n // 统计和计算lcp的时间\r\n const observer = new PerformanceObserver(entryHandler);\r\n // buffered: true 确保观察到所有paint事件\r\n observer.observe({type: 'largest-contentful-paint', buffered: true});\r\n}","import { lazyReportBatch } from '../report';\r\nexport default function observerFCP() {\r\n const entryHandler = (list) => {\r\n for (const entry of list.getEntries()) {\r\n if (entry.name === 'first-contentful-paint') {\r\n observer.disconnect();\r\n const json = entry.toJSON();\r\n console.log(json);\r\n const reportData = {\r\n ...json,\r\n type: 'performance',\r\n subType: entry.name,\r\n pageUrl: window.location.href,\r\n }\r\n // 发送数据 todo;\r\n lazyReportBatch(reportData);\r\n }\r\n }\r\n\r\n }\r\n // 统计和计算fcp的时间\r\n const observer = new PerformanceObserver(entryHandler);\r\n // buffered: true 确保观察到所有paint事件\r\n observer.observe({type: 'paint', buffered: true});\r\n}","import { lazyReportBatch } from '../report';\r\nexport default function observerLoad () {\r\n window.addEventListener('pageShow', function (event) {\r\n requestAnimationFrame(() =>{\r\n ['load'].forEach((type) => {\r\n const reportData = {\r\n type: 'performance',\r\n subType: type,\r\n pageUrl: window.location.href,\r\n startTime: performance.now()- event.timeStamp\r\n }\r\n // 发送数据\r\n lazyReportBatch(reportData);\r\n });\r\n\r\n }, true);\r\n });\r\n}\r\n","import { lazyReportBatch } from '../report';\r\nexport default function observerPaint() {\r\n const entryHandler = (list) => {\r\n for (const entry of list.getEntries()) {\r\n if (entry.name === 'first-paint') {\r\n observer.disconnect();\r\n const json = entry.toJSON();\r\n console.log(json);\r\n const reportData = {\r\n ...json,\r\n type: 'performance',\r\n subType: entry.name,\r\n pageUrl: window.location.href,\r\n }\r\n // 发送数据 todo;\r\n lazyReportBatch(reportData);\r\n }\r\n }\r\n \r\n }\r\n // 统计和计算fp的时间\r\n const observer = new PerformanceObserver(entryHandler);\r\n // buffered: true 确保观察到所有paint事件\r\n observer.observe({type: 'paint', buffered: true});\r\n \r\n \r\n}\r\n","import { lazyReportBatch } from '../report';\r\nexport const originalProto = XMLHttpRequest.prototype;\r\nexport const originalSend = originalProto.send;\r\nexport const originalOpen = originalProto.open;\r\n\r\nfunction overwriteOpenAndSend() {\r\n originalProto.open = function newOpen(...args) {\r\n this.url = args[1];\r\n this.method = args[0];\r\n originalOpen.apply(this, args);\r\n\r\n }\r\n originalProto.send = function newSend(...args) {\r\n this.startTime = Date.now();\r\n const onLoaded = () => {\r\n this.endTime = Date.now();\r\n this.duration = this.endTime - this.startTime;\r\n const { url, method , startTime, endTime, duration, status} = this;\r\n const reportData = {\r\n status,\r\n duration,\r\n startTime,\r\n endTime,\r\n url,\r\n method: method.toUpperCase(),\r\n type: 'performance',\r\n success: status >= 200 && status < 300,\r\n subType: 'xhr'\r\n }\r\n // todo 发送数据\r\n lazyReportBatch(reportData);\r\n this.removeEventListener('loadend', onLoaded, true);\r\n }\r\n this.addEventListener('loadend', onLoaded, true);\r\n originalSend.apply(this, args);\r\n\r\n }\r\n\r\n}\r\nexport default function xhr() {\r\n overwriteOpenAndSend();\r\n}","import fetch from \"./fetch\";\r\nimport observerEntries from \"./observerEntries\";\r\nimport observerLCP from \"./observeLCP\";\r\nimport observerFCP from \"./observerFCP\";\r\nimport observerLoad from \"./observerLoad\";\r\nimport observerPaint from \"./observerPaint\";\r\nimport xhr from \"./xhr\"; \r\n\r\nexport default function performance() {\r\n fetch();\r\n observerEntries();\r\n observerLCP();\r\n observerFCP();\r\n observerLoad();\r\n observerPaint();\r\n xhr();\r\n}","\r\nimport { lazyReportBatch } from '../report';\r\nexport default function error() {\r\n // 捕获资源加载失败的错误: js css img\r\n window.addEventListener(\r\n 'error',\r\n function (e) {\r\n const target = e.target;\r\n if (target.src || target.href) {\r\n const url = target.src || target.href;\r\n const reportData = {\r\n type: 'error',\r\n subType: 'resource',\r\n url,\r\n html: target.outerHTML,\r\n pageUrl: window.location.href,\r\n pahts: e.path,\r\n };\r\n // todo 发送错误信息\r\n lazyReportBatch(reportData);\r\n }\r\n },\r\n true\r\n );\r\n // 捕获js错误\r\n window.onerror = function (msg, url, lineNo, columnNo, error) {\r\n const reportData = {\r\n type: 'error',\r\n subType: 'js',\r\n msg,\r\n url,\r\n lineNo,\r\n columnNo,\r\n stack: error.stack,\r\n pageUrl: window.location.href,\r\n startTime: performance.now(),\r\n };\r\n // todo 发送错误信息\r\n lazyReportBatch(reportData);\r\n };\r\n // 捕获promise错误 asyn await\r\n window.addEventListener(\r\n 'unhandledrejection',\r\n function (e) {\r\n const reportData = {\r\n type: 'error',\r\n subType: 'promise',\r\n reason: e.reason?.stack,\r\n pageUrl: window.location.href,\r\n startTime: e.timeStamp,\r\n };\r\n // todo 发送错误信息\r\n lazyReportBatch(reportData);\r\n },\r\n true\r\n );\r\n}","import { lazyReportBatch } from '../report';\r\nexport default function onClick() {\r\n ['mousedown', 'touchstart'].forEach((eventType) => {\r\n window.addEventListener(eventType, (e) => {\r\n const target = e.target;\r\n console.log('click', target);\r\n if (target.tagName) {\r\n const reportData = {\r\n // scrollTop: document.documentElement.scrollTop,\r\n type: 'behavior',\r\n subType: 'click',\r\n target: target.tagName,\r\n startTime: e.timeStamp,\r\n innerHtml: target.innerHTML,\r\n outerHtml: target.outerHTML,\r\n with: target.offsetWidth,\r\n height: target.offsetHeight,\r\n eventType,\r\n path: e.path,\r\n };\r\n lazyReportBatch(reportData);\r\n }\r\n });\r\n });\r\n}","import { lazyReportBatch } from '../report';\r\nimport {generateUniqueId} from '../utils';\r\nexport default function pageChange() {\r\n // hash histroy\r\n let oldUrl = '';\r\n window.addEventListener(\r\n 'hashchange',\r\n function (event) {\r\n console.error('hashchange', event);\r\n const newUrl = event.newURL;\r\n const reportData = {\r\n form: oldUrl,\r\n to: newUrl,\r\n type: 'behavior',\r\n subType: 'hashchange',\r\n startTime: performance.now(),\r\n uuid: generateUniqueId(),\r\n };\r\n lazyReportBatch(reportData);\r\n oldUrl = newUrl;\r\n },\r\n true\r\n );\r\n\r\n let from = '';\r\n window.addEventListener(\r\n 'popstate',\r\n function (event) {\r\n console.error('popstate', event);\r\n const to = window.location.href;\r\n const reportData = {\r\n form: from,\r\n to: to,\r\n type: 'behavior',\r\n subType: 'popstate',\r\n startTime: performance.now(),\r\n uuid: generateUniqueId(),\r\n };\r\n lazyReportBatch(reportData);\r\n from = to;\r\n },\r\n true\r\n );\r\n\r\n}","import { lazyReportBatch } from '../report';\r\nimport {generateUniqueId} from '../utils';\r\nexport default function pv() {\r\n const reportData = {\r\n type: 'behavior',\r\n subType: 'pv',\r\n startTime: performance.now(),\r\n pageUrl: window.location.href,\r\n referror: document.referrer,\r\n uuid: generateUniqueId(),\r\n }\r\n lazyReportBatch(reportData)\r\n}","import onClick from './onClick';\r\nimport pageChange from './pageChange';\r\nimport pv from './pv';\r\n\r\nexport default function behavior() {\r\n onClick(),\r\n pageChange(),\r\n pv()\r\n}\r\n","import performance from './performance/index';\r\nimport error from './error/index';\r\nimport behavior from './behavior/index';\r\nimport { setConfig } from './config';\r\nimport { lazyReportBatch } from './report';\r\nwindow.__webEyeSDK__ = {\r\n version: '0.0.1',\r\n};\r\n\r\n// 针对Vue项目的错误捕获\r\nexport function install(Vue, options) {\r\n if (__webEyeSDK__.vue) return;\r\n __webEyeSDK__.vue = true;\r\n setConfig(options);\r\n const handler = Vue.config.errorHandler;\r\n // vue项目中 通过 Vue.config.errorHandler 捕获错误\r\n Vue.config.errorHandler = function (err, vm, info) {\r\n // todo: 上报具体的错误信息\r\n const reportData = {\r\n info,\r\n error: err.stack,\r\n subType: 'vue',\r\n type: 'error',\r\n startTime: window.performance.now(),\r\n pageURL: window.location.href,\r\n };\r\n console.log('vue error', reportData);\r\n lazyReportBatch(reportData);\r\n if (handler) {\r\n handler.call(this, err, vm, info);\r\n }\r\n };\r\n}\r\n// 针对React项目的错误捕获\r\nexport function errorBoundary(err, info) {\r\n if (__webEyeSDK__.react) return;\r\n __webEyeSDK__.react = true;\r\n // todo: 上报具体的错误信息\r\n const reportData = {\r\n error: err?.stack,\r\n info,\r\n subType: 'react',\r\n type: 'error',\r\n startTime: window.performance.now(),\r\n pageURL: window.location.href,\r\n };\r\n lazyReportBatch(reportData);\r\n}\r\nexport function init(options) {\r\n setConfig(options);\r\n // performance();\r\n error();\r\n // behavior();\r\n}\r\n\r\nexport default {\r\n install,\r\n errorBoundary,\r\n performance,\r\n error,\r\n behavior,\r\n init,\r\n}"],"names":["config","url","projectName","appId","userId","isImageUpload","batchSize","setConfig","options","key","deepCopy","target","_typeof","result","Array","isArray","generateUniqueId","Date","now","Math","random","toString","substring","cache","getCache","addCache","data","push","clearCache","length","originalOpen","XMLHttpRequest","prototype","open","originalSend","send","report","console","error","reportData","JSON","stringify","id","imgRequest","window","navigator","sendBeacon","beaconRequest","xhrRequest","lazyReportBatch","dataCache","img","Image","src","concat","encodeURIComponent","requestIdleCallback","xhr","call","timeout","setTimeout","originalFetch","fetch","overwriteFetch","newFetch","startTime","type","subType","method","then","res","endTime","duration","clone","status","success","ok","catch","err","observerEntries","document","readyState","observerEvent","onLoad","removeEventListener","addEventListener","entryHandler","list","getEntries","_iterator","_createForOfIteratorHelper","_step","s","n","done","entry","value","observer","disconnect","name","entryType","sourceType","initiatorType","dns","domainLookupEnd","domainLookupStart","tcp","connectEnd","connectStart","redirect","redirectEnd","redirectStart","ttfb","responseStart","protocol","nextHopProtocol","responseBodySize","encodedBodySize","responseHeaderSize","transferSize","resourceSize","decodedBodySize","performance","log","e","f","PerformanceObserver","observe","buffered","observerLCP","json","toJSON","_objectSpread","pageUrl","location","href","observerFCP","observerLoad","event","requestAnimationFrame","forEach","timeStamp","observerPaint","originalProto","overwriteOpenAndSend","newOpen","_len","arguments","args","_key","apply","newSend","_this","onLoaded","toUpperCase","_len2","_key2","html","outerHTML","pahts","path","onerror","msg","lineNo","columnNo","stack","_e$reason","reason","onClick","eventType","tagName","innerHtml","innerHTML","outerHtml","with","offsetWidth","height","offsetHeight","pageChange","oldUrl","newUrl","newURL","form","to","uuid","from","pv","referror","referrer","behavior","__webEyeSDK__","version","install","Vue","vue","handler","errorHandler","vm","info","pageURL","errorBoundary","react","init"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "vue-eye-sdk",
3
+ "version": "1.0.0",
4
+ "description": "A comprehensive web monitoring SDK for behavior tracking, error monitoring, and performance analysis",
5
+ "main": "dist/monitor.js",
6
+ "scripts": {
7
+ "test": "jest",
8
+ "test:watch": "jest --watch",
9
+ "test:coverage": "jest --coverage",
10
+ "build": "rollup -c rollup/build.js",
11
+ "prepublishOnly": "npm run build"
12
+ },
13
+ "keywords": [
14
+ "web-monitoring",
15
+ "sdk",
16
+ "performance",
17
+ "error-tracking",
18
+ "behavior-analytics",
19
+ "frontend-monitoring"
20
+ ],
21
+ "module": "dist/monitor.esm.js",
22
+ "browser": "dist/monitor.js",
23
+ "files": [
24
+ "dist"
25
+ ],
26
+ "author": "Wang YuXiang",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/WangYuXiang/vue-eye-sdk"
31
+ },
32
+ "homepage": "https://github.com/WangYuXiang/vue-eye-sdk#readme",
33
+ "bugs": {
34
+ "url": "https://github.com/WangYuXiang/vue-eye-sdk/issues"
35
+ },
36
+ "devDependencies": {
37
+ "@babel/core": "^7.24.4",
38
+ "@babel/preset-env": "^7.24.4",
39
+ "@rollup/plugin-babel": "^6.0.4",
40
+ "@rollup/plugin-json": "^6.1.0",
41
+ "rollup": "^4.14.3",
42
+ "jest": "^29.7.0",
43
+ "@babel/preset-typescript": "^7.23.3",
44
+ "@types/jest": "^29.5.12",
45
+ "babel-jest": "^29.7.0"
46
+ },
47
+ "dependencies": {
48
+ "body-parser": "^1.20.2",
49
+ "cors": "^2.8.5",
50
+ "express": "^4.19.2"
51
+ }
52
+ }
package/readme.md ADDED
@@ -0,0 +1,104 @@
1
+
2
+
3
+
4
+ # Web Eye SDK
5
+
6
+ A comprehensive web monitoring SDK for behavior tracking, error monitoring, and performance analysis in frontend applications.
7
+
8
+ ## Features
9
+
10
+ - **Behavior Tracking**: Page changes, click events, user interactions
11
+ - **Error Monitoring**: JavaScript errors, Vue errors, React error boundaries
12
+ - **Performance Monitoring**: LCP (Largest Contentful Paint), fetch performance
13
+ - **Real-time Reporting**: Batch reporting with lazy loading
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ # npm
19
+ npm install web-eye-sdk
20
+
21
+ # yarn
22
+ yarn add web-eye-sdk
23
+
24
+ # pnpm
25
+ pnpm add web-eye-sdk
26
+ ```
27
+
28
+ ## Quick Start
29
+
30
+ ### Browser (Script Tag)
31
+
32
+ ```html
33
+ <script src="./node_modules/web-eye-sdk/dist/monitor.js"></script>
34
+ <script>
35
+ monitor.init({
36
+ url: 'http://your-server/reportData'
37
+ });
38
+ </script>
39
+ ```
40
+
41
+ ### ES Modules
42
+
43
+ ```javascript
44
+ import monitor from 'web-eye-sdk';
45
+
46
+ monitor.init({
47
+ url: 'http://your-server/reportData'
48
+ });
49
+ ```
50
+
51
+ ### Vue.js
52
+
53
+ ```javascript
54
+ import Vue from 'vue';
55
+ import monitor from 'web-eye-sdk';
56
+
57
+ Vue.use(monitor, {
58
+ url: 'http://your-server/reportData'
59
+ });
60
+ ```
61
+
62
+ ### React
63
+
64
+ ```jsx
65
+ import { errorBoundary } from 'web-eye-sdk';
66
+
67
+ class ErrorBoundary extends React.Component {
68
+ componentDidCatch(err, info) {
69
+ errorBoundary(err, info);
70
+ }
71
+
72
+ render() {
73
+ return this.props.children;
74
+ }
75
+ }
76
+ ```
77
+
78
+ ## Configuration
79
+
80
+ ```javascript
81
+ monitor.init({
82
+ url: 'http://your-server/reportData', // Required: Data reporting endpoint
83
+ appId: 'your-app-id', // Optional: Application identifier
84
+ userId: 'user-123', // Optional: User identifier
85
+ // More configuration options...
86
+ });
87
+ ```
88
+
89
+ ## Development
90
+
91
+ ```bash
92
+ # Install dependencies
93
+ npm install
94
+
95
+ # Build the project
96
+ npm run build
97
+
98
+ # Run tests
99
+ npm test
100
+ ```
101
+
102
+ ## License
103
+
104
+ MIT