@widergy/web-utils
Version:
Utility GO! Web utils
66 lines (65 loc) • 2.92 kB
TypeScript
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;
}