UNPKG

@causalfoundry/js-sdk

Version:

Causal Foundry WEB SDK (JS/TS)

85 lines (75 loc) 1.92 kB
import { injectEvent } from "../../core/injector"; import { CancelCheckoutProperties, CartProperties, CheckoutInternalProperties, CheckoutProperties, DeliveryProperties, ECommerceTypes, ItemReportProperties, ItemRequestProperties, ItemProperties, } from "./typings"; import { validate } from "./validators"; import { getPayloadFromItem } from "./itemObjectMapper"; export const logIngestEvent = async ( eventType: ECommerceTypes, properties: | CancelCheckoutProperties | CheckoutProperties | CartProperties | DeliveryProperties | ItemReportProperties | ItemRequestProperties | ItemProperties, sendNow = false, eventTime?: string ) => { if (!validate(eventType, properties)) return; if (eventType === ECommerceTypes.Item || eventType === ECommerceTypes.Cart) { const prs = properties as ItemProperties | CartProperties; const payload = getPayloadFromItem(prs.item); injectEvent( eventType, (properties as any).action, payload, sendNow, "", eventTime ); return; } if (eventType === ECommerceTypes.Checkout) { const prs = properties as CheckoutProperties; if (!prs.items?.length) return; for (const itemObj of prs.items) { const itemPayload = getPayloadFromItem(itemObj); const payload: CheckoutInternalProperties = { order_id: prs.order_id, is_successful: prs.is_successful, cart_price: prs.cart_price, cart_id: prs.cart_id, shop_mode: prs.shop_mode, meta: prs.meta, items: itemPayload, }; injectEvent( eventType, (prs.is_successful) ? "is_successful" : "not_successful", payload, sendNow, "", eventTime ); } return; } injectEvent( eventType, (properties as any).action, properties, sendNow, "", eventTime ); };