@azzas/azzas-tracker-web 1.0.1
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/README.md +109 -0
- package/dist/mod.cjs +389 -0
- package/dist/mod.cjs.map +1 -0
- package/dist/mod.d.cts +79 -0
- package/dist/mod.d.ts +79 -0
- package/dist/mod.global.js +387 -0
- package/dist/mod.global.js.map +1 -0
- package/dist/mod.js +362 -0
- package/dist/mod.js.map +1 -0
- package/package.json +36 -0
package/dist/mod.js
ADDED
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
// src/constants.ts
|
|
2
|
+
var EVENTS = {
|
|
3
|
+
VIEW_CART: {
|
|
4
|
+
name: "view_cart",
|
|
5
|
+
destinations: ["Dito", "DataLayer"],
|
|
6
|
+
requiredParams: [
|
|
7
|
+
"brand",
|
|
8
|
+
"region",
|
|
9
|
+
"line_items",
|
|
10
|
+
"currency",
|
|
11
|
+
"value",
|
|
12
|
+
"total_discount",
|
|
13
|
+
"subtotal",
|
|
14
|
+
"items"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
ADD_TO_CART: {
|
|
18
|
+
name: "add_to_cart",
|
|
19
|
+
destinations: ["DataLayer"],
|
|
20
|
+
requiredParams: [
|
|
21
|
+
"brand",
|
|
22
|
+
"region",
|
|
23
|
+
"line_items",
|
|
24
|
+
"currency",
|
|
25
|
+
"value",
|
|
26
|
+
"items"
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
REMOVE_FROM_CART: {
|
|
30
|
+
name: "remove_from_cart",
|
|
31
|
+
destinations: ["DataLayer"],
|
|
32
|
+
requiredParams: [
|
|
33
|
+
"brand",
|
|
34
|
+
"region",
|
|
35
|
+
"line_items",
|
|
36
|
+
"currency",
|
|
37
|
+
"value",
|
|
38
|
+
"items"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
ADD_COUPON: {
|
|
42
|
+
name: "add_coupon",
|
|
43
|
+
destinations: ["DataLayer"],
|
|
44
|
+
requiredParams: [
|
|
45
|
+
"brand",
|
|
46
|
+
"region",
|
|
47
|
+
"coupon",
|
|
48
|
+
"coupon_message",
|
|
49
|
+
"seller_cod_name"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
SEARCH: {
|
|
53
|
+
name: "search",
|
|
54
|
+
destinations: ["DataLayer"],
|
|
55
|
+
requiredParams: ["brand", "search_term", "search_found", "search_quantity"]
|
|
56
|
+
},
|
|
57
|
+
SEARCH_ZIPCODE: {
|
|
58
|
+
name: "search_zipcode",
|
|
59
|
+
requiredParams: ["region"]
|
|
60
|
+
},
|
|
61
|
+
SELECT_CONTENT: {
|
|
62
|
+
name: "select_content",
|
|
63
|
+
requiredParams: ["region"]
|
|
64
|
+
},
|
|
65
|
+
SELECT_ITEM: {
|
|
66
|
+
name: "select_item",
|
|
67
|
+
requiredParams: ["region"]
|
|
68
|
+
},
|
|
69
|
+
VIEW_ITEM_LIST: {
|
|
70
|
+
name: "view_item_list",
|
|
71
|
+
requiredParams: ["region"]
|
|
72
|
+
},
|
|
73
|
+
BEGIN_CHECKOUT: {
|
|
74
|
+
name: "begin_checkout",
|
|
75
|
+
requiredParams: ["region"]
|
|
76
|
+
},
|
|
77
|
+
AUTH_ACTION: {
|
|
78
|
+
name: "auth_action",
|
|
79
|
+
requiredParams: ["region"]
|
|
80
|
+
},
|
|
81
|
+
ADD_PERSONAL_INFO: {
|
|
82
|
+
name: "add_personal_info",
|
|
83
|
+
destinations: ["DataLayer"],
|
|
84
|
+
requiredParams: ["brand", "pre_filled", "line_items", "currency", "value", "total_discount", "subtotal"]
|
|
85
|
+
},
|
|
86
|
+
ADD_SHIPPING_INFO: {
|
|
87
|
+
name: "add_shipping_info",
|
|
88
|
+
requiredParams: ["region"]
|
|
89
|
+
},
|
|
90
|
+
ADD_PAYMENT_INFO: {
|
|
91
|
+
name: "add_payment_info",
|
|
92
|
+
requiredParams: ["region"]
|
|
93
|
+
},
|
|
94
|
+
ORDER_REVIWED: {
|
|
95
|
+
name: "order_reviewed",
|
|
96
|
+
requiredParams: ["region"]
|
|
97
|
+
},
|
|
98
|
+
PURCHASE: {
|
|
99
|
+
name: "purchase",
|
|
100
|
+
requiredParams: ["region"]
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// src/adapters/index.ts
|
|
105
|
+
function dataTrackingLog(data, color, destination) {
|
|
106
|
+
console.log(
|
|
107
|
+
`%c[${destination}] EVENTO DISPARADO:%c `,
|
|
108
|
+
`background: ${color}; color: white; font-weight: bold; padding: 2px 4px; border-radius: 3px;`,
|
|
109
|
+
"color: #fff;",
|
|
110
|
+
data || ""
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
function pushToDataLayer(event, ecomm, dest) {
|
|
114
|
+
dataTrackingLog({ event, ecommerce: ecomm }, "#0b5fff", dest);
|
|
115
|
+
}
|
|
116
|
+
function pushToMeta(event, ecomm, dest) {
|
|
117
|
+
dataTrackingLog({ eventName: event, data: ecomm }, "#8C1007", dest);
|
|
118
|
+
}
|
|
119
|
+
function pushToDito(event, ecomm, dest) {
|
|
120
|
+
dataTrackingLog({ id: event, custom_data: ecomm }, "#00c851", dest);
|
|
121
|
+
}
|
|
122
|
+
var adapters = {
|
|
123
|
+
Meta: pushToMeta,
|
|
124
|
+
DataLayer: pushToDataLayer,
|
|
125
|
+
Dito: pushToDito
|
|
126
|
+
};
|
|
127
|
+
async function dispatchTrackEvent(eventName, data) {
|
|
128
|
+
const eventConfig = EVENTS[eventName];
|
|
129
|
+
if (!eventConfig) return;
|
|
130
|
+
await Promise.allSettled(
|
|
131
|
+
eventConfig.destinations.map(async (dest) => {
|
|
132
|
+
try {
|
|
133
|
+
await adapters[dest](eventName.toLowerCase(), data, dest);
|
|
134
|
+
} catch (err) {
|
|
135
|
+
console.error(`[DT] Failed to send ${eventName} to ${dest}:`, err);
|
|
136
|
+
}
|
|
137
|
+
})
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// src/params/utils/index.ts
|
|
142
|
+
async function getProductDataById(id) {
|
|
143
|
+
try {
|
|
144
|
+
const response = await fetch(
|
|
145
|
+
`/api/catalog_system/pub/products/search?fq=productId:${id}`
|
|
146
|
+
);
|
|
147
|
+
return await response.json();
|
|
148
|
+
} catch (e) {
|
|
149
|
+
console.log("[DT] Erro ao buscar dados do produto", e);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function getItemShippingTier(orderForm, item) {
|
|
153
|
+
const info = orderForm?.shippingData?.logisticsInfo?.find(
|
|
154
|
+
(li) => li.itemId === item.id
|
|
155
|
+
);
|
|
156
|
+
const selectedSla = info?.slas?.find((sla) => sla.id === info.selectedSla);
|
|
157
|
+
return selectedSla?.pickupStoreInfo?.friendlyName ? `retirada em loja: ${selectedSla.pickupStoreInfo.friendlyName}` : selectedSla?.name ? `Receba em casa: ${selectedSla.name}` : null;
|
|
158
|
+
}
|
|
159
|
+
async function getItemSku(item) {
|
|
160
|
+
const product = await getProductDataById(item.productId);
|
|
161
|
+
if (!product.length) return null;
|
|
162
|
+
return product[0].items.find((i) => i.name === item.skuName)?.itemId ?? null;
|
|
163
|
+
}
|
|
164
|
+
function getDiscount(item) {
|
|
165
|
+
return parseFloat(Math.max(item.listPrice - item.sellingPrice, 0).toFixed(2)) || 0;
|
|
166
|
+
}
|
|
167
|
+
function getItemCategory(item) {
|
|
168
|
+
return "sale";
|
|
169
|
+
}
|
|
170
|
+
function getItemCategory2(item) {
|
|
171
|
+
return "sale2";
|
|
172
|
+
}
|
|
173
|
+
function getItemCategory4(item) {
|
|
174
|
+
const tags = item?.additionalInfo?.tags || item?.tags;
|
|
175
|
+
return Array.isArray(tags) && tags.length ? tags.join(",") : null;
|
|
176
|
+
}
|
|
177
|
+
var brandMap = { Farm: "farmrio", "Farm Etc": "farmetc" };
|
|
178
|
+
function normalizeBrand(input) {
|
|
179
|
+
if (typeof input === "string") {
|
|
180
|
+
return brandMap[input] || null;
|
|
181
|
+
}
|
|
182
|
+
if (Array.isArray(input)) {
|
|
183
|
+
const uniqueBrands = new Set(
|
|
184
|
+
input.map((i) => brandMap[i.additionalInfo?.brandName || i.brand])
|
|
185
|
+
);
|
|
186
|
+
return uniqueBrands.size ? [...uniqueBrands].join("_") : null;
|
|
187
|
+
}
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// src/params/resolvers/brand/fromOrderForm.ts
|
|
192
|
+
function brandFromOrderForm(context) {
|
|
193
|
+
if (!context.orderForm && !context.orderForm.items?.length) return null;
|
|
194
|
+
const items = context.orderForm.items;
|
|
195
|
+
return normalizeBrand(items);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// src/params/resolvers/brand/fromItem.ts
|
|
199
|
+
function brandFromItem(context) {
|
|
200
|
+
const { item } = context;
|
|
201
|
+
return normalizeBrand(item.additionalInfo?.brandName || item.brand);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// src/params/brand.ts
|
|
205
|
+
function getBrand(context, eventName) {
|
|
206
|
+
if (context?.brand) return context.brand;
|
|
207
|
+
switch (eventName) {
|
|
208
|
+
case "VIEW_CART":
|
|
209
|
+
case "ADD_COUPON":
|
|
210
|
+
case "ADD_PERSONAL_INFO":
|
|
211
|
+
return brandFromOrderForm(context);
|
|
212
|
+
case "ADD_TO_CART":
|
|
213
|
+
case "REMOVE_FROM_CART":
|
|
214
|
+
return brandFromItem(context);
|
|
215
|
+
default:
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// src/params/resolvers/items/fromOrderForm.ts
|
|
221
|
+
async function itemsFromOrderForm(context) {
|
|
222
|
+
const items = context.orderForm?.items || [];
|
|
223
|
+
if (!items.length) return [];
|
|
224
|
+
return await Promise.all(
|
|
225
|
+
items.map(async (item) => ({
|
|
226
|
+
item_id: item.productId,
|
|
227
|
+
item_category2: getItemCategory2(item),
|
|
228
|
+
item_category4: getItemCategory4(item),
|
|
229
|
+
item_shipping_tier: getItemShippingTier(context.orderForm, item),
|
|
230
|
+
price: parseFloat((item.price / 100).toFixed(2)) || 0,
|
|
231
|
+
quantity: item.quantity || 1,
|
|
232
|
+
item_ref: item.refId || null,
|
|
233
|
+
item_brand: normalizeBrand(item.additionalInfo?.brandName) || null,
|
|
234
|
+
item_sku: await getItemSku(item) || item.id || null,
|
|
235
|
+
item_name: item.name || item.id || null,
|
|
236
|
+
item_category: getItemCategory(item) || null,
|
|
237
|
+
item_variant: item.skuName.split("-")[0].trim(),
|
|
238
|
+
item_variant2: item.skuName.split("-")[1]?.trim() || "",
|
|
239
|
+
discount: getDiscount(item)
|
|
240
|
+
}))
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// src/params/resolvers/items/fromItem.ts
|
|
245
|
+
async function itemsFromItem(context) {
|
|
246
|
+
const { item, orderForm } = context;
|
|
247
|
+
return [
|
|
248
|
+
{
|
|
249
|
+
item_id: item.productId,
|
|
250
|
+
item_category2: getItemCategory2(item),
|
|
251
|
+
item_category4: getItemCategory4(item),
|
|
252
|
+
item_shipping_tier: getItemShippingTier(orderForm, item),
|
|
253
|
+
price: parseFloat((item.price / 100).toFixed(2)) || 0,
|
|
254
|
+
quantity: 1,
|
|
255
|
+
item_ref: item.refId || null,
|
|
256
|
+
item_brand: item.additionalInfo?.brandName || null,
|
|
257
|
+
item_sku: await getItemSku(item) || item.id || null,
|
|
258
|
+
item_name: item.name || item.id || null,
|
|
259
|
+
item_category: getItemCategory(item) || null,
|
|
260
|
+
item_variant: item.skuName.split("-")[0].trim(),
|
|
261
|
+
item_variant2: item.skuName.split("-")[1]?.trim() || "",
|
|
262
|
+
discount: getDiscount(item)
|
|
263
|
+
}
|
|
264
|
+
];
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// src/params/items.ts
|
|
268
|
+
function getItems(context, eventName) {
|
|
269
|
+
switch (eventName) {
|
|
270
|
+
case "VIEW_CART":
|
|
271
|
+
return itemsFromOrderForm(context);
|
|
272
|
+
case "ADD_TO_CART":
|
|
273
|
+
case "REMOVE_FROM_CART":
|
|
274
|
+
return itemsFromItem(context);
|
|
275
|
+
default:
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// src/params/index.ts
|
|
281
|
+
var paramGetters = {
|
|
282
|
+
brand: getBrand,
|
|
283
|
+
region: (context, eventName) => {
|
|
284
|
+
return context.region || null;
|
|
285
|
+
},
|
|
286
|
+
line_items: (context, eventName) => {
|
|
287
|
+
return (context.orderForm.items || []).map((item) => item.productId).join(",");
|
|
288
|
+
},
|
|
289
|
+
currency: (context, eventName) => {
|
|
290
|
+
return context.orderForm?.storePreferencesData?.currencyCode || null;
|
|
291
|
+
},
|
|
292
|
+
value: (context, eventName) => {
|
|
293
|
+
return context.item ? context.item.price : context.orderForm?.value != null ? context.orderForm.value / 100 : null;
|
|
294
|
+
},
|
|
295
|
+
total_discount: (context, eventName) => {
|
|
296
|
+
return context.orderForm?.totalizers?.filter((t) => t.id === "Discounts").reduce((acc, t) => acc + t.value, 0) / 100 || 0;
|
|
297
|
+
},
|
|
298
|
+
subtotal: (context, eventName) => {
|
|
299
|
+
return context.orderForm?.totalizers?.filter((t) => t.id === "Items").reduce((acc, t) => acc + t.value, 0) / 100 || 0;
|
|
300
|
+
},
|
|
301
|
+
coupon_message: (context, eventName) => {
|
|
302
|
+
const messages = context.orderForm?.messages || [];
|
|
303
|
+
if (messages.length === 0) return null;
|
|
304
|
+
const couponMessages = messages.filter(
|
|
305
|
+
(msg) => msg.text.toLowerCase().includes("cupom")
|
|
306
|
+
);
|
|
307
|
+
if (couponMessages.length === 0) return null;
|
|
308
|
+
return couponMessages.map((msg) => msg.text).join(" | ");
|
|
309
|
+
},
|
|
310
|
+
seller_cod_name: (context, eventName) => {
|
|
311
|
+
return context.appliedSellerCodName || null;
|
|
312
|
+
},
|
|
313
|
+
coupon: (context, eventName) => {
|
|
314
|
+
return context.appliedCoupon || null;
|
|
315
|
+
},
|
|
316
|
+
pre_filled: (context, eventName) => {
|
|
317
|
+
return !!context.preFilled;
|
|
318
|
+
},
|
|
319
|
+
search_term: (context, eventName) => {
|
|
320
|
+
return context.searchTerm || null;
|
|
321
|
+
},
|
|
322
|
+
search_found: (context, eventName) => {
|
|
323
|
+
return !!context.searchFound;
|
|
324
|
+
},
|
|
325
|
+
search_quantity: (context, eventName) => {
|
|
326
|
+
return context.searchQuantity || 0;
|
|
327
|
+
},
|
|
328
|
+
items: getItems
|
|
329
|
+
};
|
|
330
|
+
|
|
331
|
+
// src/formatter/index.ts
|
|
332
|
+
async function getParameters(context = {}, eventName) {
|
|
333
|
+
const eventConfig = EVENTS[eventName];
|
|
334
|
+
if (!eventConfig) return;
|
|
335
|
+
const params = Object.fromEntries(
|
|
336
|
+
await Promise.all(
|
|
337
|
+
eventConfig.requiredParams.map(async (param) => {
|
|
338
|
+
const getter = paramGetters[param];
|
|
339
|
+
if (typeof getter !== "function") {
|
|
340
|
+
console.error(`[DT] Missing paramGetter for param: ${param}`);
|
|
341
|
+
return [param, null];
|
|
342
|
+
}
|
|
343
|
+
return [param, await getter(context, eventName)];
|
|
344
|
+
})
|
|
345
|
+
)
|
|
346
|
+
);
|
|
347
|
+
return params;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// src/index.ts
|
|
351
|
+
async function trackWebEvent(event, context = {}) {
|
|
352
|
+
try {
|
|
353
|
+
const parameters = await getParameters(context, event);
|
|
354
|
+
return await dispatchTrackEvent(event, parameters);
|
|
355
|
+
} catch (err) {
|
|
356
|
+
return console.error(`[DT] Error tracking event ${event}:`, err);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
export {
|
|
360
|
+
trackWebEvent
|
|
361
|
+
};
|
|
362
|
+
//# sourceMappingURL=mod.js.map
|
package/dist/mod.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/constants.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/items.ts","../src/params/index.ts","../src/formatter/index.ts","../src/index.ts"],"sourcesContent":["export const EVENTS = {\n VIEW_CART: {\n name: 'view_cart',\n destinations: ['Dito', '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_CART: {\n name: 'add_to_cart',\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 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 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 destinations: ['DataLayer'],\n requiredParams: ['brand', 'search_term', 'search_found', 'search_quantity'],\n },\n\n SEARCH_ZIPCODE: {\n name: 'search_zipcode',\n requiredParams: ['region'],\n },\n\n SELECT_CONTENT: {\n name: 'select_content',\n requiredParams: ['region'],\n },\n\n SELECT_ITEM: {\n name: 'select_item',\n requiredParams: ['region'],\n },\n\n VIEW_ITEM_LIST: {\n name: 'view_item_list',\n requiredParams: ['region'],\n },\n\n BEGIN_CHECKOUT: {\n name: 'begin_checkout',\n requiredParams: ['region'],\n },\n\n AUTH_ACTION: {\n name: 'auth_action',\n requiredParams: ['region'],\n },\n\n ADD_PERSONAL_INFO: {\n name: 'add_personal_info',\n destinations: ['DataLayer'],\n requiredParams: ['brand', 'pre_filled', 'line_items', 'currency', 'value', 'total_discount', 'subtotal'],\n },\n\n ADD_SHIPPING_INFO: {\n name: 'add_shipping_info',\n requiredParams: ['region'],\n },\n\n ADD_PAYMENT_INFO: {\n name: 'add_payment_info',\n requiredParams: ['region'],\n },\n\n ORDER_REVIWED: {\n name: 'order_reviewed',\n requiredParams: ['region'],\n },\n\n PURCHASE: {\n name: 'purchase',\n requiredParams: ['region'],\n },\n};\n","import { EVENTS } from '../constants';\nimport type { EventName, EventContext } from '../types'\n\nfunction dataTrackingLog(data: EventContext, color: string, destination: string) {\n console.log(\n `%c[${destination}] 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\nfunction pushToDataLayer(event: string, ecomm: EventContext, dest: string) {\n dataTrackingLog({ event: event, ecommerce: ecomm }, '#0b5fff', dest);\n}\n\nfunction pushToMeta(event: string, ecomm: EventContext, dest: string) {\n dataTrackingLog({ eventName: event, data: ecomm }, '#8C1007', dest);\n}\n\nfunction pushToDito(event: string, ecomm: EventContext, dest: string) {\n dataTrackingLog({ id: event, custom_data: ecomm }, '#00c851', dest);\n}\n\nconst adapters = {\n Meta: pushToMeta,\n DataLayer: pushToDataLayer,\n Dito: pushToDito,\n};\n\ntype AdapterKey = keyof typeof 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, dest);\n } catch (err) {\n console.error(`[DT] Failed to send ${eventName} to ${dest}:`, err);\n }\n })\n );\n}\n","export 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 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);\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 (\n parseFloat(Math.max(item.listPrice - item.sellingPrice, 0).toFixed(2)) || 0\n );\n}\n\nexport function getItemCategory(item: any) {\n return 'sale';\n}\n\nexport function getItemCategory2(item: any) {\n return 'sale2';\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 brandMap = { Farm: 'farmrio', 'Farm Etc': 'farmetc' };\nexport function normalizeBrand(input: any) {\n if (typeof input === 'string') {\n return brandMap[input as keyof typeof brandMap] || null;\n }\n\n if (Array.isArray(input)) {\n const uniqueBrands = new Set(\n input.map((i) => brandMap[i.additionalInfo?.brandName as keyof typeof brandMap || i.brand])\n );\n return uniqueBrands.size ? [...uniqueBrands].join('_') : null;\n }\n\n return 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);\n}\n","import { brandFromOrderForm } from './resolvers/brand/fromOrderForm';\nimport { brandFromItem } from './resolvers/brand/fromItem';\nimport type { EventContext, EventName } from '../types';\n\nexport function getBrand(context: EventContext, eventName: EventName) {\n if (context?.brand) return context.brand;\n\n switch (eventName) {\n case 'VIEW_CART':\n case 'ADD_COUPON':\n case 'ADD_PERSONAL_INFO':\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\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.price / 100).toFixed(2)) || 0,\n quantity: item.quantity || 1,\n item_ref: item.refId || null,\n item_brand: normalizeBrand(item.additionalInfo?.brandName) || null,\n item_sku: (await getItemSku(item)) || item.id || null,\n item_name: item.name || item.id || null,\n item_category: getItemCategory(item) || null,\n item_variant: item.skuName.split('-')[0].trim(),\n item_variant2: item.skuName.split('-')[1]?.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>) {\n const { item, orderForm } = context;\n return [\n {\n item_id: item.productId,\n item_category2: getItemCategory2(item),\n item_category4: getItemCategory4(item),\n item_shipping_tier: getItemShippingTier(orderForm, item),\n price: parseFloat((item.price / 100).toFixed(2)) || 0,\n quantity: 1,\n item_ref: item.refId || null,\n item_brand: item.additionalInfo?.brandName || null,\n item_sku: (await getItemSku(item)) || item.id || null,\n item_name: item.name || item.id || null,\n item_category: getItemCategory(item) || null,\n item_variant: item.skuName.split('-')[0].trim(),\n item_variant2: item.skuName.split('-')[1]?.trim() || '',\n discount: getDiscount(item),\n },\n ];\n}\n","import { itemsFromOrderForm } from './resolvers/items/fromOrderForm';\nimport { itemsFromItem } from './resolvers/items/fromItem';\n\nexport function getItems(context: Record<string, any>, eventName: string) {\n switch (eventName) {\n case 'VIEW_CART':\n return itemsFromOrderForm(context);\n case 'ADD_TO_CART':\n case 'REMOVE_FROM_CART':\n return itemsFromItem(context);\n default:\n return null;\n }\n}\n","import type { EventContext, EventName } from '../types';\nimport { getBrand } from './brand';\nimport { getItems } from './items';\n\nexport const paramGetters = {\n brand: getBrand,\n\n region: (context: EventContext, eventName: EventName) => {\n return context.region || null;\n },\n\n line_items: (context: EventContext, eventName: EventName) => {\n return (context.orderForm.items || [])\n .map((item: EventContext) => item.productId)\n .join(',');\n },\n\n currency: (context: EventContext, eventName: EventName) => {\n return context.orderForm?.storePreferencesData?.currencyCode || null;\n },\n\n value: (context: EventContext, eventName: EventName) => {\n return context.item ? context.item.price : context.orderForm?.value != null\n ? context.orderForm.value / 100\n : null;\n },\n\n total_discount: (context: EventContext, eventName: EventName) => {\n return (\n context.orderForm?.totalizers\n ?.filter((t: EventContext) => t.id === 'Discounts')\n .reduce((acc: EventContext, t: EventContext) => acc + t.value, 0) / 100 || 0\n );\n },\n\n subtotal: (context: EventContext, eventName: EventName) => {\n return (\n context.orderForm?.totalizers\n ?.filter((t: EventContext) => t.id === 'Items')\n .reduce((acc: EventContext, t: EventContext) => acc + t.value, 0) / 100 || 0\n );\n },\n\n coupon_message: (context: EventContext, eventName: EventName) => {\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 || null;\n },\n\n coupon: (context: EventContext, eventName: EventName) => {\n return context.appliedCoupon || 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 items: getItems,\n};\n","import { EVENTS } from '../constants';\nimport { paramGetters } from '../params';\nimport type { EventName, EventContext } from '../types'\n\ntype ParamName = keyof typeof paramGetters;\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 type { EventContext, EventName } from './types';\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(event, parameters);\n } catch (err) {\n return console.error(`[DT] Error tracking event ${event}:`, err);\n }\n}\n\nexport { trackWebEvent };\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@azzas/azzas-tracker-web",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"keywords": [],
|
|
5
|
+
"author": "",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"description": "Azzas internal data-tracking lib for web stores",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "./dist/index.cjs",
|
|
10
|
+
"module": "./dist/index.js",
|
|
11
|
+
"unpkg": "./dist/index.global.js",
|
|
12
|
+
"jsdelivr": "./dist/index.global.js",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"import": "./dist/index.js",
|
|
16
|
+
"require": "./dist/index.cjs"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsup",
|
|
25
|
+
"prepublishOnly": "npm run build",
|
|
26
|
+
"release:homolog": "npm run build && npm version prepatch --preid=beta && npm publish --tag beta --access public",
|
|
27
|
+
"release:prod": "npm run build && npm version patch && npm publish --access public"
|
|
28
|
+
},
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"tsup": "^8.5.0",
|
|
34
|
+
"typescript": "^5.9.2"
|
|
35
|
+
}
|
|
36
|
+
}
|