import { InterfaceEventEmitter } from './util'; import { Config, LogType, Environment, SendOption, SendSuccess, SendFail, SpeedLog, BridgeLog, ReportTimeLog, SendType, EventLog } from './interface'; import Plugin from './plugin'; import { Pipe } from './pipes'; import { TimeEndLog } from './interface/log'; /** * Aegis 核心逻辑,所有平台的 Aegis 类都继承于 Core * 类似 linux 微内核的架构组织代码 * 所有 Aegis 的功能都是基于 Core 实现 * 1. 封装了 Aegis 的基本属性和方法 * 2. 封装了 Aegis 的插件模型,Aegis 中所有数据采集的逻辑均基于插件体系实现 * 3. 封装了 Aegis 的基础实例方法,包括 info report reportEvent 等,平台无需自己重复实现 * 4. 封装了 Aegis 的生命周期,实现生命周期管理 */ export default class Core { static version: string; static instances: Core[]; static logType: typeof LogType; static environment: typeof Environment; static installedPlugins: Plugin[]; /** * 使用插件 * @param plugin */ static use(plugin: Plugin): void; /** * 销毁插件 * @param plugin */ static unuse(plugin: Plugin): void; isGetSample: boolean; isHidden: boolean; config: Config; isWhiteList: boolean; whitelistUseGzip: boolean; whitelistUseGzipReady: boolean; lifeCycle: InterfaceEventEmitter; bean: { [key: string]: string | number | boolean; }; sendNow: boolean; rateLimitConfigs: { [key: string]: number; } | null; rateLimitReady: boolean; rateLimitSampled: boolean; rateLimitPool: Array<{ logs: any; resolve: Function; sendType: SendType; }>; normalLogPipeline: import("./pipes").Pipeline; eventPipeline: import("./pipes").Pipeline; customTimePipeline: import("./pipes").Pipeline; private timeMap; private failRequestCount; /** * 构造函数 * @param config */ constructor(config: Config); /** * 初始化方法,用于记录用户传入参数和初始化 SDK 所有插件 * @param config */ init(config: Config): void; /** * 销毁 Aegis 实例,清空 Aegis 实例属性和方法,销毁插件 * @param force */ destroy(force?: boolean): void; /** * 设置属性,这个方法也暴露给用户,方便用户动态修改 SDK 属性 * @param config * @returns */ setConfig(config: Partial): Config; extendBean(key: string, value: string | number): void; /** * 重置 whitelist 下发的 gzip 运行时状态。 * * 当前策略是默认先允许 gzip,避免在 whitelist 未返回、请求失败、解析失败时 * 因兜底关闭导致压缩能力被整体禁用;只有当后台成功返回且明确给出 * `use_gzip=0` 时,才会真正关闭 gzip。 */ resetWhitelistGzipState(): void; /** * 根据 whitelist 返回的 `use_gzip` 更新运行时 gzip 开关。 * - `1` / 缺省:允许 gzip * - `0`:关闭 gzip */ updateWhitelistGzipState(useGzip: unknown): void; /** * 主动关闭 whitelist 侧的 gzip 开关。 * * 仅用于后台已经明确表达“不允许 gzip”的场景; * 不用于 whitelist 未返回、请求失败或解析失败的兜底分支。 */ disableWhitelistGzipState(): void; /** * 计算最终是否允许开启 gzip 上报。 * * 只有“本地配置允许 gzip”且“whitelist 运行时开关允许 gzip”同时满足时, * 才返回 true;任一条件不满足都视为不允许开启。 */ isGzipReportEnabled(localEnabled: boolean): boolean; send(options: SendOption, success?: SendSuccess, fail?: SendFail): any; sendSDKError(err: Error): void; sendPipeline(pipes: Pipe[], type: SendType): import("./pipes").Pipeline; validateRange(value: number): number; info(...msg: any): void; infoAll(...msg: any): void; report(...msg: any): void; error(...msg: any): void; reportEvent(event: string | EventLog): void; reportT(obj: ReportTimeLog): void; reportTime(key: string | ReportTimeLog, duration?: number): void; time(key: string): void; timeEnd(key: string | TimeEndLog): void; ready(_options: SendOption, _success?: SendSuccess, _fail?: SendFail): void; request(_options: SendOption, _success?: SendSuccess, _fail?: SendFail): void; speedLogPipeline(_log?: SpeedLog | SpeedLog[] | BridgeLog | BridgeLog[]): void; getOriginFrom(): string; get __version__(): string; get LogType(): typeof LogType; reportPv(id: number): void; private submitCustomTime; private getTimeEventDuration; }