@dotcms/analytics
Version:
Official JavaScript library for Content Analytics with DotCMS.
106 lines (104 loc) • 4.01 kB
TypeScript
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;
};
};