@ad-tracking-kits/core 0.1.0

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.
@@ -0,0 +1,7 @@
1
+ import type { Attribution } from "./types.js";
2
+ /**
3
+ * Records the landing URL as a touch when it carries UTM or click ids, and returns first/last touch.
4
+ * Called when the tracker is created, i.e. before a router can rewrite the URL.
5
+ */
6
+ export declare function captureAttribution(): Attribution | undefined;
7
+ //# sourceMappingURL=attribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../src/attribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,YAAY,CAAC;AAwBrD;;;GAGG;AAEH,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,SAAS,CAwB5D"}
@@ -0,0 +1,52 @@
1
+ const STORAGE_KEY = "ad-tracking-kits:attribution";
2
+ const UTM_KEYS = ["source", "medium", "campaign", "content", "term"];
3
+ // Naver search ads append NaPm; the others are standard click ids.
4
+ const CLICK_ID_KEYS = ["fbclid", "gclid", "gbraid", "wbraid", "ttclid", "NaPm"];
5
+ function read() {
6
+ try {
7
+ return JSON.parse(localStorage.getItem(STORAGE_KEY) ?? "{}");
8
+ }
9
+ catch {
10
+ return {};
11
+ }
12
+ }
13
+ function pick(params, keys, prefix = "") {
14
+ const out = {};
15
+ for (const key of keys) {
16
+ const value = params.get(prefix + key);
17
+ if (value)
18
+ out[key] = value;
19
+ }
20
+ return out;
21
+ }
22
+ /**
23
+ * Records the landing URL as a touch when it carries UTM or click ids, and returns first/last touch.
24
+ * Called when the tracker is created, i.e. before a router can rewrite the URL.
25
+ */
26
+ // ponytail: first touch never expires and referrer-only visits are not touches; add a TTL / referrer touch when reports need it.
27
+ export function captureAttribution() {
28
+ if (typeof window === "undefined" || !window.location)
29
+ return undefined;
30
+ const stored = read();
31
+ const params = new URLSearchParams(window.location.search);
32
+ const utm = pick(params, UTM_KEYS, "utm_");
33
+ const clickIds = pick(params, CLICK_ID_KEYS);
34
+ if (!Object.keys(utm).length && !Object.keys(clickIds).length)
35
+ return stored;
36
+ const touch = {
37
+ utm,
38
+ clickIds,
39
+ landingUrl: window.location.href,
40
+ ...(typeof document !== "undefined" && document.referrer ? { referrer: document.referrer } : {}),
41
+ at: Date.now(),
42
+ };
43
+ const attribution = { first: stored.first ?? touch, last: touch };
44
+ try {
45
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(attribution));
46
+ }
47
+ catch {
48
+ // Storage blocked (private mode, quota): keep it for this page only.
49
+ }
50
+ return attribution;
51
+ }
52
+ //# sourceMappingURL=attribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribution.js","sourceRoot":"","sources":["../src/attribution.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAG,8BAA8B,CAAC;AACnD,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACrE,mEAAmE;AACnE,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAEhF,SAAS,IAAI;IACX,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAgB,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,MAAuB,EAAE,IAAc,EAAE,MAAM,GAAG,EAAE;IAChE,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QACvC,IAAI,KAAK;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,iIAAiI;AACjI,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAExE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAE7E,MAAM,KAAK,GAAU;QACnB,GAAG;QACH,QAAQ;QACR,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;QAChC,GAAG,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;KACf,CAAC;IACF,MAAM,WAAW,GAAgB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAE/E,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;IACvE,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { PageViewEvent, ViewContentEvent, SearchEvent, ProductEvent, CheckoutEvent, PurchaseEvent, SignUpEvent, LeadEvent, StandardEventMap, Tracker, TrackerConfig, TrackOptions, TrackResult } from "./types.js";
2
+ export interface ConversionTracker extends Tracker<StandardEventMap> {
3
+ pageView(properties?: PageViewEvent, options?: TrackOptions): Promise<TrackResult<StandardEventMap>>;
4
+ viewContent(properties: ViewContentEvent, options?: TrackOptions): Promise<TrackResult<StandardEventMap>>;
5
+ search(properties: SearchEvent, options?: TrackOptions): Promise<TrackResult<StandardEventMap>>;
6
+ addToCart(properties: ProductEvent, options?: TrackOptions): Promise<TrackResult<StandardEventMap>>;
7
+ addToWishlist(properties: ProductEvent, options?: TrackOptions): Promise<TrackResult<StandardEventMap>>;
8
+ beginCheckout(properties: CheckoutEvent, options?: TrackOptions): Promise<TrackResult<StandardEventMap>>;
9
+ purchase(properties: PurchaseEvent, options?: TrackOptions): Promise<TrackResult<StandardEventMap>>;
10
+ signUp(properties: SignUpEvent, options?: TrackOptions): Promise<TrackResult<StandardEventMap>>;
11
+ lead(properties: LeadEvent, options?: TrackOptions): Promise<TrackResult<StandardEventMap>>;
12
+ }
13
+ export declare function createConversionTracker(config?: TrackerConfig<StandardEventMap>): ConversionTracker;
14
+ //# sourceMappingURL=conversion-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion-tracker.d.ts","sourceRoot":"","sources":["../src/conversion-tracker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,gBAAgB,CAAC;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACrG,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1G,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChG,SAAS,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACpG,aAAa,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACxG,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACzG,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACpG,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAC7F;AAED,wBAAgB,uBAAuB,CACrC,MAAM,GAAE,aAAa,CAAC,gBAAgB,CAAM,GAC3C,iBAAiB,CAuBnB"}
@@ -0,0 +1,16 @@
1
+ import { createTracker } from "./tracker.js";
2
+ export function createConversionTracker(config = {}) {
3
+ const tracker = createTracker(config);
4
+ return Object.assign(tracker, {
5
+ pageView: (properties = {}, options) => tracker.track("page_view", properties, options),
6
+ viewContent: (properties, options) => tracker.track("view_content", properties, options),
7
+ search: (properties, options) => tracker.track("search", properties, options),
8
+ addToCart: (properties, options) => tracker.track("add_to_cart", properties, options),
9
+ addToWishlist: (properties, options) => tracker.track("add_to_wishlist", properties, options),
10
+ beginCheckout: (properties, options) => tracker.track("begin_checkout", properties, options),
11
+ purchase: (properties, options) => tracker.track("purchase", properties, options),
12
+ signUp: (properties, options) => tracker.track("sign_up", properties, options),
13
+ lead: (properties, options) => tracker.track("lead", properties, options),
14
+ });
15
+ }
16
+ //# sourceMappingURL=conversion-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion-tracker.js","sourceRoot":"","sources":["../src/conversion-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AA6B7C,MAAM,UAAU,uBAAuB,CACrC,SAA0C,EAAE;IAE5C,MAAM,OAAO,GAAG,aAAa,CAAmB,MAAM,CAAC,CAAC;IAExD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QAC5B,QAAQ,EAAE,CAAC,aAA4B,EAAE,EAAE,OAAsB,EAAE,EAAE,CACnE,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC;QACjD,WAAW,EAAE,CAAC,UAA4B,EAAE,OAAsB,EAAE,EAAE,CACpE,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,EAAE,OAAO,CAAC;QACpD,MAAM,EAAE,CAAC,UAAuB,EAAE,OAAsB,EAAE,EAAE,CAC1D,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC;QAC9C,SAAS,EAAE,CAAC,UAAwB,EAAE,OAAsB,EAAE,EAAE,CAC9D,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC;QACnD,aAAa,EAAE,CAAC,UAAwB,EAAE,OAAsB,EAAE,EAAE,CAClE,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,OAAO,CAAC;QACvD,aAAa,EAAE,CAAC,UAAyB,EAAE,OAAsB,EAAE,EAAE,CACnE,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,UAAU,EAAE,OAAO,CAAC;QACtD,QAAQ,EAAE,CAAC,UAAyB,EAAE,OAAsB,EAAE,EAAE,CAC9D,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC;QAChD,MAAM,EAAE,CAAC,UAAuB,EAAE,OAAsB,EAAE,EAAE,CAC1D,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC;QAC/C,IAAI,EAAE,CAAC,UAAqB,EAAE,OAAsB,EAAE,EAAE,CACtD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC"}
package/dist/id.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function createEventId(): string;
2
+ //# sourceMappingURL=id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAKA,wBAAgB,aAAa,IAAI,MAAM,CAMtC"}
package/dist/id.js ADDED
@@ -0,0 +1,12 @@
1
+ function fallbackId() {
2
+ const random = Math.random().toString(36).slice(2);
3
+ return `evt_${Date.now().toString(36)}_${random}`;
4
+ }
5
+ export function createEventId() {
6
+ const cryptoObject = globalThis.crypto;
7
+ if (cryptoObject && typeof cryptoObject.randomUUID === "function") {
8
+ return cryptoObject.randomUUID();
9
+ }
10
+ return fallbackId();
11
+ }
12
+ //# sourceMappingURL=id.js.map
package/dist/id.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../src/id.ts"],"names":[],"mappings":"AAAA,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnD,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;IACvC,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAClE,OAAO,YAAY,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createTracker } from "./tracker.js";
2
+ export { createEventId } from "./id.js";
3
+ export { isStandardEvent } from "./standard.js";
4
+ export type { AdapterContext, AdapterTrackResult, Attribution, CheckoutEvent, ConversionItem, DeliveryResult, EventMap, Events, LeadEvent, PageContext, PageViewEvent, ProductEvent, PurchaseEvent, SearchEvent, SignUpEvent, StandardEventMap, StandardTrackingEvent, Touch, Tracker, TrackerConfig, TrackingAdapter, TrackingEvent, TrackOptions, TrackResult, ViewContentEvent, } from "./types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,cAAc,EACd,cAAc,EACd,QAAQ,EACR,MAAM,EACN,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,EACL,OAAO,EACP,aAAa,EACb,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { createTracker } from "./tracker.js";
2
+ export { createEventId } from "./id.js";
3
+ export { isStandardEvent } from "./standard.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
package/dist/page.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { PageContext } from "./types.js";
2
+ export declare function getPageContext(): PageContext | undefined;
3
+ //# sourceMappingURL=page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAcxD"}
package/dist/page.js ADDED
@@ -0,0 +1,14 @@
1
+ export function getPageContext() {
2
+ if (typeof window === "undefined" || typeof document === "undefined") {
3
+ return undefined;
4
+ }
5
+ const title = document.title;
6
+ const referrer = document.referrer;
7
+ return {
8
+ ...(window.location?.href ? { url: window.location.href } : {}),
9
+ path: `${window.location?.pathname ?? ""}${window.location?.search ?? ""}${window.location?.hash ?? ""}`,
10
+ ...(title ? { title } : {}),
11
+ ...(referrer ? { referrer } : {}),
12
+ };
13
+ }
14
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAEnC,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE;QACxG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { StandardTrackingEvent, TrackingEvent } from "./types.js";
2
+ export declare function isStandardEvent(event: TrackingEvent): event is StandardTrackingEvent;
3
+ //# sourceMappingURL=standard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../src/standard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,qBAAqB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAczF,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,IAAI,qBAAqB,CAEpF"}
@@ -0,0 +1,15 @@
1
+ const STANDARD_EVENT_NAMES = new Set([
2
+ "page_view",
3
+ "view_content",
4
+ "search",
5
+ "add_to_cart",
6
+ "add_to_wishlist",
7
+ "begin_checkout",
8
+ "purchase",
9
+ "sign_up",
10
+ "lead",
11
+ ]);
12
+ export function isStandardEvent(event) {
13
+ return STANDARD_EVENT_NAMES.has(event.name);
14
+ }
15
+ //# sourceMappingURL=standard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard.js","sourceRoot":"","sources":["../src/standard.ts"],"names":[],"mappings":"AAEA,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS;IAC3C,WAAW;IACX,cAAc;IACd,QAAQ;IACR,aAAa;IACb,iBAAiB;IACjB,gBAAgB;IAChB,UAAU;IACV,SAAS;IACT,MAAM;CAC8B,CAAC,CAAC;AAExC,MAAM,UAAU,eAAe,CAAC,KAAoB;IAClD,OAAO,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { EventMap, Tracker, TrackerConfig } from "./types.js";
2
+ export declare function createTracker<TCustom extends EventMap = {}>(config?: TrackerConfig): Tracker<TCustom>;
3
+ //# sourceMappingURL=tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,QAAQ,EACR,OAAO,EACP,aAAa,EAKd,MAAM,YAAY,CAAC;AAmBpB,wBAAgB,aAAa,CAAC,OAAO,SAAS,QAAQ,GAAG,EAAE,EAAE,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmFzG"}
@@ -0,0 +1,101 @@
1
+ import { captureAttribution } from "./attribution.js";
2
+ import { createEventId } from "./id.js";
3
+ import { getPageContext } from "./page.js";
4
+ const PREFIX = "[ad-tracking-kits]";
5
+ function shouldUseAdapter(adapter, options) {
6
+ if (options?.providers && !options.providers.includes(adapter.name))
7
+ return false;
8
+ if (options?.exclude?.includes(adapter.name))
9
+ return false;
10
+ return true;
11
+ }
12
+ function defaultEventId(name, properties) {
13
+ // A purchase is identified by its order, so a refresh or remount re-sends the same id
14
+ // and the ad platform (and later CAPI) deduplicates it.
15
+ if (name === "purchase" && "orderId" in properties && typeof properties.orderId === "string") {
16
+ return `purchase:${properties.orderId}`;
17
+ }
18
+ return createEventId();
19
+ }
20
+ export function createTracker(config = {}) {
21
+ const adapters = [...(config.adapters ?? [])];
22
+ const debug = config.debug ?? false;
23
+ const capturePageContext = config.capturePageContext ?? true;
24
+ const names = adapters.map((adapter) => adapter.name);
25
+ const duplicate = names.find((name, index) => names.indexOf(name) !== index);
26
+ if (duplicate) {
27
+ throw new Error(`${PREFIX} adapter "${duplicate}" is registered more than once; use one adapter per ad platform`);
28
+ }
29
+ // Captured now, before a router can strip UTM / click ids from the URL.
30
+ const attribution = config.captureAttribution === false ? undefined : captureAttribution();
31
+ let destroyed = false;
32
+ // Start immediately so pixels load on page load and read click ids from the landing URL.
33
+ const initPromise = Promise.all(adapters.map(async (adapter) => {
34
+ try {
35
+ await adapter.initialize?.({ debug });
36
+ }
37
+ catch (error) {
38
+ if (debug)
39
+ console.warn(`${PREFIX} ${adapter.name} initialize failed`, error);
40
+ }
41
+ })).then(() => undefined);
42
+ async function send(adapter, event, options) {
43
+ if (destroyed || !shouldUseAdapter(adapter, options)) {
44
+ return { provider: adapter.name, status: "skipped" };
45
+ }
46
+ try {
47
+ const result = await adapter.track(event);
48
+ if (result === false) {
49
+ if (debug)
50
+ console.debug(`${PREFIX} ${adapter.name} – ${event.name} (skipped)`);
51
+ return { provider: adapter.name, status: "skipped" };
52
+ }
53
+ if (debug)
54
+ console.debug(`${PREFIX} ${adapter.name} ✓ ${event.name}`, result?.payload);
55
+ return { provider: adapter.name, status: "sent", ...(result ? { payload: result.payload } : {}) };
56
+ }
57
+ catch (error) {
58
+ config.onError?.(error, adapter.name, event);
59
+ if (debug)
60
+ console.warn(`${PREFIX} ${adapter.name} ✕ ${event.name}`, error);
61
+ return { provider: adapter.name, status: "failed", error };
62
+ }
63
+ }
64
+ async function track(name, properties, options) {
65
+ const page = capturePageContext ? getPageContext() : undefined;
66
+ const event = {
67
+ id: options?.eventId ?? defaultEventId(name, properties),
68
+ name,
69
+ properties,
70
+ occurredAt: Date.now(),
71
+ ...(page ? { page } : {}),
72
+ ...(attribution ? { attribution } : {}),
73
+ };
74
+ if (debug)
75
+ console.debug(`${PREFIX} ${name}`, event);
76
+ await initPromise;
77
+ const deliveries = await Promise.all(adapters.map((adapter) => send(adapter, event, options)));
78
+ return { event, deliveries };
79
+ }
80
+ return {
81
+ adapters,
82
+ ready: () => initPromise,
83
+ track: track,
84
+ pageView: (properties = {}, options) => track("page_view", properties, options),
85
+ viewContent: (properties, options) => track("view_content", properties, options),
86
+ search: (properties, options) => track("search", properties, options),
87
+ addToCart: (properties, options) => track("add_to_cart", properties, options),
88
+ addToWishlist: (properties, options) => track("add_to_wishlist", properties, options),
89
+ beginCheckout: (properties, options) => track("begin_checkout", properties, options),
90
+ purchase: (properties, options) => track("purchase", properties, options),
91
+ signUp: (properties, options) => track("sign_up", properties, options),
92
+ lead: (properties, options) => track("lead", properties, options),
93
+ async destroy() {
94
+ if (destroyed)
95
+ return;
96
+ destroyed = true;
97
+ await Promise.all(adapters.map((adapter) => adapter.destroy?.()));
98
+ },
99
+ };
100
+ }
101
+ //# sourceMappingURL=tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ export type EventMap = object;
2
+ export interface ConversionItem {
3
+ id: string;
4
+ name?: string;
5
+ category?: string;
6
+ price?: number;
7
+ quantity?: number;
8
+ option?: string;
9
+ }
10
+ export interface PageViewEvent {
11
+ path?: string;
12
+ title?: string;
13
+ }
14
+ export interface ViewContentEvent {
15
+ id?: string;
16
+ name?: string;
17
+ category?: string;
18
+ value?: number;
19
+ currency?: string;
20
+ items?: ConversionItem[];
21
+ }
22
+ export interface SearchEvent {
23
+ query: string;
24
+ }
25
+ export interface ProductEvent {
26
+ value?: number;
27
+ currency?: string;
28
+ items: ConversionItem[];
29
+ }
30
+ export interface CheckoutEvent extends ProductEvent {
31
+ coupon?: string;
32
+ }
33
+ export interface PurchaseEvent extends ProductEvent {
34
+ orderId: string;
35
+ value: number;
36
+ }
37
+ export interface SignUpEvent {
38
+ method?: string;
39
+ value?: number;
40
+ currency?: string;
41
+ }
42
+ export interface LeadEvent {
43
+ type?: string;
44
+ value?: number;
45
+ currency?: string;
46
+ }
47
+ export interface StandardEventMap {
48
+ page_view: PageViewEvent;
49
+ view_content: ViewContentEvent;
50
+ search: SearchEvent;
51
+ add_to_cart: ProductEvent;
52
+ add_to_wishlist: ProductEvent;
53
+ begin_checkout: CheckoutEvent;
54
+ purchase: PurchaseEvent;
55
+ sign_up: SignUpEvent;
56
+ lead: LeadEvent;
57
+ }
58
+ /** Standard events plus the app's own custom events. */
59
+ export type Events<TCustom extends EventMap = {}> = StandardEventMap & TCustom;
60
+ export interface PageContext {
61
+ url?: string;
62
+ path?: string;
63
+ title?: string;
64
+ referrer?: string;
65
+ }
66
+ export interface Touch {
67
+ /** utm_source, utm_medium, ... without the `utm_` prefix. */
68
+ utm: Record<string, string>;
69
+ /** Ad click ids found on the landing URL (fbclid, gclid, ttclid, NaPm, ...). */
70
+ clickIds: Record<string, string>;
71
+ landingUrl: string;
72
+ referrer?: string;
73
+ at: number;
74
+ }
75
+ export interface Attribution {
76
+ first?: Touch;
77
+ last?: Touch;
78
+ }
79
+ interface EventBase {
80
+ id: string;
81
+ occurredAt: number;
82
+ page?: PageContext;
83
+ attribution?: Attribution;
84
+ }
85
+ /** What adapters receive. Use `isStandardEvent` to narrow to typed standard events. */
86
+ export interface TrackingEvent extends EventBase {
87
+ name: string;
88
+ properties: object;
89
+ }
90
+ export type StandardTrackingEvent = {
91
+ [TName in keyof StandardEventMap]: EventBase & {
92
+ name: TName;
93
+ properties: StandardEventMap[TName];
94
+ };
95
+ }[keyof StandardEventMap];
96
+ export interface AdapterContext {
97
+ debug: boolean;
98
+ }
99
+ /**
100
+ * `false`: the adapter intentionally ignored the event (reported as "skipped").
101
+ * `{ payload }`: what was sent to the ad platform (shown in debug logs).
102
+ * Throw when the event could not be sent (reported as "failed").
103
+ */
104
+ export type AdapterTrackResult = void | false | {
105
+ payload: unknown;
106
+ };
107
+ export interface TrackingAdapter {
108
+ readonly name: string;
109
+ initialize?(context: AdapterContext): void | Promise<void>;
110
+ track(event: TrackingEvent): AdapterTrackResult | Promise<AdapterTrackResult>;
111
+ destroy?(): void | Promise<void>;
112
+ }
113
+ export interface TrackOptions {
114
+ /** Stable event id used by ad platforms for browser/server deduplication. Defaults to `purchase:<orderId>` for purchases. */
115
+ eventId?: string;
116
+ /** Send only to these adapter names. */
117
+ providers?: readonly string[];
118
+ /** Skip these adapter names. */
119
+ exclude?: readonly string[];
120
+ }
121
+ export interface DeliveryResult {
122
+ provider: string;
123
+ status: "sent" | "skipped" | "failed";
124
+ payload?: unknown;
125
+ error?: unknown;
126
+ }
127
+ export interface TrackResult {
128
+ event: TrackingEvent;
129
+ deliveries: DeliveryResult[];
130
+ }
131
+ export interface TrackerConfig {
132
+ /** One adapter per ad platform; names must be unique. */
133
+ adapters?: readonly TrackingAdapter[];
134
+ debug?: boolean;
135
+ capturePageContext?: boolean;
136
+ /** Store UTM/click ids from landing URLs in localStorage and attach first/last touch to events. */
137
+ captureAttribution?: boolean;
138
+ onError?: (error: unknown, provider: string, event: TrackingEvent) => void;
139
+ }
140
+ type Track<TEvents> = <TName extends keyof TEvents & string>(name: TName, properties: TEvents[TName], options?: TrackOptions) => Promise<TrackResult>;
141
+ export interface Tracker<TCustom extends EventMap = {}> {
142
+ readonly adapters: readonly TrackingAdapter[];
143
+ /** Resolves when every adapter finished initializing (initialization starts on creation). */
144
+ ready(): Promise<void>;
145
+ track: Track<Events<TCustom>>;
146
+ pageView(properties?: PageViewEvent, options?: TrackOptions): Promise<TrackResult>;
147
+ viewContent(properties: ViewContentEvent, options?: TrackOptions): Promise<TrackResult>;
148
+ search(properties: SearchEvent, options?: TrackOptions): Promise<TrackResult>;
149
+ addToCart(properties: ProductEvent, options?: TrackOptions): Promise<TrackResult>;
150
+ addToWishlist(properties: ProductEvent, options?: TrackOptions): Promise<TrackResult>;
151
+ beginCheckout(properties: CheckoutEvent, options?: TrackOptions): Promise<TrackResult>;
152
+ purchase(properties: PurchaseEvent, options?: TrackOptions): Promise<TrackResult>;
153
+ signUp(properties: SignUpEvent, options?: TrackOptions): Promise<TrackResult>;
154
+ lead(properties: LeadEvent, options?: TrackOptions): Promise<TrackResult>;
155
+ destroy(): Promise<void>;
156
+ }
157
+ export {};
158
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@ad-tracking-kits/core",
3
+ "version": "0.1.0",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "git+https://github.com/banggae2/ad-tracking-kits.git",
7
+ "directory": "packages/core"
8
+ },
9
+ "type": "module",
10
+ "sideEffects": false,
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "scripts": {
24
+ "build": "tsc -p tsconfig.json"
25
+ }
26
+ }