UNPKG

@posthog/types

Version:

Type definitions for the PostHog JavaScript SDK

102 lines (86 loc) 2.47 kB
/** * Capture-related types */ import type { Properties } from './common' /** * These are known events PostHog events that can be processed by the `beforeCapture` function * That means PostHog functionality does not rely on receiving 100% of these for calculations * So, it is safe to sample them to reduce the volume of events sent to PostHog */ export type KnownEventName = | '$heatmaps_data' | '$opt_in' | '$exception' | '$$heatmap' | '$web_vitals' | '$dead_click' | '$autocapture' | '$copy_autocapture' | '$rageclick' /** * Known events that can be safely edited in beforeCapture without breaking PostHog functionality */ export type KnownUnsafeEditableEvent = | '$set' | '$pageview' | '$pageleave' | '$identify' | '$groupidentify' | '$create_alias' | '$feature_flag_called' export type EventName = | KnownUnsafeEditableEvent | KnownEventName // magic value so that the type of EventName is a set of known strings or any other string // which means you get autocomplete for known strings // but no type complaints when you add an arbitrary string | (string & {}) export interface CaptureResult { uuid: string event: EventName properties: Properties $set?: Properties $set_once?: Properties timestamp?: Date } export interface CaptureOptions { /** * Used when `$identify` is called * Will set person properties overriding previous values */ $set?: Properties /** * Used when `$identify` is called * Will set person properties but only once, it will NOT override previous values */ $set_once?: Properties /** * Used to override the desired endpoint for the captured event */ _url?: string /** * key of queue, e.g. 'sessionRecording' vs 'event' */ _batchKey?: string /** * If set, overrides and disables config.properties_string_max_length */ _noTruncate?: boolean /** * If set, skips the batched queue */ send_instantly?: boolean /** * If set, skips the client side rate limiting */ skip_client_rate_limiting?: boolean /** * If set, overrides the desired transport method */ transport?: 'XHR' | 'fetch' | 'sendBeacon' /** * If set, overrides the current timestamp */ timestamp?: Date } export type BeforeSendFn = (cr: CaptureResult | null) => CaptureResult | null