UNPKG

@widergy/web-utils

Version:
66 lines (65 loc) 2.92 kB
import { Config, Mixpanel } from 'mixpanel-browser'; import { UaEventOptions } from 'react-ga4/types/ga4'; export type eventDataDefinition = { [key: string]: ((action: any) => any) | undefined; }; export type currentUser = { email: string; first_name: string; id: number; last_name: string; [key: string]: unknown; }; export type params = { [key: string]: ((action: any) => any) | undefined; }; export type customTracker = (data: any, props?: any) => {}; export interface TrackerArguments { eventDataDefinition: eventDataDefinition; customTracker?: customTracker; googleTracking?: boolean; } export interface MixPanel extends Mixpanel { config: Config | undefined | null; } export interface AnalyticsUtils { createMiddleware: (eventDataDefinition: { [key: string]: ((action: any) => any) | undefined; }) => void; generateEventId: () => string; generateFlowId: () => string; initializeGA: (analyticsTrackingId: string) => void; intercomSingleEvent: (trackEventFunction: Function) => (eventData: GenericEventData) => void; intercomUpdateUser: (updaterFunction: Function) => (userProperties: GenericObject) => void; mixpanelPeopleSet: (mixpanel: MixPanel) => (userProfileProperties: GenericObject) => void; mixpanelSuperPropertiesRegister: (mixpanel: MixPanel) => (superProperties: GenericObject) => void; mixpanelGroupProfileSet: (mixpanel: MixPanel) => (groupKey: string, groupId: string | number, profileName: string) => void; mixpanelUserIdentify: (mixpanel: MixPanel) => (userProfileProperties: GenericObject, utilityId: number) => void; mixpanelUserReset: (mixpanel: MixPanel) => () => void; multiTracking: (trackerArgumentsArray: TrackerArguments[]) => (() => (next: any) => (action: any) => any)[]; retrievePublicUserId: () => string; sendGAEvent: (category: string, action: string, label: string, value: number) => void; sendGAPageView: (pathname: string) => void; setGAUserId: (userId: string) => void; singleArgosEvent: (sendArgosAnalytics: Function) => (eventData: GenericEventData) => void; singleEventMultitracking: (trackers: Trackers, eventDefinitions: EventDefinitions) => (name: string, eventData: GenericEventData) => void; singleGAEvent: () => (eventData: UaEventOptions) => void; singleInhouseEvent: (sendInhouseAnalytics: Function) => (eventData: GenericEventData) => void; singleMixpanelEvent: (mixpanel: MixPanel) => (eventData: MixPanelEventData) => void; } export type GenericObject = { [key: string]: string | number | boolean | GenericObject; }; export interface GenericEventData { [key: string]: GenericObject; } export interface MixPanelEventData { yourProperties: GenericObject; name: string; } export interface EventDefinitions { [key: string]: GenericEventData; } export interface Trackers { [key: string]: customTracker; }