44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import type { DSNInfo, SentryEvent } from '../types';
|
|
export declare class Reporter {
|
|
private dsn;
|
|
private maxRetries;
|
|
private retryDelay;
|
|
private useShortFields;
|
|
constructor(dsn: DSNInfo, maxRetries: number, retryDelay: number);
|
|
report(events: SentryEvent[]): Promise<void>;
|
|
reportSync(events: SentryEvent[]): void;
|
|
/**
|
|
* 构建 Sentry Envelope
|
|
*
|
|
* 优化:
|
|
* 1. 批量元数据共享 - 同批次共享 release/environment/user
|
|
* 2. 字段短编码 - 常用字段名使用短码
|
|
* 3. 时间戳相对化 - 批次内后续事件用差值
|
|
*/
|
|
private buildEnvelope;
|
|
/**
|
|
* 时间戳相对化
|
|
*
|
|
* 批次内:
|
|
* - 第一个事件:完整时间戳
|
|
* - 后续事件:相对于第一个事件的毫秒差值(用 _dts 字段表示)
|
|
*
|
|
* 这样可以将时间戳从 13 位数字减少到 2-4 位数字
|
|
*/
|
|
private applyRelativeTimestamps;
|
|
/**
|
|
* 提取批次内公共元数据
|
|
*/
|
|
private extractSharedMeta;
|
|
/**
|
|
* 移除已共享的字段,减少重复
|
|
*/
|
|
private stripSharedFields;
|
|
private getEnvelopeType;
|
|
private generateEventId;
|
|
private send;
|
|
private sendSync;
|
|
private sendViaImage;
|
|
private delay;
|
|
}
|