{"version":3,"file":"index.cjs","sources":["../src/core/monitor.ts","../src/core/base-plugin.ts","../src/plugins/performance/index.ts","../src/plugins/error/index.ts","../src/utils/debounce.ts","../src/plugins/behavior/index.ts"],"sourcesContent":["import { MonitorConfig, ReportData } from './types';\nimport { BasePlugin } from './base-plugin';\n\nexport class Monitor {\n  private config: MonitorConfig;\n  private plugins: Map<string, BasePlugin> = new Map();\n  private cache: ReportData[] = [];\n  private timer: NodeJS.Timeout | null = null;\n  private readonly MAX_CACHE_LENGTH = 10;\n  private readonly REPORT_INTERVAL = 5000; // 5秒\n\n  constructor(config: MonitorConfig) {\n    this.config = {\n      ...config,\n      enable: config.enable ?? true,\n      sampling: config.sampling ?? 1,\n      maxCache: config.maxCache ?? this.MAX_CACHE_LENGTH,\n      reportInterval: config.reportInterval ?? this.REPORT_INTERVAL,\n    };\n    this.init();\n  }\n\n  private init(): void {\n    if (!this.config.enable) return;\n    \n    // 初始化插件\n    if (this.config.plugins) {\n      this.config.plugins.forEach(Plugin => {\n        const instance = new Plugin();\n        instance.setReport(this.addCache.bind(this));\n        instance.init();\n        this.plugins.set(instance.name, instance);\n      });\n    }\n\n    // 页面卸载前发送剩余数据\n    window.addEventListener('unload', () => {\n      this.report(true);\n    });\n  }\n\n  public destroy(): void {\n    this.plugins.forEach(plugin => plugin.destroy());\n    this.plugins.clear();\n    if (this.timer) {\n      clearTimeout(this.timer);\n      this.timer = null;\n    }\n  }\n\n  private addCache(data: ReportData): void {\n    // 采样\n    if (Math.random() > this.config.sampling) return;\n\n    this.cache.push({\n      ...data,\n      timestamp: Date.now(),\n    });\n\n    if (this.cache.length >= this.config.maxCache) {\n      this.report();\n    } else if (!this.timer) {\n      this.timer = setTimeout(() => this.report(), this.config.reportInterval);\n    }\n  }\n\n  private report(isUnload = false): void {\n    if (this.cache.length === 0) return;\n\n    const data = this.cache.slice();\n    this.cache = [];\n\n    if (this.timer) {\n      clearTimeout(this.timer);\n      this.timer = null;\n    }\n\n    const reportData = {\n      appId: this.config.appId,\n      userId: this.config.userId,\n      userAgent: navigator.userAgent,\n      data\n    };\n\n    // 页面卸载前使用 sendBeacon\n    if (isUnload && navigator.sendBeacon) {\n      navigator.sendBeacon(this.config.reportUrl, JSON.stringify(reportData));\n      return;\n    }\n\n    // 普通上报使用 fetch\n    fetch(this.config.reportUrl, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      body: JSON.stringify(reportData),\n      keepalive: true\n    }).catch(error => {\n      console.error('Report error:', error);\n      // 上报失败，重新加入缓存\n      this.cache.push(...data);\n    });\n  }\n} ","import { BasePluginConfig, ReportData } from './types';\n\nexport abstract class BasePlugin {\n  protected config: BasePluginConfig = {};\n  public report?: (data: ReportData) => void;\n\n  public abstract name: string;\n\n  public setConfig(config: BasePluginConfig): void {\n    this.config = { ...this.config, ...config };\n  }\n\n  public setReport(report: (data: ReportData) => void): void {\n    this.report = report;\n  }\n\n  public abstract init(): void;\n  public abstract destroy(): void;\n} ","import { BasePlugin } from '../../core/base-plugin';\nimport { ReportData } from '../../core/types';\nimport { PerformanceData } from './types';\n\nexport class PerformancePlugin extends BasePlugin {\n  public name = 'performance';\n  private performanceObserver?: PerformanceObserver;\n\n  public init(): void {\n    this.monitorPageLoad();\n    this.monitorResourceLoad();\n  }\n\n  public destroy(): void {\n    this.performanceObserver?.disconnect();\n  }\n\n  private monitorPageLoad(): void {\n    window.addEventListener('load', () => {\n      setTimeout(() => {\n        const performance = window.performance;\n        if (!performance) return;\n\n        const timing = performance.timing;\n        const data: PerformanceData = {\n          type: 'performance',\n          subType: 'page-load',\n          dnsTime: timing.domainLookupEnd - timing.domainLookupStart,\n          tcpTime: timing.connectEnd - timing.connectStart,\n          whiteScreenTime: timing.domLoading - timing.navigationStart,\n          domReadyTime: timing.domContentLoadedEventEnd - timing.navigationStart,\n          loadTime: timing.loadEventEnd - timing.navigationStart,\n        };\n\n        this.report?.(data);\n      }, 0);\n    });\n  }\n\n  private monitorResourceLoad(): void {\n    this.performanceObserver = new PerformanceObserver((list) => {\n      const entries = list.getEntries() as PerformanceResourceTiming[];\n      entries.forEach((entry) => {\n        const data: PerformanceData = {\n          type: 'performance',\n          subType: 'resource',\n          name: entry.name,\n          initiatorType: entry.initiatorType,\n          duration: entry.duration,\n          transferSize: entry.transferSize,\n        };\n        this.report?.(data);\n      });\n    });\n\n    this.performanceObserver.observe({ entryTypes: ['resource'] });\n  }\n} ","import { BasePlugin } from '../../core/base-plugin';\nimport { ErrorData } from './types';\n\nexport class ErrorPlugin extends BasePlugin {\n  public name = 'error';\n  private errorHandler: (event: ErrorEvent) => void;\n  private rejectionHandler: (event: PromiseRejectionEvent) => void;\n\n  constructor() {\n    super();\n    this.errorHandler = this.handleError.bind(this);\n    this.rejectionHandler = this.handleRejection.bind(this);\n  }\n\n  public init(): void {\n    window.addEventListener('error', this.errorHandler, true);\n    window.addEventListener('unhandledrejection', this.rejectionHandler);\n  }\n\n  public destroy(): void {\n    if (this.errorHandler) {\n      window.removeEventListener('error', this.errorHandler, true);\n    }\n    if (this.rejectionHandler) {\n      window.removeEventListener('unhandledrejection', this.rejectionHandler);\n    }\n  }\n\n  private shouldIgnoreError(error: Error | string): boolean {\n    const ignoreErrors = (this.config.ignoreErrors || []) as RegExp[];\n    const errorMessage = error instanceof Error ? error.message : error;\n    return ignoreErrors.some(pattern => pattern.test(errorMessage));\n  }\n\n  private handleError(event: ErrorEvent): void {\n    if (this.shouldIgnoreError(event.error || event.message)) return;\n\n    const data: ErrorData = {\n      type: 'error',\n      subType: 'javascript',\n      message: event.message,\n      filename: event.filename,\n      position: `${event.lineno}:${event.colno}`,\n      stack: event.error?.stack,\n    };\n    this.report?.(data);\n  }\n\n  private handleRejection(event: PromiseRejectionEvent): void {\n    const error = event.reason;\n    if (this.shouldIgnoreError(error)) return;\n\n    const data: ErrorData = {\n      type: 'error',\n      subType: 'promise',\n      message: error?.message || error,\n      stack: error?.stack,\n    };\n    this.report?.(data);\n  }\n} ","export function debounce<T extends (...args: any[]) => any>(\n  fn: T,\n  delay: number\n): (...args: Parameters<T>) => void {\n  let timer: NodeJS.Timeout | null = null;\n  \n  return function(this: any, ...args: Parameters<T>) {\n    if (timer) clearTimeout(timer);\n    \n    timer = setTimeout(() => {\n      fn.apply(this, args);\n      timer = null;\n    }, delay);\n  };\n} ","import { BasePlugin } from '../../core/base-plugin';\nimport { BehaviorData } from './types';\nimport { debounce } from '../../utils/debounce';\n\nexport class BehaviorPlugin extends BasePlugin {\n  public name = 'behavior';\n  private clickHandler: (event: MouseEvent) => void;\n\n  constructor() {\n    super();\n    this.clickHandler = debounce(this.handleClick.bind(this), 300);\n  }\n\n  public init(): void {\n    this.monitorPV();\n    document.addEventListener('click', this.clickHandler, true);\n  }\n\n  public destroy(): void {\n    if (this.clickHandler) {\n      document.removeEventListener('click', this.clickHandler, true);\n    }\n  }\n\n  private monitorPV(): void {\n    const data: BehaviorData = {\n      type: 'behavior',\n      subType: 'pv',\n      url: window.location.href,\n      referer: document.referrer,\n    };\n    this.report?.(data);\n  }\n\n  private handleClick(event: MouseEvent): void {\n    const target = event.target as HTMLElement;\n    const data: BehaviorData = {\n      type: 'behavior',\n      subType: 'click',\n      path: this.getElementPath(target),\n    };\n    this.report?.(data);\n  }\n\n  private getElementPath(element: HTMLElement): string {\n    if (!element || !element.tagName) return '';\n    \n    const path = [] as string[];\n    let currentElement: HTMLElement | null = element;\n    \n    while (currentElement) {\n      let selector = currentElement.tagName.toLowerCase();\n      if (currentElement.id) {\n        selector += `#${currentElement.id}`;\n      } else if (currentElement.className) {\n        selector += `.${currentElement.className.split(' ').join('.')}`;\n      }\n      path.unshift(selector);\n      currentElement = currentElement.parentElement;\n    }\n    \n    return path.join(' > ');\n  }\n} "],"names":[],"mappings":"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"}