@azzas/azzas-tracker-web 1.0.65 → 1.0.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/constants.ts","../src/adapters/datalayer.ts","../src/core/utils.ts","../src/adapters/dito.ts","../src/adapters/index.ts","../src/params/utils/index.ts","../src/params/resolvers/brand/fromOrderForm.ts","../src/params/resolvers/brand/fromItem.ts","../src/params/brand.ts","../src/params/resolvers/items/fromOrderForm.ts","../src/params/resolvers/items/fromItem.ts","../src/params/resolvers/items/fromList.ts","../src/params/resolvers/items/fromPdp.ts","../src/params/resolvers/items/fromBanner.ts","../src/params/items.ts","../src/params/resolvers/paymentType/fromOrderForm.ts","../src/params/resolvers/paymentType/fromOrderGroup.ts","../src/params/paymentType.ts","../src/params/index.ts","../src/formatter/index.ts","../src/index.ts"],"sourcesContent":["export const EVENTS = {\n CUSTOM_VIEW_CART: {\n name: \"custom_view_cart\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"region\",\n \"line_items\",\n \"currency\",\n \"value\",\n \"total_discount\",\n \"subtotal\",\n \"items\",\n ],\n },\n\n ADD_TO_WISHLIST: {\n name: \"add_to_wishlist\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"region\",\n \"line_items\",\n \"currency\",\n \"value\",\n \"items\",\n ],\n },\n\n ADD_TO_CART: {\n name: \"add_to_cart\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"region\",\n \"line_items\",\n \"currency\",\n \"value\",\n \"items\",\n ],\n },\n\n REMOVE_FROM_CART: {\n name: \"remove_from_cart\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"region\",\n \"line_items\",\n \"currency\",\n \"value\",\n \"items\",\n ],\n },\n\n ADD_COUPON: {\n name: \"add_coupon\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"region\",\n \"coupon\",\n \"coupon_message\",\n \"seller_cod_name\",\n ],\n },\n\n SEARCH: {\n name: \"search\",\n hasEcommerce: false,\n destinations: [\"DataLayer\"],\n requiredParams: [\"brand\", \"search_term\", \"search_found\", \"search_quantity\"],\n },\n\n SEARCH_ZIPCODE: {\n name: 'search_zipcode',\n hasEcommerce: false,\n destinations: ['DataLayer'],\n requiredParams: ['brand', 'region', 'shippings', 'zipcode', 'flag_pickup'],\n },\n\n VIEW_PROMOTION: {\n name: \"view_promotion\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"region\",\n \"currency\",\n \"promotion_name\",\n \"creative_slot\",\n \"creative_name\",\n \"items\",\n ],\n },\n\n SELECT_PROMOTION: {\n name: \"select_promotion\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"region\",\n \"currency\",\n \"promotion_name\",\n \"creative_slot\",\n \"creative_name\",\n \"items\",\n ],\n },\n\n SELECT_CONTENT: {\n name: \"select_content\",\n hasEcommerce: false,\n destinations: [\"DataLayer\"],\n requiredParams: [\"brand\", 'content_type'],\n },\n\n SELECT_ITEM: {\n name: \"select_item\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\"brand\", \"region\", \"items\", \"line_items\"],\n },\n\n VIEW_ITEM: {\n name: \"view_item\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"line_items\",\n \"currency\",\n \"value\",\n \"available_grid\",\n \"items\",\n ],\n },\n\n CUSTOM_VIEW_ITEM: { // IO STORES\n name: \"custom_view_item\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"line_items\",\n \"currency\",\n \"value\",\n \"available_grid\",\n \"items\",\n ],\n },\n\n VIEW_ITEM_LIST: {\n name: \"view_item_list\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\"region\", \"brand\", \"line_items\", \"items\"],\n },\n\n BEGIN_CHECKOUT: {\n name: \"begin_checkout\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\"brand\", \"line_items\", \"currency\", \"value\", \"total_discount\", \"subtotal\", \"items\"],\n },\n\n CUSTOM_BEGIN_CHECKOUT: {\n name: \"custom_begin_checkout\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\"brand\", \"line_items\", \"currency\", \"value\", \"total_discount\", \"subtotal\", \"items\"],\n },\n\n AUTH_ACTION: {\n name: \"auth_action\",\n hasEcommerce: false,\n requiredParams: [\"region\"],\n },\n\n ADD_PERSONAL_INFO: {\n name: \"add_personal_info\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\"brand\", \"pre_filled\", \"line_items\", \"currency\", \"value\", \"total_discount\", \"subtotal\"],\n },\n\n CUSTOM_ADD_SHIPPING_INFO: {\n name: \"add_shipping_info\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"pre_filled\",\n \"shipping\",\n \"shipping_tier\",\n \"line_items\",\n \"currency\",\n \"value\",\n \"total_discount\",\n \"subtotal\",\n \"items\"\n ],\n },\n\n CUSTOM_ADD_PAYMENT_INFO: {\n name: \"add_payment_info\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n \"brand\",\n \"pre_filled\",\n \"line_items\",\n \"currency\",\n \"value\",\n \"total_discount\",\n \"payment_type\",\n \"subtotal\",\n \"items\"\n ],\n },\n\n ORDER_REVIEWED: {\n name: \"order_reviewed\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\"brand\", \"line_items\", \"currency\", \"value\", \"total_discount\", \"subtotal\", \"payment_type\"],\n },\n\n PURCHASE: {\n name: \"purchase\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n 'brand',\n 'shipping_tier',\n 'line_items',\n 'currency',\n 'value',\n 'shipping',\n 'transaction_id',\n 'total_discount',\n 'payment_type',\n 'seller_cod_name',\n 'subtotal',\n 'coupon',\n 'items'\n ],\n },\n\n CUSTOM_PURCHASE: {\n name: \"custom_purchase\",\n hasEcommerce: true,\n destinations: [\"DataLayer\"],\n requiredParams: [\n 'brand',\n 'shipping_tier',\n 'line_items',\n 'currency',\n 'value',\n 'shipping',\n 'transaction_id',\n 'total_discount',\n 'payment_type',\n 'seller_cod_name',\n 'subtotal',\n 'coupon',\n 'items'\n ],\n },\n\n CUSTOM_USER_INFO: {\n name: 'custom_user_info',\n hasEcommerce: false,\n destinations: [\"DataLayer\"],\n requiredParams: ['user_info']\n },\n\n NOTIFY_ME: {\n name: 'notify_me',\n hasEcommerce: false,\n destinations: [\"DataLayer\"],\n requiredParams: ['brand', 'line_items', 'size', 'item_ref']\n }\n};\n","import type { EventContext, EventName } from \"../types\";\nimport { EVENTS } from \"../core/constants\";\n\n/**\n * Pushes an ecommerce tracking event to the appropriate dataLayer and logs the payload.\n *\n * Ensures a dataLayer array exists on the target (prefer `ecomm.window` if present, otherwise the global `window`)\n * and pushes an object containing `event` and the `ecomm` payload. Also logs the pushed payload for debugging.\n *\n * @param event - The tracking event name to push\n * @param context - The event context payload; if it contains a `window` property that object's `dataLayer` will be used as the target\n */\nexport function pushToDataLayer(event: string, context: EventContext) {\n const targetWindow = context.window || (typeof window !== 'undefined' ? window : null);\n if (!targetWindow) return;\n\n const payload = Object.assign({}, context);\n delete payload.window; // delete window prop and avoid to push as payload to dayalayer\n\n const eventName = event.toUpperCase() as EventName;\n const eventConfig = EVENTS[eventName] as { hasEcommerce: boolean };\n\n targetWindow.dataLayer = targetWindow.dataLayer || [];\n\n if (eventConfig?.hasEcommerce) {\n targetWindow.dataLayer.push({ ecommerce: null });\n targetWindow.dataLayer.push({ event: event, ecommerce: payload });\n } else {\n targetWindow.dataLayer.push({ event: event, ...payload });\n }\n}","import { EventContext } from \"../types\";\n\nexport function dataTrackingLog(data: EventContext, color: string) {\n console.log(\n `%c[DT] EVENTO DISPARADO:%c `,\n `background: ${color}; color: white; font-weight: bold; padding: 2px 4px; border-radius: 3px;`,\n 'color: #fff;',\n data || ''\n );\n}\n\nexport function setCookie(name: string, value: string, days = 7) {\n const encodedValue = encodeURIComponent(value);\n\n let expires = \"\";\n if (days) {\n const date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toUTCString();\n }\n\n document.cookie = `${name}=${encodedValue}${expires}; path=/;`;\n}\n\nexport const paymentTypeMap = [\n ['vale', 'vale crédito'],\n ['pagaleve', 'pix'],\n ['pix parcel', 'pix parcelado'],\n ['pix', 'pix'],\n ['apple', 'apple pay'],\n ['google', 'google pay'],\n ['boleto', 'boleto'],\n ['paypal', 'paypal'],\n ['cred', 'cartão'],\n ['visa', 'cartão'],\n ['master', 'cartão'],\n ['amex', 'cartão'],\n ['elo', 'cartão'],\n ['hiper', 'cartão'],\n ['diner', 'cartão'],\n ['deb', 'cartão'],\n];\n\n\nexport const toNum = (val: unknown) => typeof val === 'string' ? Number(val.replace(/[^\\d,]/g, '').replace(',', '.')) : val","import { dataTrackingLog } from \"../core/utils\";\nimport type { EventContext } from \"../types\";\n\nexport function pushToDito(event: string, ecomm: EventContext) {\n dataTrackingLog({ id: event, custom_data: ecomm }, '#00c851');\n}","import { EVENTS } from '../core/constants';\nimport { pushToDataLayer } from './datalayer';\nimport { pushToDito } from './dito';\n\nimport type { EventName, EventContext } from '../types'\n\nconst adapters = {\n DataLayer: pushToDataLayer,\n Dito: pushToDito,\n};\n\ntype AdapterKey = keyof typeof adapters;\n\n/**\n * Dispatches a tracking event to all destinations configured for the given event.\n *\n * Looks up destinations from the EVENTS configuration, calls each destination adapter\n * in parallel (providing the event name in lowercase and the supplied context), and\n * waits for all attempts to settle. Individual adapter failures are logged with the\n * \"[DT]\" prefix but do not prevent other destinations from running.\n *\n * @param eventName - The name of the event to dispatch\n * @param data - The event context/payload to send to adapters\n */\nexport async function dispatchTrackEvent(eventName: EventName, data: EventContext) {\n const eventConfig = EVENTS[eventName] as { destinations: string[] };\n\n if (!eventConfig) return;\n\n await Promise.allSettled(\n eventConfig.destinations.map(async (dest: string) => {\n try {\n // call the adapter function based on the destination mapped in the adapters object\n // eventName is converted to lowercase to match the expected format in all adapters\n await adapters[dest as AdapterKey](eventName.toLowerCase(), data);\n } catch (err) {\n console.error(`[DT] Failed to send ${eventName} to ${dest}:`, err);\n }\n })\n );\n}\n","/**\n * Fetches product data for the given product id from the catalog API.\n *\n * @param id - The product identifier used as the `productId` query filter\n * @returns The parsed JSON response containing product data, or `undefined` if the request fails\n */\nexport async function getProductDataById(id: any) {\n try {\n const response = await fetch(\n `/api/catalog_system/pub/products/search?fq=productId:${id}`\n );\n\n return await response.json();\n } catch (e) {\n console.log('[DT] Erro ao buscar dados do produto', e);\n }\n}\n\nexport function isPDP(url: string) {\n try {\n const { pathname } = new URL(url, window.location.origin);\n return /\\/p\\/?$/.test(pathname);\n } catch {\n return false;\n }\n}\n\nexport function extractRefIdFromUrl(url: string | null) {\n if (!url) return null;\n\n const path = (() => {\n try { return new URL(url, location.origin).pathname }\n catch { return url.split('?')[0] }\n })();\n\n const match = decodeURIComponent(path).match(/(\\d+-\\d+)(?=\\/p|$)/);\n return match ? match[1].replace('-', '_') : null;\n}\n\nexport async function getProductByRefId(url: string | null) {\n const refId = extractRefIdFromUrl(url);\n if (!refId) return console.error('Não foi possível extrair o RefId da URL'), null;\n\n try {\n const res = await fetch(`/api/catalog_system/pub/products/search?fq=alternateIds_RefId:${refId}`);\n if (!res.ok) throw new Error(`Erro na API: ${res.status}`);\n\n const products = await res.json();\n return products?.[0] || null;\n } catch (err) {\n console.error('Erro ao buscar dados do produto:', err);\n return null;\n }\n}\n\nexport function getItemShippingTier(orderForm: any, item: any) {\n const info = orderForm?.shippingData?.logisticsInfo?.find(\n (li: any) => li.itemId === item.id\n );\n\n const selectedSla = info?.slas?.find((sla: any) => sla.id === info.selectedSla);\n return selectedSla?.pickupStoreInfo?.friendlyName\n ? `retirada em loja: ${selectedSla.pickupStoreInfo.friendlyName}`\n : selectedSla?.name\n ? `Receba em casa: ${selectedSla.name}`\n : null;\n}\n\nexport async function getItemSku(item: any) {\n const product = await getProductDataById(item.productId || item.productID || item.item_group_id);\n\n if (!product.length) return null;\n\n return product[0].items.find((i: any) => i.name === item.skuName)?.itemId ?? null;\n}\n\nexport function getDiscount(item: any) {\n return item.discount || item.discount === 0 ? item.discount :\n (\n parseFloat(Math.max(item.listPrice - item.sellingPrice, 0).toFixed(2)) / 100 || 0\n );\n}\n\nexport function getItemCategory(item: any) {\n\n const strategies = [\n () => item?.productCategories?.['39'] === 'BAZAR' ? 'Sale' : 'Coleção',\n () => item?.item_category, \n () => item?.category, \n () => item?.categories[0],\n ];\n\n for (const getValue of strategies) {\n const value = getValue();\n\n if (value !== null && value !== undefined) {\n return value;\n }\n }\n\n return null\n\n}\n\nexport function getItemCategory2(item: any) {\n const strategies = [\n () => Object.values(item?.productCategories || {}).pop(), // checkout select_item context\n () => (Object.values(item?.categories || {}).pop() as string | undefined)?.slice(1, -1).replace(/\\//g, ','), // \n () => item?.category?.split?.('>')?.[1]?.trim?.(), // deco select_item context\n () => item.item_category2, // deco add_to_cart context PDP\n ];\n\n for (const getValue of strategies) {\n const value = getValue();\n\n if (value !== null && value !== undefined) {\n return value;\n }\n }\n\n return null;\n}\n\nexport function getItemCategory4(item: any) {\n const tags = item?.additionalInfo?.tags || item?.tags;\n return Array.isArray(tags) && tags.length ? tags.join(',') : null;\n}\n\nconst BRAND_CODES = {\n farm: 'farmrio',\n 'farm etc': 'farmetc',\n 'farm rio': 'farmrio',\n} as const;\n\ntype Standardized = keyof typeof BRAND_CODES\ninterface BrandItem {\n brand?: string;\n additionalInfo?: {\n brandName?: string;\n };\n}\n\n/**\n * Extrai o código padronizado (ex: 'farmrio') de uma única string de marca.\n * Retorna null se não houver mapeamento.\n */\nfunction getBrandCode(brand: string | undefined): string | null {\n if (!brand) return null;\n const standardized = brand.toLowerCase().trim();\n return BRAND_CODES[standardized as Standardized] || null;\n}\n\n/**\n * Função principal que padroniza a marca ou lista de marcas para o formato final:\n * 'farmrio', 'farmetc', ou 'farmrio_farmetc'.\n */\nexport function normalizeBrand(input: string | BrandItem[] | BrandItem | string[] | undefined | null) {\n let brandStrings = [];\n\n if (Array.isArray(input) && input.every(item => typeof item === 'string')) {\n brandStrings = input as string[];\n } else if (Array.isArray(input)) {\n // Se for um Array, coleta a string da marca de cada item.\n brandStrings = input.map(item => item.additionalInfo?.brandName || item.brand);\n } else if (typeof input === 'object' && input !== null && 'brand' in input) {\n // Se for um Objeto único, trata como um Array de um único item (para reuso de lógica).\n brandStrings = [(input as BrandItem).additionalInfo?.brandName || (input as BrandItem).brand];\n } else if (typeof input === 'string') {\n // Se for uma String (mal formatada ou não), trata diretamente.\n return getBrandCode(input);\n } else {\n // Se for undefined, null, ou outro tipo não esperado.\n return null;\n }\n\n const brandCodes = brandStrings\n .map(getBrandCode)\n .filter((code): code is string => code !== null); // ['farmrio', 'farmetc', 'farmrio']\n\n const uniqueSortedCodes = [...new Set(brandCodes)].sort(); // ['farmetc', 'farmrio']\n\n // Retorna a combinação ('farmrio', 'farmetc', ou 'farmrio_farmetc').\n return uniqueSortedCodes.length > 0 ? uniqueSortedCodes.join('_') : null;\n}\n","import { normalizeBrand } from '../../utils';\n\nexport function brandFromOrderForm(context: Record<string, any>) {\n if (!context.orderForm && !context.orderForm.items?.length) return null;\n\n const items = context.orderForm.items;\n\n return normalizeBrand(items);\n}\n","import { normalizeBrand } from '../../utils';\n\nexport function brandFromItem(context: Record<string, any>) {\n const { item } = context;\n\n return normalizeBrand(item?.additionalInfo?.brandName || item.brand || item.item_brand);\n}\n","import { brandFromOrderForm } from './resolvers/brand/fromOrderForm';\nimport { brandFromItem } from './resolvers/brand/fromItem';\nimport { normalizeBrand } from './utils';\nimport type { EventContext, EventName } from '../types';\n\n/**\n * Determines the brand for an event by using the context or extracting it based on the event type.\n *\n * Prefers `context.brand` when present; otherwise selects a resolver based on `eventName` to extract the brand.\n *\n * @param context - The event context which may already contain a `brand` or provide data for extraction\n * @param eventName - The event name used to choose the extraction strategy\n * @returns The resolved brand value, or `null` if no brand could be determined\n */\nexport function getBrand(context: EventContext, eventName: EventName) {\n if (context?.brand) return normalizeBrand(context.brand) || context.brand || null;\n\n switch (eventName) {\n case 'CUSTOM_VIEW_CART':\n case 'ADD_COUPON':\n case 'ADD_PERSONAL_INFO':\n case 'CUSTOM_ADD_SHIPPING_INFO':\n case 'CUSTOM_ADD_PAYMENT_INFO':\n case 'BEGIN_CHECKOUT':\n case 'CUSTOM_BEGIN_CHECKOUT':\n case 'SEARCH_ZIPCODE':\n case 'ORDER_REVIEWED':\n case 'PURCHASE':\n case 'CUSTOM_PURCHASE':\n return brandFromOrderForm(context);\n case 'ADD_TO_CART':\n case 'REMOVE_FROM_CART':\n return brandFromItem(context);\n default:\n return null;\n }\n}\n","import type { EventContext } from '../../../types';\n\nimport {\n getItemSku,\n getDiscount,\n getItemCategory,\n getItemCategory2,\n getItemCategory4,\n getItemShippingTier,\n normalizeBrand,\n} from '../../utils';\n\n/**\n * Builds an array of normalized item objects from the order form contained in the given context.\n *\n * @param context - EventContext containing an orderForm with items to convert\n * @returns An array of item-like objects derived from `context.orderForm.items`, each containing fields such as `item_id`, `price`, `quantity`, `item_sku`, `item_name`, category and variant attributes, and `discount`\n */\nexport async function itemsFromOrderForm(context: EventContext) {\n const items = context.orderForm?.items || [];\n\n if (!items.length) return [];\n\n return await Promise.all(\n items.map(async (item: EventContext) => ({\n item_id: item.productId,\n item_category2: getItemCategory2(item),\n item_category4: getItemCategory4(item),\n item_shipping_tier: getItemShippingTier(context.orderForm, item),\n price: parseFloat(((item.listPrice || item.price) / 100).toFixed(2)) || 0,\n quantity: item.quantity || 1,\n item_ref: item.refId || null,\n item_brand: normalizeBrand(item.additionalInfo?.brandName) || item.additionalInfo?.brandName || null,\n item_sku: (await getItemSku(item)) || item.id || null,\n item_name: item.name.split(' - ').shift() || item.id || null,\n item_category: getItemCategory(item) || null,\n item_variant: item.skuName.split(/[-/]/)[0].trim(),\n item_variant2: item.skuName.split(/[-/]/).pop()?.trim() || '',\n discount: getDiscount(item),\n }))\n );\n}\n","import {\n getItemSku,\n getDiscount,\n getItemCategory,\n getItemCategory2,\n getItemCategory4,\n getItemShippingTier,\n} from '../../utils';\n\nexport async function itemsFromItem(context: Record<string, any>, event: string) {\n const { item, orderForm, itemListName } = context;\n return [\n {\n index: typeof item?.index === 'number' ? item.index : null,\n quantity: 1,\n item_id: item?.productId || item?.item_group_id || item?.sku || null,\n item_category2: getItemCategory2(item),\n item_category4: getItemCategory4(item),\n item_shipping_tier: event === 'REMOVE_FROM_CART' ? getItemShippingTier(orderForm, item) : null,\n price: item?.listPrice || item?.price || 0,\n item_ref: item?.ref || item?.refId || item?.item_ref || item?.additionalProperty?.find((i: { name: string }) => i.name === \"RefId\").value || null,\n item_brand: item?.additionalInfo?.brandName || item?.item_brand || item?.brand?.name || null,\n item_sku: item?.sku || item?.id || item?.item_id || (await getItemSku(item)) || null,\n item_name: item?.name || item?.item_name || null,\n item_category: getItemCategory(item) || null,\n item_variant: (item?.skuName || item?.item_variant || item?.name).split(/[-/]/)[0].trim() || null,\n item_variant2: item?.size || item?.itemAttributes?.size || (item?.skuName || item?.name)?.split(/[-/]/).pop()?.trim() || null,\n discount: getDiscount(item),\n item_list_name: itemListName || null,\n\n item_url: item?.item_url || null, // add_to_cart dito\n },\n ];\n}\n","import { getDiscount, getItemCategory, getItemCategory2, normalizeBrand } from '../../utils';\n\nexport async function itemsFromList(context: Record<string, any>) {\n return (context?.list || []).map((item: any) => {\n return {\n price: item?.price?.list || item?.price || item?.offers?.lowPrice || item?.priceRange?.listPrice?.highPrice || null,\n quantity: 1,\n item_ref: item?.ref || item?.item_ref || item?.referenceId?.[0].Value || item?.productReference || item?.additionalProperty.find((i: { name: string }) => i.name === \"RefId\").value || null,\n index: typeof context?.index === 'number' ? context.index : Number(item?.index),\n item_brand: item.isNotFarm ? item?.item_brand : normalizeBrand(item?.brand?.name) || normalizeBrand(context.brand) || normalizeBrand(item?.item_brand) || null,\n item_name: item?.productName?.split(' - ').shift() || item?.alternateName?.split(' - ').shift() || item?.item_name?.split(' - ').shift() || item?.seo?.title?.split(' - ').shift() || null,\n item_category: getItemCategory(item) || null,\n item_variant: item?.name?.split(\"-\")?.[0].trim() || item?.item_variant || item?.productName?.split(\"-\")?.[1].trim() || null,\n item_category2: getItemCategory2(item) || null,\n item_id: item?.productID || item?.productId || item?.item_id || item?.id || null,\n discount: getDiscount(item) || null,\n item_list_name: context?.itemListName || getItemCategory(item) || null,\n }\n })\n}\n","import {\n getDiscount,\n getItemCategory,\n getItemCategory2,\n normalizeBrand,\n} from '../../utils';\n\nexport async function itemsFromPDP(context: Record<string, any>) {\n const { item, value, brand } = context;\n\n return [\n {\n price: value || 0,\n quantity: 1,\n item_ref: item?.ref || item?.additionalProperty?.find((i: { name: string }) => i.name === \"RefId\").value || item?.productReference || null,\n item_brand: item.isNotFarm ? item?.item_brand : normalizeBrand(item?.brand.name) || normalizeBrand(brand) || null,\n item_name: item?.productName || item?.alternateName || null,\n item_category: getItemCategory(item) || null,\n item_variant: item?.name?.split(\"-\")[0].trim() || null,\n item_category2: getItemCategory2(item) || item?.category?.split(\">\")[1]?.trim() || null,\n item_id: item?.productID || item?.productId || item?.item_group_id || null,\n discount: getDiscount(item) || null,\n\n // dito params view_item\n item_sku: item?.sku || item?.productId || null,\n item_url: item?.url || item?.item_url || item?.link || null,\n seller_id: item?.seller || null\n },\n ];\n}\n","import {\n isPDP,\n normalizeBrand,\n getItemCategory,\n getItemCategory2,\n getProductByRefId,\n extractRefIdFromUrl,\n} from '../../utils';\n\nexport async function itemsFromBanner(context: Record<string, any>) {\n const isUrlFromPDP = isPDP(context?.bannerUrl);\n\n if (!isUrlFromPDP) return [];\n\n const product = await getProductByRefId(context?.bannerUrl);\n\n const item = product?.items[0];\n\n return {\n price: item?.sellers[0].commertialOffer.Price || 0,\n quantity: 1,\n item_ref: extractRefIdFromUrl(context?.bannerUrl),\n item_brand: normalizeBrand(product.brand) || null,\n item_name: product?.productName || product?.alternateName || product?.item_name || null,\n item_category: getItemCategory(product) || null,\n item_variant: item?.name?.split(\"-\").pop().trim() || null,\n item_category2: getItemCategory2(product) || null,\n item_id: product?.productId || null,\n discount: item?.sellers[0].commertialOffer.ListPrice - item?.sellers[0].commertialOffer.Price || null,\n }\n}\n","import { itemsFromOrderForm } from './resolvers/items/fromOrderForm';\nimport { itemsFromItem } from './resolvers/items/fromItem';\nimport { itemsFromList } from './resolvers/items/fromList';\nimport { itemsFromPDP } from './resolvers/items/fromPdp';\nimport { itemsFromBanner } from './resolvers/items/fromBanner';\n\n/**\n * Selects the appropriate item resolver based on the event name and returns its result.\n *\n * @param context - Runtime context passed to the selected resolver\n * @param eventName - Event identifier that determines which resolver to use\n * @returns The resolved items for the event, or `null` if the event is not recognized\n */\nexport function getItems(context: Record<string, any>, eventName: string) {\n if (context?.items) return context.items;\n\n switch (eventName) {\n case 'CUSTOM_VIEW_CART':\n case 'BEGIN_CHECKOUT':\n case 'CUSTOM_BEGIN_CHECKOUT':\n case 'CUSTOM_ADD_SHIPPING_INFO':\n case 'CUSTOM_ADD_PAYMENT_INFO':\n case 'PURCHASE':\n case 'CUSTOM_PURCHASE':\n return itemsFromOrderForm(context);\n case 'ADD_TO_CART':\n case 'ADD_TO_WISHLIST':\n case 'REMOVE_FROM_CART':\n return itemsFromItem(context, eventName);\n case 'SELECT_ITEM':\n case 'VIEW_ITEM_LIST':\n return itemsFromList(context)\n case 'VIEW_ITEM':\n case 'CUSTOM_VIEW_ITEM':\n return itemsFromPDP(context)\n case 'VIEW_PROMOTION':\n case 'SELECT_PROMOTION':\n return itemsFromBanner(context)\n default:\n return null;\n }\n}\n","import { paymentTypeMap } from \"../../../core/utils\";\n\nexport function paymentTypeFromOrderForm(context: Record<string, any>) {\n if (!context.orderForm) return null;\n\n const payments = context.orderForm.paymentData?.payments || [];\n const systems = context.orderForm.paymentData?.paymentSystems || [];\n if (!payments.length || !systems.length) return null;\n\n const selectedPayment = payments.find((p: { paymentSystem: string }) => p?.paymentSystem) || payments[0];\n const id = String(selectedPayment?.paymentSystem || '').trim();\n if (!id) return null;\n\n const system = systems.find((s: { id: string }) => String(s.id) === id);\n const name = system?.name?.toLowerCase() || '';\n const match = paymentTypeMap.find(([key]) => name.includes(key));\n\n return match ? match[1] : null;\n}\n","import { paymentTypeMap } from \"../../../core/utils\";\n\nexport function paymentTypeFromOrderGroup(context: Record<string, any>) {\n if (!context.orderForm) return null;\n\n const transactions = context.orderForm.paymentData?.transactions || [];\n if (!transactions.length) return null;\n\n const payments = transactions[0]?.payments || [];\n if (!payments.length) return null;\n\n const name = payments[0]?.paymentSystemName?.toLowerCase() || '';\n const match = paymentTypeMap.find(([key]) => name.includes(key));\n\n return match ? match[1] : null;\n}\n","import { paymentTypeFromOrderForm } from './resolvers/paymentType/fromOrderForm';\nimport { paymentTypeFromOrderGroup } from './resolvers/paymentType/fromOrderGroup';\n\n/**\n * Selects the appropriate payment_type resolver based on the event name and returns its result.\n *\n * @param context - Runtime context passed to the selected resolver\n * @param eventName - Event identifier that determines which resolver to use\n * @returns The resolved payment_type for the event, or `null` if the event is not recognized\n */\nexport function getPaymentType(context: Record<string, any>, eventName: string) {\n if (context?.paymentType) return context.paymentType;\n\n switch (eventName) {\n case 'ORDER_REVIEWED':\n case 'CUSTOM_ADD_PAYMENT_INFO':\n return paymentTypeFromOrderForm(context);\n case 'PURCHASE':\n case 'CUSTOM_PURCHASE':\n return paymentTypeFromOrderGroup(context)\n default:\n return null;\n }\n}\n","import type { EventContext, EventName, LogisticInfo } from '../types';\nimport { getBrand } from './brand';\nimport { getItems } from './items';\nimport { getPaymentType } from './paymentType';\nimport { toNum } from '../core/utils';\n\n\nexport const paramGetters = {\n brand: getBrand,\n\n items: getItems,\n\n payment_type: getPaymentType,\n\n user_info: async (context: EventContext, eventName: EventName) => {\n const PROD_DOMAINS: Record<string, Record<string, string>> = {\n \"animale\": {\n \"store\": \"https://www.animale.com.br\",\n \"checkout\": \"https://secure.animale.com.br\",\n },\n \"farm\": {\n \"store\": \"https://lojafarm.myvtex.com\"\n },\n \"mariafilo\": {\n \"store\": \"https://mariafilo.myvtex.com\",\n \"checkout\": \"https://secure.mariafilo.com.br\",\n },\n \"lojacrisbarros\": {\n \"store\": \"https://lojacrisbarros.myvtex.com\",\n \"checkout\": \"https://secure.crisbarros.com.br\",\n },\n \"lojaoffpremium\": {\n \"store\": \"https://lojaoffpremium.myvtex.com\",\n \"checkout\": \"https://secure.lojaoffpremium.com.br\",\n },\n };\n\n const domain = PROD_DOMAINS[context.account || 'https://www.animale.com.br']?.[context.platform || 'store'];\n\n if (!domain) return { customer: { email: context.userEmail, id: context?.userId }, address: null };\n\n try {\n const api = `${domain}/_v/user-info`;\n const response = await fetch(api, {\n method: 'POST',\n body: JSON.stringify({ email: context.userEmail })\n });\n\n if (response.status !== 200) {\n return { customer: { email: context.userEmail, id: context?.userId }, address: null };\n }\n\n return await response.json();\n } catch (_) {\n return { customer: { email: context.userEmail, id: context?.userId }, address: null };\n }\n },\n\n content_type: (context: EventContext, eventName: EventName) => {\n return `regiao`\n .concat(':' + context.category)\n .concat(context.subcategory ? ':' + context.subcategory : '')\n .concat(':' + context.componentName) || null\n },\n\n region: (context: EventContext, eventName: EventName) => {\n return context.region || null;\n },\n\n line_items: (context: EventContext, eventName: EventName) => {\n if (context?.lineItems) return context.lineItems;\n\n if (context?.item) {\n return [context.item.productId || context.item.productID || context.item.item_id];\n }\n\n if (context?.list) {\n return context.list.map((item: { productID: string, id: string, productId: string }) => item?.productID || item?.id || item?.productId)\n }\n\n return (context.orderForm.items || [])\n .map((item: EventContext) => item.productId)\n .join(',');\n },\n\n currency: (context: EventContext, eventName: EventName) => {\n if (context?.currency) return context.currency\n\n if (context?.bannerUrl) return 'BRL'\n\n if (context?.item) {\n return context.item?.offers?.priceCurrency || 'BRL'\n }\n\n return context.orderForm?.storePreferencesData?.currencyCode || null;\n },\n\n value: (context: EventContext, eventName: EventName) => {\n if (context?.value) return toNum(context.value)\n\n return context.item ? toNum(context.item?.price) : context.orderForm?.value != null\n ? context.orderForm.value / 100\n : null;\n },\n\n total_discount: (context: EventContext, eventName: EventName) => {\n if (context?.totalDiscount) return context.totalDiscount\n\n const totalsList = context.orderForm?.totalizers || context.orderForm?.totals || []; // totals for ordergroup and orderform have different names\n const items = context.orderForm.items;\n const totalDiscount = items.reduce((acc: number, item: { quantity: number, listPrice: number, sellingPrice: number }) => {\n const unitDiscount = Math.max(0, item.listPrice - item.sellingPrice);\n return acc + (unitDiscount * item.quantity);\n }, 0);\n\n const discounts = totalsList.find((t: { id: string }) => t.id === 'Discounts');\n return Math.abs((discounts?.value || 0) + totalDiscount) / 100 || null;\n },\n\n subtotal: (context: EventContext, eventName: EventName) => {\n const totalsList = context.orderForm?.totalizers || context.orderForm?.totals || []; // totals for ordergroup and orderform have different names\n\n const subtotal =\n totalsList\n .filter((t: EventContext) => t.id === 'Items')\n .reduce((acc: number, t: EventContext) => acc + (t.value || 0), 0) / 100 || 0;\n\n return subtotal\n },\n\n coupon_message: (context: EventContext, eventName: EventName) => {\n if (context.couponMessage) return context.couponMessage;\n\n const messages = context.orderForm?.messages || [];\n\n if (messages.length === 0) return null;\n\n const couponMessages = messages.filter((msg: EventContext) =>\n msg.text.toLowerCase().includes('cupom')\n );\n\n if (couponMessages.length === 0) return null;\n\n return couponMessages.map((msg: EventContext) => msg.text).join(' | ');\n },\n\n seller_cod_name: (context: EventContext, eventName: EventName) => {\n return context.appliedSellerCodName || context?.orderForm.marketingData.utmiCampaign || null;\n },\n\n coupon: (context: EventContext, eventName: EventName) => {\n return context.appliedCoupon || context?.orderForm?.marketingData?.coupon || null;\n },\n\n pre_filled: (context: EventContext, eventName: EventName) => {\n return !!context.preFilled;\n },\n\n search_term: (context: EventContext, eventName: EventName) => {\n return context.searchTerm || null;\n },\n\n search_found: (context: EventContext, eventName: EventName) => {\n return !!context.searchFound;\n },\n\n search_quantity: (context: EventContext, eventName: EventName) => {\n return context.searchQuantity || 0;\n },\n\n promotion_name: (context: EventContext, eventName: EventName) => {\n return context.promotionName || null;\n },\n\n creative_name: (context: EventContext, eventName: EventName) => {\n return context.creativeName || null;\n },\n\n creative_slot: (context: EventContext, eventName: EventName) => {\n return context.creativeSlot || null;\n },\n\n zipcode: (context: EventContext, eventName: EventName) => {\n return context.zipCode || null;\n },\n\n size: (context: EventContext, eventName: EventName) => {\n return context.size || null;\n },\n\n item_ref: (context: EventContext, eventName: EventName) => {\n return context.itemRef || null;\n },\n\n flag_pickup: (context: EventContext, eventName: EventName) => {\n const orderForm = context.orderForm;\n if (!orderForm) return null;\n\n const logisticsInfo = orderForm.shippingData?.logisticsInfo || [];\n const hasPickup = logisticsInfo.some((info: LogisticInfo) =>\n info.slas?.some((sla) => sla.deliveryChannel === 'pickup-in-point')\n );\n\n return hasPickup\n },\n\n shippings: (context: EventContext, eventName: EventName) => {\n const orderForm = context.orderForm;\n if (!orderForm) return null;\n\n const groupShipping: Record<string, any> = {};\n\n for (const info of orderForm.shippingData.logisticsInfo) {\n const item = orderForm.items[info.itemIndex]\n if (!item) continue\n\n for (const sla of info.slas) {\n const key = sla.name\n\n if (!groupShipping[key]) {\n groupShipping[key] = {\n shipping_tier: sla.name,\n delivery_time: parseInt(sla.shippingEstimate),\n shipping: parseFloat((sla.price / 100).toFixed(1)),\n line_items: []\n }\n }\n\n groupShipping[key].line_items.push(item.id)\n }\n }\n\n const shippings = Object.values(groupShipping).map((s) => ({\n shipping: s.shipping,\n shipping_tier: s.shipping_tier,\n delivery_time: s.delivery_time,\n line_items: s.line_items.join(',')\n }))\n\n return shippings || null\n },\n\n shipping: (context: EventContext, eventName: EventName) => {\n const logistics = context?.orderForm?.shippingData?.logisticsInfo ?? []\n return logistics.reduce((total: number, item: any) => {\n const selected = item.slas?.find((sla: any) => sla.id === item.selectedSla)\n return total + (selected?.price ?? 0)\n }, 0)\n },\n\n shipping_tier: (context: EventContext, eventName: EventName) => {\n const logistics = context?.orderForm?.shippingData?.logisticsInfo ?? []\n const selected = logistics.find((item: { selectedSla: string }) => item.selectedSla)\n if (!selected) return null\n\n const sla = selected.slas?.find((s: { id: string }) => s.id === selected.selectedSla)\n if (!sla) return null\n\n const { deliveryChannel, name, pickupStoreInfo } = sla\n\n return deliveryChannel === 'pickup-in-point'\n ? `retirada em loja${pickupStoreInfo?.friendlyName ? `: ${pickupStoreInfo.friendlyName}` : ''}`\n : deliveryChannel === 'delivery'\n ? `receba em casa${name ? `: ${name}` : ''}`\n : null\n },\n\n transaction_id: (context: EventContext, eventName: EventName) => {\n return context.orderForm?.orderGroup?.toString() || null;\n },\n\n available_grid: (context: EventContext, eventName: EventName) => {\n return context.availableGrid || null;\n },\n}\n\n\n\n\n","import { EVENTS } from '../core/constants';\nimport { paramGetters } from '../params';\nimport type { EventName, EventContext } from '../types'\n\ntype ParamName = keyof typeof paramGetters;\n\n/**\n * Resolve and return the required parameters for a given event.\n *\n * @param context - Context passed to each parameter getter (defaults to an empty object)\n * @param eventName - The event whose required parameters should be resolved\n * @returns An object mapping each required parameter name to its resolved value (`null` when a param getter is missing), or `undefined` if the event has no configuration\n */\nexport async function getParameters(context: EventContext = {}, eventName: EventName) {\n const eventConfig = EVENTS[eventName] as { requiredParams: string[] };\n\n if (!eventConfig) return;\n\n const params = Object.fromEntries(\n await Promise.all(\n eventConfig.requiredParams.map(async (param) => {\n const getter = paramGetters[param as ParamName];\n\n if (typeof getter !== 'function') {\n console.error(`[DT] Missing paramGetter for param: ${param}`);\n return [param, null]; // ou undefined\n }\n \n return [param, await getter(context, eventName)];\n })\n )\n );\n\n return params;\n}\n","import { dispatchTrackEvent } from './adapters';\nimport { getParameters } from './formatter';\nimport { EVENTS } from './core/constants';\nimport type { EventContext, EventName } from './types';\n\n/**\n * Assembles tracking parameters and sends a web tracking event.\n *\n * @param event - The name of the event to track.\n * @param context - Optional context used to build event parameters; may include a `window` property that will be attached to the dispatched payload.\n * @returns The result returned by `dispatchTrackEvent` when the event is sent successfully, or the value returned by `console.error` (`undefined`) if an error occurs.\n */\nasync function trackWebEvent(event: EventName, context: EventContext = {}) {\n try {\n // object data to be sent\n const parameters = await getParameters(context, event);\n\n // function to send event\n return await dispatchTrackEvent(\n event,\n Object.assign({}, parameters, { window: context.window })\n );\n } catch (err) {\n return console.error(`[DT] Error tracking event ${event}:`, err);\n }\n}\n\nexport { trackWebEvent, EVENTS };\n\nexport default {\n trackWebEvent,\n EVENTS,\n}\n"],"mappings":"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","names":["_a","_a","_a","_b"]}
1
+ {"version":3,"sources":["../src/core/constants.ts","../src/adapters/datalayer.ts","../src/core/utils.ts","../src/adapters/dito.ts","../src/adapters/index.ts","../src/params/utils/index.ts","../src/params/resolvers/brand/fromOrderForm.ts","../src/params/resolvers/brand/fromItem.ts","../src/params/brand.ts","../src/params/resolvers/items/fromOrderForm.ts","../src/params/resolvers/items/fromItem.ts","../src/params/resolvers/items/fromList.ts","../src/params/resolvers/items/fromPdp.ts","../src/params/resolvers/items/fromBanner.ts","../src/params/items.ts","../src/params/resolvers/paymentType/fromOrderForm.ts","../src/params/resolvers/paymentType/fromOrderGroup.ts","../src/params/paymentType.ts","../src/params/index.ts","../src/formatter/index.ts","../src/index.ts"],"sourcesContent":["export const EVENTS = {\r\n CUSTOM_VIEW_CART: {\r\n name: \"custom_view_cart\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"region\",\r\n \"line_items\",\r\n \"currency\",\r\n \"value\",\r\n \"total_discount\",\r\n \"subtotal\",\r\n \"items\",\r\n ],\r\n },\r\n\r\n ADD_TO_WISHLIST: {\r\n name: \"add_to_wishlist\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"region\",\r\n \"line_items\",\r\n \"currency\",\r\n \"value\",\r\n \"items\",\r\n ],\r\n },\r\n\r\n ADD_TO_CART: {\r\n name: \"add_to_cart\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"region\",\r\n \"line_items\",\r\n \"currency\",\r\n \"value\",\r\n \"items\",\r\n ],\r\n },\r\n\r\n REMOVE_FROM_CART: {\r\n name: \"remove_from_cart\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"region\",\r\n \"line_items\",\r\n \"currency\",\r\n \"value\",\r\n \"items\",\r\n ],\r\n },\r\n\r\n ADD_COUPON: {\r\n name: \"add_coupon\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"region\",\r\n \"coupon\",\r\n \"coupon_message\",\r\n \"seller_cod_name\",\r\n ],\r\n },\r\n\r\n SEARCH: {\r\n name: \"search\",\r\n hasEcommerce: false,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\"brand\", \"search_term\", \"search_found\", \"search_quantity\"],\r\n },\r\n\r\n SEARCH_ZIPCODE: {\r\n name: 'search_zipcode',\r\n hasEcommerce: false,\r\n destinations: ['DataLayer'],\r\n requiredParams: ['brand', 'region', 'shippings', 'zipcode', 'flag_pickup'],\r\n },\r\n\r\n VIEW_PROMOTION: {\r\n name: \"view_promotion\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"region\",\r\n \"currency\",\r\n \"promotion_name\",\r\n \"creative_slot\",\r\n \"creative_name\",\r\n \"items\",\r\n ],\r\n },\r\n\r\n SELECT_PROMOTION: {\r\n name: \"select_promotion\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"region\",\r\n \"currency\",\r\n \"promotion_name\",\r\n \"creative_slot\",\r\n \"creative_name\",\r\n \"items\",\r\n ],\r\n },\r\n\r\n SELECT_CONTENT: {\r\n name: \"select_content\",\r\n hasEcommerce: false,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\"brand\", 'content_type'],\r\n },\r\n\r\n SELECT_ITEM: {\r\n name: \"select_item\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\"brand\", \"region\", \"items\", \"line_items\"],\r\n },\r\n\r\n VIEW_ITEM: {\r\n name: \"view_item\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"line_items\",\r\n \"currency\",\r\n \"value\",\r\n \"available_grid\",\r\n \"items\",\r\n ],\r\n },\r\n\r\n CUSTOM_VIEW_ITEM: { // IO STORES\r\n name: \"custom_view_item\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"line_items\",\r\n \"currency\",\r\n \"value\",\r\n \"available_grid\",\r\n \"items\",\r\n ],\r\n },\r\n\r\n VIEW_ITEM_LIST: {\r\n name: \"view_item_list\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\"region\", \"brand\", \"line_items\", \"items\"],\r\n },\r\n\r\n BEGIN_CHECKOUT: {\r\n name: \"begin_checkout\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\"brand\", \"line_items\", \"currency\", \"value\", \"total_discount\", \"subtotal\", \"items\"],\r\n },\r\n\r\n CUSTOM_BEGIN_CHECKOUT: {\r\n name: \"custom_begin_checkout\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\"brand\", \"line_items\", \"currency\", \"value\", \"total_discount\", \"subtotal\", \"items\"],\r\n },\r\n\r\n AUTH_ACTION: {\r\n name: \"auth_action\",\r\n hasEcommerce: false,\r\n requiredParams: [\"region\"],\r\n },\r\n\r\n ADD_PERSONAL_INFO: {\r\n name: \"add_personal_info\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\"brand\", \"pre_filled\", \"line_items\", \"currency\", \"value\", \"total_discount\", \"subtotal\"],\r\n },\r\n\r\n CUSTOM_ADD_SHIPPING_INFO: {\r\n name: \"add_shipping_info\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"pre_filled\",\r\n \"shipping\",\r\n \"shipping_tier\",\r\n \"line_items\",\r\n \"currency\",\r\n \"value\",\r\n \"total_discount\",\r\n \"subtotal\",\r\n \"items\"\r\n ],\r\n },\r\n\r\n CUSTOM_ADD_PAYMENT_INFO: {\r\n name: \"add_payment_info\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n \"brand\",\r\n \"pre_filled\",\r\n \"line_items\",\r\n \"currency\",\r\n \"value\",\r\n \"total_discount\",\r\n \"payment_type\",\r\n \"subtotal\",\r\n \"items\"\r\n ],\r\n },\r\n\r\n ORDER_REVIEWED: {\r\n name: \"order_reviewed\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\"brand\", \"line_items\", \"currency\", \"value\", \"total_discount\", \"subtotal\", \"payment_type\"],\r\n },\r\n\r\n PURCHASE: {\r\n name: \"purchase\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n 'brand',\r\n 'shipping_tier',\r\n 'line_items',\r\n 'currency',\r\n 'value',\r\n 'shipping',\r\n 'transaction_id',\r\n 'total_discount',\r\n 'payment_type',\r\n 'seller_cod_name',\r\n 'subtotal',\r\n 'coupon',\r\n 'items'\r\n ],\r\n },\r\n\r\n CUSTOM_PURCHASE: {\r\n name: \"custom_purchase\",\r\n hasEcommerce: true,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: [\r\n 'brand',\r\n 'shipping_tier',\r\n 'line_items',\r\n 'currency',\r\n 'value',\r\n 'shipping',\r\n 'transaction_id',\r\n 'total_discount',\r\n 'payment_type',\r\n 'seller_cod_name',\r\n 'subtotal',\r\n 'coupon',\r\n 'items'\r\n ],\r\n },\r\n\r\n CUSTOM_USER_INFO: {\r\n name: 'custom_user_info',\r\n hasEcommerce: false,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: ['user_info']\r\n },\r\n\r\n NOTIFY_ME: {\r\n name: 'notify_me',\r\n hasEcommerce: false,\r\n destinations: [\"DataLayer\"],\r\n requiredParams: ['brand', 'line_items', 'size', 'item_ref']\r\n }\r\n};\r\n","import type { EventContext, EventName } from \"../types\";\r\nimport { EVENTS } from \"../core/constants\";\r\n\r\n/**\r\n * Pushes an ecommerce tracking event to the appropriate dataLayer and logs the payload.\r\n *\r\n * Ensures a dataLayer array exists on the target (prefer `ecomm.window` if present, otherwise the global `window`)\r\n * and pushes an object containing `event` and the `ecomm` payload. Also logs the pushed payload for debugging.\r\n *\r\n * @param event - The tracking event name to push\r\n * @param context - The event context payload; if it contains a `window` property that object's `dataLayer` will be used as the target\r\n */\r\nexport function pushToDataLayer(event: string, context: EventContext) {\r\n const targetWindow = context.window || (typeof window !== 'undefined' ? window : null);\r\n if (!targetWindow) return;\r\n\r\n const payload = Object.assign({}, context);\r\n delete payload.window; // delete window prop and avoid to push as payload to dayalayer\r\n\r\n const eventName = event.toUpperCase() as EventName;\r\n const eventConfig = EVENTS[eventName] as { hasEcommerce: boolean };\r\n\r\n targetWindow.dataLayer = targetWindow.dataLayer || [];\r\n\r\n if (eventConfig?.hasEcommerce) {\r\n targetWindow.dataLayer.push({ ecommerce: null });\r\n targetWindow.dataLayer.push({ event: event, ecommerce: payload });\r\n } else {\r\n targetWindow.dataLayer.push({ event: event, ...payload });\r\n }\r\n}","import { EventContext } from \"../types\";\r\n\r\nexport function dataTrackingLog(data: EventContext, color: string) {\r\n console.log(\r\n `%c[DT] EVENTO DISPARADO:%c `,\r\n `background: ${color}; color: white; font-weight: bold; padding: 2px 4px; border-radius: 3px;`,\r\n 'color: #fff;',\r\n data || ''\r\n );\r\n}\r\n\r\nexport function setCookie(name: string, value: string, days = 7) {\r\n const encodedValue = encodeURIComponent(value);\r\n\r\n let expires = \"\";\r\n if (days) {\r\n const date = new Date();\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\r\n expires = \"; expires=\" + date.toUTCString();\r\n }\r\n\r\n document.cookie = `${name}=${encodedValue}${expires}; path=/;`;\r\n}\r\n\r\nexport const paymentTypeMap = [\r\n ['vale', 'vale crédito'],\r\n ['pagaleve', 'pix'],\r\n ['pix parcel', 'pix parcelado'],\r\n ['pix', 'pix'],\r\n ['apple', 'apple pay'],\r\n ['google', 'google pay'],\r\n ['boleto', 'boleto'],\r\n ['paypal', 'paypal'],\r\n ['cred', 'cartão'],\r\n ['visa', 'cartão'],\r\n ['master', 'cartão'],\r\n ['amex', 'cartão'],\r\n ['elo', 'cartão'],\r\n ['hiper', 'cartão'],\r\n ['diner', 'cartão'],\r\n ['deb', 'cartão'],\r\n];\r\n\r\n\r\nexport const toNum = (val: unknown) => typeof val === 'string' ? Number(val.replace(/[^\\d,]/g, '').replace(',', '.')) : val","import { dataTrackingLog } from \"../core/utils\";\r\nimport type { EventContext } from \"../types\";\r\n\r\nexport function pushToDito(event: string, ecomm: EventContext) {\r\n dataTrackingLog({ id: event, custom_data: ecomm }, '#00c851');\r\n}","import { EVENTS } from '../core/constants';\r\nimport { pushToDataLayer } from './datalayer';\r\nimport { pushToDito } from './dito';\r\n\r\nimport type { EventName, EventContext } from '../types'\r\n\r\nconst adapters = {\r\n DataLayer: pushToDataLayer,\r\n Dito: pushToDito,\r\n};\r\n\r\ntype AdapterKey = keyof typeof adapters;\r\n\r\n/**\r\n * Dispatches a tracking event to all destinations configured for the given event.\r\n *\r\n * Looks up destinations from the EVENTS configuration, calls each destination adapter\r\n * in parallel (providing the event name in lowercase and the supplied context), and\r\n * waits for all attempts to settle. Individual adapter failures are logged with the\r\n * \"[DT]\" prefix but do not prevent other destinations from running.\r\n *\r\n * @param eventName - The name of the event to dispatch\r\n * @param data - The event context/payload to send to adapters\r\n */\r\nexport async function dispatchTrackEvent(eventName: EventName, data: EventContext) {\r\n const eventConfig = EVENTS[eventName] as { destinations: string[] };\r\n\r\n if (!eventConfig) return;\r\n\r\n await Promise.allSettled(\r\n eventConfig.destinations.map(async (dest: string) => {\r\n try {\r\n // call the adapter function based on the destination mapped in the adapters object\r\n // eventName is converted to lowercase to match the expected format in all adapters\r\n await adapters[dest as AdapterKey](eventName.toLowerCase(), data);\r\n } catch (err) {\r\n console.error(`[DT] Failed to send ${eventName} to ${dest}:`, err);\r\n }\r\n })\r\n );\r\n}\r\n","/**\r\n * Fetches product data for the given product id from the catalog API.\r\n *\r\n * @param id - The product identifier used as the `productId` query filter\r\n * @returns The parsed JSON response containing product data, or `undefined` if the request fails\r\n */\r\nexport async function getProductDataById(id: any) {\r\n try {\r\n const response = await fetch(\r\n `/api/catalog_system/pub/products/search?fq=productId:${id}`\r\n );\r\n\r\n return await response.json();\r\n } catch (e) {\r\n console.log('[DT] Erro ao buscar dados do produto', e);\r\n }\r\n}\r\n\r\nexport function isPDP(url: string) {\r\n try {\r\n const { pathname } = new URL(url, window.location.origin);\r\n return /\\/p\\/?$/.test(pathname);\r\n } catch {\r\n return false;\r\n }\r\n}\r\n\r\nexport function extractRefIdFromUrl(url: string | null) {\r\n if (!url) return null;\r\n\r\n const path = (() => {\r\n try { return new URL(url, location.origin).pathname }\r\n catch { return url.split('?')[0] }\r\n })();\r\n\r\n const match = decodeURIComponent(path).match(/(\\d+-\\d+)(?=\\/p|$)/);\r\n return match ? match[1].replace('-', '_') : null;\r\n}\r\n\r\nexport async function getProductByRefId(url: string | null) {\r\n const refId = extractRefIdFromUrl(url);\r\n if (!refId) return console.error('Não foi possível extrair o RefId da URL'), null;\r\n\r\n try {\r\n const res = await fetch(`/api/catalog_system/pub/products/search?fq=alternateIds_RefId:${refId}`);\r\n if (!res.ok) throw new Error(`Erro na API: ${res.status}`);\r\n\r\n const products = await res.json();\r\n return products?.[0] || null;\r\n } catch (err) {\r\n console.error('Erro ao buscar dados do produto:', err);\r\n return null;\r\n }\r\n}\r\n\r\nexport function getItemShippingTier(orderForm: any, item: any) {\r\n const info = orderForm?.shippingData?.logisticsInfo?.find(\r\n (li: any) => li.itemId === item.id\r\n );\r\n\r\n const selectedSla = info?.slas?.find((sla: any) => sla.id === info.selectedSla);\r\n return selectedSla?.pickupStoreInfo?.friendlyName\r\n ? `retirada em loja: ${selectedSla.pickupStoreInfo.friendlyName}`\r\n : selectedSla?.name\r\n ? `Receba em casa: ${selectedSla.name}`\r\n : null;\r\n}\r\n\r\nexport async function getItemSku(item: any) {\r\n const product = await getProductDataById(item.productId || item.productID || item.item_group_id);\r\n\r\n if (!product.length) return null;\r\n\r\n return product[0].items.find((i: any) => i.name === item.skuName)?.itemId ?? null;\r\n}\r\n\r\nexport function getDiscount(item: any) {\r\n return item.discount || item.discount === 0 ? item.discount :\r\n (\r\n parseFloat(Math.max(item.listPrice - item.sellingPrice, 0).toFixed(2)) / 100 || 0\r\n );\r\n}\r\n\r\nexport function getItemCategory(item: any) {\r\n\r\n const strategies = [\r\n () => item?.productCategories?.['39'] === 'BAZAR' ? 'Sale' : 'Coleção',\r\n () => item?.item_category, \r\n () => item?.category, \r\n () => item?.categories[0],\r\n ];\r\n\r\n for (const getValue of strategies) {\r\n const value = getValue();\r\n\r\n if (value !== null && value !== undefined) {\r\n return value;\r\n }\r\n }\r\n\r\n return null\r\n\r\n}\r\n\r\nexport function getItemCategory2(item: any) {\r\n const strategies = [\r\n () => Object.values(item?.productCategories || {}).pop(), // checkout select_item context\r\n () => (Object.values(item?.categories || {}).pop() as string | undefined)?.slice(1, -1).replace(/\\//g, ','), // \r\n () => item?.category?.split?.('>')?.[1]?.trim?.(), // deco select_item context\r\n () => item.item_category2, // deco add_to_cart context PDP\r\n ];\r\n\r\n for (const getValue of strategies) {\r\n const value = getValue();\r\n\r\n if (value !== null && value !== undefined) {\r\n return value;\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function getItemCategory4(item: any) {\r\n const tags = item?.additionalInfo?.tags || item?.tags;\r\n return Array.isArray(tags) && tags.length ? tags.join(',') : null;\r\n}\r\n\r\nconst BRAND_CODES = {\r\n farm: 'farmrio',\r\n 'farm etc': 'farmetc',\r\n 'farm rio': 'farmrio',\r\n} as const;\r\n\r\ntype Standardized = keyof typeof BRAND_CODES\r\ninterface BrandItem {\r\n brand?: string;\r\n additionalInfo?: {\r\n brandName?: string;\r\n };\r\n}\r\n\r\n/**\r\n * Extrai o código padronizado (ex: 'farmrio') de uma única string de marca.\r\n * Retorna null se não houver mapeamento.\r\n */\r\nfunction getBrandCode(brand: string | undefined): string | null {\r\n if (!brand) return null;\r\n const standardized = brand.toLowerCase().trim();\r\n return BRAND_CODES[standardized as Standardized] || null;\r\n}\r\n\r\n/**\r\n * Função principal que padroniza a marca ou lista de marcas para o formato final:\r\n * 'farmrio', 'farmetc', ou 'farmrio_farmetc'.\r\n */\r\nexport function normalizeBrand(input: string | BrandItem[] | BrandItem | string[] | undefined | null) {\r\n let brandStrings = [];\r\n\r\n if (Array.isArray(input) && input.every(item => typeof item === 'string')) {\r\n brandStrings = input as string[];\r\n } else if (Array.isArray(input)) {\r\n // Se for um Array, coleta a string da marca de cada item.\r\n brandStrings = input.map(item => item.additionalInfo?.brandName || item.brand);\r\n } else if (typeof input === 'object' && input !== null && 'brand' in input) {\r\n // Se for um Objeto único, trata como um Array de um único item (para reuso de lógica).\r\n brandStrings = [(input as BrandItem).additionalInfo?.brandName || (input as BrandItem).brand];\r\n } else if (typeof input === 'string') {\r\n // Se for uma String (mal formatada ou não), trata diretamente.\r\n return getBrandCode(input);\r\n } else {\r\n // Se for undefined, null, ou outro tipo não esperado.\r\n return null;\r\n }\r\n\r\n const brandCodes = brandStrings\r\n .map(getBrandCode)\r\n .filter((code): code is string => code !== null); // ['farmrio', 'farmetc', 'farmrio']\r\n\r\n const uniqueSortedCodes = [...new Set(brandCodes)].sort(); // ['farmetc', 'farmrio']\r\n\r\n // Retorna a combinação ('farmrio', 'farmetc', ou 'farmrio_farmetc').\r\n return uniqueSortedCodes.length > 0 ? uniqueSortedCodes.join('_') : null;\r\n}\r\n","import { normalizeBrand } from '../../utils';\r\n\r\nexport function brandFromOrderForm(context: Record<string, any>) {\r\n if (!context.orderForm && !context.orderForm.items?.length) return null;\r\n\r\n const items = context.orderForm.items;\r\n\r\n return normalizeBrand(items);\r\n}\r\n","import { normalizeBrand } from '../../utils';\r\n\r\nexport function brandFromItem(context: Record<string, any>) {\r\n const { item } = context;\r\n\r\n return normalizeBrand(item?.additionalInfo?.brandName || item.brand || item.item_brand);\r\n}\r\n","import { brandFromOrderForm } from './resolvers/brand/fromOrderForm';\r\nimport { brandFromItem } from './resolvers/brand/fromItem';\r\nimport { normalizeBrand } from './utils';\r\nimport type { EventContext, EventName } from '../types';\r\n\r\n/**\r\n * Determines the brand for an event by using the context or extracting it based on the event type.\r\n *\r\n * Prefers `context.brand` when present; otherwise selects a resolver based on `eventName` to extract the brand.\r\n *\r\n * @param context - The event context which may already contain a `brand` or provide data for extraction\r\n * @param eventName - The event name used to choose the extraction strategy\r\n * @returns The resolved brand value, or `null` if no brand could be determined\r\n */\r\nexport function getBrand(context: EventContext, eventName: EventName) {\r\n if (context?.brand) return normalizeBrand(context.brand) || context.brand || null;\r\n\r\n switch (eventName) {\r\n case 'CUSTOM_VIEW_CART':\r\n case 'ADD_COUPON':\r\n case 'ADD_PERSONAL_INFO':\r\n case 'CUSTOM_ADD_SHIPPING_INFO':\r\n case 'CUSTOM_ADD_PAYMENT_INFO':\r\n case 'BEGIN_CHECKOUT':\r\n case 'CUSTOM_BEGIN_CHECKOUT':\r\n case 'SEARCH_ZIPCODE':\r\n case 'ORDER_REVIEWED':\r\n case 'PURCHASE':\r\n case 'CUSTOM_PURCHASE':\r\n return brandFromOrderForm(context);\r\n case 'ADD_TO_CART':\r\n case 'REMOVE_FROM_CART':\r\n return brandFromItem(context);\r\n default:\r\n return null;\r\n }\r\n}\r\n","import type { EventContext } from '../../../types';\r\n\r\nimport {\r\n getItemSku,\r\n getDiscount,\r\n getItemCategory,\r\n getItemCategory2,\r\n getItemCategory4,\r\n getItemShippingTier,\r\n normalizeBrand,\r\n} from '../../utils';\r\n\r\n/**\r\n * Builds an array of normalized item objects from the order form contained in the given context.\r\n *\r\n * @param context - EventContext containing an orderForm with items to convert\r\n * @returns An array of item-like objects derived from `context.orderForm.items`, each containing fields such as `item_id`, `price`, `quantity`, `item_sku`, `item_name`, category and variant attributes, and `discount`\r\n */\r\nexport async function itemsFromOrderForm(context: EventContext) {\r\n const items = context.orderForm?.items || [];\r\n\r\n if (!items.length) return [];\r\n\r\n return await Promise.all(\r\n items.map(async (item: EventContext) => ({\r\n item_id: item.productId,\r\n item_category2: getItemCategory2(item),\r\n item_category4: getItemCategory4(item),\r\n item_shipping_tier: getItemShippingTier(context.orderForm, item),\r\n price: parseFloat(((item.listPrice || item.price) / 100).toFixed(2)) || 0,\r\n quantity: item.quantity || 1,\r\n item_ref: item.refId || null,\r\n item_brand: normalizeBrand(item.additionalInfo?.brandName) || item.additionalInfo?.brandName || null,\r\n item_sku: (await getItemSku(item)) || item.id || null,\r\n item_name: item.name.split(' - ').shift() || item.id || null,\r\n item_category: getItemCategory(item) || null,\r\n item_variant: item.skuName.split(/[-/]/)[0].trim(),\r\n item_variant2: item.skuName.split(/[-/]/).pop()?.trim() || '',\r\n discount: getDiscount(item),\r\n }))\r\n );\r\n}\r\n","import {\r\n getItemSku,\r\n getDiscount,\r\n getItemCategory,\r\n getItemCategory2,\r\n getItemCategory4,\r\n getItemShippingTier,\r\n} from '../../utils';\r\n\r\nexport async function itemsFromItem(context: Record<string, any>, event: string) {\r\n const { item, orderForm, itemListName } = context;\r\n return [\r\n {\r\n index: typeof item?.index === 'number' ? item.index : null,\r\n quantity: 1,\r\n item_id: item?.productId || item?.item_group_id || item?.sku || null,\r\n item_category2: getItemCategory2(item),\r\n item_category4: getItemCategory4(item),\r\n item_shipping_tier: event === 'REMOVE_FROM_CART' ? getItemShippingTier(orderForm, item) : null,\r\n price: item?.listPrice || item?.price || 0,\r\n item_ref: item?.ref || item?.refId || item?.item_ref || item?.additionalProperty?.find((i: { name: string }) => i.name === \"RefId\").value || null,\r\n item_brand: item?.additionalInfo?.brandName || item?.item_brand || item?.brand?.name || null,\r\n item_sku: item?.sku || item?.id || item?.item_id || (await getItemSku(item)) || null,\r\n item_name: item?.name || item?.item_name || null,\r\n item_category: getItemCategory(item) || null,\r\n item_variant: (item?.skuName || item?.item_variant || item?.name).split(/[-/]/)[0].trim() || null,\r\n item_variant2: item?.size || item?.itemAttributes?.size || (item?.skuName || item?.name)?.split(/[-/]/).pop()?.trim() || null,\r\n discount: getDiscount(item),\r\n item_list_name: itemListName || null,\r\n\r\n item_url: item?.item_url || null, // add_to_cart dito\r\n },\r\n ];\r\n}\r\n","import { getDiscount, getItemCategory, getItemCategory2, normalizeBrand } from '../../utils';\r\n\r\nexport async function itemsFromList(context: Record<string, any>) {\r\n return (context?.list || []).map((item: any) => {\r\n return {\r\n price: item?.price?.list || item?.price || item?.offers?.lowPrice || item?.priceRange?.listPrice?.highPrice || null,\r\n quantity: 1,\r\n item_ref: item?.ref || item?.item_ref || item?.referenceId?.[0].Value || item?.productReference || item?.additionalProperty.find((i: { name: string }) => i.name === \"RefId\").value || null,\r\n index: typeof context?.index === 'number' ? context.index : Number(item?.index),\r\n item_brand: item.isNotFarm ? item?.item_brand : normalizeBrand(item?.brand?.name) || normalizeBrand(context.brand) || normalizeBrand(item?.item_brand) || null,\r\n item_name: item?.productName?.split(' - ').shift() || item?.alternateName?.split(' - ').shift() || item?.item_name?.split(' - ').shift() || item?.seo?.title?.split(' - ').shift() || null,\r\n item_category: getItemCategory(item) || null,\r\n item_variant: item?.name?.split(\"-\")?.[0].trim() || item?.item_variant || item?.productName?.split(\"-\")?.[1].trim() || null,\r\n item_category2: getItemCategory2(item) || null,\r\n item_id: item?.productID || item?.productId || item?.item_id || item?.id || null,\r\n discount: getDiscount(item) || null,\r\n item_list_name: context?.itemListName || getItemCategory(item) || null,\r\n }\r\n })\r\n}\r\n","import {\r\n getDiscount,\r\n getItemCategory,\r\n getItemCategory2,\r\n normalizeBrand,\r\n} from '../../utils';\r\n\r\nexport async function itemsFromPDP(context: Record<string, any>) {\r\n const { item, value, brand } = context;\r\n\r\n return [\r\n {\r\n price: value || 0,\r\n quantity: 1,\r\n item_ref: item?.ref || item?.additionalProperty?.find((i: { name: string }) => i.name === \"RefId\").value || item?.productReference || null,\r\n item_brand: item.isNotFarm ? item?.item_brand : normalizeBrand(item?.brand.name) || normalizeBrand(brand) || null,\r\n item_name: item?.productName || item?.alternateName || null,\r\n item_category: getItemCategory(item) || null,\r\n item_variant: item?.name?.split(\"-\")[0].trim() || null,\r\n item_category2: getItemCategory2(item) || item?.category?.split(\">\")[1]?.trim() || null,\r\n item_id: item?.productID || item?.productId || item?.item_group_id || null,\r\n discount: getDiscount(item) || null,\r\n\r\n // dito params view_item\r\n item_sku: item?.sku || item?.productId || null,\r\n item_url: item?.url || item?.item_url || item?.link || null,\r\n seller_id: item?.seller || null\r\n },\r\n ];\r\n}\r\n","import {\r\n isPDP,\r\n normalizeBrand,\r\n getItemCategory,\r\n getItemCategory2,\r\n getProductByRefId,\r\n extractRefIdFromUrl,\r\n} from '../../utils';\r\n\r\nexport async function itemsFromBanner(context: Record<string, any>) {\r\n const isUrlFromPDP = isPDP(context?.bannerUrl);\r\n\r\n if (!isUrlFromPDP) return [];\r\n\r\n const product = await getProductByRefId(context?.bannerUrl);\r\n\r\n const item = product?.items[0];\r\n\r\n return {\r\n price: item?.sellers[0].commertialOffer.Price || 0,\r\n quantity: 1,\r\n item_ref: extractRefIdFromUrl(context?.bannerUrl),\r\n item_brand: normalizeBrand(product.brand) || null,\r\n item_name: product?.productName || product?.alternateName || product?.item_name || null,\r\n item_category: getItemCategory(product) || null,\r\n item_variant: item?.name?.split(\"-\").pop().trim() || null,\r\n item_category2: getItemCategory2(product) || null,\r\n item_id: product?.productId || null,\r\n discount: item?.sellers[0].commertialOffer.ListPrice - item?.sellers[0].commertialOffer.Price || null,\r\n }\r\n}\r\n","import { itemsFromOrderForm } from './resolvers/items/fromOrderForm';\r\nimport { itemsFromItem } from './resolvers/items/fromItem';\r\nimport { itemsFromList } from './resolvers/items/fromList';\r\nimport { itemsFromPDP } from './resolvers/items/fromPdp';\r\nimport { itemsFromBanner } from './resolvers/items/fromBanner';\r\n\r\n/**\r\n * Selects the appropriate item resolver based on the event name and returns its result.\r\n *\r\n * @param context - Runtime context passed to the selected resolver\r\n * @param eventName - Event identifier that determines which resolver to use\r\n * @returns The resolved items for the event, or `null` if the event is not recognized\r\n */\r\nexport function getItems(context: Record<string, any>, eventName: string) {\r\n if (context?.items) return context.items;\r\n\r\n switch (eventName) {\r\n case 'CUSTOM_VIEW_CART':\r\n case 'BEGIN_CHECKOUT':\r\n case 'CUSTOM_BEGIN_CHECKOUT':\r\n case 'CUSTOM_ADD_SHIPPING_INFO':\r\n case 'CUSTOM_ADD_PAYMENT_INFO':\r\n case 'PURCHASE':\r\n case 'CUSTOM_PURCHASE':\r\n return itemsFromOrderForm(context);\r\n case 'ADD_TO_CART':\r\n case 'ADD_TO_WISHLIST':\r\n case 'REMOVE_FROM_CART':\r\n return itemsFromItem(context, eventName);\r\n case 'SELECT_ITEM':\r\n case 'VIEW_ITEM_LIST':\r\n return itemsFromList(context)\r\n case 'VIEW_ITEM':\r\n case 'CUSTOM_VIEW_ITEM':\r\n return itemsFromPDP(context)\r\n case 'VIEW_PROMOTION':\r\n case 'SELECT_PROMOTION':\r\n return itemsFromBanner(context)\r\n default:\r\n return null;\r\n }\r\n}\r\n","import { paymentTypeMap } from \"../../../core/utils\";\r\n\r\nexport function paymentTypeFromOrderForm(context: Record<string, any>) {\r\n if (!context.orderForm) return null;\r\n\r\n const payments = context.orderForm.paymentData?.payments || [];\r\n const systems = context.orderForm.paymentData?.paymentSystems || [];\r\n if (!payments.length || !systems.length) return null;\r\n\r\n const selectedPayment = payments.find((p: { paymentSystem: string }) => p?.paymentSystem) || payments[0];\r\n const id = String(selectedPayment?.paymentSystem || '').trim();\r\n if (!id) return null;\r\n\r\n const system = systems.find((s: { id: string }) => String(s.id) === id);\r\n const name = system?.name?.toLowerCase() || '';\r\n const match = paymentTypeMap.find(([key]) => name.includes(key));\r\n\r\n return match ? match[1] : null;\r\n}\r\n","import { paymentTypeMap } from \"../../../core/utils\";\r\n\r\nexport function paymentTypeFromOrderGroup(context: Record<string, any>) {\r\n if (!context.orderForm) return null;\r\n\r\n const transactions = context.orderForm.paymentData?.transactions || [];\r\n if (!transactions.length) return null;\r\n\r\n const payments = transactions[0]?.payments || [];\r\n if (!payments.length) return null;\r\n\r\n const name = payments[0]?.paymentSystemName?.toLowerCase() || '';\r\n const match = paymentTypeMap.find(([key]) => name.includes(key));\r\n\r\n return match ? match[1] : null;\r\n}\r\n","import { paymentTypeFromOrderForm } from './resolvers/paymentType/fromOrderForm';\r\nimport { paymentTypeFromOrderGroup } from './resolvers/paymentType/fromOrderGroup';\r\n\r\n/**\r\n * Selects the appropriate payment_type resolver based on the event name and returns its result.\r\n *\r\n * @param context - Runtime context passed to the selected resolver\r\n * @param eventName - Event identifier that determines which resolver to use\r\n * @returns The resolved payment_type for the event, or `null` if the event is not recognized\r\n */\r\nexport function getPaymentType(context: Record<string, any>, eventName: string) {\r\n if (context?.paymentType) return context.paymentType;\r\n\r\n switch (eventName) {\r\n case 'ORDER_REVIEWED':\r\n case 'CUSTOM_ADD_PAYMENT_INFO':\r\n return paymentTypeFromOrderForm(context);\r\n case 'PURCHASE':\r\n case 'CUSTOM_PURCHASE':\r\n return paymentTypeFromOrderGroup(context)\r\n default:\r\n return null;\r\n }\r\n}\r\n","import type { EventContext, EventName, LogisticInfo } from '../types';\r\nimport { getBrand } from './brand';\r\nimport { getItems } from './items';\r\nimport { getPaymentType } from './paymentType';\r\nimport { toNum } from '../core/utils';\r\n\r\n\r\nexport const paramGetters = {\r\n brand: getBrand,\r\n\r\n items: getItems,\r\n\r\n payment_type: getPaymentType,\r\n\r\n user_info: async (context: EventContext, eventName: EventName) => {\r\n const PROD_DOMAINS: Record<string, Record<string, string>> = {\r\n \"animale\": {\r\n \"store\": \"https://www.animale.com.br\",\r\n \"checkout\": \"https://secure.animale.com.br\",\r\n },\r\n \"farm\": {\r\n \"store\": \"https://lojafarm.myvtex.com\"\r\n },\r\n \"mariafilo\": {\r\n \"store\": \"https://mariafilo.myvtex.com\",\r\n \"checkout\": \"https://secure.mariafilo.com.br\",\r\n },\r\n \"lojacrisbarros\": {\r\n \"store\": \"https://lojacrisbarros.myvtex.com\",\r\n \"checkout\": \"https://secure.crisbarros.com.br\",\r\n },\r\n \"lojaoffpremium\": {\r\n \"store\": \"https://lojaoffpremium.myvtex.com\",\r\n \"checkout\": \"https://secure.lojaoffpremium.com.br\",\r\n },\r\n };\r\n\r\n const domain = PROD_DOMAINS[context.account || 'https://www.animale.com.br']?.[context.platform || 'store'];\r\n\r\n if (!domain) return { customer: { email: context.userEmail, id: context?.userId }, address: null };\r\n\r\n try {\r\n const api = `${domain}/_v/user-info`;\r\n const response = await fetch(api, {\r\n method: 'POST',\r\n body: JSON.stringify({ email: context.userEmail })\r\n });\r\n\r\n if (response.status !== 200) {\r\n return { customer: { email: context.userEmail, id: context?.userId }, address: null };\r\n }\r\n\r\n return await response.json();\r\n } catch (_) {\r\n return { customer: { email: context.userEmail, id: context?.userId }, address: null };\r\n }\r\n },\r\n\r\n content_type: (context: EventContext, eventName: EventName) => {\r\n return `regiao`\r\n .concat(':' + context.category)\r\n .concat(context.subcategory ? ':' + context.subcategory : '')\r\n .concat(':' + context.componentName) || null\r\n },\r\n\r\n region: (context: EventContext, eventName: EventName) => {\r\n return context.region || null;\r\n },\r\n\r\n line_items: (context: EventContext, eventName: EventName) => {\r\n if (context?.lineItems) return context.lineItems;\r\n\r\n if (context?.item) {\r\n return [context.item.productId || context.item.productID || context.item.item_id];\r\n }\r\n\r\n if (context?.list) {\r\n return context.list.map((item: { productID: string, id: string, productId: string }) => item?.productID || item?.id || item?.productId)\r\n }\r\n\r\n return (context.orderForm.items || [])\r\n .map((item: EventContext) => item.productId)\r\n .join(',');\r\n },\r\n\r\n currency: (context: EventContext, eventName: EventName) => {\r\n if (context?.currency) return context.currency\r\n\r\n if (context?.bannerUrl) return 'BRL'\r\n\r\n if (context?.item) {\r\n return context.item?.offers?.priceCurrency || 'BRL'\r\n }\r\n\r\n return context.orderForm?.storePreferencesData?.currencyCode || null;\r\n },\r\n\r\n value: (context: EventContext, eventName: EventName) => {\r\n if (context?.value) return toNum(context.value)\r\n\r\n return context.item ? toNum(context.item?.price) : context.orderForm?.value != null\r\n ? context.orderForm.value / 100\r\n : null;\r\n },\r\n\r\n total_discount: (context: EventContext, eventName: EventName) => {\r\n if (context?.totalDiscount) return context.totalDiscount\r\n\r\n const totalsList = context.orderForm?.totalizers || context.orderForm?.totals || []; // totals for ordergroup and orderform have different names\r\n const items = context.orderForm.items;\r\n const totalDiscount = items.reduce((acc: number, item: { quantity: number, listPrice: number, sellingPrice: number }) => {\r\n const unitDiscount = Math.max(0, item.listPrice - item.sellingPrice);\r\n return acc + (unitDiscount * item.quantity);\r\n }, 0);\r\n\r\n const discounts = totalsList.find((t: { id: string }) => t.id === 'Discounts');\r\n return Math.abs((discounts?.value || 0) + totalDiscount) / 100 || null;\r\n },\r\n\r\n subtotal: (context: EventContext, eventName: EventName) => {\r\n const totalsList = context.orderForm?.totalizers || context.orderForm?.totals || []; // totals for ordergroup and orderform have different names\r\n\r\n const subtotal =\r\n totalsList\r\n .filter((t: EventContext) => t.id === 'Items')\r\n .reduce((acc: number, t: EventContext) => acc + (t.value || 0), 0) / 100 || 0;\r\n\r\n return subtotal\r\n },\r\n\r\n coupon_message: (context: EventContext, eventName: EventName) => {\r\n if (context.couponMessage) return context.couponMessage;\r\n\r\n const messages = context.orderForm?.messages || [];\r\n\r\n if (messages.length === 0) return null;\r\n\r\n const couponMessages = messages.filter((msg: EventContext) =>\r\n msg.text.toLowerCase().includes('cupom')\r\n );\r\n\r\n if (couponMessages.length === 0) return null;\r\n\r\n return couponMessages.map((msg: EventContext) => msg.text).join(' | ');\r\n },\r\n\r\n seller_cod_name: (context: EventContext, eventName: EventName) => {\r\n return context.appliedSellerCodName || context?.orderForm.marketingData.utmiCampaign || null;\r\n },\r\n\r\n coupon: (context: EventContext, eventName: EventName) => {\r\n return context.appliedCoupon || context?.orderForm?.marketingData?.coupon || null;\r\n },\r\n\r\n pre_filled: (context: EventContext, eventName: EventName) => {\r\n return !!context.preFilled;\r\n },\r\n\r\n search_term: (context: EventContext, eventName: EventName) => {\r\n return context.searchTerm || null;\r\n },\r\n\r\n search_found: (context: EventContext, eventName: EventName) => {\r\n return !!context.searchFound;\r\n },\r\n\r\n search_quantity: (context: EventContext, eventName: EventName) => {\r\n return context.searchQuantity || 0;\r\n },\r\n\r\n promotion_name: (context: EventContext, eventName: EventName) => {\r\n return context.promotionName || null;\r\n },\r\n\r\n creative_name: (context: EventContext, eventName: EventName) => {\r\n return context.creativeName || null;\r\n },\r\n\r\n creative_slot: (context: EventContext, eventName: EventName) => {\r\n return context.creativeSlot || null;\r\n },\r\n\r\n zipcode: (context: EventContext, eventName: EventName) => {\r\n return context.zipCode || null;\r\n },\r\n\r\n size: (context: EventContext, eventName: EventName) => {\r\n return context.size || null;\r\n },\r\n\r\n item_ref: (context: EventContext, eventName: EventName) => {\r\n return context.itemRef || null;\r\n },\r\n\r\n flag_pickup: (context: EventContext, eventName: EventName) => {\r\n const orderForm = context.orderForm;\r\n if (!orderForm) return null;\r\n\r\n const logisticsInfo = orderForm.shippingData?.logisticsInfo || [];\r\n const hasPickup = logisticsInfo.some((info: LogisticInfo) =>\r\n info.slas?.some((sla) => sla.deliveryChannel === 'pickup-in-point')\r\n );\r\n\r\n return hasPickup\r\n },\r\n\r\n shippings: (context: EventContext, eventName: EventName) => {\r\n const orderForm = context.orderForm;\r\n if (!orderForm) return null;\r\n\r\n const groupShipping: Record<string, any> = {};\r\n\r\n for (const info of orderForm.shippingData.logisticsInfo) {\r\n const item = orderForm.items[info.itemIndex]\r\n if (!item) continue\r\n\r\n for (const sla of info.slas) {\r\n const key = sla.name\r\n\r\n if (!groupShipping[key]) {\r\n groupShipping[key] = {\r\n shipping_tier: sla.name,\r\n delivery_time: parseInt(sla.shippingEstimate),\r\n shipping: parseFloat((sla.price / 100).toFixed(1)),\r\n line_items: []\r\n }\r\n }\r\n\r\n groupShipping[key].line_items.push(item.id)\r\n }\r\n }\r\n\r\n const shippings = Object.values(groupShipping).map((s) => ({\r\n shipping: s.shipping,\r\n shipping_tier: s.shipping_tier,\r\n delivery_time: s.delivery_time,\r\n line_items: s.line_items.join(',')\r\n }))\r\n\r\n return shippings || null\r\n },\r\n\r\n shipping: (context: EventContext, eventName: EventName) => {\r\n const logistics = context?.orderForm?.shippingData?.logisticsInfo ?? []\r\n return logistics.reduce((total: number, item: any) => {\r\n const selected = item.slas?.find((sla: any) => sla.id === item.selectedSla)\r\n return total + (selected?.price ?? 0)\r\n }, 0)\r\n },\r\n\r\n shipping_tier: (context: EventContext, eventName: EventName) => {\r\n const logistics = context?.orderForm?.shippingData?.logisticsInfo ?? []\r\n const selectedSlas = logistics\r\n .map((item: {\r\n selectedSla?: string,\r\n slas?: Array<{\r\n id: string,\r\n deliveryChannel: string,\r\n name?: string,\r\n pickupStoreInfo?: { friendlyName?: string }\r\n }>\r\n }) => {\r\n if (!item.selectedSla) return null;\r\n return item.slas?.find((sla) => sla.id === item.selectedSla) || null;\r\n })\r\n .filter(Boolean) as Array<{\r\n deliveryChannel: string,\r\n name?: string,\r\n pickupStoreInfo?: { friendlyName?: string }\r\n }>;\r\n\r\n if (selectedSlas.length === 0) return null;\r\n\r\n const uniqueTiers = Array.from(\r\n new Map(\r\n selectedSlas.map((sla) => {\r\n const key = sla.deliveryChannel === 'pickup-in-point'\r\n ? `pickup:${sla.pickupStoreInfo?.friendlyName || sla.name || ''}`\r\n : `delivery:${sla.name || ''}`;\r\n return [key, sla];\r\n })\r\n ).values()\r\n );\r\n\r\n const sortedTiers = uniqueTiers.sort((a, b) => {\r\n const aOrder = a.deliveryChannel === 'pickup-in-point' ? 0 : 1;\r\n const bOrder = b.deliveryChannel === 'pickup-in-point' ? 0 : 1;\r\n if (aOrder !== bOrder) return aOrder - bOrder;\r\n\r\n const aLabel = a.deliveryChannel === 'pickup-in-point'\r\n ? (a.pickupStoreInfo?.friendlyName || a.name || '')\r\n : (a.name || '');\r\n const bLabel = b.deliveryChannel === 'pickup-in-point'\r\n ? (b.pickupStoreInfo?.friendlyName || b.name || '')\r\n : (b.name || '');\r\n\r\n return aLabel.localeCompare(bLabel, 'pt-BR');\r\n });\r\n\r\n const shippingTier = sortedTiers\r\n .map((sla) => (\r\n sla.deliveryChannel === 'pickup-in-point'\r\n ? `retirada em loja${sla.pickupStoreInfo?.friendlyName ? `: ${sla.pickupStoreInfo.friendlyName}` : ''}`\r\n : sla.deliveryChannel === 'delivery'\r\n ? `receba em casa${sla.name ? `: ${sla.name}` : ''}`\r\n : null\r\n ))\r\n .filter(Boolean)\r\n .join(', ');\r\n\r\n return shippingTier || null;\r\n },\r\n\r\n transaction_id: (context: EventContext, eventName: EventName) => {\r\n return context.orderForm?.orderGroup?.toString() || null;\r\n },\r\n\r\n available_grid: (context: EventContext, eventName: EventName) => {\r\n return context.availableGrid || null;\r\n },\r\n}","import { EVENTS } from '../core/constants';\r\nimport { paramGetters } from '../params';\r\nimport type { EventName, EventContext } from '../types'\r\n\r\ntype ParamName = keyof typeof paramGetters;\r\n\r\n/**\r\n * Resolve and return the required parameters for a given event.\r\n *\r\n * @param context - Context passed to each parameter getter (defaults to an empty object)\r\n * @param eventName - The event whose required parameters should be resolved\r\n * @returns An object mapping each required parameter name to its resolved value (`null` when a param getter is missing), or `undefined` if the event has no configuration\r\n */\r\nexport async function getParameters(context: EventContext = {}, eventName: EventName) {\r\n const eventConfig = EVENTS[eventName] as { requiredParams: string[] };\r\n\r\n if (!eventConfig) return;\r\n\r\n const params = Object.fromEntries(\r\n await Promise.all(\r\n eventConfig.requiredParams.map(async (param) => {\r\n const getter = paramGetters[param as ParamName];\r\n\r\n if (typeof getter !== 'function') {\r\n console.error(`[DT] Missing paramGetter for param: ${param}`);\r\n return [param, null]; // ou undefined\r\n }\r\n \r\n return [param, await getter(context, eventName)];\r\n })\r\n )\r\n );\r\n\r\n return params;\r\n}\r\n","import { dispatchTrackEvent } from './adapters';\r\nimport { getParameters } from './formatter';\r\nimport { EVENTS } from './core/constants';\r\nimport type { EventContext, EventName } from './types';\r\n\r\n/**\r\n * Assembles tracking parameters and sends a web tracking event.\r\n *\r\n * @param event - The name of the event to track.\r\n * @param context - Optional context used to build event parameters; may include a `window` property that will be attached to the dispatched payload.\r\n * @returns The result returned by `dispatchTrackEvent` when the event is sent successfully, or the value returned by `console.error` (`undefined`) if an error occurs.\r\n */\r\nasync function trackWebEvent(event: EventName, context: EventContext = {}) {\r\n try {\r\n // object data to be sent\r\n const parameters = await getParameters(context, event);\r\n\r\n // function to send event\r\n return await dispatchTrackEvent(\r\n event,\r\n Object.assign({}, parameters, { window: context.window })\r\n );\r\n } catch (err) {\r\n return console.error(`[DT] Error tracking event ${event}:`, err);\r\n }\r\n}\r\n\r\nexport { trackWebEvent, EVENTS };\r\n\r\nexport default {\r\n trackWebEvent,\r\n EVENTS,\r\n}\r\n"],"mappings":"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","names":["_a","_a","_a","_b"]}
@@ -1015,20 +1015,20 @@ var AzzasTracker = function() {
1015
1015
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
1016
1016
  var __getOwnPropNames = Object.getOwnPropertyNames;
1017
1017
  var __hasOwnProp = Object.prototype.hasOwnProperty;
1018
- var __export = function(target, all) {
1018
+ var __export = function __export(target, all) {
1019
1019
  for(var name in all)__defProp(target, name, {
1020
1020
  get: all[name],
1021
1021
  enumerable: true
1022
1022
  });
1023
1023
  };
1024
- var __copyProps = function(to, from, except, desc) {
1024
+ var __copyProps = function __copyProps(to, from, except, desc) {
1025
1025
  if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
1026
1026
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1027
1027
  try {
1028
1028
  var _loop = function() {
1029
1029
  var key = _step.value;
1030
1030
  if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
1031
- get: function() {
1031
+ get: function get() {
1032
1032
  return from[key];
1033
1033
  },
1034
1034
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
@@ -1052,7 +1052,7 @@ var AzzasTracker = function() {
1052
1052
  }
1053
1053
  return to;
1054
1054
  };
1055
- var __toCommonJS = function(mod) {
1055
+ var __toCommonJS = function __toCommonJS(mod) {
1056
1056
  return __copyProps(__defProp({}, "__esModule", {
1057
1057
  value: true
1058
1058
  }), mod);
@@ -1060,13 +1060,13 @@ var AzzasTracker = function() {
1060
1060
  // src/index.ts
1061
1061
  var src_exports = {};
1062
1062
  __export(src_exports, {
1063
- EVENTS: function() {
1063
+ EVENTS: function EVENTS1() {
1064
1064
  return EVENTS;
1065
1065
  },
1066
- default: function() {
1066
+ default: function _default() {
1067
1067
  return src_default;
1068
1068
  },
1069
- trackWebEvent: function() {
1069
+ trackWebEvent: function trackWebEvent1() {
1070
1070
  return trackWebEvent;
1071
1071
  }
1072
1072
  });
@@ -1517,7 +1517,7 @@ var AzzasTracker = function() {
1517
1517
  "cart\xE3o"
1518
1518
  ]
1519
1519
  ];
1520
- var toNum = function(val) {
1520
+ var toNum = function toNum(val) {
1521
1521
  return typeof val === "string" ? Number(val.replace(/[^\d,]/g, "").replace(",", ".")) : val;
1522
1522
  };
1523
1523
  // src/adapters/index.ts
@@ -1535,7 +1535,7 @@ var AzzasTracker = function() {
1535
1535
  brand: getBrand,
1536
1536
  items: getItems,
1537
1537
  payment_type: getPaymentType,
1538
- user_info: function(context, eventName) {
1538
+ user_info: function user_info(context, eventName) {
1539
1539
  return _async_to_generator(function() {
1540
1540
  var _PROD_DOMAINS_, PROD_DOMAINS, domain, api, response, _;
1541
1541
  return _ts_generator(this, function(_state) {
@@ -1634,13 +1634,13 @@ var AzzasTracker = function() {
1634
1634
  });
1635
1635
  })();
1636
1636
  },
1637
- content_type: function(context, eventName) {
1637
+ content_type: function content_type(context, eventName) {
1638
1638
  return "regiao".concat(":" + context.category).concat(context.subcategory ? ":" + context.subcategory : "").concat(":" + context.componentName) || null;
1639
1639
  },
1640
- region: function(context, eventName) {
1640
+ region: function region(context, eventName) {
1641
1641
  return context.region || null;
1642
1642
  },
1643
- line_items: function(context, eventName) {
1643
+ line_items: function line_items(context, eventName) {
1644
1644
  if (context === null || context === void 0 ? void 0 : context.lineItems) return context.lineItems;
1645
1645
  if (context === null || context === void 0 ? void 0 : context.item) {
1646
1646
  return [
@@ -1656,7 +1656,7 @@ var AzzasTracker = function() {
1656
1656
  return item.productId;
1657
1657
  }).join(",");
1658
1658
  },
1659
- currency: function(context, eventName) {
1659
+ currency: function currency(context, eventName) {
1660
1660
  var _context_orderForm_storePreferencesData, _context_orderForm;
1661
1661
  if (context === null || context === void 0 ? void 0 : context.currency) return context.currency;
1662
1662
  if (context === null || context === void 0 ? void 0 : context.bannerUrl) return "BRL";
@@ -1666,12 +1666,12 @@ var AzzasTracker = function() {
1666
1666
  }
1667
1667
  return ((_context_orderForm = context.orderForm) === null || _context_orderForm === void 0 ? void 0 : (_context_orderForm_storePreferencesData = _context_orderForm.storePreferencesData) === null || _context_orderForm_storePreferencesData === void 0 ? void 0 : _context_orderForm_storePreferencesData.currencyCode) || null;
1668
1668
  },
1669
- value: function(context, eventName) {
1669
+ value: function value(context, eventName) {
1670
1670
  var _context_item, _context_orderForm;
1671
1671
  if (context === null || context === void 0 ? void 0 : context.value) return toNum(context.value);
1672
1672
  return context.item ? toNum((_context_item = context.item) === null || _context_item === void 0 ? void 0 : _context_item.price) : ((_context_orderForm = context.orderForm) === null || _context_orderForm === void 0 ? void 0 : _context_orderForm.value) != null ? context.orderForm.value / 100 : null;
1673
1673
  },
1674
- total_discount: function(context, eventName) {
1674
+ total_discount: function total_discount(context, eventName) {
1675
1675
  var _context_orderForm, _context_orderForm1;
1676
1676
  if (context === null || context === void 0 ? void 0 : context.totalDiscount) return context.totalDiscount;
1677
1677
  var totalsList = ((_context_orderForm = context.orderForm) === null || _context_orderForm === void 0 ? void 0 : _context_orderForm.totalizers) || ((_context_orderForm1 = context.orderForm) === null || _context_orderForm1 === void 0 ? void 0 : _context_orderForm1.totals) || [];
@@ -1685,7 +1685,7 @@ var AzzasTracker = function() {
1685
1685
  });
1686
1686
  return Math.abs(((discounts === null || discounts === void 0 ? void 0 : discounts.value) || 0) + totalDiscount) / 100 || null;
1687
1687
  },
1688
- subtotal: function(context, eventName) {
1688
+ subtotal: function subtotal(context, eventName) {
1689
1689
  var _context_orderForm, _context_orderForm1;
1690
1690
  var totalsList = ((_context_orderForm = context.orderForm) === null || _context_orderForm === void 0 ? void 0 : _context_orderForm.totalizers) || ((_context_orderForm1 = context.orderForm) === null || _context_orderForm1 === void 0 ? void 0 : _context_orderForm1.totals) || [];
1691
1691
  var subtotal = totalsList.filter(function(t) {
@@ -1695,7 +1695,7 @@ var AzzasTracker = function() {
1695
1695
  }, 0) / 100 || 0;
1696
1696
  return subtotal;
1697
1697
  },
1698
- coupon_message: function(context, eventName) {
1698
+ coupon_message: function coupon_message(context, eventName) {
1699
1699
  var _context_orderForm;
1700
1700
  if (context.couponMessage) return context.couponMessage;
1701
1701
  var messages = ((_context_orderForm = context.orderForm) === null || _context_orderForm === void 0 ? void 0 : _context_orderForm.messages) || [];
@@ -1708,44 +1708,44 @@ var AzzasTracker = function() {
1708
1708
  return msg.text;
1709
1709
  }).join(" | ");
1710
1710
  },
1711
- seller_cod_name: function(context, eventName) {
1711
+ seller_cod_name: function seller_cod_name(context, eventName) {
1712
1712
  return context.appliedSellerCodName || (context === null || context === void 0 ? void 0 : context.orderForm.marketingData.utmiCampaign) || null;
1713
1713
  },
1714
- coupon: function(context, eventName) {
1714
+ coupon: function coupon(context, eventName) {
1715
1715
  var _context_orderForm_marketingData, _context_orderForm;
1716
1716
  return context.appliedCoupon || (context === null || context === void 0 ? void 0 : (_context_orderForm = context.orderForm) === null || _context_orderForm === void 0 ? void 0 : (_context_orderForm_marketingData = _context_orderForm.marketingData) === null || _context_orderForm_marketingData === void 0 ? void 0 : _context_orderForm_marketingData.coupon) || null;
1717
1717
  },
1718
- pre_filled: function(context, eventName) {
1718
+ pre_filled: function pre_filled(context, eventName) {
1719
1719
  return !!context.preFilled;
1720
1720
  },
1721
- search_term: function(context, eventName) {
1721
+ search_term: function search_term(context, eventName) {
1722
1722
  return context.searchTerm || null;
1723
1723
  },
1724
- search_found: function(context, eventName) {
1724
+ search_found: function search_found(context, eventName) {
1725
1725
  return !!context.searchFound;
1726
1726
  },
1727
- search_quantity: function(context, eventName) {
1727
+ search_quantity: function search_quantity(context, eventName) {
1728
1728
  return context.searchQuantity || 0;
1729
1729
  },
1730
- promotion_name: function(context, eventName) {
1730
+ promotion_name: function promotion_name(context, eventName) {
1731
1731
  return context.promotionName || null;
1732
1732
  },
1733
- creative_name: function(context, eventName) {
1733
+ creative_name: function creative_name(context, eventName) {
1734
1734
  return context.creativeName || null;
1735
1735
  },
1736
- creative_slot: function(context, eventName) {
1736
+ creative_slot: function creative_slot(context, eventName) {
1737
1737
  return context.creativeSlot || null;
1738
1738
  },
1739
- zipcode: function(context, eventName) {
1739
+ zipcode: function zipcode(context, eventName) {
1740
1740
  return context.zipCode || null;
1741
1741
  },
1742
- size: function(context, eventName) {
1742
+ size: function size(context, eventName) {
1743
1743
  return context.size || null;
1744
1744
  },
1745
- item_ref: function(context, eventName) {
1745
+ item_ref: function item_ref(context, eventName) {
1746
1746
  return context.itemRef || null;
1747
1747
  },
1748
- flag_pickup: function(context, eventName) {
1748
+ flag_pickup: function flag_pickup(context, eventName) {
1749
1749
  var _orderForm_shippingData;
1750
1750
  var orderForm = context.orderForm;
1751
1751
  if (!orderForm) return null;
@@ -1758,7 +1758,7 @@ var AzzasTracker = function() {
1758
1758
  });
1759
1759
  return hasPickup;
1760
1760
  },
1761
- shippings: function(context, eventName) {
1761
+ shippings: function shippings(context, eventName) {
1762
1762
  var orderForm = context.orderForm;
1763
1763
  if (!orderForm) return null;
1764
1764
  var groupShipping = {};
@@ -1822,7 +1822,7 @@ var AzzasTracker = function() {
1822
1822
  });
1823
1823
  return shippings || null;
1824
1824
  },
1825
- shipping: function(context, eventName) {
1825
+ shipping: function shipping(context, eventName) {
1826
1826
  var _ref;
1827
1827
  var _context_orderForm_shippingData, _context_orderForm;
1828
1828
  var logistics = (_ref = context === null || context === void 0 ? void 0 : (_context_orderForm = context.orderForm) === null || _context_orderForm === void 0 ? void 0 : (_context_orderForm_shippingData = _context_orderForm.shippingData) === null || _context_orderForm_shippingData === void 0 ? void 0 : _context_orderForm_shippingData.logisticsInfo) !== null && _ref !== void 0 ? _ref : [];
@@ -1835,26 +1835,46 @@ var AzzasTracker = function() {
1835
1835
  return total + ((_ref = selected === null || selected === void 0 ? void 0 : selected.price) !== null && _ref !== void 0 ? _ref : 0);
1836
1836
  }, 0);
1837
1837
  },
1838
- shipping_tier: function(context, eventName) {
1838
+ shipping_tier: function shipping_tier(context, eventName) {
1839
1839
  var _ref;
1840
- var _context_orderForm_shippingData, _context_orderForm, _selected_slas;
1840
+ var _context_orderForm_shippingData, _context_orderForm;
1841
1841
  var logistics = (_ref = context === null || context === void 0 ? void 0 : (_context_orderForm = context.orderForm) === null || _context_orderForm === void 0 ? void 0 : (_context_orderForm_shippingData = _context_orderForm.shippingData) === null || _context_orderForm_shippingData === void 0 ? void 0 : _context_orderForm_shippingData.logisticsInfo) !== null && _ref !== void 0 ? _ref : [];
1842
- var selected = logistics.find(function(item) {
1843
- return item.selectedSla;
1844
- });
1845
- if (!selected) return null;
1846
- var sla = (_selected_slas = selected.slas) === null || _selected_slas === void 0 ? void 0 : _selected_slas.find(function(s) {
1847
- return s.id === selected.selectedSla;
1842
+ var selectedSlas = logistics.map(function(item) {
1843
+ var _item_slas;
1844
+ if (!item.selectedSla) return null;
1845
+ return ((_item_slas = item.slas) === null || _item_slas === void 0 ? void 0 : _item_slas.find(function(sla) {
1846
+ return sla.id === item.selectedSla;
1847
+ })) || null;
1848
+ }).filter(Boolean);
1849
+ if (selectedSlas.length === 0) return null;
1850
+ var uniqueTiers = Array.from(new Map(selectedSlas.map(function(sla) {
1851
+ var _sla_pickupStoreInfo;
1852
+ var key = sla.deliveryChannel === "pickup-in-point" ? "pickup:".concat(((_sla_pickupStoreInfo = sla.pickupStoreInfo) === null || _sla_pickupStoreInfo === void 0 ? void 0 : _sla_pickupStoreInfo.friendlyName) || sla.name || "") : "delivery:".concat(sla.name || "");
1853
+ return [
1854
+ key,
1855
+ sla
1856
+ ];
1857
+ })).values());
1858
+ var sortedTiers = uniqueTiers.sort(function(a, b) {
1859
+ var _a_pickupStoreInfo, _b_pickupStoreInfo;
1860
+ var aOrder = a.deliveryChannel === "pickup-in-point" ? 0 : 1;
1861
+ var bOrder = b.deliveryChannel === "pickup-in-point" ? 0 : 1;
1862
+ if (aOrder !== bOrder) return aOrder - bOrder;
1863
+ var aLabel = a.deliveryChannel === "pickup-in-point" ? ((_a_pickupStoreInfo = a.pickupStoreInfo) === null || _a_pickupStoreInfo === void 0 ? void 0 : _a_pickupStoreInfo.friendlyName) || a.name || "" : a.name || "";
1864
+ var bLabel = b.deliveryChannel === "pickup-in-point" ? ((_b_pickupStoreInfo = b.pickupStoreInfo) === null || _b_pickupStoreInfo === void 0 ? void 0 : _b_pickupStoreInfo.friendlyName) || b.name || "" : b.name || "";
1865
+ return aLabel.localeCompare(bLabel, "pt-BR");
1848
1866
  });
1849
- if (!sla) return null;
1850
- var deliveryChannel = sla.deliveryChannel, name = sla.name, pickupStoreInfo = sla.pickupStoreInfo;
1851
- return deliveryChannel === "pickup-in-point" ? "retirada em loja".concat((pickupStoreInfo === null || pickupStoreInfo === void 0 ? void 0 : pickupStoreInfo.friendlyName) ? ": ".concat(pickupStoreInfo.friendlyName) : "") : deliveryChannel === "delivery" ? "receba em casa".concat(name ? ": ".concat(name) : "") : null;
1867
+ var shippingTier = sortedTiers.map(function(sla) {
1868
+ var _sla_pickupStoreInfo;
1869
+ return sla.deliveryChannel === "pickup-in-point" ? "retirada em loja".concat(((_sla_pickupStoreInfo = sla.pickupStoreInfo) === null || _sla_pickupStoreInfo === void 0 ? void 0 : _sla_pickupStoreInfo.friendlyName) ? ": ".concat(sla.pickupStoreInfo.friendlyName) : "") : sla.deliveryChannel === "delivery" ? "receba em casa".concat(sla.name ? ": ".concat(sla.name) : "") : null;
1870
+ }).filter(Boolean).join(", ");
1871
+ return shippingTier || null;
1852
1872
  },
1853
- transaction_id: function(context, eventName) {
1873
+ transaction_id: function transaction_id(context, eventName) {
1854
1874
  var _context_orderForm_orderGroup, _context_orderForm;
1855
1875
  return ((_context_orderForm = context.orderForm) === null || _context_orderForm === void 0 ? void 0 : (_context_orderForm_orderGroup = _context_orderForm.orderGroup) === null || _context_orderForm_orderGroup === void 0 ? void 0 : _context_orderForm_orderGroup.toString()) || null;
1856
1876
  },
1857
- available_grid: function(context, eventName) {
1877
+ available_grid: function available_grid(context, eventName) {
1858
1878
  return context.availableGrid || null;
1859
1879
  }
1860
1880
  };