@dotcms/analytics
Version:
Official JavaScript library for Content Analytics with DotCMS.
37 lines (36 loc) • 1.18 kB
JavaScript
import { ANALYTICS_ENDPOINT as p } from "../constants/dot-analytics.constants.js";
import { createPluginLogger as l } from "../utils/dot-analytics.utils.js";
const m = async (n, i, c = !1) => {
const e = l("HTTP", i), f = `${i.server}${p}`, g = JSON.stringify(n);
e.info(`Sending ${n.events.length} event(s)${c ? " (keepalive)" : ""}`, {
payload: n
});
try {
const r = {
method: "POST",
headers: { "Content-Type": "application/json" },
body: g
};
if (c)
return r.keepalive = !0, r.credentials = "omit", fetch(f, r).catch((o) => {
e.error("Keepalive request failed (browser may have ignored it):", o);
}), !0;
const t = await fetch(f, r);
if (!t.ok) {
const o = t.statusText || "Unknown Error", a = `HTTP ${t.status}: ${o}`;
try {
const s = await t.json();
s.message ? e.warn(`${s.message} (${a})`) : e.warn(`${a} - No error message in response`);
} catch (s) {
e.warn(`${a} - Failed to parse error response:`, s);
}
return !1;
}
return !0;
} catch (r) {
return e.error("Error sending event:", r), !1;
}
};
export {
m as sendAnalyticsEvent
};