UNPKG

@causalfoundry/js-sdk

Version:

Causal Foundry WEB SDK (JS/TS)

69 lines (64 loc) 1.8 kB
import { injectEvent } from "../../core/injector"; import { LevelProperties, LoyaltyTypes, MilestoneProperties, PromoAction, PromoProperties, RewardProperties, SurveyProperties, } from "./typings"; import { validateLevelEvent, validateMilestoneEvent, validatePromoEvent, validateRewardEvent, validateSurveyEvent, } from "./validators"; export const logIngestEvent = async ( eventType: LoyaltyTypes, properties: | PromoProperties | LevelProperties | MilestoneProperties | SurveyProperties | RewardProperties, sendNow = false, eventTime?: string ) => { let checkProps = true; let property: PromoAction | undefined; switch (eventType) { case LoyaltyTypes.Promo: checkProps = validatePromoEvent(properties as PromoProperties); if (checkProps) { property = (properties as PromoProperties).action; } break; case LoyaltyTypes.Level: checkProps = validateLevelEvent(properties as LevelProperties); break; case LoyaltyTypes.Milestone: checkProps = validateMilestoneEvent(properties as MilestoneProperties); if (checkProps) { property = (properties as PromoProperties).action; } break; case LoyaltyTypes.Survey: checkProps = validateSurveyEvent(properties as SurveyProperties); if (checkProps) { property = (properties as PromoProperties).action; } break; case LoyaltyTypes.Reward: checkProps = validateRewardEvent(properties as RewardProperties); if (checkProps) { property = (properties as PromoProperties).action; } break; } if (!checkProps) { return; // Exit if the properties validation failed } injectEvent(eventType, property, properties, sendNow, "", eventTime); };