UNPKG

@segment/analytics-next

Version:

Analytics Next (aka Analytics 2.0) is the latest version of Segment’s JavaScript SDK - enabling you to send your data to any tool without having to learn, test, or use a new API every time.

34 lines (30 loc) 1.15 kB
import { pick } from '../../lib/pick' import { EventProperties, SegmentEvent } from '../events' import { getDefaultPageContext } from './get-page-context' /** * Augments a segment event with information about the current page. * Page information like URL changes frequently, so this is meant to be captured as close to the event call as possible. * Things like `userAgent` do not change, so they can be added later in the flow. * We prefer not to add this information to this function, as it increases the main bundle size. */ export const addPageContext = ( event: SegmentEvent, pageCtx = getDefaultPageContext() ): void => { const evtCtx = event.context! // Context should be set earlier in the flow let pageContextFromEventProps: Pick<EventProperties, string> | undefined if (event.type === 'page') { pageContextFromEventProps = event.properties && pick(event.properties, Object.keys(pageCtx)) event.properties = { ...pageCtx, ...event.properties, ...(event.name ? { name: event.name } : {}), } } evtCtx.page = { ...pageCtx, ...pageContextFromEventProps, ...evtCtx.page, } }