1/** 2 * Copyright (c) Meta Platforms, Inc. and affiliates. 3 * 4 * This source code is licensed under the MIT license found in the 5 * LICENSE file in the root directory of this source tree. 6 * 7 * @format 8 */ 9 10export type Timespan = { 11 startTime: number; 12 endTime?: number; 13 totalTime?: number; 14 startExtras?: Extras; 15 endExtras?: Extras; 16}; 17 18// Extra values should be serializable primitives 19export type ExtraValue = number | string | boolean; 20 21export type Extras = {[key: string]: ExtraValue}; 22 23export interface IPerformanceLogger { 24 addTimespan( 25 key: string, 26 startTime: number, 27 endTime: number, 28 startExtras?: Extras, 29 endExtras?: Extras, 30 ): void; 31 append(logger: IPerformanceLogger): void; 32 clear(): void; 33 clearCompleted(): void; 34 close(): void; 35 currentTimestamp(): number; 36 getExtras(): {[key: string]: ExtraValue | null}; 37 getPoints(): {[key: string]: number | null}; 38 getPointExtras(): {[key: string]: Extras | null}; 39 getTimespans(): {[key: string]: Timespan | null}; 40 hasTimespan(key: string): boolean; 41 isClosed(): boolean; 42 logEverything(): void; 43 markPoint(key: string, timestamp?: number, extras?: Extras): void; 44 removeExtra(key: string): ExtraValue | null; 45 setExtra(key: string, value: ExtraValue): void; 46 startTimespan(key: string, timestamp?: number, extras?: Extras): void; 47 stopTimespan(key: string, timestamp?: number, extras?: Extras): void; 48} 49