@mtdt.temp/browser-rum-core
Version:
Datadog browser RUM core utilities.
32 lines (27 loc) • 1.11 kB
text/typescript
import type {
DISCARDED,
Duration,
HookNamesAsConst,
RecursivePartial,
RelativeTime,
SKIPPED,
TelemetryEvent,
} from '@mtdt.temp/browser-core'
import { abstractHooks } from '@mtdt.temp/browser-core'
import type { RumEvent } from '../rumEvent.types'
// Define a partial RUM event type.
// Ensuring the `type` field is always present improves type checking, especially in conditional logic in hooks (e.g., `if (eventType === 'view')`).
export type DefaultRumEventAttributes = RecursivePartial<RumEvent> & { type: RumEvent['type'] }
export type DefaultTelemetryEventAttributes = RecursivePartial<TelemetryEvent>
export interface HookCallbackMap {
[HookNamesAsConst.ASSEMBLE]: (param: {
eventType: RumEvent['type']
startTime: RelativeTime
duration?: Duration | undefined
}) => DefaultRumEventAttributes | SKIPPED | DISCARDED
[HookNamesAsConst.ASSEMBLE_TELEMETRY]: (param: {
startTime: RelativeTime
}) => DefaultTelemetryEventAttributes | SKIPPED | DISCARDED
}
export type Hooks = ReturnType<typeof createHooks>
export const createHooks = abstractHooks<HookCallbackMap>