@error-monitor/core
Version:
Monitor Core - 前端监控SDK核心模块,提供跨平台的监控基础能力
1,172 lines (1,158 loc) • 28.8 kB
TypeScript
/**
* 监控SDK核心类型定义
* 统一各平台的数据类型,确保数据结构一致性
*/
/**
* 基础配置接口
*/
interface BaseConfig {
/** 项目ID */
projectId: string;
/** 服务器地址 */
serverUrl: string;
/** API密钥 */
apiKey?: string;
/** 用户ID */
userId?: string;
/** 自定义标签 */
tags?: Record<string, string>;
/** 是否在开发环境启用 */
enableInDev?: boolean;
/** 采样率 (0-1) */
sampleRate?: number;
/** 项目版本 */
projectVersion?: string;
/** 构建ID */
buildId?: string;
/** 构建时间 */
buildTime?: string;
/** 环境 */
environment?: "development" | "testing" | "staging" | "production";
/** 是否启用源代码映射 */
enableSourceMapping?: boolean;
}
/**
* 错误监控配置
*/
interface ErrorConfig {
/** 是否启用错误监控 */
enabled?: boolean;
/** 最大错误数量 */
maxErrors?: number;
/** 错误过滤规则 */
filters?: RegExp[];
/** 采样率 */
sampleRate?: number;
}
/**
* 性能监控配置
*/
interface PerformanceConfig {
/** 是否启用性能监控 */
enabled?: boolean;
/** 最大性能数据数量 */
maxPerformance?: number;
/** 是否监控资源加载 */
enableResourceTiming?: boolean;
/** 是否监控用户交互 */
enableUserTiming?: boolean;
}
/**
* 行为监控配置
*/
interface BehaviorConfig {
/** 是否启用行为监控 */
enabled?: boolean;
/** 最大行为数据数量 */
maxBehaviors?: number;
/** 是否自动追踪点击 */
autoTrackClick?: boolean;
/** 是否自动追踪页面浏览 */
autoTrackPageView?: boolean;
}
/**
* 数据上报配置
*/
interface ReportConfig {
/** 上报间隔(毫秒) */
interval?: number;
/** 最大队列大小 */
maxQueueSize?: number;
/** 批量上报大小 */
batchSize?: number;
/** 请求超时时间 */
timeout?: number;
/** 最大重试次数 */
maxRetries?: number;
/** 重试延迟 */
retryDelay?: number;
/** 是否启用离线缓存 */
enableOfflineCache?: boolean;
}
/**
* 完整的监控配置
*/
interface MonitorConfig extends BaseConfig {
/** 错误监控配置 */
error?: ErrorConfig;
/** 性能监控配置 */
performance?: PerformanceConfig;
/** 行为监控配置 */
behavior?: BehaviorConfig;
/** 数据上报配置 */
report?: ReportConfig;
}
/**
* 错误类型枚举
*/
declare enum ErrorType {
/** JavaScript运行时错误 */
JS_ERROR = "js_error",
/** Promise未捕获错误 */
PROMISE_ERROR = "promise_error",
/** 资源加载错误 */
RESOURCE_ERROR = "resource_error",
/** 网络请求错误 */
HTTP_ERROR = "http_error",
/** 自定义错误 */
CUSTOM_ERROR = "custom_error",
/** 框架错误 */
FRAMEWORK_ERROR = "framework_error"
}
/**
* 性能指标类型
*/
declare enum PerformanceType {
/** 页面加载性能 */
PAGE_LOAD = "page_load",
/** 网络请求性能 */
HTTP_REQUEST = "http_request",
/** 资源加载性能 */
RESOURCE_LOAD = "resource_load",
/** 用户交互性能 */
USER_INTERACTION = "user_interaction",
/** 自定义性能指标 */
CUSTOM_METRIC = "custom_metric"
}
/**
* 用户行为类型
*/
declare enum BehaviorType {
/** 页面访问 */
PAGE_VIEW = "page_view",
/** 点击事件 */
CLICK = "click",
/** 滚动事件 */
SCROLL = "scroll",
/** 表单提交 */
FORM_SUBMIT = "form_submit",
/** 路由变化 */
ROUTE_CHANGE = "route_change",
/** 自定义事件 */
CUSTOM = "custom"
}
/**
* 基础监控数据接口
*/
interface BaseMonitorData {
/** 数据ID */
id: string;
/** 时间戳 */
timestamp: number;
/** 项目ID */
projectId: string;
/** 项目版本 */
projectVersion?: string;
/** 用户ID */
userId?: string;
/** 会话ID */
sessionId: string;
/** 页面URL */
url: string;
/** 用户代理 */
userAgent: string;
/** 平台信息 */
platform: string;
/** 自定义标签 */
tags?: Record<string, string>;
}
/**
* 错误监控数据
*/
interface ErrorData extends BaseMonitorData {
/** 错误类型 */
type: ErrorType;
/** 错误消息 */
message: string;
/** 错误堆栈 */
stack?: string;
/** 文件名 */
filename?: string;
/** 行号 */
lineno?: number;
/** 列号 */
colno?: number;
/** 错误对象 */
error?: any;
/** 组件堆栈(React等框架) */
componentStack?: string;
/** 错误级别 */
level?: "error" | "warning" | "info";
/** 项目版本 */
projectVersion?: string;
/** 构建ID */
buildId?: string;
/** 源代码映射状态 */
sourceMappingStatus?: "mapped" | "unmapped" | "pending";
/** 原始源文件路径 */
sourceFilePath?: string;
/** 原始源代码行号 */
sourceLineNumber?: number;
/** 原始源代码列号 */
sourceColumnNumber?: number;
/** 源代码上下文 */
sourceContext?: {
/** 前面的代码行 */
preLines: string[];
/** 错误行 */
errorLine: string;
/** 后面的代码行 */
postLines: string[];
};
}
/**
* 性能监控数据
*/
interface PerformanceData extends BaseMonitorData {
/** 性能类型 */
type: PerformanceType;
/** 性能指标 */
metrics: Record<string, number>;
/** 资源信息 */
resource?: {
name: string;
size: number;
duration: number;
type: string;
};
/** 导航时间 */
navigation?: {
fetchStart: number;
domainLookupStart: number;
domainLookupEnd: number;
connectStart: number;
connectEnd: number;
requestStart: number;
responseStart: number;
responseEnd: number;
domContentLoadedEventStart: number;
domContentLoadedEventEnd: number;
loadEventStart: number;
loadEventEnd: number;
};
}
/**
* 用户行为数据
*/
interface BehaviorData extends BaseMonitorData {
/** 行为类型 */
type: BehaviorType;
/** 事件名称 */
event: string;
/** 目标元素 */
target?: string;
/** 元素路径 */
xpath?: string;
/** 额外数据 */
data?: Record<string, any>;
/** 持续时间 */
duration?: number;
}
/**
* 上报数据联合类型
*/
type MonitorData = ErrorData | PerformanceData | BehaviorData;
/**
* 事件发射器接口
*/
interface EventEmitter {
on(event: string, listener: Function): void;
off(event: string, listener?: Function): void;
emit(event: string, ...args: any[]): boolean;
once(event: string, listener: Function): void;
}
/**
* 队列状态
*/
interface QueueStatus$1 {
/** 队列大小 */
size: number;
/** 最大队列大小 */
maxSize: number;
/** 是否已满 */
isFull: boolean;
/** 错误数量 */
errorCount: number;
/** 性能数据数量 */
performanceCount: number;
/** 行为数据数量 */
behaviorCount: number;
}
/**
* SDK状态
*/
interface SDKStatus {
/** 是否已初始化 */
initialized: boolean;
/** 是否启用 */
enabled: boolean;
/** 队列状态 */
queue: QueueStatus$1;
/** 上次上报时间 */
lastReportTime: number;
/** 错误监控状态 */
errorMonitor: boolean;
/** 性能监控状态 */
performanceMonitor: boolean;
/** 行为监控状态 */
behaviorMonitor: boolean;
}
/**
* 平台适配器接口
* 定义各平台需要实现的核心接口,实现平台无关的监控功能
*/
/**
* 平台环境信息
*/
interface PlatformInfo {
/** 平台类型 */
platform: "web" | "taro-mini" | "wechat-mini" | "react-native";
/** 平台版本 */
version: string;
/** 用户代理信息 */
userAgent: string;
/** 设备信息 */
deviceInfo: Record<string, any>;
}
/**
* 错误捕获接口
*/
interface ErrorCaptureAdapter {
/**
* 初始化错误监听
* @param onError 错误回调函数
*/
initErrorListeners(onError: (error: ErrorData) => void): void;
/**
* 销毁错误监听
*/
destroyErrorListeners(): void;
/**
* 手动捕获错误
* @param error 错误对象或消息
* @param extra 额外信息
*/
captureError(error: Error | string, extra?: Record<string, any>): ErrorData;
/**
* 捕获HTTP错误
* @param request 请求信息
*/
captureHttpError(request: HttpRequestInfo): ErrorData;
}
/**
* 性能监控接口
*/
interface PerformanceAdapter {
/**
* 初始化性能监控
* @param onPerformance 性能数据回调
*/
initPerformanceMonitor(onPerformance: (data: PerformanceData) => void): void;
/**
* 销毁性能监控
*/
destroyPerformanceMonitor(): void;
/**
* 手动记录性能指标
* @param name 指标名称
* @param metrics 指标数据
*/
recordPerformance(name: string, metrics: Record<string, number>): PerformanceData;
/**
* 获取页面性能指标
*/
getPagePerformance(): Record<string, number>;
}
/**
* 行为监控接口
*/
interface BehaviorAdapter {
/**
* 初始化行为监控
* @param onBehavior 行为数据回调
*/
initBehaviorMonitor(onBehavior: (data: BehaviorData) => void): void;
/**
* 销毁行为监控
*/
destroyBehaviorMonitor(): void;
/**
* 手动记录行为
* @param event 事件名称
* @param data 事件数据
*/
recordBehavior(event: string, data?: Record<string, any>): BehaviorData;
}
/**
* 网络适配接口
*/
interface NetworkAdapter {
/**
* 拦截网络请求
* @param onRequest 请求回调
* @param onResponse 响应回调
* @param onError 错误回调
*/
interceptNetwork(onRequest: (request: any) => void, onResponse: (response: any) => void, onError: (error: any) => void): void;
/**
* 发送监控数据
* @param url 接口地址
* @param data 数据
* @param options 选项
*/
sendData(url: string, data: any, options?: {
timeout?: number;
retries?: number;
headers?: Record<string, string>;
}): Promise<any>;
}
/**
* 存储适配接口
*/
interface StorageAdapter {
/**
* 设置本地存储
* @param key 键
* @param value 值
*/
setItem(key: string, value: string): void;
/**
* 获取本地存储
* @param key 键
*/
getItem(key: string): string | null;
/**
* 删除本地存储
* @param key 键
*/
removeItem(key: string): void;
/**
* 清空本地存储
*/
clear(): void;
}
/**
* HTTP请求信息
*/
interface HttpRequestInfo {
url: string;
method: string;
status: number;
statusText: string;
duration: number;
requestSize?: number;
responseSize?: number;
error?: string;
}
/**
* 完整的平台适配器接口
*/
interface PlatformAdapter {
/** 平台信息 */
readonly platformInfo: PlatformInfo;
/** 错误捕获适配器 */
readonly errorCapture: ErrorCaptureAdapter;
/** 性能监控适配器 */
readonly performance: PerformanceAdapter;
/** 行为监控适配器 */
readonly behavior: BehaviorAdapter;
/** 网络适配器 */
readonly network: NetworkAdapter;
/** 存储适配器 */
readonly storage: StorageAdapter;
/**
* 初始化平台适配器
* @param config 配置选项
*/
init(config: Record<string, any>): void;
/**
* 销毁平台适配器
*/
destroy(): void;
}
/**
* 核心基础管理器
* 提供监控SDK的基础功能:配置管理、事件系统、队列管理等
*/
/**
* 监控SDK核心管理器
*/
declare class BaseManager implements EventEmitter {
protected config: MonitorConfig;
protected platformAdapter: PlatformAdapter;
protected sessionId: string;
protected dataQueue: MonitorData[];
protected isInitialized: boolean;
protected isEnabled: boolean;
protected listeners: Map<string, Function[]>;
protected reportTimer?: any;
constructor(config: MonitorConfig, platformAdapter: PlatformAdapter);
/**
* 合并默认配置和用户配置
* @param userConfig 用户配置
* @returns 合并后的配置
*/
private mergeConfig;
/**
* 深度合并对象
* @param target 目标对象
* @param source 源对象
* @returns 合并后的对象
*/
private deepMerge;
/**
* 初始化监控SDK
*/
init(): Promise<void>;
/**
* 检查是否应该启用监控
* @returns 是否启用
*/
private shouldEnable;
/**
* 检查是否为开发环境
* @returns 是否为开发环境
*/
private isDevelopment;
/**
* 初始化错误监控
*/
private initErrorMonitor;
/**
* 初始化性能监控
*/
private initPerformanceMonitor;
/**
* 初始化行为监控
*/
private initBehaviorMonitor;
/**
* 添加数据到队列
* @param data 监控数据
*/
protected addToQueue(data: MonitorData): void;
/**
* 启动定时上报
*/
private startReportTimer;
/**
* 立即上报所有数据
* @returns Promise
*/
flush(): Promise<void>;
/**
* 发送数据到服务器
* @param data 要发送的数据
*/
private sendData;
/**
* 手动捕获错误
* @param error 错误对象或消息
* @param extra 额外信息
*/
captureError(error: Error | string, extra?: Record<string, any>): void;
/**
* 手动记录性能指标
* @param name 指标名称
* @param metrics 指标数据
*/
recordPerformance(name: string, metrics: Record<string, number>): void;
/**
* 手动记录用户行为
* @param event 事件名称
* @param data 事件数据
*/
recordBehavior(event: string, data?: Record<string, any>): void;
/**
* 获取SDK状态
* @returns SDK状态
*/
getStatus(): SDKStatus;
/**
* 销毁SDK
*/
destroy(): void;
on(event: string, listener: Function): void;
off(event: string, listener?: Function): void;
emit(event: string, ...args: any[]): boolean;
once(event: string, listener: Function): void;
}
/**
* 错误管理器
* 专门处理错误监控的核心逻辑,包括错误过滤、聚合、上报等
*/
/**
* 错误聚合信息
*/
interface ErrorAggregation {
/** 错误指纹 */
fingerprint: string;
/** 错误消息 */
message: string;
/** 错误堆栈 */
stack?: string;
/** 发生次数 */
count: number;
/** 首次发生时间 */
firstSeen: number;
/** 最后发生时间 */
lastSeen: number;
/** 错误级别 */
level: "error" | "warning" | "info";
/** 影响的用户数 */
affectedUsers: Set<string>;
/** 最近的错误数据 */
recentErrors: ErrorData[];
}
/**
* 错误管理器配置
*/
interface ErrorManagerConfig extends ErrorConfig {
/** 错误聚合窗口时间(毫秒) */
aggregationWindow?: number;
/** 最大聚合错误数 */
maxAggregations?: number;
/** 重复错误的最大保留数量 */
maxRecentErrors?: number;
/** 是否启用错误聚合 */
enableAggregation?: boolean;
/** 项目版本 */
projectVersion?: string;
/** 构建ID */
buildId?: string;
/** 是否启用源代码映射 */
enableSourceMapping?: boolean;
}
/**
* 错误管理器
*/
declare class ErrorManager {
private config;
private errorCapture;
private aggregations;
private onError?;
private onAggregatedError?;
private cleanupTimer?;
constructor(config: ErrorManagerConfig, errorCapture: ErrorCaptureAdapter);
/**
* 初始化错误管理器
*/
private init;
/**
* 设置错误回调
* @param onError 错误回调函数
*/
setErrorCallback(onError: (error: ErrorData) => void): void;
/**
* 设置聚合错误回调
* @param onAggregatedError 聚合错误回调函数
*/
setAggregatedErrorCallback(onAggregatedError: (aggregation: ErrorAggregation) => void): void;
/**
* 处理错误
* @param error 错误数据
*/
private handleError;
/**
* 添加版本信息到错误数据
* @param error 错误数据
*/
private enrichErrorWithVersionInfo;
/**
* 解析错误堆栈,提取文件路径、行号、列号
* @param error 错误数据
*/
private parseErrorStack;
/**
* 检查是否应该捕获错误
* @param error 错误数据
* @returns 是否捕获
*/
private shouldCaptureError;
/**
* 聚合错误
* @param error 错误数据
*/
private aggregateError;
/**
* 生成错误指纹
* @param error 错误数据
* @returns 错误指纹
*/
private generateErrorFingerprint;
/**
* 简单哈希函数
* @param str 字符串
* @returns 哈希值
*/
private simpleHash;
/**
* 检查聚合是否需要上报
* @param aggregation 错误聚合
*/
private checkAggregationReporting;
/**
* 上报单个错误
* @param error 错误数据
*/
private reportError;
/**
* 上报聚合错误
* @param aggregation 错误聚合
*/
private reportAggregatedError;
/**
* 手动捕获错误
* @param error 错误对象或消息
* @param extra 额外信息
*/
captureError(error: Error | string, extra?: Record<string, any>): void;
/**
* 捕获HTTP错误
* @param request 请求信息
*/
captureHttpError(request: any): void;
/**
* 获取错误统计
* @returns 错误统计信息
*/
getErrorStats(): {
totalAggregations: number;
totalErrors: number;
affectedUsers: number;
topErrors: Array<{
fingerprint: string;
message: string;
count: number;
affectedUsers: number;
}>;
};
/**
* 清理过期的聚合
*/
private cleanOldAggregations;
/**
* 启动清理定时器
*/
private startCleanupTimer;
/**
* 销毁错误管理器
*/
destroy(): void;
}
/**
* 监控SDK通用工具函数
* 提供各平台通用的工具方法
*/
/**
* 生成唯一ID
* @returns 唯一ID字符串
*/
declare function generateId(): string;
/**
* 获取当前时间戳
* @returns 时间戳
*/
declare function getTimestamp(): number;
/**
* 生成会话ID
* @returns 会话ID
*/
declare function generateSessionId(): string;
/**
* 序列化错误对象
* @param error 错误对象
* @returns 序列化后的错误信息
*/
declare function serializeError(error: any): any;
/**
* 获取错误堆栈信息
* @param error 错误对象
* @returns 堆栈字符串
*/
declare function getErrorStack(error: Error): string | undefined;
/**
* 安全的JSON序列化
* @param obj 要序列化的对象
* @param maxDepth 最大深度,默认10
* @returns 序列化结果
*/
declare function safeJsonStringify(obj: any, maxDepth?: number): string;
/**
* 安全的JSON解析
* @param str JSON字符串
* @param defaultValue 默认值
* @returns 解析结果
*/
declare function safeJsonParse<T = any>(str: string, defaultValue?: T | null): T | null;
/**
* 防抖函数
* @param func 要防抖的函数
* @param wait 等待时间
* @returns 防抖后的函数
*/
declare function debounce<T extends (...args: any[]) => any>(func: T, wait: number): (...args: Parameters<T>) => void;
/**
* 节流函数
* @param func 要节流的函数
* @param limit 限制时间
* @returns 节流后的函数
*/
declare function throttle<T extends (...args: any[]) => any>(func: T, limit: number): (...args: Parameters<T>) => void;
/**
* 获取当前页面信息(通用)
* @returns 页面信息
*/
declare function getPageInfo(): {
url: string;
title: string;
referrer: string;
};
/**
* 获取用户代理信息
* @returns 用户代理字符串
*/
declare function getUserAgent(): string;
/**
* 检查是否为移动设备
* @returns 是否为移动设备
*/
declare function isMobile(): boolean;
/**
* 获取网络连接类型(如果支持)
* @returns 网络连接类型
*/
declare function getNetworkType(): string;
/**
* 格式化字节大小
* @param bytes 字节数
* @returns 格式化后的字符串
*/
declare function formatBytes(bytes: number): string;
/**
* 格式化持续时间
* @param ms 毫秒数
* @returns 格式化后的字符串
*/
declare function formatDuration(ms: number): string;
/**
* 深度克隆对象
* @param obj 要克隆的对象
* @returns 克隆后的对象
*/
declare function deepClone<T>(obj: T): T;
/**
* 检查值是否为空
* @param value 要检查的值
* @returns 是否为空
*/
declare function isEmpty(value: any): boolean;
/**
* 获取对象的类型
* @param obj 对象
* @returns 类型字符串
*/
declare function getType(obj: any): string;
/**
* 安全地访问对象属性
* @param obj 对象
* @param path 属性路径,如 'a.b.c'
* @param defaultValue 默认值
* @returns 属性值或默认值
*/
declare function get(obj: any, path: string, defaultValue?: any): any;
/**
* 版本信息工具
* 提供版本信息管理和源代码映射相关功能
*/
/**
* 版本信息接口
*/
interface VersionInfo {
/** 项目版本 */
projectVersion: string;
/** 构建ID */
buildId?: string;
/** 构建时间 */
buildTime?: string;
/** 环境 */
environment?: string;
/** 是否包含 sourcemap */
hasSourcemap?: boolean;
/** 额外信息 */
extra?: Record<string, string>;
}
/**
* 创建版本信息
* @param options 版本信息选项
* @returns 版本信息对象
*/
declare function createVersionInfo(options: Partial<VersionInfo>): VersionInfo;
/**
* 生成构建ID
* 使用时间戳和随机字符串生成唯一的构建ID
* @returns 构建ID
*/
declare function generateBuildId(): string;
/**
* 解析源代码位置
* 从错误堆栈中提取文件路径、行号、列号
* @param stack 错误堆栈
* @returns 源代码位置信息
*/
declare function parseSourceLocation(stack: string): {
filename?: string;
lineno?: number;
colno?: number;
};
/**
* 提取错误上下文
* 从源代码中提取错误行及其上下文
* @param sourceCode 源代码
* @param lineNumber 行号
* @param contextLines 上下文行数
* @returns 错误上下文
*/
declare function extractErrorContext(sourceCode: string, lineNumber: number, contextLines?: number): {
preLines: string[];
errorLine: string;
postLines: string[];
};
/**
* 队列管理工具
* 提供数据队列管理、批量处理、持久化等功能
*/
/**
* 队列配置选项
*/
interface QueueConfig {
/** 最大队列大小 */
maxSize?: number;
/** 批量处理大小 */
batchSize?: number;
/** 自动刷新间隔(毫秒) */
flushInterval?: number;
/** 是否启用持久化 */
enablePersistence?: boolean;
/** 持久化存储key */
storageKey?: string;
/** 最大缓存大小 */
maxCacheSize?: number;
/** 是否启用压缩 */
enableCompression?: boolean;
}
/**
* 队列状态
*/
interface QueueStatus {
/** 队列大小 */
size: number;
/** 最大大小 */
maxSize: number;
/** 是否已满 */
isFull: boolean;
/** 挂起的数据数量 */
pendingCount: number;
/** 失败的数据数量 */
failedCount: number;
/** 成功发送的数据数量 */
successCount: number;
}
/**
* 队列事件类型
*/
declare enum QueueEventType {
ITEM_ADDED = "itemAdded",
ITEMS_FLUSHED = "itemsFlushed",
FLUSH_SUCCESS = "flushSuccess",
FLUSH_ERROR = "flushError",
QUEUE_FULL = "queueFull",
CACHE_RESTORED = "cacheRestored"
}
/**
* 队列事件发射器
*/
interface QueueEventEmitter {
on(event: QueueEventType, listener: Function): void;
emit(event: QueueEventType, ...args: any[]): void;
}
/**
* 数据队列管理器
*/
declare class DataQueue {
private config;
private queue;
private pendingQueue;
private storage?;
private flushTimer?;
private eventEmitter?;
private stats;
constructor(config?: QueueConfig, storage?: StorageAdapter, eventEmitter?: QueueEventEmitter);
/**
* 初始化队列
*/
private init;
/**
* 添加数据到队列
* @param data 监控数据
*/
add(data: MonitorData): void;
/**
* 批量添加数据
* @param dataList 数据列表
*/
addBatch(dataList: MonitorData[]): void;
/**
* 获取批量数据
* @param size 批量大小
* @returns 数据数组
*/
getBatch(size?: number): MonitorData[];
/**
* 获取所有数据并清空队列
* @returns 所有数据
*/
flush(): MonitorData[];
/**
* 处理发送成功
* @param data 成功发送的数据
*/
onSendSuccess(data: MonitorData[]): void;
/**
* 处理发送失败
* @param data 失败的数据
* @param error 错误信息
*/
onSendError(data: MonitorData[], error: any): void;
/**
* 获取队列状态
* @returns 队列状态
*/
getStatus(): QueueStatus;
/**
* 检查队列是否为空
* @returns 是否为空
*/
isEmpty(): boolean;
/**
* 检查队列是否已满
* @returns 是否已满
*/
isFull(): boolean;
/**
* 清空队列
*/
clear(): void;
/**
* 启动定时刷新
*/
private startFlushTimer;
/**
* 停止定时刷新
*/
private stopFlushTimer;
/**
* 保存到缓存
*/
private saveToCache;
/**
* 从缓存恢复
*/
private restoreFromCache;
/**
* 防抖的保存到缓存
*/
private debouncedSaveToCache;
/**
* 简单压缩(这里使用base64编码作为示例)
* @param data 数据
* @returns 压缩后的数据
*/
private compress;
/**
* 简单解压缩
* @param data 压缩的数据
* @returns 解压后的数据
*/
private decompress;
/**
* 销毁队列
*/
destroy(): void;
}
/**
* 重试队列
* 专门处理失败重试的队列
*/
declare class RetryQueue extends DataQueue {
private retryAttempts;
private maxRetries;
private retryDelay;
constructor(config?: QueueConfig & {
maxRetries?: number;
retryDelay?: number;
}, storage?: StorageAdapter, eventEmitter?: QueueEventEmitter);
/**
* 添加重试数据
* @param data 数据
* @param error 错误信息
*/
addRetry(data: MonitorData, error: any): void;
/**
* 处理发送成功
*/
onSendSuccess(data: MonitorData[]): void;
/**
* 获取重试统计
*/
getRetryStats(): {
totalRetries: number;
activeRetries: number;
};
/**
* 清空重试队列
*/
clear(): void;
}
/**
* 监控SDK核心模块入口
* 导出所有核心组件和类型
*/
declare const VERSION = "1.0.0";
/**
* 核心模块元信息
*/
declare const CORE_INFO: {
name: string;
version: string;
description: string;
author: string;
license: string;
};
/**
* 支持的平台列表
*/
declare const SUPPORTED_PLATFORMS: readonly ["web", "taro-mini", "wechat-mini", "react-native"];
type SupportedPlatform = (typeof SUPPORTED_PLATFORMS)[number];
export { BaseManager, BehaviorType, CORE_INFO, DataQueue, ErrorManager, ErrorType, PerformanceType, QueueEventType, RetryQueue, SUPPORTED_PLATFORMS, VERSION, createVersionInfo, debounce, deepClone, extractErrorContext, formatBytes, formatDuration, generateBuildId, generateId, generateSessionId, get, getErrorStack, getNetworkType, getPageInfo, getTimestamp, getType, getUserAgent, isEmpty, isMobile, parseSourceLocation, safeJsonParse, safeJsonStringify, serializeError, throttle };
export type { BaseConfig, BaseMonitorData, BehaviorAdapter, BehaviorConfig, BehaviorData, ErrorCaptureAdapter, ErrorConfig, ErrorData, EventEmitter, HttpRequestInfo, MonitorConfig, MonitorData, NetworkAdapter, PerformanceAdapter, PerformanceConfig, PerformanceData, PlatformAdapter, PlatformInfo, QueueConfig, QueueEventEmitter, QueueStatus, ReportConfig, SDKStatus, StorageAdapter, SupportedPlatform, VersionInfo };