@zendesk/react-measure-timing-hooks
Version:
react hooks for measuring time to interactive and time to render of components
45 lines (44 loc) • 1.59 kB
TypeScript
import type { ComponentRenderSpan, PerformanceEntrySpan, Span } from '../spanTypes';
export interface ComponentRenderStub extends Partial<Omit<ComponentRenderSpan<any>, 'startTime' | 'duration'>> {
entryType: 'component-render' | 'component-render-start';
duration: number;
startTime?: number;
name: string;
}
export interface LongTaskStub {
entryType: 'longtask';
duration: number;
startTime?: number;
name?: string;
}
export interface MarkStub extends Partial<Omit<PerformanceEntrySpan<any>, 'startTime' | 'duration'>> {
entryType: 'mark';
name: string;
startTime?: number;
}
export interface FmpStub {
entryType: 'fmp';
startTime?: number;
}
export interface IdleStub {
entryType: 'idle';
duration: number;
}
export type Stub = ComponentRenderStub | LongTaskStub | MarkStub | FmpStub | IdleStub;
export declare const Render: (name: string, duration: number, options?: {
startTime?: number;
} & Partial<Omit<ComponentRenderSpan<any>, "startTime" | "duration">>) => ComponentRenderStub;
export declare const LongTask: (duration: number, options?: {
start?: number;
}) => LongTaskStub;
export declare const Idle: (duration: number) => IdleStub;
export declare const Check: MarkStub;
export declare const FMP: FmpStub;
export declare function makeEntries(events: Stub[]): {
entries: PerformanceEntry[];
fmpTime: number | null;
};
export declare function getSpansFromTimeline<RelationSchemasT>(_: TemplateStringsArray, ...exprs: (Stub | number)[]): {
spans: Span<RelationSchemasT>[];
fmpTime: number | null;
};