import { Identify, getInstance } from 'amplitude-js' /** * Module centralizing main Amplitude methods. * Concentrates and exports main amplitude-js * methods in a more friendly standard, improving * development experience. * * # @example * ```jsx * // other necessary imports up here... * import { amplitude } from 'vtex.admin-shell-utils' * * export const callAmplitude = ({ userProps, groupProps }) => { * amplitude.init() * const myUserProps = amplitude.createUserProperties() * .set('User Prop 1', userProp.prop1) * .set('User Prop 2', 'Prop 2') * amplitude.setUserId(userProps.id) * amplitude.setUserProperties(myUserProps) * amplitude.setGroup('Group 1', groupProps.groupName) * amplitude.sendEvent('My Event', { 'Event Prop 1': 'My event prop' }) * } * ``` */ // The API_KEY below does not need to be secret, as it is sent as a header on every amplitude request // More on this subject can be found here: https://github.com/amplitude/Amplitude-Javascript/issues/100 const API_KEY = '051cbcefafb8d388b8592ca1e2920623' const initAmplitude = (apiKey: string) => { getInstance().init(apiKey === 'prod' ? API_KEY : apiKey) } const setAmplitudeUserId = (userId: string) => { getInstance().setUserId(userId) } const setAmplitudeUserProperties = (userProperties: Identify) => { getInstance().identify(userProperties) } const sendAmplitudeEvent = (eventType: string, eventProperties: any) => { getInstance().logEvent(eventType, eventProperties) } const setAmplitudeGroup = (groupKey: string, groupValue: string | string[]) => { getInstance().setGroup(groupKey, groupValue) } class Amplitude { public init = (apiKey: 'prod' | string) => initAmplitude(apiKey) public setUserId = (id: string) => setAmplitudeUserId(id) public sendEvent = (type: string, properties: any) => sendAmplitudeEvent(type, properties) public createUserProperties = () => new Identify() public setUserProperties = (properties: Identify) => setAmplitudeUserProperties(properties) public setGroup = (groupKey: string, groupValue: string | string[]) => setAmplitudeGroup(groupKey, groupValue) } export const amplitude = new Amplitude()