import { IApiAttr } from '../utils/api'; import { ICollectorConfig } from '@arms/rum-core'; import { IConfiguration } from '@arms/rum-core'; import { ITracingOption } from '@arms/rum-core'; import { MatchOption } from '@arms/rum-core'; import { Shell } from '@arms/rum-core'; /** * browser sdk */ export declare class ArmsRum extends Shell { /** * 初始化 */ init(configuration: IBrowserConfig): this; getConfig(): IConfiguration; setConfig(key: T, value: IBrowserConfig[T]): void; setConfig(value: IBrowserConfig): void; } declare const _default: ArmsRum; export default _default; /** * 浏览器端 RUM SDK 配置接口 * 继承自 IConfiguration,提供浏览器环境特有的配置选项 */ declare interface IBrowserConfig { /** * 各个 collector config */ collectors?: { [key: string]: boolean | ICollectorConfig; }; /** * 事件过滤器配置 */ filters?: { view?: MatchOption | MatchOption[]; resource?: MatchOption | MatchOption[]; exception?: MatchOption | MatchOption[]; }; /** * 自定义视图名称解析函数 * 用于从 URL 中提取视图名称,覆盖默认的路径解析逻辑 * @param url - 当前页面的完整 URL * @returns 解析后的视图名称,将作为 view.name 上报 * @example * parseViewName: (url) => { * const match = url.match(/\/user\/(\d+)/); * return match ? `user-${match[1]}` : 'unknown'; * } */ parseViewName?(url: string): string; /** * 自定义资源名称解析函数 * 用于从资源 URL 中提取资源名称,覆盖默认的路径解析逻辑 * 适用于静态资源(JS、CSS、图片等)和 API 请求 * @param url - 资源的完整 URL * @returns 解析后的资源名称,将作为 resource.name 上报 * @example * parseResourceName: (url) => { * const path = new URL(url).pathname; * return path.split('/').pop() || 'unknown'; * } */ parseResourceName?(url: string): string; /** * 分布式链路追踪(Tracing)配置 * 用于在请求中注入和传播追踪上下文信息 * - `boolean`: 简单启用/禁用追踪功能 * - `ITracingOption`: 详细的追踪配置对象,可指定: * - 追踪协议类型:'tracecontext' | 'b3' | 'b3multi' | 'jaeger' * - 采样率、白名单 URL 等 * @default false */ tracing?: boolean | ITracingOption; /** * 自定义 API 请求解析函数 * 用于自定义解析 XMLHttpRequest 和 fetch 请求的响应数据 * 可以提取请求的关键信息,如状态码、响应时间、错误信息等 * @param request - 请求对象,包含 URL、方法、请求头等信息 * @param response - 响应对象,包含响应数据、状态码等信息 * @param error - 可选的错误对象,当请求失败时提供 * @param xhr - 可选的 XMLHttpRequest 对象(仅 XHR 请求时提供) * @returns 返回解析后的 API 属性对象,包含 name、duration、status_code 等字段 * @example * evaluateApi: async (request, response, error, xhr) => { * return { * name: new URL(request.url).pathname, * duration: response.timing?.duration || 0, * status_code: response.status || (error ? 500 : 200), * success: error ? 0 : 1 * }; * } */ evaluateApi?(request: any, response: any, error?: Error, xhr?: XMLHttpRequest): Promise; } export { }