UNPKG

@elbwalker/destination-web-google-ga4

Version:

Google GA4 web destination for walkerOS

169 lines (163 loc) 7.91 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/examples/index.ts var examples_exports = {}; __export(examples_exports, { events: () => events_exports, mapping: () => mapping_exports }); module.exports = __toCommonJS(examples_exports); // src/examples/events.ts var events_exports = {}; __export(events_exports, { add_to_cart: () => add_to_cart, purchase: () => purchase }); // ../../../utils/dist/index.mjs var t = { merge: true, shallow: true, extend: true }; function n(e, n2 = {}, o = {}) { o = { ...t, ...o }; const i = Object.entries(n2).reduce((t2, [n3, i2]) => { const r = e[n3]; return o.merge && Array.isArray(r) && Array.isArray(i2) ? t2[n3] = i2.reduce((e2, t3) => e2.includes(t3) ? e2 : [...e2, t3], [...r]) : (o.extend || n3 in e) && (t2[n3] = i2), t2; }, {}); return o.shallow ? { ...e, ...i } : (Object.assign(e, i), e); } function s(e) { return Array.isArray(e); } function f(e) { return "object" == typeof e && null !== e && !s(e) && "[object Object]" === Object.prototype.toString.call(e); } function W(e = {}) { var _a; const t2 = e.timestamp || (/* @__PURE__ */ new Date()).setHours(0, 13, 37, 0), o = e.group || "gr0up", i = e.count || 1, r = n({ event: "entity action", data: { string: "foo", number: 1, boolean: true, array: [0, "text", false], not: void 0 }, context: { dev: ["test", 1] }, globals: { lang: "elb" }, custom: { completely: "random" }, user: { id: "us3r", device: "c00k13", session: "s3ss10n" }, nested: [{ type: "child", data: { is: "subordinated" }, nested: [], context: { element: ["child", 0] } }], consent: { functional: true }, id: `${t2}-${o}-${i}`, trigger: "test", entity: "entity", action: "action", timestamp: t2, timing: 3.14, group: o, count: i, version: { source: "0.0.7", tagging: 1 }, source: { type: "web", id: "https://localhost:80", previous_id: "http://remotehost:9001" } }, e, { merge: false }); if (e.event) { const [t3, n2] = (_a = e.event.split(" ")) != null ? _a : []; t3 && n2 && (r.entity = t3, r.action = n2); } return r; } function z(e = "entity action", t2 = {}) { const n2 = t2.timestamp || (/* @__PURE__ */ new Date()).setHours(0, 13, 37, 0), o = { data: { id: "ers", name: "Everyday Ruck Snack", color: "black", size: "l", price: 420 } }, i = { data: { id: "cc", name: "Cool Cap", size: "one size", price: 42 } }; return W({ ...{ "cart view": { data: { currency: "EUR", value: 2 * o.data.price }, context: { shopping: ["cart", 0] }, globals: { pagegroup: "shop" }, nested: [{ type: "product", data: { ...o.data, quantity: 2 }, context: { shopping: ["cart", 0] }, nested: [] }], trigger: "load" }, "checkout view": { data: { step: "payment", currency: "EUR", value: o.data.price + i.data.price }, context: { shopping: ["checkout", 0] }, globals: { pagegroup: "shop" }, nested: [{ type: "product", ...o, context: { shopping: ["checkout", 0] }, nested: [] }, { type: "product", ...i, context: { shopping: ["checkout", 0] }, nested: [] }], trigger: "load" }, "order complete": { data: { id: "0rd3r1d", currency: "EUR", shipping: 5.22, taxes: 73.76, total: 555 }, context: { shopping: ["complete", 0] }, globals: { pagegroup: "shop" }, nested: [{ type: "product", ...o, context: { shopping: ["complete", 0] }, nested: [] }, { type: "product", ...i, context: { shopping: ["complete", 0] }, nested: [] }, { type: "gift", data: { name: "Surprise" }, context: { shopping: ["complete", 0] }, nested: [] }], trigger: "load" }, "page view": { data: { domain: "www.example.com", title: "walkerOS documentation", referrer: "https://www.elbwalker.com/", search: "?foo=bar", hash: "#hash", id: "/docs/" }, globals: { pagegroup: "docs" }, trigger: "load" }, "product add": { ...o, context: { shopping: ["intent", 0] }, globals: { pagegroup: "shop" }, nested: [], trigger: "click" }, "product view": { ...o, context: { shopping: ["detail", 0] }, globals: { pagegroup: "shop" }, nested: [], trigger: "load" }, "product visible": { data: { ...o.data, position: 3, promo: true }, context: { shopping: ["discover", 0] }, globals: { pagegroup: "shop" }, nested: [], trigger: "load" }, "promotion visible": { data: { name: "Setting up tracking easily", position: "hero" }, context: { ab_test: ["engagement", 0] }, globals: { pagegroup: "homepage" }, trigger: "visible" }, "session start": { data: { id: "s3ss10n", start: n2, isNew: true, count: 1, runs: 1, isStart: true, storage: true, referrer: "", device: "c00k13" }, user: { id: "us3r", device: "c00k13", session: "s3ss10n", hash: "h4sh", address: "street number", email: "user@example.com", phone: "+49 123 456 789", userAgent: "Mozilla...", browser: "Chrome", browserVersion: "90", deviceType: "desktop", language: "de-DE", country: "DE", region: "HH", city: "Hamburg", zip: "20354", timezone: "Berlin", os: "walkerOS", osVersion: "1.0", screenSize: "1337x420", ip: "127.0.0.0", internal: true, custom: "value" } } }[e], ...t2, event: e }); } // src/examples/events.ts function purchase() { const event = z("order complete"); return [ "event", "purchase", { transaction_id: event.data.id, value: event.data.total, tax: event.data.taxes, shipping: event.data.shipping, currency: "EUR", items: event.nested.filter((item) => item.type === "product").map((item) => ({ item_id: item.data.id, item_name: item.data.name, quantity: 1 })), send_to: "G-XXXXXX-1" } ]; } function add_to_cart() { const event = z("product add"); return [ "event", "add_to_cart", { currency: "EUR", value: event.data.price, items: [ { item_id: event.data.id, item_variant: event.data.color, quantity: 1 } ], send_to: "G-XXXXXX-1" } ]; } // src/examples/mapping.ts var mapping_exports = {}; __export(mapping_exports, { add_to_cart: () => add_to_cart2, config: () => config, purchase: () => purchase2 }); var purchase2 = { name: "purchase", data: { map: { transaction_id: "data.id", value: "data.total", tax: "data.taxes", shipping: "data.shipping", currency: { key: "data.currency", value: "EUR" }, items: { loop: [ "nested", { condition: (entity) => f(entity) && entity.type === "product", map: { item_id: "data.id", item_name: "data.name", quantity: { key: "data.quantity", value: 1 } } } ] } } } }; var add_to_cart2 = { name: "add_to_cart", data: { map: { currency: { value: "EUR", key: "data.currency" }, override: "data.old", value: "data.price", items: { loop: [ "this", { map: { item_id: "data.id", item_variant: "data.color", quantity: { value: 1, key: "data.quantity" } } } ] } } } }; var config = { order: { complete: purchase2 }, product: { add: add_to_cart2 } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { events, mapping });