-
Notifications
You must be signed in to change notification settings - Fork 0
/
stats-handler.ts
21 lines (16 loc) · 982 Bytes
/
stats-handler.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* istanbul ignore file */
import type { ReadonlyBinding } from '../binding/types/readonly-binding';
let globalStatsHandler: StatsHandler = {};
export interface StatsHandler {
trackDidMakeBinding?: (args: { binding: ReadonlyBinding }) => void;
trackBindingDidAddChangeListener?: (args: { binding: ReadonlyBinding }) => void;
trackBindingDidRemoveChangeListener?: (args: { binding: ReadonlyBinding }) => void;
trackBindingDidSetRaw?: (args: { binding: ReadonlyBinding; durationMSec: number; numListeners: number }) => void;
trackDerivedBindingTransformerDidRun?: (args: { id: string; durationMSec: number }) => void;
}
/** Gets the stats handler registered using `setStatsHandler` */
export const getStatsHandler = () => globalStatsHandler;
/** Sets a stats handler that can be used for debugging or analyzing use. Not recommended for production environments */
export const setStatsHandler = (statsHandler: StatsHandler) => {
globalStatsHandler = statsHandler;
};