polyv-rum-sdk 0.1.5 → 0.1.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/index.d.mts CHANGED
@@ -203,6 +203,7 @@ declare class RUMManagerVue2 {
203
203
  private setUserInfo;
204
204
  private setupUserStateListener;
205
205
  private setupUserInteractionTracking;
206
+ private trackInitialRoute;
206
207
  private getCSSSelector;
207
208
  trackEvent(eventName: string, eventData?: Record<string, any>): void;
208
209
  trackPerformance(performanceData: Record<string, any>): void;
package/dist/index.d.ts CHANGED
@@ -203,6 +203,7 @@ declare class RUMManagerVue2 {
203
203
  private setUserInfo;
204
204
  private setupUserStateListener;
205
205
  private setupUserInteractionTracking;
206
+ private trackInitialRoute;
206
207
  private getCSSSelector;
207
208
  trackEvent(eventName: string, eventData?: Record<string, any>): void;
208
209
  trackPerformance(performanceData: Record<string, any>): void;
package/dist/index.js CHANGED
@@ -127,16 +127,16 @@ var extractValue = (data) => {
127
127
  }
128
128
  };
129
129
  var slsConfig = {
130
- host: getEnv("VUE_APP_SLS_HOST", "cn-shenzhen.log.aliyuncs.com"),
131
- project: getEnv("VUE_APP_SLS_PROJECT", "live-admin-rum"),
132
- logstore: getEnv("VUE_APP_SLS_LOGSTORE", "rum-traces-dev"),
130
+ host: getEnv("VUE_APP_SLS_HOST"),
131
+ project: getEnv("VUE_APP_SLS_PROJECT"),
132
+ logstore: getEnv("VUE_APP_SLS_LOGSTORE"),
133
133
  time: 10,
134
134
  count: 10,
135
135
  topic: "rum-monitor",
136
136
  source: "web",
137
- enabled: getEnv("VUE_APP_SLS_ENABLED", "true") !== "false",
137
+ enabled: getEnv("VUE_APP_SLS_ENABLED", "false") === "true",
138
138
  debug: isDebugEnabled,
139
- appName: "live-admin-v3",
139
+ appName: getEnv("VUE_APP_RUM_APP_NAME", "rum-app"),
140
140
  appVersion: getEnv("PACKAGE_VERSION", "1.0.0"),
141
141
  retryCount: 3,
142
142
  retryInterval: 2e3
@@ -306,10 +306,10 @@ var shouldReport = (data) => {
306
306
  };
307
307
 
308
308
  // src/core/MitoSLSAdapter.ts
309
- var import_browser = require("@mitojs/browser");
309
+ var Mito = __toESM(require("@mitojs/browser"));
310
310
 
311
311
  // src/transport/SLSWebTrackingAdapter.ts
312
- var import_web_track_browser = __toESM(require("@aliyun-sls/web-track-browser"));
312
+ var import_web_track_browser_es = __toESM(require("@aliyun-sls/web-track-browser/dist/web-track-browser.es.js"));
313
313
  var getEnv2 = (key, defaultValue = "") => {
314
314
  const env = getRUMEnv();
315
315
  if (env && Object.prototype.hasOwnProperty.call(env, key)) {
@@ -326,9 +326,9 @@ var SLSWebTrackingAdapter = class {
326
326
  this.retryQueue = [];
327
327
  var _a, _b, _c, _d, _e, _f, _g;
328
328
  this.config = {
329
- host: config.host || getEnv2("VUE_APP_SLS_HOST", "cn-shenzhen.log.aliyuncs.com"),
330
- project: config.project || getEnv2("VUE_APP_SLS_PROJECT", "live-admin-rum"),
331
- logstore: config.logstore || "rum-traces-dev",
329
+ host: config.host || getEnv2("VUE_APP_SLS_HOST") || "",
330
+ project: config.project || getEnv2("VUE_APP_SLS_PROJECT") || "",
331
+ logstore: config.logstore || getEnv2("VUE_APP_SLS_LOGSTORE") || "",
332
332
  time: (_a = config.time) != null ? _a : 10,
333
333
  count: (_b = config.count) != null ? _b : 10,
334
334
  topic: config.topic || "rum-monitor",
@@ -338,7 +338,7 @@ var SLSWebTrackingAdapter = class {
338
338
  enabled: (_d = config.enabled) != null ? _d : true,
339
339
  userId: (_e = config.userId) != null ? _e : null,
340
340
  sessionId: config.sessionId || this.generateSessionId(),
341
- appName: config.appName || "live-admin-v3",
341
+ appName: config.appName || getEnv2("VUE_APP_RUM_APP_NAME", "rum-app"),
342
342
  appVersion: config.appVersion || getEnv2("PACKAGE_VERSION", "1.0.0"),
343
343
  retryCount: (_f = config.retryCount) != null ? _f : 3,
344
344
  retryInterval: (_g = config.retryInterval) != null ? _g : 2e3
@@ -365,11 +365,11 @@ var SLSWebTrackingAdapter = class {
365
365
  if (this.config.debug) {
366
366
  console.log("\u{1F680} Initializing SLSWebTrackingAdapter...", {
367
367
  config: this.config,
368
- SlsTracker: typeof import_web_track_browser.default
368
+ SlsTracker: typeof import_web_track_browser_es.default
369
369
  });
370
370
  }
371
371
  try {
372
- this.slsTracker = new import_web_track_browser.default({
372
+ this.slsTracker = new import_web_track_browser_es.default({
373
373
  host: this.config.host,
374
374
  project: this.config.project,
375
375
  logstore: this.config.logstore,
@@ -817,7 +817,7 @@ var MitoSLSAdapter = class {
817
817
  ...slsConfigOverride
818
818
  });
819
819
  await this.slsAdapter.init();
820
- this.mitoInstance = (0, import_browser.init)({
820
+ this.mitoInstance = Mito.init({
821
821
  dsn: this.options.dsn || void 0,
822
822
  debug: this.options.debug,
823
823
  maxBreadcrumbs: this.options.maxBreadcrumbs,
@@ -827,6 +827,7 @@ var MitoSLSAdapter = class {
827
827
  },
828
828
  beforeDataReport: this.handleDataReport,
829
829
  silent: !this.options.debug,
830
+ silentConsole: !this.options.debug,
830
831
  enableUrlHash: true,
831
832
  enableUserAgent: true,
832
833
  enableHistory: true,
@@ -1220,6 +1221,7 @@ var RUMManagerVue2 = class {
1220
1221
  this.setUserInfo();
1221
1222
  this.setupUserStateListener();
1222
1223
  this.setupUserInteractionTracking();
1224
+ this.trackInitialRoute();
1223
1225
  this.isInitialized = true;
1224
1226
  if (mitoConfig.debug) {
1225
1227
  console.log("RUM system initialized successfully");
@@ -1399,6 +1401,30 @@ var RUMManagerVue2 = class {
1399
1401
  console.log("User interaction tracking configured");
1400
1402
  }
1401
1403
  }
1404
+ trackInitialRoute() {
1405
+ if (!this.context.router || !this.adapter) {
1406
+ return;
1407
+ }
1408
+ try {
1409
+ const router = this.context.router;
1410
+ const currentRoute = router.currentRoute || router.app && router.app.$route || {};
1411
+ const from = {
1412
+ path: currentRoute.fullPath || currentRoute.path,
1413
+ name: currentRoute.name,
1414
+ params: currentRoute.params,
1415
+ query: currentRoute.query
1416
+ };
1417
+ const to = { ...from };
1418
+ const adapter = this.adapter;
1419
+ if (adapter && typeof adapter.handleRouteChange === "function") {
1420
+ adapter.handleRouteChange(to, from);
1421
+ }
1422
+ } catch (error) {
1423
+ if (mitoConfig.debug) {
1424
+ console.warn("Failed to track initial route:", error);
1425
+ }
1426
+ }
1427
+ }
1402
1428
  getCSSSelector(element) {
1403
1429
  if (!element || element.nodeType !== Node.ELEMENT_NODE) {
1404
1430
  return "";
@@ -1553,8 +1579,8 @@ var getRUMConfig = () => rumManagerVue2.getConfig();
1553
1579
  var destroyRUM = () => rumManagerVue2.destroy();
1554
1580
  var getRUMManager = () => rumManagerVue2;
1555
1581
  var RUMPluginVue2 = {
1556
- install(Vue) {
1557
- Vue.prototype.$rum = {
1582
+ install(Vue2) {
1583
+ Vue2.prototype.$rum = {
1558
1584
  trackEvent,
1559
1585
  trackPerformance,
1560
1586
  trackAction,
@@ -1564,7 +1590,7 @@ var RUMPluginVue2 = {
1564
1590
  disable: disableRUM,
1565
1591
  getConfig: getRUMConfig
1566
1592
  };
1567
- Vue.$rumManager = rumManagerVue2;
1593
+ Vue2.$rumManager = rumManagerVue2;
1568
1594
  }
1569
1595
  };
1570
1596
 
@@ -1574,7 +1600,7 @@ __export(plugin_vue3_exports, {
1574
1600
  createRUMPluginVue3: () => createRUMPluginVue3,
1575
1601
  useRUM: () => useRUM
1576
1602
  });
1577
- var import_vue = require("vue");
1603
+ var Vue = __toESM(require("vue"));
1578
1604
 
1579
1605
  // src/vue3/RUMManager.vue3.ts
1580
1606
  var RUMManagerVue3 = class {
@@ -1637,7 +1663,7 @@ function createRUMPluginVue3(options) {
1637
1663
  };
1638
1664
  }
1639
1665
  function useRUM() {
1640
- return (0, import_vue.inject)("rum");
1666
+ return Vue.inject("rum");
1641
1667
  }
1642
1668
  // Annotate the CommonJS export names for ESM import in node:
1643
1669
  0 && (module.exports = {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/core/env.ts","../src/core/config.ts","../src/core/MitoSLSAdapter.ts","../src/transport/SLSWebTrackingAdapter.ts","../src/vue2/plugin.vue2.ts","../src/vue2/RUMManager.vue2.ts","../src/vue3/plugin.vue3.ts","../src/vue3/RUMManager.vue3.ts"],"sourcesContent":["export * from './core/env';\nexport * from './core/config';\nexport * from './core/MitoSLSAdapter';\nexport * from './transport/SLSWebTrackingAdapter';\n\nexport * as vue2 from './vue2/plugin.vue2';\nexport {\n initRUMSystem as initRUMSystemVue2,\n trackEvent as trackEventVue2,\n trackPerformance as trackPerformanceVue2,\n trackAction as trackActionVue2,\n trackMetric as trackMetricVue2,\n getBreadcrumbs as getBreadcrumbsVue2,\n enableRUM as enableRUMVue2,\n disableRUM as disableRUMVue2,\n getRUMConfig as getRUMConfigVue2,\n destroyRUM as destroyRUMVue2,\n getRUMManager as getRUMManagerVue2,\n RUMPluginVue2\n} from './vue2/plugin.vue2';\n\nexport * as vue3 from './vue3/plugin.vue3';\nexport {\n createRUMPluginVue3,\n useRUM\n} from './vue3/plugin.vue3';\n","export interface RUMEnv {\n [key: string]: string | undefined;\n}\n\nexport const getRUMEnv = (): RUMEnv => {\n if (typeof window !== 'undefined' && (window as any).VUE_APP_ENV) {\n return (window as any).VUE_APP_ENV as RUMEnv;\n }\n\n if (typeof process !== 'undefined' && (process as any).env) {\n return (process as any).env as RUMEnv;\n }\n\n return {};\n};\n\nexport const RUM_ENV: RUMEnv = getRUMEnv();\n","import type { RUMEnv } from './env';\nimport { getRUMEnv } from './env';\n\nconst getEnv = (key: string, defaultValue = ''): string => {\n const env: RUMEnv = getRUMEnv();\n if (env && Object.prototype.hasOwnProperty.call(env, key)) {\n return (env as any)[key] || defaultValue;\n }\n return defaultValue;\n};\n\nconst isProduction = getEnv('NODE_ENV') === 'production';\nconst isDebugEnabled = getEnv('VUE_APP_RUM_DEBUG', 'false') === 'true';\n\nconst getSessionId = (): string => {\n if (typeof sessionStorage === 'undefined') {\n return `session_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n }\n\n let sessionId = sessionStorage.getItem('rum_session_id');\n if (!sessionId) {\n sessionId = `session_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n sessionStorage.setItem('rum_session_id', sessionId);\n }\n return sessionId;\n};\n\nconst getMetricType = (data: any): string => {\n switch (data.type) {\n case 'performance':\n return 'duration';\n case 'xhr':\n return 'xhr';\n case 'fetch':\n return 'fetch';\n case 'click':\n return 'click';\n case 'route':\n return 'route';\n case 'error':\n return 'error';\n default:\n return 'unknown';\n }\n};\n\nconst extractValue = (data: any): number => {\n switch (data.type) {\n case 'performance':\n return data.duration || 0;\n case 'xhr':\n case 'fetch':\n return data.duration || data.status || 0;\n case 'click':\n case 'error':\n return 1;\n default:\n return 1;\n }\n};\n\nexport interface SlsConfig {\n host: string;\n project: string;\n logstore: string;\n time: number;\n count: number;\n topic: string;\n source: string;\n enabled: boolean;\n debug: boolean;\n appName: string;\n appVersion: string;\n retryCount: number;\n retryInterval: number;\n}\n\nexport const slsConfig: SlsConfig = {\n host: getEnv('VUE_APP_SLS_HOST', 'cn-shenzhen.log.aliyuncs.com'),\n project: getEnv('VUE_APP_SLS_PROJECT', 'live-admin-rum'),\n logstore: getEnv('VUE_APP_SLS_LOGSTORE', 'rum-traces-dev'),\n time: 10,\n count: 10,\n topic: 'rum-monitor',\n source: 'web',\n enabled: getEnv('VUE_APP_SLS_ENABLED', 'true') !== 'false',\n debug: isDebugEnabled,\n appName: 'live-admin-v3',\n appVersion: getEnv('PACKAGE_VERSION', '1.0.0'),\n retryCount: 3,\n retryInterval: 2000\n};\n\nif (typeof console !== 'undefined' && isDebugEnabled) {\n console.log('🔧 SLS Config:', {\n enabled: slsConfig.enabled,\n debug: slsConfig.debug,\n host: slsConfig.host,\n project: slsConfig.project,\n logstore: slsConfig.logstore,\n envCheck: {\n VUE_APP_SLS_ENABLED: getEnv('VUE_APP_SLS_ENABLED'),\n VUE_APP_RUM_DEBUG: getEnv('VUE_APP_RUM_DEBUG')\n }\n });\n}\n\nexport interface MitoSampleRateConfig {\n error: number;\n click: number;\n route: number;\n custom: number;\n xhr: number;\n}\n\nexport interface MitoConfig {\n dsn: string | null;\n appName: string;\n appVersion: string;\n environment: string;\n debug: boolean;\n maxBreadcrumbs: number;\n sampleRate: MitoSampleRateConfig;\n vue: {\n Vue?: any;\n lifecycle: boolean;\n performance: boolean;\n };\n network: {\n xhr: boolean;\n fetch: boolean;\n ignoreUrls: (string | RegExp)[];\n responseSizeLimit: number;\n };\n error: {\n javascript: boolean;\n promise: boolean;\n resource: boolean;\n ignoreErrors: (string | RegExp)[];\n };\n user: {\n click: boolean;\n route: boolean;\n performance: boolean;\n sensitiveSelectors: string[];\n };\n breadcrumb: {\n console: boolean;\n dom: boolean;\n navigation: boolean;\n customTypes: string[];\n };\n transport: {\n type: 'xhr' | 'fetch' | 'image';\n batch: {\n size: number;\n interval: number;\n immediateOnError: boolean;\n };\n retry: {\n times: number;\n interval: number;\n };\n };\n}\n\nexport const mitoConfig: MitoConfig = {\n dsn: getEnv('VUE_APP_RUM_DSN', '') || null,\n appName: 'live-admin-v3',\n appVersion: getEnv('PACKAGE_VERSION', '1.0.0'),\n environment: getEnv('NODE_ENV', 'development'),\n debug: isDebugEnabled,\n maxBreadcrumbs: 20,\n sampleRate: {\n error: 1.0,\n click: isProduction ? 0.1 : 1.0,\n route: 1.0,\n custom: 1.0,\n xhr: isProduction ? 0.5 : 1.0\n },\n vue: {\n Vue: undefined,\n lifecycle: true,\n performance: true\n },\n network: {\n xhr: true,\n fetch: true,\n ignoreUrls: [/sls\\.aliyuncs\\.com/, /file:\\/\\//],\n responseSizeLimit: 500\n },\n error: {\n javascript: true,\n promise: true,\n resource: true,\n ignoreErrors: [/third-party/, /Network timeout/]\n },\n user: {\n click: true,\n route: true,\n performance: true,\n sensitiveSelectors: [\n 'input[type=\"password\"]',\n 'input[name*=\"password\"]',\n 'input[name*=\"token\"]',\n 'textarea[name*=\"secret\"]'\n ]\n },\n breadcrumb: {\n console: isDebugEnabled,\n dom: true,\n navigation: true,\n customTypes: ['vue', 'vuex', 'axios']\n },\n transport: {\n type: 'xhr',\n batch: {\n size: 10,\n interval: 5000,\n immediateOnError: true\n },\n retry: {\n times: 3,\n interval: 2000\n }\n }\n};\n\nexport interface TransformContext {\n store?: any;\n router?: any;\n}\n\nexport const getUserInfo = (store?: any): any => {\n try {\n if (!store || !store.state) {\n return {};\n }\n\n const userModule = store.state.user || {};\n const userInfo = userModule.userInfo || userModule || {};\n const getters = store.getters || {};\n\n return {\n userId: userInfo.userId || userInfo.id || getters['user/userId'],\n userName: userInfo.userName || userInfo.contact || userInfo.name,\n accountId: userInfo.accountId,\n email: userInfo.email,\n roles: userInfo.roles || [],\n permissions: getters['user/permissions'] || userInfo.permissions || []\n };\n } catch (error) {\n console.warn('Failed to get user info from store:', error);\n return {};\n }\n};\n\nexport const transformDataForSLS = (data: any, context: TransformContext = {}): any => {\n const timestamp = new Date().toISOString();\n const userInfo = getUserInfo(context.store);\n\n const dimensions: Record<string, any> = {\n pageTitle: typeof document !== 'undefined' ? document.title : '',\n path: typeof window !== 'undefined' ? window.location.pathname : '',\n search: typeof window !== 'undefined' ? window.location.search : '',\n hash: typeof window !== 'undefined' ? window.location.hash : '',\n ...(userInfo && {\n userId: userInfo.userId,\n userName: userInfo.userName,\n accountId: userInfo.accountId,\n userEmail: userInfo.email,\n userRoles: (userInfo.roles || []).join(','),\n userPermissions: (userInfo.permissions || []).join(',')\n }),\n ...data.customData\n };\n\n if (data.type === 'click') {\n const target = data.target || {};\n const page = data.page || {};\n\n dimensions.clickBizId = data.bizId;\n dimensions.clickTargetTag = target.tagName;\n dimensions.clickTargetId = target.id;\n dimensions.clickTargetClass = target.className;\n dimensions.clickTargetSelector = target.selector;\n dimensions.clickTargetText = target.textContent;\n\n dimensions.clickPageUrl = page.url;\n dimensions.clickPagePath = page.path;\n dimensions.clickPageTitle = page.title;\n\n dimensions.clickX = data.x;\n dimensions.clickY = data.y;\n }\n\n return {\n __time__: Math.floor(Date.now() / 1000),\n __source__: 'live-admin-v3',\n timestamp,\n environment: mitoConfig.environment,\n sessionId: getSessionId(),\n user: userInfo,\n dataType: data.type || 'unknown',\n metricType: getMetricType(data),\n value: extractValue(data),\n event: {\n type: data.type,\n url:\n typeof window !== 'undefined' && window.location\n ? window.location.href\n : '',\n userAgent:\n typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',\n referrer:\n typeof document !== 'undefined' ? document.referrer : undefined\n },\n techStack: {\n vue: (context as any).Vue?.version || 'unknown',\n platform:\n typeof navigator !== 'undefined' ? navigator.platform : 'unknown',\n language:\n typeof navigator !== 'undefined' ? navigator.language : 'unknown'\n },\n rawData: isDebugEnabled ? data : undefined,\n dimensions\n };\n};\n\nexport const shouldReport = (data: any): boolean => {\n const dataType = data.type as keyof MitoSampleRateConfig;\n const sampleRate = (mitoConfig.sampleRate as any)[dataType] || 0;\n\n if (sampleRate === 0) return false;\n if (sampleRate === 1) return true;\n\n return Math.random() < sampleRate;\n};\n","import { init } from '@mitojs/browser';\nimport {\n mitoConfig,\n slsConfig,\n transformDataForSLS,\n shouldReport,\n type MitoConfig,\n type TransformContext\n} from './config';\nimport {\n SLSWebTrackingAdapter,\n type SLSAdapterConfig\n} from '../transport/SLSWebTrackingAdapter';\n\nexport interface MitoSLSAdapterOptions extends MitoConfig {\n slsConfigOverride?: Partial<SLSAdapterConfig>;\n}\n\nexport class MitoSLSAdapter {\n private options: MitoSLSAdapterOptions;\n private mitoInstance: any = null;\n private slsAdapter: SLSWebTrackingAdapter | null = null;\n private store: any = null;\n private router: any = null;\n private isInitialized = false;\n\n constructor(options: Partial<MitoSLSAdapterOptions> = {}) {\n this.options = {\n ...mitoConfig,\n ...options\n } as MitoSLSAdapterOptions;\n\n this.handleDataReport = this.handleDataReport.bind(this);\n this.handleRouteChange = this.handleRouteChange.bind(this);\n this.handleError = this.handleError.bind(this);\n this.addBreadcrumb = this.addBreadcrumb.bind(this);\n }\n\n addBreadcrumb(payload: any): void {\n if (!this.mitoInstance || !this.mitoInstance.breadcrumb) {\n return;\n }\n\n const breadcrumb = this.mitoInstance.breadcrumb;\n\n if (typeof breadcrumb.add === 'function') {\n breadcrumb.add(payload);\n return;\n }\n\n if (typeof breadcrumb.push === 'function') {\n breadcrumb.push(payload);\n }\n }\n\n async init(context: TransformContext & { Vue?: any } = {}): Promise<void> {\n if (this.isInitialized) {\n console.warn('MitoSLSAdapter already initialized');\n return;\n }\n\n this.store = context.store;\n this.router = context.router;\n\n if (!this.options.dsn) {\n console.warn(\n 'MitoSLSAdapter: DSN not configured, RUM system will run in simulation mode'\n );\n }\n\n try {\n const slsConfigOverride = this.options.slsConfigOverride || {};\n this.slsAdapter = new SLSWebTrackingAdapter({\n ...slsConfig,\n ...slsConfigOverride\n });\n await this.slsAdapter.init();\n\n this.mitoInstance = init({\n dsn: this.options.dsn || undefined,\n debug: this.options.debug,\n maxBreadcrumbs: this.options.maxBreadcrumbs,\n Vue: context.Vue || this.options.vue?.Vue,\n framework: {\n vue: true\n },\n beforeDataReport: this.handleDataReport,\n silent: !this.options.debug,\n enableUrlHash: true,\n enableUserAgent: true,\n enableHistory: true,\n performance: {\n enable: this.options.user.performance,\n sampleRate: (this.options.sampleRate as any).performance || 1.0\n },\n user: {\n enableClickTrack: this.options.user.click,\n clickTrackSampleRate: (this.options.sampleRate as any).click,\n ignoreSelector: this.options.user.sensitiveSelectors.join(', ')\n },\n api: {\n enableApiMonitor: this.options.network.xhr,\n apiMonitorSampleRate: (this.options.sampleRate as any).xhr,\n ignoreUrls: this.options.network.ignoreUrls,\n requestSizeLimit: this.options.network.responseSizeLimit * 1024\n }\n } as any);\n\n this.setupVueIntegration();\n this.setupRouterIntegration();\n this.setupErrorHandling();\n\n this.isInitialized = true;\n if (this.options.debug) {\n console.log('MitoSLSAdapter initialized successfully');\n }\n } catch (error) {\n console.error('Failed to initialize MitoSLSAdapter:', error);\n this.handleError(error);\n }\n }\n\n private setupVueIntegration(): void {\n if (!this.store) {\n console.warn('Vuex store not provided, some features may be limited');\n return;\n }\n\n this.store.subscribe((mutation: any) => {\n try {\n if (this.shouldTrackMutation(mutation)) {\n this.addBreadcrumb({\n type: 'vuex',\n message: `Vuex: ${mutation.type}`,\n category: 'vuex',\n data: {\n mutation: mutation.type,\n payload: mutation.payload\n }\n });\n }\n } catch (error) {\n console.warn('Failed to track Vuex mutation:', error);\n }\n });\n\n if (this.options.debug) {\n console.log('Vue integration configured');\n }\n }\n\n private setupRouterIntegration(): void {\n if (!this.router) {\n console.warn('Vue router not provided, route tracking disabled');\n return;\n }\n\n this.router.afterEach((to: any, from: any) => {\n try {\n this.handleRouteChange(to, from);\n } catch (error) {\n console.warn('Failed to handle route change:', error);\n }\n });\n\n if (this.options.debug) {\n console.log('Router integration configured');\n }\n }\n\n private setupErrorHandling(): void {\n if (this.options.debug) {\n console.log('Error handling configured');\n }\n }\n\n handleDataReport(data: any): boolean | void {\n try {\n if (this.options.debug) {\n console.log('🔍 MitoJS Data Report:', {\n type: data.type,\n timestamp: data.t || Date.now(),\n data\n });\n }\n\n if (!shouldReport(data)) {\n if (this.options.debug) {\n console.log('⏭️ Data filtered by sampling rate:', data.type);\n }\n return false;\n }\n\n const slsData = transformDataForSLS(data, {\n store: this.store,\n router: this.router\n });\n\n this.sendToSLS(slsData);\n\n return false;\n } catch (error) {\n console.error('Failed to handle data report:', error);\n return false;\n }\n }\n\n handleRouteChange(to: any, from: any): void {\n try {\n const routeData = {\n type: 'route',\n from: {\n path: from.fullPath,\n name: from.name,\n params: from.params,\n query: from.query\n },\n to: {\n path: to.fullPath,\n name: to.name,\n params: to.params,\n query: to.query\n },\n timestamp: Date.now()\n };\n\n this.addBreadcrumb({\n type: 'route',\n message: `Route: ${from.fullPath} -> ${to.fullPath}`,\n category: 'navigation',\n data: routeData\n });\n\n if (shouldReport(routeData)) {\n const slsData = transformDataForSLS(routeData, {\n store: this.store,\n router: this.router\n });\n this.sendToSLS(slsData);\n }\n } catch (error) {\n console.error('Failed to handle route change:', error);\n }\n }\n\n handleError(error: any): void {\n try {\n const errorData = {\n type: 'error',\n message: error?.message || 'Unknown error',\n stack: error?.stack,\n name: error?.name,\n timestamp: Date.now()\n };\n\n this.addBreadcrumb({\n type: 'error',\n message: errorData.message,\n category: 'error',\n data: errorData\n });\n\n if (shouldReport(errorData)) {\n const slsData = transformDataForSLS(errorData, {\n store: this.store,\n router: this.router\n });\n this.sendToSLS(slsData);\n }\n } catch (e) {\n console.error('Failed to handle error:', e);\n }\n }\n\n async sendToSLS(data: any): Promise<void> {\n try {\n if (!this.slsAdapter) {\n if (this.options.debug) {\n console.log('📝 RUM Data [SIMULATION MODE]:', data);\n }\n return;\n }\n\n const slsLogData = this.transformDataForSLSLog(data);\n if (this.options.debug) {\n console.log('🔧 Transformed SLS Log Data:', slsLogData);\n }\n\n await this.slsAdapter.sendLog(slsLogData);\n\n if (this.options.debug) {\n console.log('✅ RUM Data sent to SLS successfully');\n }\n } catch (error) {\n console.error('❌ Failed to send data to SLS:', error);\n\n if (this.options.debug) {\n console.log('🔄 RUM Data [FALLBACK MODE]:', data);\n }\n }\n }\n\n transformDataForSLSLog(data: any): any {\n return {\n eventType: data.dataType || data.event?.type || 'unknown',\n category: this.getEventCategory(data.dataType),\n level: this.getEventLevel(data.dataType),\n ...data.event,\n ...data.dimensions,\n ...data.rawData\n };\n }\n\n getEventCategory(dataType: string): string {\n switch (dataType) {\n case 'error':\n return 'error';\n case 'performance':\n return 'performance';\n case 'click':\n case 'route':\n return 'user';\n case 'xhr':\n return 'general';\n default:\n return 'general';\n }\n }\n\n getEventLevel(dataType: string): string {\n switch (dataType) {\n case 'error':\n return 'error';\n case 'xhr':\n return 'warn';\n default:\n return 'info';\n }\n }\n\n getUserInfoFromStore(): any {\n try {\n const user = this.store?.state?.user || {};\n return {\n userId: user.userId || user.id,\n userName: user.userName || user.name,\n accountId: user.accountId\n };\n } catch (error) {\n console.warn('Failed to get user info from store:', error);\n return {};\n }\n }\n\n shouldTrackMutation(mutation: any): boolean {\n const ignoredMutations = ['SET_LOADING', 'SET_CURRENT_PAGE', 'UPDATE_MOUSE_POSITION'];\n return !ignoredMutations.includes(mutation.type);\n }\n\n trackEvent(eventData: Record<string, any>): void {\n try {\n const customData = {\n type: 'custom',\n timestamp: Date.now(),\n ...eventData\n };\n\n this.addBreadcrumb({\n type: 'custom',\n message: `Custom Event: ${eventData.name || 'unknown'}`,\n category: 'custom',\n data: customData\n });\n\n if (shouldReport(customData)) {\n const slsData = transformDataForSLS(customData, {\n store: this.store,\n router: this.router\n });\n this.sendToSLS(slsData);\n }\n } catch (error) {\n console.error('Failed to track custom event:', error);\n }\n }\n\n setUser(userInfo: {\n userId?: string;\n userName?: string;\n email?: string;\n accountId?: string;\n roles?: string[];\n }): void {\n try {\n if (this.mitoInstance && this.mitoInstance.setUser) {\n this.mitoInstance.setUser({\n id: userInfo.userId,\n username: userInfo.userName,\n email: userInfo.email\n });\n }\n\n if (this.slsAdapter && userInfo.userId) {\n this.slsAdapter.setUserId(userInfo.userId);\n }\n } catch (error) {\n console.error('Failed to set user info:', error);\n }\n }\n\n getBreadcrumbs(): any[] {\n try {\n return this.mitoInstance?.getBreadcrumbs?.() || [];\n } catch (error) {\n console.error('Failed to get breadcrumbs:', error);\n return [];\n }\n }\n\n destroy(): void {\n try {\n if (typeof window !== 'undefined') {\n window.removeEventListener('error', this.handleError as any);\n window.removeEventListener(\n 'unhandledrejection',\n this.handleError as any\n );\n }\n\n if (this.mitoInstance && this.mitoInstance.destroy) {\n this.mitoInstance.destroy();\n }\n\n if (this.slsAdapter) {\n this.slsAdapter.destroy();\n }\n\n this.isInitialized = false;\n if (this.options.debug) {\n console.log('MitoSLSAdapter destroyed');\n }\n } catch (error) {\n console.error('Failed to destroy MitoSLSAdapter:', error);\n }\n }\n}\n\nlet instance: MitoSLSAdapter | null = null;\n\nexport const getMitoAdapter = (\n options: Partial<MitoSLSAdapterOptions> = {}\n): MitoSLSAdapter => {\n if (!instance) {\n instance = new MitoSLSAdapter(options);\n }\n return instance;\n};\n\nexport const initRUMCore = async (\n context: TransformContext & { Vue?: any },\n options: Partial<MitoSLSAdapterOptions> = {}\n): Promise<MitoSLSAdapter> => {\n const adapter = getMitoAdapter(options);\n await adapter.init(context);\n return adapter;\n};\n\nexport const getRUMCoreInstance = (): MitoSLSAdapter | null => instance;\n","import SlsTracker from '@aliyun-sls/web-track-browser';\nimport { getRUMEnv } from '../core/env';\n\nconst getEnv = (key: string, defaultValue = ''): string => {\n const env = getRUMEnv();\n if (env && Object.prototype.hasOwnProperty.call(env, key)) {\n return (env as any)[key] || defaultValue;\n }\n return defaultValue;\n};\n\nexport interface SLSAdapterConfig {\n host?: string;\n project?: string;\n logstore?: string;\n time?: number;\n count?: number;\n topic?: string;\n source?: string;\n environment?: string;\n debug?: boolean;\n enabled?: boolean;\n userId?: string | null;\n sessionId?: string;\n appName?: string;\n appVersion?: string;\n retryCount?: number;\n retryInterval?: number;\n}\n\nexport class SLSWebTrackingAdapter {\n private config: Required<SLSAdapterConfig>;\n private slsTracker: any = null;\n private isInitialized = false;\n private isDestroyed = false;\n private pendingLogs: any[] = [];\n private retryQueue: Array<{\n data: any;\n error: Error;\n timestamp: number;\n retryCount: number;\n }> = [];\n\n constructor(config: SLSAdapterConfig = {}) {\n this.config = {\n host:\n config.host ||\n getEnv('VUE_APP_SLS_HOST', 'cn-shenzhen.log.aliyuncs.com'),\n project:\n config.project || getEnv('VUE_APP_SLS_PROJECT', 'live-admin-rum'),\n logstore: config.logstore || 'rum-traces-dev',\n time: config.time ?? 10,\n count: config.count ?? 10,\n topic: config.topic || 'rum-monitor',\n source: config.source || 'web',\n environment: config.environment || getEnv('NODE_ENV', 'development'),\n debug: config.debug ?? (getEnv('VUE_APP_RUM_DEBUG', 'false') === 'true'),\n enabled: config.enabled ?? true,\n userId: config.userId ?? null,\n sessionId: config.sessionId || this.generateSessionId(),\n appName: config.appName || 'live-admin-v3',\n appVersion: config.appVersion || getEnv('PACKAGE_VERSION', '1.0.0'),\n retryCount: config.retryCount ?? 3,\n retryInterval: config.retryInterval ?? 2000\n };\n\n this.handleBeforeSend = this.handleBeforeSend.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n async init(): Promise<void> {\n if (this.isInitialized) {\n console.warn('SLSWebTrackingAdapter already initialized');\n return;\n }\n\n if (this.isDestroyed) {\n throw new Error(\n 'SLSWebTrackingAdapter has been destroyed, cannot reinitialize'\n );\n }\n\n if (!this.config.enabled) {\n if (this.config.debug) {\n console.log('SLSWebTrackingAdapter is disabled');\n }\n return;\n }\n\n if (this.config.debug) {\n console.log('🚀 Initializing SLSWebTrackingAdapter...', {\n config: this.config,\n SlsTracker: typeof SlsTracker\n });\n }\n\n try {\n this.slsTracker = new (SlsTracker as any)({\n host: this.config.host,\n project: this.config.project,\n logstore: this.config.logstore,\n time: this.config.time,\n count: this.config.count,\n topic: this.config.topic,\n source: this.config.source,\n autoPopulateFields: false,\n beforeSend: this.handleBeforeSend\n });\n\n this.isInitialized = true;\n\n if (this.config.debug) {\n console.log('✅ SLSWebTrackingAdapter initialized successfully', {\n project: this.config.project,\n logstore: this.config.logstore,\n host: this.config.host,\n trackerInstance: !!this.slsTracker\n });\n }\n\n await this.sendLog({\n type: 'system',\n category: 'init',\n message: 'SLS WebTracking adapter initialized successfully',\n level: 'info',\n timestamp: Date.now()\n });\n } catch (error: any) {\n console.error('❌ Failed to initialize SLSWebTrackingAdapter:', error);\n this.handleError(error);\n throw error;\n }\n }\n\n async sendLog(data: Record<string, any>): Promise<void> {\n if (this.config.debug) {\n console.log('📤 Sending log to SLS...', {\n originalData: data,\n isReady: this.checkReady(),\n hasTracker: !!this.slsTracker,\n isInitialized: this.isInitialized\n });\n }\n\n if (!this.checkReady()) {\n if (this.config.debug) {\n console.log('❌ SLS adapter not ready, skipping log send');\n }\n return;\n }\n\n try {\n const logData = await this.transformLogData(data);\n\n if (this.config.debug) {\n console.log('🔧 Transformed SLS Log Data:', logData);\n }\n\n await this.slsTracker.send(logData);\n\n if (this.config.debug) {\n console.log('✅ Log sent to SLS successfully');\n }\n } catch (error: any) {\n console.error('❌ Failed to send log to SLS:', error);\n await this.handleSendError(data, error);\n }\n }\n\n async sendBatchLogs(logs: Record<string, any>[]): Promise<void> {\n if (!this.checkReady()) {\n return;\n }\n\n if (!Array.isArray(logs) || logs.length === 0) {\n return;\n }\n\n try {\n const transformedLogs = await Promise.all(\n logs.map((log) => this.transformLogData(log))\n );\n\n for (const logData of transformedLogs) {\n await this.slsTracker.send(logData);\n }\n\n if (this.config.debug) {\n console.log(\n `Batch sent ${transformedLogs.length} logs to SLS successfully`\n );\n }\n } catch (error) {\n console.error('Failed to send batch logs to SLS:', error);\n\n for (const log of logs) {\n await this.handleSendError(log, error as any);\n }\n }\n }\n\n async transformLogData(data: Record<string, any>): Promise<Record<string, any>> {\n const timestamp = Math.floor(Date.now() / 1000);\n\n const logData: Record<string, any> = {\n __time__: timestamp,\n __source__: this.config.source,\n\n // 基础信息\n event_type: data.eventType || data.type || 'unknown',\n category: data.category || 'general',\n level: data.level || 'info',\n client_timestamp: Date.now(),\n\n // 应用信息\n app_name: this.config.appName,\n // app_version: this.config.appVersion,\n environment: this.config.environment,\n\n // 会话信息\n session_id: this.config.sessionId,\n\n // 页面信息\n page_url:\n typeof window !== 'undefined' && window.location\n ? window.location.href\n : '',\n page_title:\n typeof document !== 'undefined' ? document.title : undefined,\n page_path:\n typeof window !== 'undefined' && window.location\n ? window.location.pathname\n : '',\n\n // 用户代理信息\n user_agent:\n typeof navigator !== 'undefined' ? navigator.userAgent : undefined,\n language:\n typeof navigator !== 'undefined' ? navigator.language : undefined\n };\n\n // 用户标识,优先使用上游数据\n if (this.config.userId) {\n logData.user_id = this.config.userId;\n }\n if (data.userId) {\n logData.user_id = data.userId;\n }\n if (data.userName) {\n logData.user_name = data.userName;\n }\n\n let isInternalUser = false;\n if (data.userEmail && typeof data.userEmail === 'string') {\n const emailParts = data.userEmail.split('@');\n if (emailParts.length === 2) {\n const domain = emailParts[1].toLowerCase();\n const internalDomains = getEnv(\n 'VUE_APP_RUM_INTERNAL_EMAIL_DOMAINS',\n 'polyv.net,polyv.com'\n )\n .split(',')\n .map((item) => item.trim().toLowerCase())\n .filter(Boolean);\n if (internalDomains.length > 0 && domain) {\n isInternalUser = internalDomains.some((internalDomain) => {\n if (!internalDomain) return false;\n return (\n domain === internalDomain ||\n domain.endsWith(`.${internalDomain}`)\n );\n });\n }\n }\n }\n\n logData.is_internal_user = isInternalUser;\n\n // 根据事件类型添加特定字段\n if (logData.event_type === 'error') {\n this.addErrorFields(logData, data);\n } else if (\n logData.event_type === 'xhr' ||\n logData.event_type === 'fetch'\n ) {\n this.addApiFields(logData, data);\n } else if (logData.event_type === 'click') {\n this.addClickFields(logData, data);\n }\n\n // 添加 detail_json,仅保留 hash 信息\n try {\n let hash = '';\n if (data && typeof data.hash === 'string') {\n hash = data.hash;\n } else if (\n data &&\n data.dimensions &&\n typeof data.dimensions.hash === 'string'\n ) {\n hash = data.dimensions.hash;\n } else if (\n typeof window !== 'undefined' &&\n typeof window.location !== 'undefined'\n ) {\n hash = window.location.hash || '';\n }\n\n logData.detail_json = JSON.stringify({ hash });\n } catch (error) {\n console.warn('Failed to serialize detail data:', error);\n logData.detail_json = JSON.stringify({\n error: 'Failed to serialize data'\n });\n }\n\n return logData;\n }\n\n private addErrorFields(\n logData: Record<string, any>,\n data: Record<string, any>\n ): void {\n if (data.message) {\n logData.error_message = String(data.message);\n }\n\n if (data.stack) {\n logData.error_stack = String(data.stack);\n }\n\n if (data.filename) {\n logData.error_filename = data.filename;\n }\n\n if (data.lineno) {\n logData.error_lineno = String(data.lineno);\n }\n\n if (data.colno) {\n logData.error_colno = String(data.colno);\n }\n\n if (data.name) {\n logData.error_name = data.name;\n }\n }\n\n private addApiFields(\n logData: Record<string, any>,\n data: Record<string, any>\n ): void {\n if (data.url) {\n logData.api_url = data.url;\n }\n\n if (data.method) {\n logData.api_method = data.method;\n }\n\n if (data.status !== undefined) {\n logData.api_status = Number(data.status);\n }\n\n if (data.duration !== undefined) {\n logData.api_duration = Number(data.duration);\n }\n\n if (data.responseSize !== undefined) {\n logData.api_response_size = Number(data.responseSize);\n }\n }\n\n private addClickFields(\n logData: Record<string, any>,\n data: Record<string, any>\n ): void {\n if (data.clickBizId || data.bizId) {\n logData.click_biz_id = data.clickBizId || data.bizId;\n }\n\n if (data.target) {\n logData.click_target = data.target;\n }\n\n if (data.selector) {\n logData.click_selector = data.selector;\n }\n\n if (data.text) {\n logData.click_text = data.text;\n }\n\n if (data.x !== undefined) {\n logData.click_x = Number(data.x);\n }\n\n if (data.y !== undefined) {\n logData.click_y = Number(data.y);\n }\n }\n\n private filterSensitiveData(data: Record<string, any>): Record<string, any> {\n const sensitivePatterns = [\n /password/i,\n /token/i,\n /secret/i,\n /key/i,\n /auth/i,\n /credential/i\n ];\n\n const filtered: Record<string, any> = { ...data };\n\n Object.keys(filtered).forEach((key) => {\n const value = filtered[key];\n if (typeof value === 'string') {\n if (sensitivePatterns.some((pattern) => pattern.test(key))) {\n filtered[key] = '[FILTERED]';\n }\n\n if (filtered[key].length > 500) {\n filtered[key] = `${filtered[key].substring(0, 500)}...`;\n }\n }\n });\n\n return filtered;\n }\n\n private async handleSendError(data: any, error: Error): Promise<void> {\n const retryItem = {\n data,\n error,\n timestamp: Date.now(),\n retryCount: 0\n };\n\n this.retryQueue.push(retryItem);\n\n if (this.shouldRetry(error)) {\n setTimeout(() => {\n this.retryFailedLogs();\n }, this.config.retryInterval);\n }\n }\n\n private async retryFailedLogs(): Promise<void> {\n if (this.retryQueue.length === 0) {\n return;\n }\n\n const itemsToRetry = this.retryQueue.filter(\n (item) => item.retryCount < this.config.retryCount\n );\n\n this.retryQueue = this.retryQueue.filter(\n (item) => item.retryCount >= this.config.retryCount\n );\n\n for (const item of itemsToRetry) {\n try {\n item.retryCount++;\n await this.sendLog(item.data);\n\n const index = this.retryQueue.indexOf(item);\n if (index > -1) {\n this.retryQueue.splice(index, 1);\n }\n } catch (error) {\n console.warn(\n `Retry failed for log (attempt ${item.retryCount}):`,\n error\n );\n\n if (item.retryCount < this.config.retryCount) {\n setTimeout(() => {\n this.retryFailedLogs();\n }, this.config.retryInterval * item.retryCount);\n } else {\n console.error('Max retry attempts reached, dropping log:', item.data);\n }\n }\n }\n }\n\n private shouldRetry(error: Error): boolean {\n const retryableErrors = [\n 'Network timeout',\n 'Connection failed',\n 'Service unavailable',\n 'Rate limit exceeded'\n ];\n\n return retryableErrors.some(\n (pattern) => (error.message && error.message.includes(pattern))\n );\n }\n\n private handleError(error: Error): void {\n console.error('SLSWebTrackingAdapter Error:', error);\n }\n\n private checkReady(): boolean {\n if (!this.config.enabled) {\n return false;\n }\n\n if (!this.isInitialized) {\n console.warn('SLSWebTrackingAdapter not initialized');\n return false;\n }\n\n if (!this.slsTracker) {\n console.warn('SLS Tracker not available');\n return false;\n }\n\n return true;\n }\n\n private generateSessionId(): string {\n if (typeof sessionStorage !== 'undefined') {\n let sessionId = sessionStorage.getItem('sls_session_id');\n if (!sessionId) {\n sessionId = `session_${Date.now()}_${Math.random()\n .toString(36)\n .substring(2, 9)}`;\n sessionStorage.setItem('sls_session_id', sessionId);\n }\n return sessionId;\n }\n\n return `session_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n }\n\n handleBeforeSend(logData: any): boolean | Record<string, any> {\n try {\n const dataSize = JSON.stringify(logData).length;\n const maxSize = 1024 * 1024; // 1MB\n\n if (dataSize > maxSize) {\n console.warn('Log data too large, skipping:', dataSize);\n return false;\n }\n\n const filteredData = this.filterSensitiveData(logData);\n\n if (this.config.debug) {\n console.log('Log before send:', filteredData);\n }\n\n return filteredData;\n } catch (error) {\n console.error('Error in beforeSend handler:', error);\n return false;\n }\n }\n\n setUserId(userId: string): void {\n this.config.userId = userId;\n }\n\n updateConfig(newConfig: Partial<SLSAdapterConfig>): void {\n this.config = { ...this.config, ...newConfig };\n }\n\n getConfig(): SLSAdapterConfig {\n return { ...this.config };\n }\n\n getStats(): {\n isInitialized: boolean;\n isDestroyed: boolean;\n pendingLogsCount: number;\n retryQueueCount: number;\n config: {\n project: string | undefined;\n logstore: string | undefined;\n enabled: boolean | undefined;\n };\n } {\n return {\n isInitialized: this.isInitialized,\n isDestroyed: this.isDestroyed,\n pendingLogsCount: this.pendingLogs.length,\n retryQueueCount: this.retryQueue.length,\n config: {\n project: this.config.project,\n logstore: this.config.logstore,\n enabled: this.config.enabled\n }\n };\n }\n\n destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n\n try {\n if (this.retryQueue.length > 0 && this.config.debug) {\n console.warn(\n `Destroying adapter with ${this.retryQueue.length} items in retry queue`\n );\n }\n\n if (this.slsTracker && this.slsTracker.destroy) {\n this.slsTracker.destroy();\n }\n\n this.isDestroyed = true;\n this.isInitialized = false;\n this.slsTracker = null;\n this.pendingLogs = [];\n this.retryQueue = [];\n\n if (this.config.debug) {\n console.log('SLSWebTrackingAdapter destroyed');\n }\n } catch (error) {\n console.error('Error destroying SLSWebTrackingAdapter:', error);\n }\n }\n}\n","import {\n RUMManagerVue2,\n type RUMManagerContext\n} from './RUMManager.vue2';\nimport type { MitoSLSAdapterOptions } from '../core/MitoSLSAdapter';\n\nconst rumManagerVue2 = new RUMManagerVue2();\n\nexport const initRUMSystem = (\n context: RUMManagerContext,\n options: Partial<MitoSLSAdapterOptions> = {}\n) => rumManagerVue2.init(context, options);\n\nexport const trackEvent = (\n eventName: string,\n eventData?: Record<string, any>\n) => rumManagerVue2.trackEvent(eventName, eventData || {});\n\nexport const trackPerformance = (performanceData: Record<string, any>) =>\n rumManagerVue2.trackPerformance(performanceData);\n\nexport const trackAction = (\n action: string,\n actionData?: Record<string, any>\n) => rumManagerVue2.trackAction(action, actionData || {});\n\nexport const trackMetric = (\n metricName: string,\n value: number,\n dimensions?: Record<string, any>\n) => rumManagerVue2.trackMetric(metricName, value, dimensions || {});\n\nexport const getBreadcrumbs = () => rumManagerVue2.getBreadcrumbs();\n\nexport const enableRUM = () => rumManagerVue2.enable();\nexport const disableRUM = () => rumManagerVue2.disable();\nexport const getRUMConfig = () => rumManagerVue2.getConfig();\nexport const destroyRUM = () => rumManagerVue2.destroy();\nexport const getRUMManager = () => rumManagerVue2;\n\nexport const RUMPluginVue2 = {\n install(Vue: any) {\n Vue.prototype.$rum = {\n trackEvent,\n trackPerformance,\n trackAction,\n trackMetric,\n getBreadcrumbs,\n enable: enableRUM,\n disable: disableRUM,\n getConfig: getRUMConfig\n };\n\n (Vue as any).$rumManager = rumManagerVue2;\n }\n};\n","import { mitoConfig, slsConfig, type TransformContext } from '../core/config';\nimport { getRUMEnv } from '../core/env';\nimport {\n initRUMCore,\n type MitoSLSAdapterOptions\n} from '../core/MitoSLSAdapter';\n\nexport interface RUMManagerContext extends TransformContext {\n Vue?: any;\n}\n\nexport class RUMManagerVue2 {\n private adapter: any = null;\n private isInitialized = false;\n private isEnabled = true;\n private context: RUMManagerContext = {};\n\n async init(\n context: RUMManagerContext,\n options: Partial<MitoSLSAdapterOptions> = {}\n ): Promise<void> {\n try {\n if (!this.shouldEnableRUM()) {\n if (mitoConfig.debug) {\n console.log('RUM system is disabled');\n }\n return;\n }\n\n if (this.isInitialized) {\n if (mitoConfig.debug) {\n console.log('RUM system already initialized');\n }\n return;\n }\n\n this.context = {\n store: context.store,\n router: context.router,\n Vue: context.Vue,\n ...context\n };\n\n const mergedOptions: Partial<MitoSLSAdapterOptions> = {\n ...mitoConfig,\n ...options,\n vue: {\n ...(mitoConfig as any).vue,\n ...(options as any).vue\n }\n };\n\n this.adapter = await initRUMCore(\n {\n store: this.context.store,\n router: this.context.router,\n Vue: this.context.Vue\n },\n mergedOptions\n );\n\n this.setUserInfo();\n this.setupUserStateListener();\n this.setupUserInteractionTracking();\n\n this.isInitialized = true;\n if (mitoConfig.debug) {\n console.log('RUM system initialized successfully');\n }\n } catch (error) {\n console.error('Failed to initialize RUM system:', error);\n }\n }\n\n private shouldEnableRUM(): boolean {\n if (!this.isEnabled) {\n return false;\n }\n\n const env = getRUMEnv();\n\n const rumEnabled = (env as any).VUE_APP_RUM_ENABLED;\n if (rumEnabled !== undefined) {\n return rumEnabled === 'true';\n }\n\n const mode = (env as any).MODE;\n const isProdEnv = mode === 'prod' || mode === 'production';\n\n return !isProdEnv;\n }\n\n private setUserInfo(): void {\n if (!this.context.store) {\n return;\n }\n\n try {\n const userModule = this.context.store.state.user || {};\n const user = userModule.userInfo || userModule || {};\n\n if (this.adapter && user.userId) {\n this.adapter.setUser({\n userId: user.userId,\n userName: user.userName,\n accountId: user.accountId,\n roles: user.roles,\n email: user.email\n });\n }\n } catch (error) {\n console.warn('Failed to set user info:', error);\n }\n }\n\n private setupUserStateListener(): void {\n if (!this.context.store) {\n return;\n }\n\n this.context.store.subscribe((mutation: any) => {\n if (mutation.type.includes('user')) {\n this.setUserInfo();\n }\n });\n }\n\n private setupUserInteractionTracking(): void {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return;\n }\n\n document.addEventListener(\n 'click',\n (event: MouseEvent) => {\n try {\n const originalTarget = event.target as HTMLElement | null;\n\n const findClosest = (el: any, selector: string): HTMLElement | null =>\n el && typeof el.closest === 'function' ? el.closest(selector) : null;\n\n let target = findClosest(originalTarget, '[rum-id],[rum-name]');\n\n if (!target) {\n target = findClosest(\n originalTarget,\n 'button, a, [role=\"button\"], [role=\"link\"]'\n );\n }\n\n if (!target && originalTarget && window.getComputedStyle) {\n const style = window.getComputedStyle(originalTarget);\n if (style.cursor === 'pointer') {\n target = originalTarget;\n }\n }\n\n if (!target) {\n return;\n }\n\n const getAttr = (el: any, name: string): string | null =>\n el && typeof el.getAttribute === 'function'\n ? el.getAttribute(name)\n : null;\n\n let bizId =\n getAttr(target, 'rum-id') || getAttr(target, 'rum-name') || '';\n\n if (!bizId) {\n const tagName = target.tagName\n ? target.tagName.toLowerCase()\n : 'element';\n\n const classList = (target.className || '')\n .toString()\n .split(/\\s+/)\n .filter((c: string) => c.trim());\n const primaryClass = classList[0] || 'no-class';\n\n const getLabel = (el: any): string => {\n if (!el) return '';\n const text = (el.textContent || '').trim();\n if (text) return text;\n const ariaLabel = getAttr(el, 'aria-label');\n if (ariaLabel) return ariaLabel;\n const title = getAttr(el, 'title');\n if (title) return title;\n const alt = getAttr(el, 'alt');\n if (alt) return alt;\n const placeholder = getAttr(el, 'placeholder');\n if (placeholder) return placeholder;\n const value = typeof el.value === 'string' ? el.value.trim() : '';\n if (value) return value;\n return '';\n };\n\n const label = getLabel(target);\n const safeLabel =\n (label || primaryClass).replace(/\\s+/g, '_').slice(0, 32) ||\n 'no_label';\n\n const route = (this.context?.router as any)?.currentRoute || {};\n\n const buildRouteKey = (r: any): string => {\n try {\n if (!r) return 'unknown_route';\n\n if (r.name) {\n return String(r.name);\n }\n\n if (Array.isArray(r.matched) && r.matched.length > 0) {\n const record = r.matched[r.matched.length - 1];\n if (record && record.path) {\n return record.path;\n }\n }\n\n if (r.path) {\n return r.path;\n }\n } catch {\n // ignore\n }\n\n return window.location.pathname || 'unknown_route';\n };\n\n const routeKey = buildRouteKey(route);\n\n let indexSuffix = '';\n try {\n const parent = target.parentNode as HTMLElement | null;\n if (parent && parent.children && parent.children.length) {\n const siblings = Array.from(parent.children).filter(\n (el) =>\n el.tagName === target.tagName &&\n (el as HTMLElement).className === target.className\n );\n const index = siblings.indexOf(target);\n if (index >= 0) {\n indexSuffix = `[${index}]`;\n }\n }\n } catch {\n // ignore\n }\n\n bizId = `${routeKey}|${tagName}.${primaryClass}${indexSuffix}|${safeLabel}`;\n }\n\n const targetInfo = {\n tagName: target.tagName,\n className: target.className,\n id: target.id,\n textContent: target.textContent?.substring(0, 50) || '',\n selector: this.getCSSSelector(target)\n };\n\n this.trackAction('click', {\n type: 'click',\n bizId,\n x: event.clientX,\n y: event.clientY,\n target: targetInfo,\n page: {\n url: window.location.href,\n title: document.title,\n path: window.location.pathname\n },\n timestamp: Date.now()\n });\n } catch (error) {\n console.warn('Failed to track click event:', error);\n }\n },\n true\n );\n\n document.addEventListener('visibilitychange', () => {});\n\n if (mitoConfig.debug) {\n console.log('User interaction tracking configured');\n }\n }\n\n private getCSSSelector(element: Element | null): string {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return '';\n }\n\n const path: string[] = [];\n let current: Element | null = element;\n\n while (current && current.nodeType === Node.ELEMENT_NODE) {\n let selector = current.tagName.toLowerCase();\n\n if (current.id) {\n selector += `#${current.id}`;\n path.unshift(selector);\n break;\n }\n\n if ((current as HTMLElement).className) {\n const classes = (current as HTMLElement).className\n .split(' ')\n .filter((c) => c.trim());\n if (classes.length > 0) {\n selector += `.${classes[0]}`;\n }\n }\n\n path.unshift(selector);\n current = current.parentElement;\n\n if (path.length > 5) {\n break;\n }\n }\n\n return path.join(' > ');\n }\n\n trackEvent(eventName: string, eventData: Record<string, any> = {}): void {\n if (!this.checkRUMAvailable()) {\n return;\n }\n\n try {\n this.adapter.trackEvent({\n name: eventName,\n ...eventData\n });\n } catch (error) {\n console.error('Failed to track event:', error);\n }\n }\n\n trackPerformance(performanceData: Record<string, any>): void {\n if (!this.checkRUMAvailable()) {\n return;\n }\n\n try {\n this.adapter.trackEvent({\n name: 'performance',\n type: 'performance',\n ...performanceData\n });\n } catch (error) {\n console.error('Failed to track performance:', error);\n }\n }\n\n trackAction(action: string, actionData: Record<string, any> = {}): void {\n if (!this.checkRUMAvailable()) {\n return;\n }\n\n try {\n this.adapter.trackEvent({\n name: 'user_action',\n action,\n ...actionData\n });\n } catch (error) {\n console.error('Failed to track action:', error);\n }\n }\n\n trackMetric(\n metricName: string,\n value: number,\n dimensions: Record<string, any> = {}\n ): void {\n if (!this.checkRUMAvailable()) {\n return;\n }\n\n try {\n this.adapter.trackEvent({\n name: 'metric',\n metricName,\n value,\n dimensions\n });\n } catch (error) {\n console.error('Failed to track metric:', error);\n }\n }\n\n getBreadcrumbs(): any[] {\n if (!this.checkRUMAvailable()) {\n return [];\n }\n\n try {\n return this.adapter.getBreadcrumbs();\n } catch (error) {\n console.error('Failed to get breadcrumbs:', error);\n return [];\n }\n }\n\n enable(): void {\n this.isEnabled = true;\n if (mitoConfig.debug) {\n console.log('RUM system enabled');\n }\n }\n\n disable(): void {\n this.isEnabled = false;\n if (mitoConfig.debug) {\n console.log('RUM system disabled');\n }\n }\n\n private checkRUMAvailable(): boolean {\n return this.isEnabled && this.isInitialized && !!this.adapter;\n }\n\n getConfig(): Record<string, any> {\n return {\n isInitialized: this.isInitialized,\n isEnabled: this.isEnabled,\n environment: mitoConfig.environment,\n debug: mitoConfig.debug,\n sls: {\n enabled: slsConfig.enabled,\n configured: true,\n project: slsConfig.project,\n logstore: slsConfig.logstore\n }\n };\n }\n\n destroy(): void {\n try {\n if (this.adapter) {\n this.adapter.destroy();\n this.adapter = null;\n }\n\n this.isInitialized = false;\n this.context = {} as RUMManagerContext;\n if (mitoConfig.debug) {\n console.log('RUM system destroyed');\n }\n } catch (error) {\n console.error('Failed to destroy RUM system:', error);\n }\n }\n}\n","import type { App } from 'vue';\nimport { inject } from 'vue';\nimport type { MitoSLSAdapterOptions } from '../core/MitoSLSAdapter';\nimport { RUMManagerVue3 } from './RUMManager.vue3';\n\nexport interface RUMVue3PluginOptions {\n store?: any;\n router?: any;\n coreOptions?: Partial<MitoSLSAdapterOptions>;\n}\n\nexport function createRUMPluginVue3(options: RUMVue3PluginOptions) {\n const manager = new RUMManagerVue3();\n\n return {\n install(app: App) {\n manager.init(\n { store: options.store, router: options.router },\n options.coreOptions || {}\n );\n\n (app.config.globalProperties as any).$rum = {\n trackEvent: manager.trackEvent.bind(manager),\n trackPerformance: manager.trackPerformance.bind(manager),\n trackAction: manager.trackAction.bind(manager),\n trackMetric: manager.trackMetric.bind(manager),\n getBreadcrumbs: manager.getBreadcrumbs.bind(manager),\n enable: manager.enable.bind(manager),\n disable: manager.disable.bind(manager),\n getConfig: manager.getConfig.bind(manager)\n };\n\n app.provide('rum', manager);\n }\n };\n}\n\nexport function useRUM(): RUMManagerVue3 | undefined {\n return inject<RUMManagerVue3>('rum');\n}\n","import type { TransformContext } from '../core/config';\nimport type { MitoSLSAdapterOptions } from '../core/MitoSLSAdapter';\nimport { RUMManagerVue2 } from '../vue2/RUMManager.vue2';\n\nexport interface RUMManagerContextVue3 extends TransformContext {}\n\nexport class RUMManagerVue3 {\n private inner = new RUMManagerVue2();\n\n init(\n context: RUMManagerContextVue3,\n options: Partial<MitoSLSAdapterOptions> = {}\n ): Promise<void> {\n return this.inner.init(context as any, options);\n }\n\n trackEvent(eventName: string, eventData: Record<string, any> = {}): void {\n this.inner.trackEvent(eventName, eventData);\n }\n\n trackPerformance(performanceData: Record<string, any>): void {\n this.inner.trackPerformance(performanceData);\n }\n\n trackAction(action: string, actionData: Record<string, any> = {}): void {\n this.inner.trackAction(action, actionData);\n }\n\n trackMetric(\n metricName: string,\n value: number,\n dimensions: Record<string, any> = {}\n ): void {\n this.inner.trackMetric(metricName, value, dimensions);\n }\n\n getBreadcrumbs(): any[] {\n return this.inner.getBreadcrumbs();\n }\n\n enable(): void {\n this.inner.enable();\n }\n\n disable(): void {\n this.inner.disable();\n }\n\n getConfig(): Record<string, any> {\n return this.inner.getConfig();\n }\n\n destroy(): void {\n this.inner.destroy();\n }\n}\n"],"mappings":"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","names":["getEnv","SlsTracker"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/core/env.ts","../src/core/config.ts","../src/core/MitoSLSAdapter.ts","../src/transport/SLSWebTrackingAdapter.ts","../src/vue2/plugin.vue2.ts","../src/vue2/RUMManager.vue2.ts","../src/vue3/plugin.vue3.ts","../src/vue3/RUMManager.vue3.ts"],"sourcesContent":["export * from './core/env';\nexport * from './core/config';\nexport * from './core/MitoSLSAdapter';\nexport * from './transport/SLSWebTrackingAdapter';\n\nexport * as vue2 from './vue2/plugin.vue2';\nexport {\n initRUMSystem as initRUMSystemVue2,\n trackEvent as trackEventVue2,\n trackPerformance as trackPerformanceVue2,\n trackAction as trackActionVue2,\n trackMetric as trackMetricVue2,\n getBreadcrumbs as getBreadcrumbsVue2,\n enableRUM as enableRUMVue2,\n disableRUM as disableRUMVue2,\n getRUMConfig as getRUMConfigVue2,\n destroyRUM as destroyRUMVue2,\n getRUMManager as getRUMManagerVue2,\n RUMPluginVue2\n} from './vue2/plugin.vue2';\n\nexport * as vue3 from './vue3/plugin.vue3';\nexport {\n createRUMPluginVue3,\n useRUM\n} from './vue3/plugin.vue3';\n","export interface RUMEnv {\n [key: string]: string | undefined;\n}\n\nexport const getRUMEnv = (): RUMEnv => {\n if (typeof window !== 'undefined' && (window as any).VUE_APP_ENV) {\n return (window as any).VUE_APP_ENV as RUMEnv;\n }\n\n if (typeof process !== 'undefined' && (process as any).env) {\n return (process as any).env as RUMEnv;\n }\n\n return {};\n};\n\nexport const RUM_ENV: RUMEnv = getRUMEnv();\n","import type { RUMEnv } from './env';\nimport { getRUMEnv } from './env';\n\nconst getEnv = (key: string, defaultValue = ''): string => {\n const env: RUMEnv = getRUMEnv();\n if (env && Object.prototype.hasOwnProperty.call(env, key)) {\n return (env as any)[key] || defaultValue;\n }\n return defaultValue;\n};\n\nconst isProduction = getEnv('NODE_ENV') === 'production';\nconst isDebugEnabled = getEnv('VUE_APP_RUM_DEBUG', 'false') === 'true';\n\nconst getSessionId = (): string => {\n if (typeof sessionStorage === 'undefined') {\n return `session_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n }\n\n let sessionId = sessionStorage.getItem('rum_session_id');\n if (!sessionId) {\n sessionId = `session_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n sessionStorage.setItem('rum_session_id', sessionId);\n }\n return sessionId;\n};\n\nconst getMetricType = (data: any): string => {\n switch (data.type) {\n case 'performance':\n return 'duration';\n case 'xhr':\n return 'xhr';\n case 'fetch':\n return 'fetch';\n case 'click':\n return 'click';\n case 'route':\n return 'route';\n case 'error':\n return 'error';\n default:\n return 'unknown';\n }\n};\n\nconst extractValue = (data: any): number => {\n switch (data.type) {\n case 'performance':\n return data.duration || 0;\n case 'xhr':\n case 'fetch':\n return data.duration || data.status || 0;\n case 'click':\n case 'error':\n return 1;\n default:\n return 1;\n }\n};\n\nexport interface SlsConfig {\n host: string;\n project: string;\n logstore: string;\n time: number;\n count: number;\n topic: string;\n source: string;\n enabled: boolean;\n debug: boolean;\n appName: string;\n appVersion: string;\n retryCount: number;\n retryInterval: number;\n}\n\nexport const slsConfig: SlsConfig = {\n host: getEnv('VUE_APP_SLS_HOST'),\n project: getEnv('VUE_APP_SLS_PROJECT'),\n logstore: getEnv('VUE_APP_SLS_LOGSTORE'),\n time: 10,\n count: 10,\n topic: 'rum-monitor',\n source: 'web',\n enabled: getEnv('VUE_APP_SLS_ENABLED', 'false') === 'true',\n debug: isDebugEnabled,\n appName: getEnv('VUE_APP_RUM_APP_NAME', 'rum-app'),\n appVersion: getEnv('PACKAGE_VERSION', '1.0.0'),\n retryCount: 3,\n retryInterval: 2000\n};\n\nif (typeof console !== 'undefined' && isDebugEnabled) {\n console.log('🔧 SLS Config:', {\n enabled: slsConfig.enabled,\n debug: slsConfig.debug,\n host: slsConfig.host,\n project: slsConfig.project,\n logstore: slsConfig.logstore,\n envCheck: {\n VUE_APP_SLS_ENABLED: getEnv('VUE_APP_SLS_ENABLED'),\n VUE_APP_RUM_DEBUG: getEnv('VUE_APP_RUM_DEBUG')\n }\n });\n}\n\nexport interface MitoSampleRateConfig {\n error: number;\n click: number;\n route: number;\n custom: number;\n xhr: number;\n}\n\nexport interface MitoConfig {\n dsn: string | null;\n appName: string;\n appVersion: string;\n environment: string;\n debug: boolean;\n maxBreadcrumbs: number;\n sampleRate: MitoSampleRateConfig;\n vue: {\n Vue?: any;\n lifecycle: boolean;\n performance: boolean;\n };\n network: {\n xhr: boolean;\n fetch: boolean;\n ignoreUrls: (string | RegExp)[];\n responseSizeLimit: number;\n };\n error: {\n javascript: boolean;\n promise: boolean;\n resource: boolean;\n ignoreErrors: (string | RegExp)[];\n };\n user: {\n click: boolean;\n route: boolean;\n performance: boolean;\n sensitiveSelectors: string[];\n };\n breadcrumb: {\n console: boolean;\n dom: boolean;\n navigation: boolean;\n customTypes: string[];\n };\n transport: {\n type: 'xhr' | 'fetch' | 'image';\n batch: {\n size: number;\n interval: number;\n immediateOnError: boolean;\n };\n retry: {\n times: number;\n interval: number;\n };\n };\n}\n\nexport const mitoConfig: MitoConfig = {\n dsn: getEnv('VUE_APP_RUM_DSN', '') || null,\n appName: 'live-admin-v3',\n appVersion: getEnv('PACKAGE_VERSION', '1.0.0'),\n environment: getEnv('NODE_ENV', 'development'),\n debug: isDebugEnabled,\n maxBreadcrumbs: 20,\n sampleRate: {\n error: 1.0,\n click: isProduction ? 0.1 : 1.0,\n route: 1.0,\n custom: 1.0,\n xhr: isProduction ? 0.5 : 1.0\n },\n vue: {\n Vue: undefined,\n lifecycle: true,\n performance: true\n },\n network: {\n xhr: true,\n fetch: true,\n ignoreUrls: [/sls\\.aliyuncs\\.com/, /file:\\/\\//],\n responseSizeLimit: 500\n },\n error: {\n javascript: true,\n promise: true,\n resource: true,\n ignoreErrors: [/third-party/, /Network timeout/]\n },\n user: {\n click: true,\n route: true,\n performance: true,\n sensitiveSelectors: [\n 'input[type=\"password\"]',\n 'input[name*=\"password\"]',\n 'input[name*=\"token\"]',\n 'textarea[name*=\"secret\"]'\n ]\n },\n breadcrumb: {\n console: isDebugEnabled,\n dom: true,\n navigation: true,\n customTypes: ['vue', 'vuex', 'axios']\n },\n transport: {\n type: 'xhr',\n batch: {\n size: 10,\n interval: 5000,\n immediateOnError: true\n },\n retry: {\n times: 3,\n interval: 2000\n }\n }\n};\n\nexport interface TransformContext {\n store?: any;\n router?: any;\n}\n\nexport const getUserInfo = (store?: any): any => {\n try {\n if (!store || !store.state) {\n return {};\n }\n\n const userModule = store.state.user || {};\n const userInfo = userModule.userInfo || userModule || {};\n const getters = store.getters || {};\n\n return {\n userId: userInfo.userId || userInfo.id || getters['user/userId'],\n userName: userInfo.userName || userInfo.contact || userInfo.name,\n accountId: userInfo.accountId,\n email: userInfo.email,\n roles: userInfo.roles || [],\n permissions: getters['user/permissions'] || userInfo.permissions || []\n };\n } catch (error) {\n console.warn('Failed to get user info from store:', error);\n return {};\n }\n};\n\nexport const transformDataForSLS = (data: any, context: TransformContext = {}): any => {\n const timestamp = new Date().toISOString();\n const userInfo = getUserInfo(context.store);\n\n const dimensions: Record<string, any> = {\n pageTitle: typeof document !== 'undefined' ? document.title : '',\n path: typeof window !== 'undefined' ? window.location.pathname : '',\n search: typeof window !== 'undefined' ? window.location.search : '',\n hash: typeof window !== 'undefined' ? window.location.hash : '',\n ...(userInfo && {\n userId: userInfo.userId,\n userName: userInfo.userName,\n accountId: userInfo.accountId,\n userEmail: userInfo.email,\n userRoles: (userInfo.roles || []).join(','),\n userPermissions: (userInfo.permissions || []).join(',')\n }),\n ...data.customData\n };\n\n if (data.type === 'click') {\n const target = data.target || {};\n const page = data.page || {};\n\n dimensions.clickBizId = data.bizId;\n dimensions.clickTargetTag = target.tagName;\n dimensions.clickTargetId = target.id;\n dimensions.clickTargetClass = target.className;\n dimensions.clickTargetSelector = target.selector;\n dimensions.clickTargetText = target.textContent;\n\n dimensions.clickPageUrl = page.url;\n dimensions.clickPagePath = page.path;\n dimensions.clickPageTitle = page.title;\n\n dimensions.clickX = data.x;\n dimensions.clickY = data.y;\n }\n\n return {\n __time__: Math.floor(Date.now() / 1000),\n __source__: 'live-admin-v3',\n timestamp,\n environment: mitoConfig.environment,\n sessionId: getSessionId(),\n user: userInfo,\n dataType: data.type || 'unknown',\n metricType: getMetricType(data),\n value: extractValue(data),\n event: {\n type: data.type,\n url:\n typeof window !== 'undefined' && window.location\n ? window.location.href\n : '',\n userAgent:\n typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',\n referrer:\n typeof document !== 'undefined' ? document.referrer : undefined\n },\n techStack: {\n vue: (context as any).Vue?.version || 'unknown',\n platform:\n typeof navigator !== 'undefined' ? navigator.platform : 'unknown',\n language:\n typeof navigator !== 'undefined' ? navigator.language : 'unknown'\n },\n rawData: isDebugEnabled ? data : undefined,\n dimensions\n };\n};\n\nexport const shouldReport = (data: any): boolean => {\n const dataType = data.type as keyof MitoSampleRateConfig;\n const sampleRate = (mitoConfig.sampleRate as any)[dataType] || 0;\n\n if (sampleRate === 0) return false;\n if (sampleRate === 1) return true;\n\n return Math.random() < sampleRate;\n};\n","import * as Mito from '@mitojs/browser';\nimport {\n mitoConfig,\n slsConfig,\n transformDataForSLS,\n shouldReport,\n type MitoConfig,\n type TransformContext\n} from './config';\nimport {\n SLSWebTrackingAdapter,\n type SLSAdapterConfig\n} from '../transport/SLSWebTrackingAdapter';\n\nexport interface MitoSLSAdapterOptions extends MitoConfig {\n slsConfigOverride?: Partial<SLSAdapterConfig>;\n}\n\nexport class MitoSLSAdapter {\n private options: MitoSLSAdapterOptions;\n private mitoInstance: any = null;\n private slsAdapter: SLSWebTrackingAdapter | null = null;\n private store: any = null;\n private router: any = null;\n private isInitialized = false;\n\n constructor(options: Partial<MitoSLSAdapterOptions> = {}) {\n this.options = {\n ...mitoConfig,\n ...options\n } as MitoSLSAdapterOptions;\n\n this.handleDataReport = this.handleDataReport.bind(this);\n this.handleRouteChange = this.handleRouteChange.bind(this);\n this.handleError = this.handleError.bind(this);\n this.addBreadcrumb = this.addBreadcrumb.bind(this);\n }\n\n addBreadcrumb(payload: any): void {\n if (!this.mitoInstance || !this.mitoInstance.breadcrumb) {\n return;\n }\n\n const breadcrumb = this.mitoInstance.breadcrumb;\n\n if (typeof breadcrumb.add === 'function') {\n breadcrumb.add(payload);\n return;\n }\n\n if (typeof breadcrumb.push === 'function') {\n breadcrumb.push(payload);\n }\n }\n\n async init(context: TransformContext & { Vue?: any } = {}): Promise<void> {\n if (this.isInitialized) {\n console.warn('MitoSLSAdapter already initialized');\n return;\n }\n\n this.store = context.store;\n this.router = context.router;\n\n if (!this.options.dsn) {\n console.warn(\n 'MitoSLSAdapter: DSN not configured, RUM system will run in simulation mode'\n );\n }\n\n try {\n const slsConfigOverride = this.options.slsConfigOverride || {};\n this.slsAdapter = new SLSWebTrackingAdapter({\n ...slsConfig,\n ...slsConfigOverride\n });\n await this.slsAdapter.init();\n\n this.mitoInstance = Mito.init({\n dsn: this.options.dsn || undefined,\n debug: this.options.debug,\n maxBreadcrumbs: this.options.maxBreadcrumbs,\n Vue: context.Vue || this.options.vue?.Vue,\n framework: {\n vue: true\n },\n beforeDataReport: this.handleDataReport,\n silent: !this.options.debug,\n silentConsole: !this.options.debug,\n enableUrlHash: true,\n enableUserAgent: true,\n enableHistory: true,\n performance: {\n enable: this.options.user.performance,\n sampleRate: (this.options.sampleRate as any).performance || 1.0\n },\n user: {\n enableClickTrack: this.options.user.click,\n clickTrackSampleRate: (this.options.sampleRate as any).click,\n ignoreSelector: this.options.user.sensitiveSelectors.join(', ')\n },\n api: {\n enableApiMonitor: this.options.network.xhr,\n apiMonitorSampleRate: (this.options.sampleRate as any).xhr,\n ignoreUrls: this.options.network.ignoreUrls,\n requestSizeLimit: this.options.network.responseSizeLimit * 1024\n }\n } as any);\n\n this.setupVueIntegration();\n this.setupRouterIntegration();\n this.setupErrorHandling();\n\n this.isInitialized = true;\n if (this.options.debug) {\n console.log('MitoSLSAdapter initialized successfully');\n }\n } catch (error) {\n console.error('Failed to initialize MitoSLSAdapter:', error);\n this.handleError(error);\n }\n }\n\n private setupVueIntegration(): void {\n if (!this.store) {\n console.warn('Vuex store not provided, some features may be limited');\n return;\n }\n\n this.store.subscribe((mutation: any) => {\n try {\n if (this.shouldTrackMutation(mutation)) {\n this.addBreadcrumb({\n type: 'vuex',\n message: `Vuex: ${mutation.type}`,\n category: 'vuex',\n data: {\n mutation: mutation.type,\n payload: mutation.payload\n }\n });\n }\n } catch (error) {\n console.warn('Failed to track Vuex mutation:', error);\n }\n });\n\n if (this.options.debug) {\n console.log('Vue integration configured');\n }\n }\n\n private setupRouterIntegration(): void {\n if (!this.router) {\n console.warn('Vue router not provided, route tracking disabled');\n return;\n }\n\n this.router.afterEach((to: any, from: any) => {\n try {\n this.handleRouteChange(to, from);\n } catch (error) {\n console.warn('Failed to handle route change:', error);\n }\n });\n\n if (this.options.debug) {\n console.log('Router integration configured');\n }\n }\n\n private setupErrorHandling(): void {\n if (this.options.debug) {\n console.log('Error handling configured');\n }\n }\n\n handleDataReport(data: any): boolean | void {\n try {\n if (this.options.debug) {\n console.log('🔍 MitoJS Data Report:', {\n type: data.type,\n timestamp: data.t || Date.now(),\n data\n });\n }\n\n if (!shouldReport(data)) {\n if (this.options.debug) {\n console.log('⏭️ Data filtered by sampling rate:', data.type);\n }\n return false;\n }\n\n const slsData = transformDataForSLS(data, {\n store: this.store,\n router: this.router\n });\n\n this.sendToSLS(slsData);\n\n return false;\n } catch (error) {\n console.error('Failed to handle data report:', error);\n return false;\n }\n }\n\n handleRouteChange(to: any, from: any): void {\n try {\n const routeData = {\n type: 'route',\n from: {\n path: from.fullPath,\n name: from.name,\n params: from.params,\n query: from.query\n },\n to: {\n path: to.fullPath,\n name: to.name,\n params: to.params,\n query: to.query\n },\n timestamp: Date.now()\n };\n\n this.addBreadcrumb({\n type: 'route',\n message: `Route: ${from.fullPath} -> ${to.fullPath}`,\n category: 'navigation',\n data: routeData\n });\n\n if (shouldReport(routeData)) {\n const slsData = transformDataForSLS(routeData, {\n store: this.store,\n router: this.router\n });\n this.sendToSLS(slsData);\n }\n } catch (error) {\n console.error('Failed to handle route change:', error);\n }\n }\n\n handleError(error: any): void {\n try {\n const errorData = {\n type: 'error',\n message: error?.message || 'Unknown error',\n stack: error?.stack,\n name: error?.name,\n timestamp: Date.now()\n };\n\n this.addBreadcrumb({\n type: 'error',\n message: errorData.message,\n category: 'error',\n data: errorData\n });\n\n if (shouldReport(errorData)) {\n const slsData = transformDataForSLS(errorData, {\n store: this.store,\n router: this.router\n });\n this.sendToSLS(slsData);\n }\n } catch (e) {\n console.error('Failed to handle error:', e);\n }\n }\n\n async sendToSLS(data: any): Promise<void> {\n try {\n if (!this.slsAdapter) {\n if (this.options.debug) {\n console.log('📝 RUM Data [SIMULATION MODE]:', data);\n }\n return;\n }\n\n const slsLogData = this.transformDataForSLSLog(data);\n if (this.options.debug) {\n console.log('🔧 Transformed SLS Log Data:', slsLogData);\n }\n\n await this.slsAdapter.sendLog(slsLogData);\n\n if (this.options.debug) {\n console.log('✅ RUM Data sent to SLS successfully');\n }\n } catch (error) {\n console.error('❌ Failed to send data to SLS:', error);\n\n if (this.options.debug) {\n console.log('🔄 RUM Data [FALLBACK MODE]:', data);\n }\n }\n }\n\n transformDataForSLSLog(data: any): any {\n return {\n eventType: data.dataType || data.event?.type || 'unknown',\n category: this.getEventCategory(data.dataType),\n level: this.getEventLevel(data.dataType),\n ...data.event,\n ...data.dimensions,\n ...data.rawData\n };\n }\n\n getEventCategory(dataType: string): string {\n switch (dataType) {\n case 'error':\n return 'error';\n case 'performance':\n return 'performance';\n case 'click':\n case 'route':\n return 'user';\n case 'xhr':\n return 'general';\n default:\n return 'general';\n }\n }\n\n getEventLevel(dataType: string): string {\n switch (dataType) {\n case 'error':\n return 'error';\n case 'xhr':\n return 'warn';\n default:\n return 'info';\n }\n }\n\n getUserInfoFromStore(): any {\n try {\n const user = this.store?.state?.user || {};\n return {\n userId: user.userId || user.id,\n userName: user.userName || user.name,\n accountId: user.accountId\n };\n } catch (error) {\n console.warn('Failed to get user info from store:', error);\n return {};\n }\n }\n\n shouldTrackMutation(mutation: any): boolean {\n const ignoredMutations = ['SET_LOADING', 'SET_CURRENT_PAGE', 'UPDATE_MOUSE_POSITION'];\n return !ignoredMutations.includes(mutation.type);\n }\n\n trackEvent(eventData: Record<string, any>): void {\n try {\n const customData = {\n type: 'custom',\n timestamp: Date.now(),\n ...eventData\n };\n\n this.addBreadcrumb({\n type: 'custom',\n message: `Custom Event: ${eventData.name || 'unknown'}`,\n category: 'custom',\n data: customData\n });\n\n if (shouldReport(customData)) {\n const slsData = transformDataForSLS(customData, {\n store: this.store,\n router: this.router\n });\n this.sendToSLS(slsData);\n }\n } catch (error) {\n console.error('Failed to track custom event:', error);\n }\n }\n\n setUser(userInfo: {\n userId?: string;\n userName?: string;\n email?: string;\n accountId?: string;\n roles?: string[];\n }): void {\n try {\n if (this.mitoInstance && this.mitoInstance.setUser) {\n this.mitoInstance.setUser({\n id: userInfo.userId,\n username: userInfo.userName,\n email: userInfo.email\n });\n }\n\n if (this.slsAdapter && userInfo.userId) {\n this.slsAdapter.setUserId(userInfo.userId);\n }\n } catch (error) {\n console.error('Failed to set user info:', error);\n }\n }\n\n getBreadcrumbs(): any[] {\n try {\n return this.mitoInstance?.getBreadcrumbs?.() || [];\n } catch (error) {\n console.error('Failed to get breadcrumbs:', error);\n return [];\n }\n }\n\n destroy(): void {\n try {\n if (typeof window !== 'undefined') {\n window.removeEventListener('error', this.handleError as any);\n window.removeEventListener(\n 'unhandledrejection',\n this.handleError as any\n );\n }\n\n if (this.mitoInstance && this.mitoInstance.destroy) {\n this.mitoInstance.destroy();\n }\n\n if (this.slsAdapter) {\n this.slsAdapter.destroy();\n }\n\n this.isInitialized = false;\n if (this.options.debug) {\n console.log('MitoSLSAdapter destroyed');\n }\n } catch (error) {\n console.error('Failed to destroy MitoSLSAdapter:', error);\n }\n }\n}\n\nlet instance: MitoSLSAdapter | null = null;\n\nexport const getMitoAdapter = (\n options: Partial<MitoSLSAdapterOptions> = {}\n): MitoSLSAdapter => {\n if (!instance) {\n instance = new MitoSLSAdapter(options);\n }\n return instance;\n};\n\nexport const initRUMCore = async (\n context: TransformContext & { Vue?: any },\n options: Partial<MitoSLSAdapterOptions> = {}\n): Promise<MitoSLSAdapter> => {\n const adapter = getMitoAdapter(options);\n await adapter.init(context);\n return adapter;\n};\n\nexport const getRUMCoreInstance = (): MitoSLSAdapter | null => instance;\n","import SlsTracker from '@aliyun-sls/web-track-browser/dist/web-track-browser.es.js';\nimport { getRUMEnv } from '../core/env';\n\nconst getEnv = (key: string, defaultValue = ''): string => {\n const env = getRUMEnv();\n if (env && Object.prototype.hasOwnProperty.call(env, key)) {\n return (env as any)[key] || defaultValue;\n }\n return defaultValue;\n};\n\nexport interface SLSAdapterConfig {\n host?: string;\n project?: string;\n logstore?: string;\n time?: number;\n count?: number;\n topic?: string;\n source?: string;\n environment?: string;\n debug?: boolean;\n enabled?: boolean;\n userId?: string | null;\n sessionId?: string;\n appName?: string;\n appVersion?: string;\n retryCount?: number;\n retryInterval?: number;\n}\n\nexport class SLSWebTrackingAdapter {\n private config: Required<SLSAdapterConfig>;\n private slsTracker: any = null;\n private isInitialized = false;\n private isDestroyed = false;\n private pendingLogs: any[] = [];\n private retryQueue: Array<{\n data: any;\n error: Error;\n timestamp: number;\n retryCount: number;\n }> = [];\n\n constructor(config: SLSAdapterConfig = {}) {\n this.config = {\n host:\n config.host || getEnv('VUE_APP_SLS_HOST') || '',\n project:\n config.project || getEnv('VUE_APP_SLS_PROJECT') || '',\n logstore:\n config.logstore || getEnv('VUE_APP_SLS_LOGSTORE') || '',\n time: config.time ?? 10,\n count: config.count ?? 10,\n topic: config.topic || 'rum-monitor',\n source: config.source || 'web',\n environment: config.environment || getEnv('NODE_ENV', 'development'),\n debug: config.debug ?? (getEnv('VUE_APP_RUM_DEBUG', 'false') === 'true'),\n enabled: config.enabled ?? true,\n userId: config.userId ?? null,\n sessionId: config.sessionId || this.generateSessionId(),\n appName:\n config.appName || getEnv('VUE_APP_RUM_APP_NAME', 'rum-app'),\n appVersion: config.appVersion || getEnv('PACKAGE_VERSION', '1.0.0'),\n retryCount: config.retryCount ?? 3,\n retryInterval: config.retryInterval ?? 2000\n };\n\n this.handleBeforeSend = this.handleBeforeSend.bind(this);\n this.handleError = this.handleError.bind(this);\n }\n\n async init(): Promise<void> {\n if (this.isInitialized) {\n console.warn('SLSWebTrackingAdapter already initialized');\n return;\n }\n\n if (this.isDestroyed) {\n throw new Error(\n 'SLSWebTrackingAdapter has been destroyed, cannot reinitialize'\n );\n }\n\n if (!this.config.enabled) {\n if (this.config.debug) {\n console.log('SLSWebTrackingAdapter is disabled');\n }\n return;\n }\n\n if (this.config.debug) {\n console.log('🚀 Initializing SLSWebTrackingAdapter...', {\n config: this.config,\n SlsTracker: typeof SlsTracker\n });\n }\n\n try {\n this.slsTracker = new (SlsTracker as any)({\n host: this.config.host,\n project: this.config.project,\n logstore: this.config.logstore,\n time: this.config.time,\n count: this.config.count,\n topic: this.config.topic,\n source: this.config.source,\n autoPopulateFields: false,\n beforeSend: this.handleBeforeSend\n });\n\n this.isInitialized = true;\n\n if (this.config.debug) {\n console.log('✅ SLSWebTrackingAdapter initialized successfully', {\n project: this.config.project,\n logstore: this.config.logstore,\n host: this.config.host,\n trackerInstance: !!this.slsTracker\n });\n }\n\n await this.sendLog({\n type: 'system',\n category: 'init',\n message: 'SLS WebTracking adapter initialized successfully',\n level: 'info',\n timestamp: Date.now()\n });\n } catch (error: any) {\n console.error('❌ Failed to initialize SLSWebTrackingAdapter:', error);\n this.handleError(error);\n throw error;\n }\n }\n\n async sendLog(data: Record<string, any>): Promise<void> {\n if (this.config.debug) {\n console.log('📤 Sending log to SLS...', {\n originalData: data,\n isReady: this.checkReady(),\n hasTracker: !!this.slsTracker,\n isInitialized: this.isInitialized\n });\n }\n\n if (!this.checkReady()) {\n if (this.config.debug) {\n console.log('❌ SLS adapter not ready, skipping log send');\n }\n return;\n }\n\n try {\n const logData = await this.transformLogData(data);\n\n if (this.config.debug) {\n console.log('🔧 Transformed SLS Log Data:', logData);\n }\n\n await this.slsTracker.send(logData);\n\n if (this.config.debug) {\n console.log('✅ Log sent to SLS successfully');\n }\n } catch (error: any) {\n console.error('❌ Failed to send log to SLS:', error);\n await this.handleSendError(data, error);\n }\n }\n\n async sendBatchLogs(logs: Record<string, any>[]): Promise<void> {\n if (!this.checkReady()) {\n return;\n }\n\n if (!Array.isArray(logs) || logs.length === 0) {\n return;\n }\n\n try {\n const transformedLogs = await Promise.all(\n logs.map((log) => this.transformLogData(log))\n );\n\n for (const logData of transformedLogs) {\n await this.slsTracker.send(logData);\n }\n\n if (this.config.debug) {\n console.log(\n `Batch sent ${transformedLogs.length} logs to SLS successfully`\n );\n }\n } catch (error) {\n console.error('Failed to send batch logs to SLS:', error);\n\n for (const log of logs) {\n await this.handleSendError(log, error as any);\n }\n }\n }\n\n async transformLogData(data: Record<string, any>): Promise<Record<string, any>> {\n const timestamp = Math.floor(Date.now() / 1000);\n\n const logData: Record<string, any> = {\n __time__: timestamp,\n __source__: this.config.source,\n\n // 基础信息\n event_type: data.eventType || data.type || 'unknown',\n category: data.category || 'general',\n level: data.level || 'info',\n client_timestamp: Date.now(),\n\n // 应用信息\n app_name: this.config.appName,\n // app_version: this.config.appVersion,\n environment: this.config.environment,\n\n // 会话信息\n session_id: this.config.sessionId,\n\n // 页面信息\n page_url:\n typeof window !== 'undefined' && window.location\n ? window.location.href\n : '',\n page_title:\n typeof document !== 'undefined' ? document.title : undefined,\n page_path:\n typeof window !== 'undefined' && window.location\n ? window.location.pathname\n : '',\n\n // 用户代理信息\n user_agent:\n typeof navigator !== 'undefined' ? navigator.userAgent : undefined,\n language:\n typeof navigator !== 'undefined' ? navigator.language : undefined\n };\n\n // 用户标识,优先使用上游数据\n if (this.config.userId) {\n logData.user_id = this.config.userId;\n }\n if (data.userId) {\n logData.user_id = data.userId;\n }\n if (data.userName) {\n logData.user_name = data.userName;\n }\n\n let isInternalUser = false;\n if (data.userEmail && typeof data.userEmail === 'string') {\n const emailParts = data.userEmail.split('@');\n if (emailParts.length === 2) {\n const domain = emailParts[1].toLowerCase();\n const internalDomains = getEnv(\n 'VUE_APP_RUM_INTERNAL_EMAIL_DOMAINS',\n 'polyv.net,polyv.com'\n )\n .split(',')\n .map((item) => item.trim().toLowerCase())\n .filter(Boolean);\n if (internalDomains.length > 0 && domain) {\n isInternalUser = internalDomains.some((internalDomain) => {\n if (!internalDomain) return false;\n return (\n domain === internalDomain ||\n domain.endsWith(`.${internalDomain}`)\n );\n });\n }\n }\n }\n\n logData.is_internal_user = isInternalUser;\n\n // 根据事件类型添加特定字段\n if (logData.event_type === 'error') {\n this.addErrorFields(logData, data);\n } else if (\n logData.event_type === 'xhr' ||\n logData.event_type === 'fetch'\n ) {\n this.addApiFields(logData, data);\n } else if (logData.event_type === 'click') {\n this.addClickFields(logData, data);\n }\n\n // 添加 detail_json,仅保留 hash 信息\n try {\n let hash = '';\n if (data && typeof data.hash === 'string') {\n hash = data.hash;\n } else if (\n data &&\n data.dimensions &&\n typeof data.dimensions.hash === 'string'\n ) {\n hash = data.dimensions.hash;\n } else if (\n typeof window !== 'undefined' &&\n typeof window.location !== 'undefined'\n ) {\n hash = window.location.hash || '';\n }\n\n logData.detail_json = JSON.stringify({ hash });\n } catch (error) {\n console.warn('Failed to serialize detail data:', error);\n logData.detail_json = JSON.stringify({\n error: 'Failed to serialize data'\n });\n }\n\n return logData;\n }\n\n private addErrorFields(\n logData: Record<string, any>,\n data: Record<string, any>\n ): void {\n if (data.message) {\n logData.error_message = String(data.message);\n }\n\n if (data.stack) {\n logData.error_stack = String(data.stack);\n }\n\n if (data.filename) {\n logData.error_filename = data.filename;\n }\n\n if (data.lineno) {\n logData.error_lineno = String(data.lineno);\n }\n\n if (data.colno) {\n logData.error_colno = String(data.colno);\n }\n\n if (data.name) {\n logData.error_name = data.name;\n }\n }\n\n private addApiFields(\n logData: Record<string, any>,\n data: Record<string, any>\n ): void {\n if (data.url) {\n logData.api_url = data.url;\n }\n\n if (data.method) {\n logData.api_method = data.method;\n }\n\n if (data.status !== undefined) {\n logData.api_status = Number(data.status);\n }\n\n if (data.duration !== undefined) {\n logData.api_duration = Number(data.duration);\n }\n\n if (data.responseSize !== undefined) {\n logData.api_response_size = Number(data.responseSize);\n }\n }\n\n private addClickFields(\n logData: Record<string, any>,\n data: Record<string, any>\n ): void {\n if (data.clickBizId || data.bizId) {\n logData.click_biz_id = data.clickBizId || data.bizId;\n }\n\n if (data.target) {\n logData.click_target = data.target;\n }\n\n if (data.selector) {\n logData.click_selector = data.selector;\n }\n\n if (data.text) {\n logData.click_text = data.text;\n }\n\n if (data.x !== undefined) {\n logData.click_x = Number(data.x);\n }\n\n if (data.y !== undefined) {\n logData.click_y = Number(data.y);\n }\n }\n\n private filterSensitiveData(data: Record<string, any>): Record<string, any> {\n const sensitivePatterns = [\n /password/i,\n /token/i,\n /secret/i,\n /key/i,\n /auth/i,\n /credential/i\n ];\n\n const filtered: Record<string, any> = { ...data };\n\n Object.keys(filtered).forEach((key) => {\n const value = filtered[key];\n if (typeof value === 'string') {\n if (sensitivePatterns.some((pattern) => pattern.test(key))) {\n filtered[key] = '[FILTERED]';\n }\n\n if (filtered[key].length > 500) {\n filtered[key] = `${filtered[key].substring(0, 500)}...`;\n }\n }\n });\n\n return filtered;\n }\n\n private async handleSendError(data: any, error: Error): Promise<void> {\n const retryItem = {\n data,\n error,\n timestamp: Date.now(),\n retryCount: 0\n };\n\n this.retryQueue.push(retryItem);\n\n if (this.shouldRetry(error)) {\n setTimeout(() => {\n this.retryFailedLogs();\n }, this.config.retryInterval);\n }\n }\n\n private async retryFailedLogs(): Promise<void> {\n if (this.retryQueue.length === 0) {\n return;\n }\n\n const itemsToRetry = this.retryQueue.filter(\n (item) => item.retryCount < this.config.retryCount\n );\n\n this.retryQueue = this.retryQueue.filter(\n (item) => item.retryCount >= this.config.retryCount\n );\n\n for (const item of itemsToRetry) {\n try {\n item.retryCount++;\n await this.sendLog(item.data);\n\n const index = this.retryQueue.indexOf(item);\n if (index > -1) {\n this.retryQueue.splice(index, 1);\n }\n } catch (error) {\n console.warn(\n `Retry failed for log (attempt ${item.retryCount}):`,\n error\n );\n\n if (item.retryCount < this.config.retryCount) {\n setTimeout(() => {\n this.retryFailedLogs();\n }, this.config.retryInterval * item.retryCount);\n } else {\n console.error('Max retry attempts reached, dropping log:', item.data);\n }\n }\n }\n }\n\n private shouldRetry(error: Error): boolean {\n const retryableErrors = [\n 'Network timeout',\n 'Connection failed',\n 'Service unavailable',\n 'Rate limit exceeded'\n ];\n\n return retryableErrors.some(\n (pattern) => (error.message && error.message.includes(pattern))\n );\n }\n\n private handleError(error: Error): void {\n console.error('SLSWebTrackingAdapter Error:', error);\n }\n\n private checkReady(): boolean {\n if (!this.config.enabled) {\n return false;\n }\n\n if (!this.isInitialized) {\n console.warn('SLSWebTrackingAdapter not initialized');\n return false;\n }\n\n if (!this.slsTracker) {\n console.warn('SLS Tracker not available');\n return false;\n }\n\n return true;\n }\n\n private generateSessionId(): string {\n if (typeof sessionStorage !== 'undefined') {\n let sessionId = sessionStorage.getItem('sls_session_id');\n if (!sessionId) {\n sessionId = `session_${Date.now()}_${Math.random()\n .toString(36)\n .substring(2, 9)}`;\n sessionStorage.setItem('sls_session_id', sessionId);\n }\n return sessionId;\n }\n\n return `session_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;\n }\n\n handleBeforeSend(logData: any): boolean | Record<string, any> {\n try {\n const dataSize = JSON.stringify(logData).length;\n const maxSize = 1024 * 1024; // 1MB\n\n if (dataSize > maxSize) {\n console.warn('Log data too large, skipping:', dataSize);\n return false;\n }\n\n const filteredData = this.filterSensitiveData(logData);\n\n if (this.config.debug) {\n console.log('Log before send:', filteredData);\n }\n\n return filteredData;\n } catch (error) {\n console.error('Error in beforeSend handler:', error);\n return false;\n }\n }\n\n setUserId(userId: string): void {\n this.config.userId = userId;\n }\n\n updateConfig(newConfig: Partial<SLSAdapterConfig>): void {\n this.config = { ...this.config, ...newConfig };\n }\n\n getConfig(): SLSAdapterConfig {\n return { ...this.config };\n }\n\n getStats(): {\n isInitialized: boolean;\n isDestroyed: boolean;\n pendingLogsCount: number;\n retryQueueCount: number;\n config: {\n project: string | undefined;\n logstore: string | undefined;\n enabled: boolean | undefined;\n };\n } {\n return {\n isInitialized: this.isInitialized,\n isDestroyed: this.isDestroyed,\n pendingLogsCount: this.pendingLogs.length,\n retryQueueCount: this.retryQueue.length,\n config: {\n project: this.config.project,\n logstore: this.config.logstore,\n enabled: this.config.enabled\n }\n };\n }\n\n destroy(): void {\n if (this.isDestroyed) {\n return;\n }\n\n try {\n if (this.retryQueue.length > 0 && this.config.debug) {\n console.warn(\n `Destroying adapter with ${this.retryQueue.length} items in retry queue`\n );\n }\n\n if (this.slsTracker && this.slsTracker.destroy) {\n this.slsTracker.destroy();\n }\n\n this.isDestroyed = true;\n this.isInitialized = false;\n this.slsTracker = null;\n this.pendingLogs = [];\n this.retryQueue = [];\n\n if (this.config.debug) {\n console.log('SLSWebTrackingAdapter destroyed');\n }\n } catch (error) {\n console.error('Error destroying SLSWebTrackingAdapter:', error);\n }\n }\n}\n","import {\n RUMManagerVue2,\n type RUMManagerContext\n} from './RUMManager.vue2';\nimport type { MitoSLSAdapterOptions } from '../core/MitoSLSAdapter';\n\nconst rumManagerVue2 = new RUMManagerVue2();\n\nexport const initRUMSystem = (\n context: RUMManagerContext,\n options: Partial<MitoSLSAdapterOptions> = {}\n) => rumManagerVue2.init(context, options);\n\nexport const trackEvent = (\n eventName: string,\n eventData?: Record<string, any>\n) => rumManagerVue2.trackEvent(eventName, eventData || {});\n\nexport const trackPerformance = (performanceData: Record<string, any>) =>\n rumManagerVue2.trackPerformance(performanceData);\n\nexport const trackAction = (\n action: string,\n actionData?: Record<string, any>\n) => rumManagerVue2.trackAction(action, actionData || {});\n\nexport const trackMetric = (\n metricName: string,\n value: number,\n dimensions?: Record<string, any>\n) => rumManagerVue2.trackMetric(metricName, value, dimensions || {});\n\nexport const getBreadcrumbs = () => rumManagerVue2.getBreadcrumbs();\n\nexport const enableRUM = () => rumManagerVue2.enable();\nexport const disableRUM = () => rumManagerVue2.disable();\nexport const getRUMConfig = () => rumManagerVue2.getConfig();\nexport const destroyRUM = () => rumManagerVue2.destroy();\nexport const getRUMManager = () => rumManagerVue2;\n\nexport const RUMPluginVue2 = {\n install(Vue: any) {\n Vue.prototype.$rum = {\n trackEvent,\n trackPerformance,\n trackAction,\n trackMetric,\n getBreadcrumbs,\n enable: enableRUM,\n disable: disableRUM,\n getConfig: getRUMConfig\n };\n\n (Vue as any).$rumManager = rumManagerVue2;\n }\n};\n","import { mitoConfig, slsConfig, type TransformContext } from '../core/config';\nimport { getRUMEnv } from '../core/env';\nimport {\n initRUMCore,\n type MitoSLSAdapterOptions\n} from '../core/MitoSLSAdapter';\n\nexport interface RUMManagerContext extends TransformContext {\n Vue?: any;\n}\n\nexport class RUMManagerVue2 {\n private adapter: any = null;\n private isInitialized = false;\n private isEnabled = true;\n private context: RUMManagerContext = {};\n\n async init(\n context: RUMManagerContext,\n options: Partial<MitoSLSAdapterOptions> = {}\n ): Promise<void> {\n try {\n if (!this.shouldEnableRUM()) {\n if (mitoConfig.debug) {\n console.log('RUM system is disabled');\n }\n return;\n }\n\n if (this.isInitialized) {\n if (mitoConfig.debug) {\n console.log('RUM system already initialized');\n }\n return;\n }\n\n this.context = {\n store: context.store,\n router: context.router,\n Vue: context.Vue,\n ...context\n };\n\n const mergedOptions: Partial<MitoSLSAdapterOptions> = {\n ...mitoConfig,\n ...options,\n vue: {\n ...(mitoConfig as any).vue,\n ...(options as any).vue\n }\n };\n\n this.adapter = await initRUMCore(\n {\n store: this.context.store,\n router: this.context.router,\n Vue: this.context.Vue\n },\n mergedOptions\n );\n\n this.setUserInfo();\n this.setupUserStateListener();\n this.setupUserInteractionTracking();\n\n this.trackInitialRoute();\n\n this.isInitialized = true;\n if (mitoConfig.debug) {\n console.log('RUM system initialized successfully');\n }\n } catch (error) {\n console.error('Failed to initialize RUM system:', error);\n }\n }\n\n private shouldEnableRUM(): boolean {\n if (!this.isEnabled) {\n return false;\n }\n\n const env = getRUMEnv();\n\n const rumEnabled = (env as any).VUE_APP_RUM_ENABLED;\n if (rumEnabled !== undefined) {\n return rumEnabled === 'true';\n }\n\n const mode = (env as any).MODE;\n const isProdEnv = mode === 'prod' || mode === 'production';\n\n return !isProdEnv;\n }\n\n private setUserInfo(): void {\n if (!this.context.store) {\n return;\n }\n\n try {\n const userModule = this.context.store.state.user || {};\n const user = userModule.userInfo || userModule || {};\n\n if (this.adapter && user.userId) {\n this.adapter.setUser({\n userId: user.userId,\n userName: user.userName,\n accountId: user.accountId,\n roles: user.roles,\n email: user.email\n });\n }\n } catch (error) {\n console.warn('Failed to set user info:', error);\n }\n }\n\n private setupUserStateListener(): void {\n if (!this.context.store) {\n return;\n }\n\n this.context.store.subscribe((mutation: any) => {\n if (mutation.type.includes('user')) {\n this.setUserInfo();\n }\n });\n }\n\n private setupUserInteractionTracking(): void {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n return;\n }\n\n document.addEventListener(\n 'click',\n (event: MouseEvent) => {\n try {\n const originalTarget = event.target as HTMLElement | null;\n\n const findClosest = (el: any, selector: string): HTMLElement | null =>\n el && typeof el.closest === 'function' ? el.closest(selector) : null;\n\n let target = findClosest(originalTarget, '[rum-id],[rum-name]');\n\n if (!target) {\n target = findClosest(\n originalTarget,\n 'button, a, [role=\"button\"], [role=\"link\"]'\n );\n }\n\n if (!target && originalTarget && window.getComputedStyle) {\n const style = window.getComputedStyle(originalTarget);\n if (style.cursor === 'pointer') {\n target = originalTarget;\n }\n }\n\n if (!target) {\n return;\n }\n\n const getAttr = (el: any, name: string): string | null =>\n el && typeof el.getAttribute === 'function'\n ? el.getAttribute(name)\n : null;\n\n let bizId =\n getAttr(target, 'rum-id') || getAttr(target, 'rum-name') || '';\n\n if (!bizId) {\n const tagName = target.tagName\n ? target.tagName.toLowerCase()\n : 'element';\n\n const classList = (target.className || '')\n .toString()\n .split(/\\s+/)\n .filter((c: string) => c.trim());\n const primaryClass = classList[0] || 'no-class';\n\n const getLabel = (el: any): string => {\n if (!el) return '';\n const text = (el.textContent || '').trim();\n if (text) return text;\n const ariaLabel = getAttr(el, 'aria-label');\n if (ariaLabel) return ariaLabel;\n const title = getAttr(el, 'title');\n if (title) return title;\n const alt = getAttr(el, 'alt');\n if (alt) return alt;\n const placeholder = getAttr(el, 'placeholder');\n if (placeholder) return placeholder;\n const value = typeof el.value === 'string' ? el.value.trim() : '';\n if (value) return value;\n return '';\n };\n\n const label = getLabel(target);\n const safeLabel =\n (label || primaryClass).replace(/\\s+/g, '_').slice(0, 32) ||\n 'no_label';\n\n const route = (this.context?.router as any)?.currentRoute || {};\n\n const buildRouteKey = (r: any): string => {\n try {\n if (!r) return 'unknown_route';\n\n if (r.name) {\n return String(r.name);\n }\n\n if (Array.isArray(r.matched) && r.matched.length > 0) {\n const record = r.matched[r.matched.length - 1];\n if (record && record.path) {\n return record.path;\n }\n }\n\n if (r.path) {\n return r.path;\n }\n } catch {\n // ignore\n }\n\n return window.location.pathname || 'unknown_route';\n };\n\n const routeKey = buildRouteKey(route);\n\n let indexSuffix = '';\n try {\n const parent = target.parentNode as HTMLElement | null;\n if (parent && parent.children && parent.children.length) {\n const siblings = Array.from(parent.children).filter(\n (el) =>\n el.tagName === target.tagName &&\n (el as HTMLElement).className === target.className\n );\n const index = siblings.indexOf(target);\n if (index >= 0) {\n indexSuffix = `[${index}]`;\n }\n }\n } catch {\n // ignore\n }\n\n bizId = `${routeKey}|${tagName}.${primaryClass}${indexSuffix}|${safeLabel}`;\n }\n\n const targetInfo = {\n tagName: target.tagName,\n className: target.className,\n id: target.id,\n textContent: target.textContent?.substring(0, 50) || '',\n selector: this.getCSSSelector(target)\n };\n\n this.trackAction('click', {\n type: 'click',\n bizId,\n x: event.clientX,\n y: event.clientY,\n target: targetInfo,\n page: {\n url: window.location.href,\n title: document.title,\n path: window.location.pathname\n },\n timestamp: Date.now()\n });\n } catch (error) {\n console.warn('Failed to track click event:', error);\n }\n },\n true\n );\n\n document.addEventListener('visibilitychange', () => {});\n\n if (mitoConfig.debug) {\n console.log('User interaction tracking configured');\n }\n }\n\n private trackInitialRoute(): void {\n if (!this.context.router || !this.adapter) {\n return;\n }\n\n try {\n const router = this.context.router as any;\n const currentRoute =\n router.currentRoute || (router.app && router.app.$route) || {};\n\n const from = {\n path: currentRoute.fullPath || currentRoute.path,\n name: currentRoute.name,\n params: currentRoute.params,\n query: currentRoute.query\n };\n\n const to = { ...from };\n\n const adapter: any = this.adapter;\n if (adapter && typeof adapter.handleRouteChange === 'function') {\n adapter.handleRouteChange(to, from);\n }\n } catch (error) {\n if (mitoConfig.debug) {\n console.warn('Failed to track initial route:', error);\n }\n }\n }\n\n private getCSSSelector(element: Element | null): string {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return '';\n }\n\n const path: string[] = [];\n let current: Element | null = element;\n\n while (current && current.nodeType === Node.ELEMENT_NODE) {\n let selector = current.tagName.toLowerCase();\n\n if (current.id) {\n selector += `#${current.id}`;\n path.unshift(selector);\n break;\n }\n\n if ((current as HTMLElement).className) {\n const classes = (current as HTMLElement).className\n .split(' ')\n .filter((c) => c.trim());\n if (classes.length > 0) {\n selector += `.${classes[0]}`;\n }\n }\n\n path.unshift(selector);\n current = current.parentElement;\n\n if (path.length > 5) {\n break;\n }\n }\n\n return path.join(' > ');\n }\n\n trackEvent(eventName: string, eventData: Record<string, any> = {}): void {\n if (!this.checkRUMAvailable()) {\n return;\n }\n\n try {\n this.adapter.trackEvent({\n name: eventName,\n ...eventData\n });\n } catch (error) {\n console.error('Failed to track event:', error);\n }\n }\n\n trackPerformance(performanceData: Record<string, any>): void {\n if (!this.checkRUMAvailable()) {\n return;\n }\n\n try {\n this.adapter.trackEvent({\n name: 'performance',\n type: 'performance',\n ...performanceData\n });\n } catch (error) {\n console.error('Failed to track performance:', error);\n }\n }\n\n trackAction(action: string, actionData: Record<string, any> = {}): void {\n if (!this.checkRUMAvailable()) {\n return;\n }\n\n try {\n this.adapter.trackEvent({\n name: 'user_action',\n action,\n ...actionData\n });\n } catch (error) {\n console.error('Failed to track action:', error);\n }\n }\n\n trackMetric(\n metricName: string,\n value: number,\n dimensions: Record<string, any> = {}\n ): void {\n if (!this.checkRUMAvailable()) {\n return;\n }\n\n try {\n this.adapter.trackEvent({\n name: 'metric',\n metricName,\n value,\n dimensions\n });\n } catch (error) {\n console.error('Failed to track metric:', error);\n }\n }\n\n getBreadcrumbs(): any[] {\n if (!this.checkRUMAvailable()) {\n return [];\n }\n\n try {\n return this.adapter.getBreadcrumbs();\n } catch (error) {\n console.error('Failed to get breadcrumbs:', error);\n return [];\n }\n }\n\n enable(): void {\n this.isEnabled = true;\n if (mitoConfig.debug) {\n console.log('RUM system enabled');\n }\n }\n\n disable(): void {\n this.isEnabled = false;\n if (mitoConfig.debug) {\n console.log('RUM system disabled');\n }\n }\n\n private checkRUMAvailable(): boolean {\n return this.isEnabled && this.isInitialized && !!this.adapter;\n }\n\n getConfig(): Record<string, any> {\n return {\n isInitialized: this.isInitialized,\n isEnabled: this.isEnabled,\n environment: mitoConfig.environment,\n debug: mitoConfig.debug,\n sls: {\n enabled: slsConfig.enabled,\n configured: true,\n project: slsConfig.project,\n logstore: slsConfig.logstore\n }\n };\n }\n\n destroy(): void {\n try {\n if (this.adapter) {\n this.adapter.destroy();\n this.adapter = null;\n }\n\n this.isInitialized = false;\n this.context = {} as RUMManagerContext;\n if (mitoConfig.debug) {\n console.log('RUM system destroyed');\n }\n } catch (error) {\n console.error('Failed to destroy RUM system:', error);\n }\n }\n}\n","import type { App } from 'vue';\nimport * as Vue from 'vue';\nimport type { MitoSLSAdapterOptions } from '../core/MitoSLSAdapter';\nimport { RUMManagerVue3 } from './RUMManager.vue3';\n\nexport interface RUMVue3PluginOptions {\n store?: any;\n router?: any;\n coreOptions?: Partial<MitoSLSAdapterOptions>;\n}\n\nexport function createRUMPluginVue3(options: RUMVue3PluginOptions) {\n const manager = new RUMManagerVue3();\n\n return {\n install(app: App) {\n manager.init(\n { store: options.store, router: options.router },\n options.coreOptions || {}\n );\n\n (app.config.globalProperties as any).$rum = {\n trackEvent: manager.trackEvent.bind(manager),\n trackPerformance: manager.trackPerformance.bind(manager),\n trackAction: manager.trackAction.bind(manager),\n trackMetric: manager.trackMetric.bind(manager),\n getBreadcrumbs: manager.getBreadcrumbs.bind(manager),\n enable: manager.enable.bind(manager),\n disable: manager.disable.bind(manager),\n getConfig: manager.getConfig.bind(manager)\n };\n\n app.provide('rum', manager);\n }\n };\n}\n\nexport function useRUM(): RUMManagerVue3 | undefined {\n return Vue.inject<RUMManagerVue3>('rum');\n}\n","import type { TransformContext } from '../core/config';\nimport type { MitoSLSAdapterOptions } from '../core/MitoSLSAdapter';\nimport { RUMManagerVue2 } from '../vue2/RUMManager.vue2';\n\nexport interface RUMManagerContextVue3 extends TransformContext {}\n\nexport class RUMManagerVue3 {\n private inner = new RUMManagerVue2();\n\n init(\n context: RUMManagerContextVue3,\n options: Partial<MitoSLSAdapterOptions> = {}\n ): Promise<void> {\n return this.inner.init(context as any, options);\n }\n\n trackEvent(eventName: string, eventData: Record<string, any> = {}): void {\n this.inner.trackEvent(eventName, eventData);\n }\n\n trackPerformance(performanceData: Record<string, any>): void {\n this.inner.trackPerformance(performanceData);\n }\n\n trackAction(action: string, actionData: Record<string, any> = {}): void {\n this.inner.trackAction(action, actionData);\n }\n\n trackMetric(\n metricName: string,\n value: number,\n dimensions: Record<string, any> = {}\n ): void {\n this.inner.trackMetric(metricName, value, dimensions);\n }\n\n getBreadcrumbs(): any[] {\n return this.inner.getBreadcrumbs();\n }\n\n enable(): void {\n this.inner.enable();\n }\n\n disable(): void {\n this.inner.disable();\n }\n\n getConfig(): Record<string, any> {\n return this.inner.getConfig();\n }\n\n destroy(): void {\n this.inner.destroy();\n }\n}\n"],"mappings":"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","names":["getEnv","SlsTracker","Vue"]}