import { Client, Integration } from '@sentry/core'; import { MinigameFrameRateOptions } from '../types'; /** * Minigame FrameRate Integration * * 面向「小游戏」的帧率(FPS)/ 卡顿(jank)监控。通过自循环采样全局 * requestAnimationFrame 估算帧率:单帧间隔超过 longFrameThresholdMs 记一次 jank * (面包屑按窗口限频,避免持续掉帧刷屏);每 reportInterval 周期性上报窗口内 * FPS / 最低瞬时 FPS / 最差帧耗时 / jank 次数到 `minigame.framerate` 上下文。 * * 此外,会话维度累积帧率/卡顿,在退后台(onHide)或集成关闭时发一个汇总 * transaction(`minigame.framerate.summary`,含 fps_avg / fps_p95 / fps_min / * jank_count measurements),独立于 error 事件、进 Sentry Performance 页,由 * tracesSampleRate 控制——不每窗口发事件,配额友好。 * * 可选 `jankLevels` 把卡顿按 minor/major/severe 三档分级:每帧按命中的最高档归类, * 面包屑带 `jankLevel`,summary 对启用的档增发 `jank_{minor,major,severe}_count` * (`jank_count` 仍为总数)。不配置时沿用单档 longFrameThresholdMs,行为不变。 * * 仅适用于小游戏:小游戏有绑定真实渲染帧的全局 requestAnimationFrame;小程序为 * 双线程架构、逻辑层无全局 requestAnimationFrame,缺失时安全降级(不工作)。 */ export declare class MinigameFrameRateIntegration implements Integration { static id: string; name: string; private _options; private _tiered; private _tiers; private _jankEntryThreshold; private _running; private _windowElapsed; private _lastFrameTs; private _frameCount; private _jankCount; private _jankBreadcrumbs; private _jankByTier; private _maxFrameDelta; private static readonly _MAX_FPS_SAMPLES; private static readonly _MAX_REASONABLE_FRAME_DELTA_MS; private static readonly _HIDE_FLUSH_TIMEOUT_MS; private _sessionEpochStart; private _sessionElapsed; private _sessionFrames; private _sessionJank; private _sessionJankByTier; private _sessionWorstFrame; private _fpsSamples; private _showHandler; private _hideHandler; private _isSetup; private _client; constructor(options?: MinigameFrameRateOptions); setupOnce(): void; setup(client: Client): void; private _setup; private _onFrame; private _sanitizeFrameDelta; private _report; private _rollupWindow; private _resetWindow; /** 重置会话累积(回前台开启新会话)。 */ private _resetSession; /** * 回前台(onShow):开启新会话,并把帧循环 / 窗口基线对齐到当前时刻。 * 退后台时 RAF 暂停,回前台后第一帧的 delta 会等于整段后台时长——若不重置基线, * 会被误判为一帧巨型卡顿,拉爆 worstFrame、把 minFps 打到 ~0、jank +1,污染新会话汇总。 */ private _restartOnResume; /** * 发一个会话汇总 transaction(独立于 error 上报,进 Performance 页)。 * 仅在 tracing 启用时真正上报;会话无帧则跳过。发完重置会话累积。 */ private _flushSummary; private _flushPendingEvents; cleanup(): void; private _isActiveClient; } /** * 函数式工厂。 */ export declare const minigameFrameRateIntegration: (options?: MinigameFrameRateOptions) => MinigameFrameRateIntegration; //# sourceMappingURL=minigame-framerate.d.ts.map