/** * Keep these types in a separate file in order to reference it from the official doc */ import type { RumEventType } from './rawRumEvent.type'; export type RumEventDomainContext = T extends RumEventType.VIEW ? RumViewEventDomainContext : T extends RumEventType.RESOURCE ? RumFetchResourceEventDomainContext | RumXhrResourceEventDomainContext | RumOtherResourceEventDomainContext : T extends RumEventType.ERROR ? RumErrorEventDomainContext : T extends RumEventType.ACTION ? RumActionEventDomainContext : never; export interface RumViewEventDomainContext { location: Readonly; } export interface RumErrorEventDomainContext { error: unknown; handlingStack?: string; } export interface RumActionEventDomainContext { events?: Event[]; handlingStack?: string; } export interface RumFetchResourceEventDomainContext { requestInit?: RequestInit; requestInput: RequestInfo; response?: Response; error?: Error; performanceEntry?: PerformanceEntry; isAborted: boolean; handlingStack?: string; } export interface RumXhrResourceEventDomainContext { xhr: XMLHttpRequest; performanceEntry?: PerformanceEntry; isAborted: boolean; handlingStack?: string; } export interface RumOtherResourceEventDomainContext { performanceEntry: PerformanceEntry; }