@elbwalker/destination-web-google-ga4
Version:
Google GA4 web destination for walkerOS
169 lines (163 loc) • 7.91 kB
JavaScript
"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
});