UNPKG

@dotcms/analytics

Version:

Official JavaScript library for Content Analytics with DotCMS.

106 lines (104 loc) 4.01 kB
import { DotCMSAnalyticsConfig, DotCMSAnalyticsContext, DotCMSAnalyticsPayload, DotCMSBrowserEventData, DotCMSDeviceData, DotCMSPageData, DotCMSUtmData } from './dot-content-analytics.model'; import { PageData } from 'analytics'; export { cleanupActivityTracking, getLastActivity, getSessionInfo, initializeActivityTracking, isUserInactive, updateSessionActivity } from './dot-content-analytics.activity-tracker'; /** * Generates a cryptographically secure random ID */ export declare const generateSecureId: (prefix: string) => string; /** * Safe sessionStorage wrapper with error handling */ export declare const safeSessionStorage: { getItem: (key: string) => string | null; setItem: (key: string, value: string) => void; }; /** * Gets or generates a user ID */ export declare const getUserId: () => string; /** * Gets session ID with comprehensive lifecycle management * Returns existing valid session ID or creates a new one if needed * * Session validation criteria: * 1. User is still active (< 30 min inactivity) * 2. Session hasn't passed midnight (UTC) * 3. UTM parameters haven't changed */ export declare const getSessionId: () => string; /** * Gets analytics context with user and session identification */ export declare const getAnalyticsContext: (config: DotCMSAnalyticsConfig) => DotCMSAnalyticsContext; /** * Retrieves analytics attributes from a given script element. */ export declare const getDataAnalyticsAttributes: () => DotCMSAnalyticsConfig; /** * Gets the analytics script tag from the DOM */ export declare const getAnalyticsScriptTag: () => HTMLScriptElement; /** * Retrieves the browser event data - optimized but accurate. */ export declare const getBrowserEventData: (location: Location) => DotCMSBrowserEventData; /** * Extracts UTM parameters from the URL - cached for performance */ export declare const extractUTMParameters: (location: Location) => Record<string, string>; /** * Default redirect function */ export declare const defaultRedirectFn: (href: string) => string; /** * Gets local time in ISO format without milliseconds */ export declare const getLocalTime: () => string; /** * Gets page data from browser event data and payload */ export declare const getPageData: (browserData: DotCMSBrowserEventData, payload: DotCMSAnalyticsPayload) => PageData; /** * Gets device data from browser event data */ export declare const getDeviceData: (browserData: DotCMSBrowserEventData) => DotCMSDeviceData; /** * Gets UTM data from browser event data */ export declare const getUtmData: (browserData: DotCMSBrowserEventData) => DotCMSUtmData; /** * Enriches payload with UTM data */ export declare const enrichWithUtmData: (payload: DotCMSAnalyticsPayload) => DotCMSAnalyticsPayload; /** * Optimized payload enrichment using existing analytics.js data * Reuses payload.properties data instead of recalculating from DOM when available * Maintains the same output structure as the original function */ export declare const enrichPagePayloadOptimized: (payload: DotCMSAnalyticsPayload, location?: Location) => { local_time: string; utm?: DotCMSUtmData | undefined; page: DotCMSPageData; device: DotCMSDeviceData; event: string; properties: Record<string, unknown>; options: Record<string, unknown>; context?: DotCMSAnalyticsContext | undefined; }; /** * @deprecated Use enrichPagePayloadOptimized instead to avoid data duplication * Legacy function that enriches page payload with all data in one call * This function duplicates data already available in analytics.js payload */ export declare const enrichPagePayload: (payload: DotCMSAnalyticsPayload, location?: Location) => { payload: { local_time: string; utm?: DotCMSUtmData | undefined; page: PageData; device: DotCMSDeviceData; event: string; properties: Record<string, unknown>; options: Record<string, unknown>; context?: DotCMSAnalyticsContext | undefined; }; };