@causalfoundry/js-sdk
Version:
Causal Foundry WEB SDK (JS/TS)
69 lines (64 loc) • 1.8 kB
text/typescript
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);
};