UNPKG

@error-monitor/core

Version:

Monitor Core - 前端监控SDK核心模块,提供跨平台的监控基础能力

1,172 lines (1,158 loc) 28.8 kB
/** * 监控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 };