@casoon/trackr 0.1.0 → 0.1.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.
|
@@ -22,15 +22,27 @@ function track(name, props) {
|
|
|
22
22
|
}
|
|
23
23
|
function trackPageview() {
|
|
24
24
|
if (!config) return;
|
|
25
|
+
const utm = getUtmParams();
|
|
25
26
|
sendEvent({
|
|
26
27
|
type: "pageview",
|
|
27
28
|
url: getPath(),
|
|
28
29
|
referrer: document.referrer ? new URL(document.referrer).hostname : void 0,
|
|
30
|
+
...Object.keys(utm).length > 0 && { utm },
|
|
29
31
|
ts: Date.now()
|
|
30
32
|
});
|
|
31
33
|
}
|
|
32
34
|
function getPath() {
|
|
33
|
-
return window.location.pathname;
|
|
35
|
+
return window.location.pathname + window.location.search;
|
|
36
|
+
}
|
|
37
|
+
function getUtmParams() {
|
|
38
|
+
const params = new URLSearchParams(window.location.search);
|
|
39
|
+
const utm = {};
|
|
40
|
+
const keys = ["utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content"];
|
|
41
|
+
for (const key of keys) {
|
|
42
|
+
const value = params.get(key);
|
|
43
|
+
if (value) utm[key] = value;
|
|
44
|
+
}
|
|
45
|
+
return utm;
|
|
34
46
|
}
|
|
35
47
|
function sendEvent(event) {
|
|
36
48
|
if (!config) return;
|
|
@@ -55,4 +67,4 @@ export {
|
|
|
55
67
|
init,
|
|
56
68
|
track
|
|
57
69
|
};
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
70
|
+
//# sourceMappingURL=chunk-4EAYUMKF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client/index.ts"],"sourcesContent":["import type { TrackrConfig } from \"../types.js\";\n\nlet config: TrackrConfig | null = null;\n\nexport function init(options: TrackrConfig): void {\n config = options;\n trackPageview();\n\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"popstate\", trackPageview);\n }\n}\n\nexport function track(name: string, props?: Record<string, string | number | boolean>): void {\n if (!config) {\n console.warn(\"[trackr] Not initialized. Call init() first.\");\n return;\n }\n\n sendEvent({\n type: \"event\",\n name,\n url: getPath(),\n props,\n ts: Date.now()\n });\n}\n\nfunction trackPageview(): void {\n if (!config) return;\n\n const utm = getUtmParams();\n\n sendEvent({\n type: \"pageview\",\n url: getPath(),\n referrer: document.referrer ? new URL(document.referrer).hostname : undefined,\n ...(Object.keys(utm).length > 0 && { utm }),\n ts: Date.now()\n });\n}\n\nfunction getPath(): string {\n return window.location.pathname + window.location.search;\n}\n\nfunction getUtmParams(): Record<string, string> {\n const params = new URLSearchParams(window.location.search);\n const utm: Record<string, string> = {};\n const keys = [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_term\", \"utm_content\"];\n\n for (const key of keys) {\n const value = params.get(key);\n if (value) utm[key] = value;\n }\n\n return utm;\n}\n\nfunction sendEvent(event: Record<string, unknown>): void {\n if (!config) return;\n\n const body = JSON.stringify(event);\n\n if (navigator.sendBeacon) {\n navigator.sendBeacon(config.endpoint, body);\n } else {\n fetch(config.endpoint, {\n method: \"POST\",\n body,\n keepalive: true,\n headers: { \"Content-Type\": \"application/json\" }\n }).catch(() => {});\n }\n\n if (config.debug) {\n console.log(\"[trackr]\", event);\n }\n}\n"],"mappings":";AAEA,IAAI,SAA8B;AAE3B,SAAS,KAAK,SAA6B;AAChD,WAAS;AACT,gBAAc;AAEd,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,iBAAiB,YAAY,aAAa;AAAA,EACnD;AACF;AAEO,SAAS,MAAM,MAAc,OAAyD;AAC3F,MAAI,CAAC,QAAQ;AACX,YAAQ,KAAK,8CAA8C;AAC3D;AAAA,EACF;AAEA,YAAU;AAAA,IACR,MAAM;AAAA,IACN;AAAA,IACA,KAAK,QAAQ;AAAA,IACb;AAAA,IACA,IAAI,KAAK,IAAI;AAAA,EACf,CAAC;AACH;AAEA,SAAS,gBAAsB;AAC7B,MAAI,CAAC,OAAQ;AAEb,QAAM,MAAM,aAAa;AAEzB,YAAU;AAAA,IACR,MAAM;AAAA,IACN,KAAK,QAAQ;AAAA,IACb,UAAU,SAAS,WAAW,IAAI,IAAI,SAAS,QAAQ,EAAE,WAAW;AAAA,IACpE,GAAI,OAAO,KAAK,GAAG,EAAE,SAAS,KAAK,EAAE,IAAI;AAAA,IACzC,IAAI,KAAK,IAAI;AAAA,EACf,CAAC;AACH;AAEA,SAAS,UAAkB;AACzB,SAAO,OAAO,SAAS,WAAW,OAAO,SAAS;AACpD;AAEA,SAAS,eAAuC;AAC9C,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,MAA8B,CAAC;AACrC,QAAM,OAAO,CAAC,cAAc,cAAc,gBAAgB,YAAY,aAAa;AAEnF,aAAW,OAAO,MAAM;AACtB,UAAM,QAAQ,OAAO,IAAI,GAAG;AAC5B,QAAI,MAAO,KAAI,GAAG,IAAI;AAAA,EACxB;AAEA,SAAO;AACT;AAEA,SAAS,UAAU,OAAsC;AACvD,MAAI,CAAC,OAAQ;AAEb,QAAM,OAAO,KAAK,UAAU,KAAK;AAEjC,MAAI,UAAU,YAAY;AACxB,cAAU,WAAW,OAAO,UAAU,IAAI;AAAA,EAC5C,OAAO;AACL,UAAM,OAAO,UAAU;AAAA,MACrB,QAAQ;AAAA,MACR;AAAA,MACA,WAAW;AAAA,MACX,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAChD,CAAC,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACnB;AAEA,MAAI,OAAO,OAAO;AAChB,YAAQ,IAAI,YAAY,KAAK;AAAA,EAC/B;AACF;","names":[]}
|
package/dist/client/index.js
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/client/index.ts"],"sourcesContent":["import type { TrackrConfig } from \"../types.js\";\n\nlet config: TrackrConfig | null = null;\n\nexport function init(options: TrackrConfig): void {\n config = options;\n trackPageview();\n \n if (typeof window !== \"undefined\") {\n window.addEventListener(\"popstate\", trackPageview);\n }\n}\n\nexport function track(name: string, props?: Record<string, string | number | boolean>): void {\n if (!config) {\n console.warn(\"[trackr] Not initialized. Call init() first.\");\n return;\n }\n \n sendEvent({\n type: \"event\",\n name,\n url: getPath(),\n props,\n ts: Date.now()\n });\n}\n\nfunction trackPageview(): void {\n if (!config) return;\n \n sendEvent({\n type: \"pageview\",\n url: getPath(),\n referrer: document.referrer ? new URL(document.referrer).hostname : undefined,\n ts: Date.now()\n });\n}\n\nfunction getPath(): string {\n return window.location.pathname;\n}\n\nfunction sendEvent(event: Record<string, unknown>): void {\n if (!config) return;\n \n const body = JSON.stringify(event);\n \n if (navigator.sendBeacon) {\n navigator.sendBeacon(config.endpoint, body);\n } else {\n fetch(config.endpoint, {\n method: \"POST\",\n body,\n keepalive: true,\n headers: { \"Content-Type\": \"application/json\" }\n }).catch(() => {});\n }\n \n if (config.debug) {\n console.log(\"[trackr]\", event);\n }\n}\n"],"mappings":";AAEA,IAAI,SAA8B;AAE3B,SAAS,KAAK,SAA6B;AAChD,WAAS;AACT,gBAAc;AAEd,MAAI,OAAO,WAAW,aAAa;AACjC,WAAO,iBAAiB,YAAY,aAAa;AAAA,EACnD;AACF;AAEO,SAAS,MAAM,MAAc,OAAyD;AAC3F,MAAI,CAAC,QAAQ;AACX,YAAQ,KAAK,8CAA8C;AAC3D;AAAA,EACF;AAEA,YAAU;AAAA,IACR,MAAM;AAAA,IACN;AAAA,IACA,KAAK,QAAQ;AAAA,IACb;AAAA,IACA,IAAI,KAAK,IAAI;AAAA,EACf,CAAC;AACH;AAEA,SAAS,gBAAsB;AAC7B,MAAI,CAAC,OAAQ;AAEb,YAAU;AAAA,IACR,MAAM;AAAA,IACN,KAAK,QAAQ;AAAA,IACb,UAAU,SAAS,WAAW,IAAI,IAAI,SAAS,QAAQ,EAAE,WAAW;AAAA,IACpE,IAAI,KAAK,IAAI;AAAA,EACf,CAAC;AACH;AAEA,SAAS,UAAkB;AACzB,SAAO,OAAO,SAAS;AACzB;AAEA,SAAS,UAAU,OAAsC;AACvD,MAAI,CAAC,OAAQ;AAEb,QAAM,OAAO,KAAK,UAAU,KAAK;AAEjC,MAAI,UAAU,YAAY;AACxB,cAAU,WAAW,OAAO,UAAU,IAAI;AAAA,EAC5C,OAAO;AACL,UAAM,OAAO,UAAU;AAAA,MACrB,QAAQ;AAAA,MACR;AAAA,MACA,WAAW;AAAA,MACX,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,IAChD,CAAC,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACnB;AAEA,MAAI,OAAO,OAAO;AAChB,YAAQ,IAAI,YAAY,KAAK;AAAA,EAC/B;AACF;","names":[]}
|