@schibsted/sps-sdk 4.4.0-CBT-19590.4 → 4.4.0-alpha.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.
- package/dist/cjs/actions/dismiss.js +14 -67
- package/dist/cjs/actions/dismiss.js.map +1 -1
- package/dist/cjs/apiClient.d.ts +1 -1
- package/dist/cjs/apiClient.js +1 -9
- package/dist/cjs/apiClient.js.map +1 -1
- package/dist/cjs/sps.d.ts +0 -5
- package/dist/cjs/sps.js +4 -4
- package/dist/cjs/sps.js.map +1 -1
- package/dist/cjs/utils/placementCookies.d.ts +5 -0
- package/dist/cjs/utils/placementCookies.js +40 -0
- package/dist/cjs/utils/placementCookies.js.map +1 -0
- package/dist/esm/actions/dismiss.js +14 -67
- package/dist/esm/actions/dismiss.js.map +1 -1
- package/dist/esm/apiClient.d.ts +1 -1
- package/dist/esm/apiClient.js +1 -9
- package/dist/esm/apiClient.js.map +1 -1
- package/dist/esm/sps.d.ts +0 -5
- package/dist/esm/sps.js +4 -4
- package/dist/esm/sps.js.map +1 -1
- package/dist/esm/utils/placementCookies.d.ts +5 -0
- package/dist/esm/utils/placementCookies.js +32 -0
- package/dist/esm/utils/placementCookies.js.map +1 -0
- package/dist/public-scripts/sps-pulse-helpers.v2.2.0.min.js +1 -1
- package/package.json +1 -1
|
@@ -1,34 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getDismissScript = exports.addDismiss = exports.isDismissed = void 0;
|
|
4
|
+
const placementCookies_1 = require("../utils/placementCookies.js");
|
|
4
5
|
const DISMISS_KEY = "sps-dismiss-click";
|
|
6
|
+
const dismissListenerKeys = new Set();
|
|
5
7
|
const isDismissed = (placementType, iframeId) => {
|
|
6
|
-
|
|
7
|
-
const viewLimitKey = `sps-view-limit-${placementType}-${iframeId}`;
|
|
8
|
-
const item = localStorage.getItem(dismissKey);
|
|
9
|
-
if (!item) {
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
try {
|
|
13
|
-
const data = JSON.parse(item);
|
|
14
|
-
if (data.status === "dismissed" && data.ttl > Date.now()) {
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
localStorage.removeItem(dismissKey);
|
|
19
|
-
localStorage.removeItem(viewLimitKey);
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
catch (e) {
|
|
24
|
-
console.error("Error parsing dismiss data from localStorage", e);
|
|
25
|
-
localStorage.removeItem(dismissKey);
|
|
26
|
-
localStorage.removeItem(viewLimitKey);
|
|
8
|
+
if (typeof document === "undefined") {
|
|
27
9
|
return false;
|
|
28
10
|
}
|
|
11
|
+
const cookieName = (0, placementCookies_1.getDismissCookieName)(placementType, iframeId);
|
|
12
|
+
return cookieName in (0, placementCookies_1.parseCookies)(document.cookie);
|
|
29
13
|
};
|
|
30
14
|
exports.isDismissed = isDismissed;
|
|
31
|
-
const dismissListenerKeys = new Set();
|
|
32
15
|
const addDismiss = (placementType, iframeId, hideDuration, viewLimit) => {
|
|
33
16
|
const key = `${placementType}:${iframeId}`;
|
|
34
17
|
if (dismissListenerKeys.has(key)) {
|
|
@@ -36,42 +19,14 @@ const addDismiss = (placementType, iframeId, hideDuration, viewLimit) => {
|
|
|
36
19
|
}
|
|
37
20
|
dismissListenerKeys.add(key);
|
|
38
21
|
if (viewLimit) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
status: "dismissed",
|
|
48
|
-
};
|
|
49
|
-
localStorage.setItem(`sps-dismissed-${placementType}-${iframeId}`, JSON.stringify(data));
|
|
50
|
-
document.getElementById(iframeId)?.remove();
|
|
51
|
-
}
|
|
52
|
-
else if (existingData.lastUpdated) {
|
|
53
|
-
const increment = existingData.limitCount + 1;
|
|
54
|
-
const now = Date.now();
|
|
55
|
-
if (now - existingData.lastUpdated >= 500) {
|
|
56
|
-
localStorage.setItem(`sps-view-limit-${placementType}-${iframeId}`, JSON.stringify({
|
|
57
|
-
viewLimit,
|
|
58
|
-
limitCount: increment,
|
|
59
|
-
lastUpdated: now,
|
|
60
|
-
}));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
catch (e) {
|
|
65
|
-
console.error(`[SPS sdk] - Problems setting view limit ${e}`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
const viewLimitData = {
|
|
70
|
-
viewLimit,
|
|
71
|
-
limitCount: 1,
|
|
72
|
-
lastUpdated: Date.now(),
|
|
73
|
-
};
|
|
74
|
-
localStorage.setItem(`sps-view-limit-${placementType}-${iframeId}`, JSON.stringify(viewLimitData));
|
|
22
|
+
(0, placementCookies_1.incrementViewCount)(placementType, iframeId);
|
|
23
|
+
const cookies = (0, placementCookies_1.parseCookies)(document.cookie);
|
|
24
|
+
const count = parseInt(cookies[(0, placementCookies_1.getViewCountCookieName)(placementType, iframeId)] ?? "0", 10);
|
|
25
|
+
if (!isNaN(count) && count >= viewLimit) {
|
|
26
|
+
console.log("[SPS sdk] - Dismiss issued by view limit");
|
|
27
|
+
(0, placementCookies_1.setDismissCookie)(placementType, hideDuration, iframeId);
|
|
28
|
+
document.getElementById(iframeId)?.remove();
|
|
29
|
+
return;
|
|
75
30
|
}
|
|
76
31
|
}
|
|
77
32
|
window.addEventListener("message", function (event) {
|
|
@@ -80,20 +35,12 @@ const addDismiss = (placementType, iframeId, hideDuration, viewLimit) => {
|
|
|
80
35
|
}
|
|
81
36
|
if (event.data.type === `${DISMISS_KEY}:${placementType}`) {
|
|
82
37
|
console.log("[SPS sdk] - Dismiss issued by user", event);
|
|
83
|
-
|
|
84
|
-
ttl: calculateTtl(hideDuration),
|
|
85
|
-
status: "dismissed",
|
|
86
|
-
};
|
|
87
|
-
localStorage.setItem(`sps-dismissed-${placementType}-${iframeId}`, JSON.stringify(data));
|
|
38
|
+
(0, placementCookies_1.setDismissCookie)(placementType, hideDuration, iframeId);
|
|
88
39
|
document.getElementById(iframeId)?.remove();
|
|
89
40
|
}
|
|
90
41
|
});
|
|
91
42
|
};
|
|
92
43
|
exports.addDismiss = addDismiss;
|
|
93
|
-
const calculateTtl = (hideDuration) => {
|
|
94
|
-
const now = Date.now();
|
|
95
|
-
return now + hideDuration;
|
|
96
|
-
};
|
|
97
44
|
const getDismissScript = (placementType) => `
|
|
98
45
|
document.addEventListener("click", function (event) {
|
|
99
46
|
let el = event.target;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../../src/actions/dismiss.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../../src/actions/dismiss.ts"],"names":[],"mappings":";;;AACA,gEAMmC;AAEnC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;AAEvC,MAAM,WAAW,GAAG,CAAC,aAA4B,EAAE,QAAgB,EAAW,EAAE;IACrF,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,IAAA,uCAAoB,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACjE,OAAO,UAAU,IAAI,IAAA,+BAAY,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB;AAEK,MAAM,UAAU,GAAG,CACxB,aAA4B,EAC5B,QAAgB,EAChB,YAAoB,EACpB,SAAwB,EAClB,EAAE;IACR,MAAM,GAAG,GAAG,GAAG,aAAa,IAAI,QAAQ,EAAE,CAAC;IAE3C,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IACD,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE7B,IAAI,SAAS,EAAE,CAAC;QACd,IAAA,qCAAkB,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAA,+BAAY,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAA,yCAAsB,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,IAAA,mCAAgB,EAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YACxD,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,KAAK;QAChD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,WAAW,IAAI,aAAa,EAAE,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YACzD,IAAA,mCAAgB,EAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YACxD,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AApCW,QAAA,UAAU,cAoCrB;AAEK,MAAM,gBAAgB,GAAG,CAAC,aAA6C,EAAU,EAAE,CACxF;;;;;;;;;qBASmB,WAAW,IAAI,aAAa;;;;;;GAM9C,CAAC;AAhBS,QAAA,gBAAgB,oBAgBzB"}
|
package/dist/cjs/apiClient.d.ts
CHANGED
|
@@ -82,7 +82,7 @@ export type GetPosterByDecisionParams = {
|
|
|
82
82
|
* @param showFallbackPosterOnNoContent - When `true`, returns the fallback poster even on empty content responses.
|
|
83
83
|
* @returns The poster response wrapped in a fail-reason envelope, or `null` when no content is available. {@link SPSPosterResponseWithFailReason<T extends PlacementType>}
|
|
84
84
|
*/
|
|
85
|
-
export declare const fetchPoster: <T extends PlacementType, U extends SpsParams>(url: string, params: U, fallbackPoster?: SPSPosterResponse<T>, showFallbackPosterOnNoContent?: boolean
|
|
85
|
+
export declare const fetchPoster: <T extends PlacementType, U extends SpsParams>(url: string, params: U, fallbackPoster?: SPSPosterResponse<T>, showFallbackPosterOnNoContent?: boolean) => Promise<SPSPosterResponseWithFailReason<T> | null>;
|
|
86
86
|
/**
|
|
87
87
|
* Fetches a decision from the SPS API.
|
|
88
88
|
* Intended to be called from a server environment where a user JWT token is available.
|
package/dist/cjs/apiClient.js
CHANGED
|
@@ -16,17 +16,15 @@ const url_1 = require("./utils/url.js");
|
|
|
16
16
|
* @param showFallbackPosterOnNoContent - When `true`, returns the fallback poster even on empty content responses.
|
|
17
17
|
* @returns The poster response wrapped in a fail-reason envelope, or `null` when no content is available. {@link SPSPosterResponseWithFailReason<T extends PlacementType>}
|
|
18
18
|
*/
|
|
19
|
-
const fetchPoster = async (url, params, fallbackPoster, showFallbackPosterOnNoContent = false
|
|
19
|
+
const fetchPoster = async (url, params, fallbackPoster, showFallbackPosterOnNoContent = false) => {
|
|
20
20
|
try {
|
|
21
21
|
const paramsFromDocument = (0, queryBuilder_1.getParamsFromDocument)();
|
|
22
22
|
const queryParams = (0, queryBuilder_1.convertParamsToQueryParams)({
|
|
23
23
|
...paramsFromDocument,
|
|
24
24
|
...params,
|
|
25
25
|
});
|
|
26
|
-
const signal = timeoutMs !== undefined ? AbortSignal.timeout(timeoutMs) : undefined;
|
|
27
26
|
const posterResponse = await fetch((0, url_1.addSearchParams)(url, queryParams), {
|
|
28
27
|
credentials: "include",
|
|
29
|
-
signal,
|
|
30
28
|
});
|
|
31
29
|
if (!posterResponse.ok) {
|
|
32
30
|
if (posterResponse.status === 404) {
|
|
@@ -55,12 +53,6 @@ const fetchPoster = async (url, params, fallbackPoster, showFallbackPosterOnNoCo
|
|
|
55
53
|
};
|
|
56
54
|
}
|
|
57
55
|
catch (error) {
|
|
58
|
-
if (error?.name === "TimeoutError") {
|
|
59
|
-
if (fallbackPoster) {
|
|
60
|
-
return { posterResponse: fallbackPoster };
|
|
61
|
-
}
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
56
|
if (fallbackPoster) {
|
|
65
57
|
console.error(error);
|
|
66
58
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/apiClient.ts"],"names":[],"mappings":";;;AAAA,qDAK4B;AAC5B,qCAA8C;AA4E9C;;;;;;;;;;;;GAYG;AACI,MAAM,WAAW,GAAG,KAAK,EAC9B,GAAW,EACX,MAAS,EACT,cAAqC,EACrC,6BAA6B,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/apiClient.ts"],"names":[],"mappings":";;;AAAA,qDAK4B;AAC5B,qCAA8C;AA4E9C;;;;;;;;;;;;GAYG;AACI,MAAM,WAAW,GAAG,KAAK,EAC9B,GAAW,EACX,MAAS,EACT,cAAqC,EACrC,6BAA6B,GAAG,KAAK,EACe,EAAE;IACtD,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,IAAA,oCAAqB,GAAE,CAAC;QACnD,MAAM,WAAW,GAAG,IAAA,yCAA0B,EAAC;YAC7C,GAAG,kBAAkB;YACrB,GAAG,MAAM;SACV,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,IAAA,qBAAe,EAAC,GAAG,EAAE,WAAW,CAAC,EAAE;YACpE,WAAW,EAAE,SAAS;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACvB,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAClC,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO;wBACL,cAAc,EAAE,cAAc;wBAC9B,UAAU,EAAE,gEAAgE;qBAC7E,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CACb,mCAAmC,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,CACxF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAgD,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAEhG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,cAAc,IAAI,6BAA6B,EAAE,CAAC;gBACpD,OAAO;oBACL,cAAc,EAAE,cAAc;oBAC9B,UAAU,EAAE,8DAA8D;iBAC3E,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,cAAc,EAAE,cAAsC;SACvD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;gBACL,cAAc,EAAE,cAAc;gBAC9B,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACnE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAxDW,QAAA,WAAW,eAwDtB;AAEF;;;;;;;;;;;GAWG;AACI,MAAM,aAAa,GAAG,KAAK,EAChC,GAAW,EACX,MAAS,EACT,YAAqB,EACrB,MAAe,EACqB,EAAE;IACtC,MAAM,WAAW,GAAG,IAAA,yCAA0B,EAAC;QAC7C,GAAG,MAAM;KACV,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,IAAA,qBAAe,EAAC,GAAG,EAAE,WAAW,CAAC,EAAE;QACtE,OAAO,EAAE;YACP,YAAY,EAAE,YAAY,IAAI,EAAE;YAChC,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;SAClC;QACD,WAAW,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,qCAAqC,gBAAgB,CAAC,MAAM,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAC9F,CAAC;IACJ,CAAC;IAED,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC,CAAC;AAxBW,QAAA,aAAa,iBAwBxB"}
|
package/dist/cjs/sps.d.ts
CHANGED
|
@@ -81,11 +81,6 @@ export type SpsRequestOptions<T extends PlacementType> = {
|
|
|
81
81
|
/** Fire legacy UI element events (`trackLegacyViewUIElement` / `trackLegacyClickUIElement`). @defaultValue false */
|
|
82
82
|
legacy?: boolean;
|
|
83
83
|
};
|
|
84
|
-
/**
|
|
85
|
-
* Maximum milliseconds to wait for the API before aborting the request.
|
|
86
|
-
* When a `fallbackPoster` is present it is returned on timeout; otherwise the placement renders no content.
|
|
87
|
-
*/
|
|
88
|
-
timeoutMs?: number;
|
|
89
84
|
};
|
|
90
85
|
/**
|
|
91
86
|
* Variant of {@link SpsRequestOptions} that requires a `fallbackPoster` and forces
|
package/dist/cjs/sps.js
CHANGED
|
@@ -56,7 +56,7 @@ class SPS {
|
|
|
56
56
|
if (dismissOptions && (0, dismiss_1.isDismissed)(placementType, dismissOptions.elementId)) {
|
|
57
57
|
return null;
|
|
58
58
|
}
|
|
59
|
-
const poster = await (0, apiClient_1.fetchPoster)(`${this.endpoint}/${this.publication}/${placementType}`, props.params || {}, props.fallbackPoster
|
|
59
|
+
const poster = await (0, apiClient_1.fetchPoster)(`${this.endpoint}/${this.publication}/${placementType}`, props.params || {}, props.fallbackPoster);
|
|
60
60
|
if (!poster) {
|
|
61
61
|
return null;
|
|
62
62
|
}
|
|
@@ -104,7 +104,7 @@ class SPS {
|
|
|
104
104
|
});
|
|
105
105
|
}
|
|
106
106
|
if (dismissOptions) {
|
|
107
|
-
(0, dismiss_1.addDismiss)(placementType, dismissOptions.elementId, posterResponse.hideDuration ||
|
|
107
|
+
(0, dismiss_1.addDismiss)(placementType, dismissOptions.elementId, posterResponse.hideDuration || 86400000, posterResponse.viewLimit || null); // Default 1 day.
|
|
108
108
|
}
|
|
109
109
|
return {
|
|
110
110
|
...posterResponse,
|
|
@@ -172,7 +172,7 @@ class SPS {
|
|
|
172
172
|
if (dismissOptions && (0, dismiss_1.isDismissed)(placementType, dismissOptions.elementId)) {
|
|
173
173
|
return null;
|
|
174
174
|
}
|
|
175
|
-
const poster = await (0, apiClient_1.fetchPoster)(`${this.endpoint}/poster/${encodeURIComponent(contentKey)}`, {}, props.fallbackPoster
|
|
175
|
+
const poster = await (0, apiClient_1.fetchPoster)(`${this.endpoint}/poster/${encodeURIComponent(contentKey)}`, {}, props.fallbackPoster);
|
|
176
176
|
if (!poster) {
|
|
177
177
|
return null;
|
|
178
178
|
}
|
|
@@ -213,7 +213,7 @@ class SPS {
|
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
215
|
if (dismissOptions) {
|
|
216
|
-
(0, dismiss_1.addDismiss)(placementType, dismissOptions.elementId, poster.posterResponse.hideDuration ||
|
|
216
|
+
(0, dismiss_1.addDismiss)(placementType, dismissOptions.elementId, poster.posterResponse.hideDuration || 86400000, // Default 1 day
|
|
217
217
|
poster.posterResponse.viewLimit || null);
|
|
218
218
|
}
|
|
219
219
|
return {
|
package/dist/cjs/sps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sps.js","sourceRoot":"","sources":["../../src/sps.ts"],"names":[],"mappings":";;;AAAA,wBASW;AACX,8EAK2C;AAC3C,uFAG6C;AAE7C,2CAAiF;AAOjF,+CAA4D;
|
|
1
|
+
{"version":3,"file":"sps.js","sourceRoot":"","sources":["../../src/sps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const getDismissCookieName: (type: string, elementId: string) => string;
|
|
2
|
+
export declare const getViewCountCookieName: (type: string, elementId: string) => string;
|
|
3
|
+
export declare const parseCookies: (cookieString: string) => Record<string, string>;
|
|
4
|
+
export declare const incrementViewCount: (type: string, elementId: string) => void;
|
|
5
|
+
export declare const setDismissCookie: (type: string, hideDuration: number, elementId: string) => void;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setDismissCookie = exports.incrementViewCount = exports.parseCookies = exports.getViewCountCookieName = exports.getDismissCookieName = void 0;
|
|
4
|
+
const DISMISS_PREFIX = "sps-dismiss-";
|
|
5
|
+
const VIEW_COUNT_PREFIX = "sps-view-count-";
|
|
6
|
+
const getDismissCookieName = (type, elementId) => `${DISMISS_PREFIX}${type}-${elementId}`;
|
|
7
|
+
exports.getDismissCookieName = getDismissCookieName;
|
|
8
|
+
const getViewCountCookieName = (type, elementId) => `${VIEW_COUNT_PREFIX}${type}-${elementId}`;
|
|
9
|
+
exports.getViewCountCookieName = getViewCountCookieName;
|
|
10
|
+
const parseCookies = (cookieString) => {
|
|
11
|
+
if (!cookieString) {
|
|
12
|
+
return {};
|
|
13
|
+
}
|
|
14
|
+
return Object.fromEntries(cookieString.split(";").map((pair) => {
|
|
15
|
+
const [key = "", ...rest] = pair.trim().split("=");
|
|
16
|
+
return [key.trim(), rest.join("=").trim()];
|
|
17
|
+
}));
|
|
18
|
+
};
|
|
19
|
+
exports.parseCookies = parseCookies;
|
|
20
|
+
const incrementViewCount = (type, elementId) => {
|
|
21
|
+
if (typeof document === "undefined") {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const key = (0, exports.getViewCountCookieName)(type, elementId);
|
|
25
|
+
const cookies = (0, exports.parseCookies)(document.cookie);
|
|
26
|
+
const current = parseInt(cookies[key] ?? "0", 10);
|
|
27
|
+
const next = isNaN(current) ? 1 : current + 1;
|
|
28
|
+
document.cookie = `${key}=${next}; Path=/; SameSite=Lax`;
|
|
29
|
+
};
|
|
30
|
+
exports.incrementViewCount = incrementViewCount;
|
|
31
|
+
const setDismissCookie = (type, hideDuration, elementId) => {
|
|
32
|
+
if (typeof document === "undefined") {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const maxAge = Math.floor(hideDuration / 1000);
|
|
36
|
+
document.cookie = `${(0, exports.getDismissCookieName)(type, elementId)}=1; Max-Age=${maxAge}; Path=/; SameSite=Lax`;
|
|
37
|
+
document.cookie = `${(0, exports.getViewCountCookieName)(type, elementId)}=0; Path=/; SameSite=Lax`;
|
|
38
|
+
};
|
|
39
|
+
exports.setDismissCookie = setDismissCookie;
|
|
40
|
+
//# sourceMappingURL=placementCookies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placementCookies.js","sourceRoot":"","sources":["../../../src/utils/placementCookies.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,cAAc,CAAC;AACtC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAErC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAU,EAAE,CAC9E,GAAG,cAAc,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;AAD7B,QAAA,oBAAoB,wBACS;AAEnC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAU,EAAE,CAChF,GAAG,iBAAiB,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;AADhC,QAAA,sBAAsB,0BACU;AAEtC,MAAM,YAAY,GAAG,CAAC,YAAoB,EAA0B,EAAE;IAC3E,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,YAAY,gBAUvB;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAQ,EAAE;IAC1E,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,8BAAsB,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,wBAAwB,CAAC;AAC3D,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B;AAEK,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,YAAoB,EAAE,SAAiB,EAAQ,EAAE;IAC9F,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAA,4BAAoB,EAAC,IAAI,EAAE,SAAS,CAAC,eAAe,MAAM,wBAAwB,CAAC;IACxG,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAA,8BAAsB,EAAC,IAAI,EAAE,SAAS,CAAC,0BAA0B,CAAC;AACzF,CAAC,CAAC;AAPW,QAAA,gBAAgB,oBAO3B"}
|
|
@@ -1,30 +1,13 @@
|
|
|
1
|
+
import { setDismissCookie, incrementViewCount, getDismissCookieName, getViewCountCookieName, parseCookies, } from "../utils/placementCookies.js";
|
|
1
2
|
const DISMISS_KEY = "sps-dismiss-click";
|
|
3
|
+
const dismissListenerKeys = new Set();
|
|
2
4
|
export const isDismissed = (placementType, iframeId) => {
|
|
3
|
-
|
|
4
|
-
const viewLimitKey = `sps-view-limit-${placementType}-${iframeId}`;
|
|
5
|
-
const item = localStorage.getItem(dismissKey);
|
|
6
|
-
if (!item) {
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
9
|
-
try {
|
|
10
|
-
const data = JSON.parse(item);
|
|
11
|
-
if (data.status === "dismissed" && data.ttl > Date.now()) {
|
|
12
|
-
return true;
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
localStorage.removeItem(dismissKey);
|
|
16
|
-
localStorage.removeItem(viewLimitKey);
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
catch (e) {
|
|
21
|
-
console.error("Error parsing dismiss data from localStorage", e);
|
|
22
|
-
localStorage.removeItem(dismissKey);
|
|
23
|
-
localStorage.removeItem(viewLimitKey);
|
|
5
|
+
if (typeof document === "undefined") {
|
|
24
6
|
return false;
|
|
25
7
|
}
|
|
8
|
+
const cookieName = getDismissCookieName(placementType, iframeId);
|
|
9
|
+
return cookieName in parseCookies(document.cookie);
|
|
26
10
|
};
|
|
27
|
-
const dismissListenerKeys = new Set();
|
|
28
11
|
export const addDismiss = (placementType, iframeId, hideDuration, viewLimit) => {
|
|
29
12
|
const key = `${placementType}:${iframeId}`;
|
|
30
13
|
if (dismissListenerKeys.has(key)) {
|
|
@@ -32,42 +15,14 @@ export const addDismiss = (placementType, iframeId, hideDuration, viewLimit) =>
|
|
|
32
15
|
}
|
|
33
16
|
dismissListenerKeys.add(key);
|
|
34
17
|
if (viewLimit) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
status: "dismissed",
|
|
44
|
-
};
|
|
45
|
-
localStorage.setItem(`sps-dismissed-${placementType}-${iframeId}`, JSON.stringify(data));
|
|
46
|
-
document.getElementById(iframeId)?.remove();
|
|
47
|
-
}
|
|
48
|
-
else if (existingData.lastUpdated) {
|
|
49
|
-
const increment = existingData.limitCount + 1;
|
|
50
|
-
const now = Date.now();
|
|
51
|
-
if (now - existingData.lastUpdated >= 500) {
|
|
52
|
-
localStorage.setItem(`sps-view-limit-${placementType}-${iframeId}`, JSON.stringify({
|
|
53
|
-
viewLimit,
|
|
54
|
-
limitCount: increment,
|
|
55
|
-
lastUpdated: now,
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
catch (e) {
|
|
61
|
-
console.error(`[SPS sdk] - Problems setting view limit ${e}`);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const viewLimitData = {
|
|
66
|
-
viewLimit,
|
|
67
|
-
limitCount: 1,
|
|
68
|
-
lastUpdated: Date.now(),
|
|
69
|
-
};
|
|
70
|
-
localStorage.setItem(`sps-view-limit-${placementType}-${iframeId}`, JSON.stringify(viewLimitData));
|
|
18
|
+
incrementViewCount(placementType, iframeId);
|
|
19
|
+
const cookies = parseCookies(document.cookie);
|
|
20
|
+
const count = parseInt(cookies[getViewCountCookieName(placementType, iframeId)] ?? "0", 10);
|
|
21
|
+
if (!isNaN(count) && count >= viewLimit) {
|
|
22
|
+
console.log("[SPS sdk] - Dismiss issued by view limit");
|
|
23
|
+
setDismissCookie(placementType, hideDuration, iframeId);
|
|
24
|
+
document.getElementById(iframeId)?.remove();
|
|
25
|
+
return;
|
|
71
26
|
}
|
|
72
27
|
}
|
|
73
28
|
window.addEventListener("message", function (event) {
|
|
@@ -76,19 +31,11 @@ export const addDismiss = (placementType, iframeId, hideDuration, viewLimit) =>
|
|
|
76
31
|
}
|
|
77
32
|
if (event.data.type === `${DISMISS_KEY}:${placementType}`) {
|
|
78
33
|
console.log("[SPS sdk] - Dismiss issued by user", event);
|
|
79
|
-
|
|
80
|
-
ttl: calculateTtl(hideDuration),
|
|
81
|
-
status: "dismissed",
|
|
82
|
-
};
|
|
83
|
-
localStorage.setItem(`sps-dismissed-${placementType}-${iframeId}`, JSON.stringify(data));
|
|
34
|
+
setDismissCookie(placementType, hideDuration, iframeId);
|
|
84
35
|
document.getElementById(iframeId)?.remove();
|
|
85
36
|
}
|
|
86
37
|
});
|
|
87
38
|
};
|
|
88
|
-
const calculateTtl = (hideDuration) => {
|
|
89
|
-
const now = Date.now();
|
|
90
|
-
return now + hideDuration;
|
|
91
|
-
};
|
|
92
39
|
export const getDismissScript = (placementType) => `
|
|
93
40
|
document.addEventListener("click", function (event) {
|
|
94
41
|
let el = event.target;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../../src/actions/dismiss.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../../src/actions/dismiss.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,aAA4B,EAAE,QAAgB,EAAW,EAAE;IACrF,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACjE,OAAO,UAAU,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,aAA4B,EAC5B,QAAgB,EAChB,YAAoB,EACpB,SAAwB,EAClB,EAAE;IACR,MAAM,GAAG,GAAG,GAAG,aAAa,IAAI,QAAQ,EAAE,CAAC;IAE3C,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IACD,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE7B,IAAI,SAAS,EAAE,CAAC;QACd,kBAAkB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YACxD,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,KAAK;QAChD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,WAAW,IAAI,aAAa,EAAE,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YACzD,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;YACxD,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,aAA6C,EAAU,EAAE,CACxF;;;;;;;;;qBASmB,WAAW,IAAI,aAAa;;;;;;GAM9C,CAAC"}
|
package/dist/esm/apiClient.d.ts
CHANGED
|
@@ -82,7 +82,7 @@ export type GetPosterByDecisionParams = {
|
|
|
82
82
|
* @param showFallbackPosterOnNoContent - When `true`, returns the fallback poster even on empty content responses.
|
|
83
83
|
* @returns The poster response wrapped in a fail-reason envelope, or `null` when no content is available. {@link SPSPosterResponseWithFailReason<T extends PlacementType>}
|
|
84
84
|
*/
|
|
85
|
-
export declare const fetchPoster: <T extends PlacementType, U extends SpsParams>(url: string, params: U, fallbackPoster?: SPSPosterResponse<T>, showFallbackPosterOnNoContent?: boolean
|
|
85
|
+
export declare const fetchPoster: <T extends PlacementType, U extends SpsParams>(url: string, params: U, fallbackPoster?: SPSPosterResponse<T>, showFallbackPosterOnNoContent?: boolean) => Promise<SPSPosterResponseWithFailReason<T> | null>;
|
|
86
86
|
/**
|
|
87
87
|
* Fetches a decision from the SPS API.
|
|
88
88
|
* Intended to be called from a server environment where a user JWT token is available.
|
package/dist/esm/apiClient.js
CHANGED
|
@@ -13,17 +13,15 @@ import { addSearchParams } from "./utils/url.js";
|
|
|
13
13
|
* @param showFallbackPosterOnNoContent - When `true`, returns the fallback poster even on empty content responses.
|
|
14
14
|
* @returns The poster response wrapped in a fail-reason envelope, or `null` when no content is available. {@link SPSPosterResponseWithFailReason<T extends PlacementType>}
|
|
15
15
|
*/
|
|
16
|
-
export const fetchPoster = async (url, params, fallbackPoster, showFallbackPosterOnNoContent = false
|
|
16
|
+
export const fetchPoster = async (url, params, fallbackPoster, showFallbackPosterOnNoContent = false) => {
|
|
17
17
|
try {
|
|
18
18
|
const paramsFromDocument = getParamsFromDocument();
|
|
19
19
|
const queryParams = convertParamsToQueryParams({
|
|
20
20
|
...paramsFromDocument,
|
|
21
21
|
...params,
|
|
22
22
|
});
|
|
23
|
-
const signal = timeoutMs !== undefined ? AbortSignal.timeout(timeoutMs) : undefined;
|
|
24
23
|
const posterResponse = await fetch(addSearchParams(url, queryParams), {
|
|
25
24
|
credentials: "include",
|
|
26
|
-
signal,
|
|
27
25
|
});
|
|
28
26
|
if (!posterResponse.ok) {
|
|
29
27
|
if (posterResponse.status === 404) {
|
|
@@ -52,12 +50,6 @@ export const fetchPoster = async (url, params, fallbackPoster, showFallbackPoste
|
|
|
52
50
|
};
|
|
53
51
|
}
|
|
54
52
|
catch (error) {
|
|
55
|
-
if (error?.name === "TimeoutError") {
|
|
56
|
-
if (fallbackPoster) {
|
|
57
|
-
return { posterResponse: fallbackPoster };
|
|
58
|
-
}
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
53
|
if (fallbackPoster) {
|
|
62
54
|
console.error(error);
|
|
63
55
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GAGtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4E9C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,GAAW,EACX,MAAS,EACT,cAAqC,EACrC,6BAA6B,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/apiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GAGtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA4E9C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,GAAW,EACX,MAAS,EACT,cAAqC,EACrC,6BAA6B,GAAG,KAAK,EACe,EAAE;IACtD,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,0BAA0B,CAAC;YAC7C,GAAG,kBAAkB;YACrB,GAAG,MAAM;SACV,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;YACpE,WAAW,EAAE,SAAS;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACvB,IAAI,cAAc,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAClC,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO;wBACL,cAAc,EAAE,cAAc;wBAC9B,UAAU,EAAE,gEAAgE;qBAC7E,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,IAAI,KAAK,CACb,mCAAmC,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,UAAU,EAAE,CACxF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAgD,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAEhG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,cAAc,IAAI,6BAA6B,EAAE,CAAC;gBACpD,OAAO;oBACL,cAAc,EAAE,cAAc;oBAC9B,UAAU,EAAE,8DAA8D;iBAC3E,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,cAAc,EAAE,cAAsC;SACvD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;gBACL,cAAc,EAAE,cAAc;gBAC9B,UAAU,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACnE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,GAAW,EACX,MAAS,EACT,YAAqB,EACrB,MAAe,EACqB,EAAE;IACtC,MAAM,WAAW,GAAG,0BAA0B,CAAC;QAC7C,GAAG,MAAM;KACV,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;QACtE,OAAO,EAAE;YACP,YAAY,EAAE,YAAY,IAAI,EAAE;YAChC,GAAG,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;SAClC;QACD,WAAW,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,qCAAqC,gBAAgB,CAAC,MAAM,IAAI,gBAAgB,CAAC,UAAU,EAAE,CAC9F,CAAC;IACJ,CAAC;IAED,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC,CAAC"}
|
package/dist/esm/sps.d.ts
CHANGED
|
@@ -81,11 +81,6 @@ export type SpsRequestOptions<T extends PlacementType> = {
|
|
|
81
81
|
/** Fire legacy UI element events (`trackLegacyViewUIElement` / `trackLegacyClickUIElement`). @defaultValue false */
|
|
82
82
|
legacy?: boolean;
|
|
83
83
|
};
|
|
84
|
-
/**
|
|
85
|
-
* Maximum milliseconds to wait for the API before aborting the request.
|
|
86
|
-
* When a `fallbackPoster` is present it is returned on timeout; otherwise the placement renders no content.
|
|
87
|
-
*/
|
|
88
|
-
timeoutMs?: number;
|
|
89
84
|
};
|
|
90
85
|
/**
|
|
91
86
|
* Variant of {@link SpsRequestOptions} that requires a `fallbackPoster` and forces
|
package/dist/esm/sps.js
CHANGED
|
@@ -54,7 +54,7 @@ export class SPS {
|
|
|
54
54
|
if (dismissOptions && isDismissed(placementType, dismissOptions.elementId)) {
|
|
55
55
|
return null;
|
|
56
56
|
}
|
|
57
|
-
const poster = await fetchPoster(`${this.endpoint}/${this.publication}/${placementType}`, props.params || {}, props.fallbackPoster
|
|
57
|
+
const poster = await fetchPoster(`${this.endpoint}/${this.publication}/${placementType}`, props.params || {}, props.fallbackPoster);
|
|
58
58
|
if (!poster) {
|
|
59
59
|
return null;
|
|
60
60
|
}
|
|
@@ -102,7 +102,7 @@ export class SPS {
|
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
104
|
if (dismissOptions) {
|
|
105
|
-
addDismiss(placementType, dismissOptions.elementId, posterResponse.hideDuration ||
|
|
105
|
+
addDismiss(placementType, dismissOptions.elementId, posterResponse.hideDuration || 86400000, posterResponse.viewLimit || null); // Default 1 day.
|
|
106
106
|
}
|
|
107
107
|
return {
|
|
108
108
|
...posterResponse,
|
|
@@ -170,7 +170,7 @@ export class SPS {
|
|
|
170
170
|
if (dismissOptions && isDismissed(placementType, dismissOptions.elementId)) {
|
|
171
171
|
return null;
|
|
172
172
|
}
|
|
173
|
-
const poster = await fetchPoster(`${this.endpoint}/poster/${encodeURIComponent(contentKey)}`, {}, props.fallbackPoster
|
|
173
|
+
const poster = await fetchPoster(`${this.endpoint}/poster/${encodeURIComponent(contentKey)}`, {}, props.fallbackPoster);
|
|
174
174
|
if (!poster) {
|
|
175
175
|
return null;
|
|
176
176
|
}
|
|
@@ -211,7 +211,7 @@ export class SPS {
|
|
|
211
211
|
});
|
|
212
212
|
}
|
|
213
213
|
if (dismissOptions) {
|
|
214
|
-
addDismiss(placementType, dismissOptions.elementId, poster.posterResponse.hideDuration ||
|
|
214
|
+
addDismiss(placementType, dismissOptions.elementId, poster.posterResponse.hideDuration || 86400000, // Default 1 day
|
|
215
215
|
poster.posterResponse.viewLimit || null);
|
|
216
216
|
}
|
|
217
217
|
return {
|
package/dist/esm/sps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sps.js","sourceRoot":"","sources":["../../src/sps.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,GAOZ,MAAM,GAAG,CAAC;AACX,OAAO,EACL,oBAAoB,GAIrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAA0B,MAAM,aAAa,CAAC;AAOjF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"sps.js","sourceRoot":"","sources":["../../src/sps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const getDismissCookieName: (type: string, elementId: string) => string;
|
|
2
|
+
export declare const getViewCountCookieName: (type: string, elementId: string) => string;
|
|
3
|
+
export declare const parseCookies: (cookieString: string) => Record<string, string>;
|
|
4
|
+
export declare const incrementViewCount: (type: string, elementId: string) => void;
|
|
5
|
+
export declare const setDismissCookie: (type: string, hideDuration: number, elementId: string) => void;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const DISMISS_PREFIX = "sps-dismiss-";
|
|
2
|
+
const VIEW_COUNT_PREFIX = "sps-view-count-";
|
|
3
|
+
export const getDismissCookieName = (type, elementId) => `${DISMISS_PREFIX}${type}-${elementId}`;
|
|
4
|
+
export const getViewCountCookieName = (type, elementId) => `${VIEW_COUNT_PREFIX}${type}-${elementId}`;
|
|
5
|
+
export const parseCookies = (cookieString) => {
|
|
6
|
+
if (!cookieString) {
|
|
7
|
+
return {};
|
|
8
|
+
}
|
|
9
|
+
return Object.fromEntries(cookieString.split(";").map((pair) => {
|
|
10
|
+
const [key = "", ...rest] = pair.trim().split("=");
|
|
11
|
+
return [key.trim(), rest.join("=").trim()];
|
|
12
|
+
}));
|
|
13
|
+
};
|
|
14
|
+
export const incrementViewCount = (type, elementId) => {
|
|
15
|
+
if (typeof document === "undefined") {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const key = getViewCountCookieName(type, elementId);
|
|
19
|
+
const cookies = parseCookies(document.cookie);
|
|
20
|
+
const current = parseInt(cookies[key] ?? "0", 10);
|
|
21
|
+
const next = isNaN(current) ? 1 : current + 1;
|
|
22
|
+
document.cookie = `${key}=${next}; Path=/; SameSite=Lax`;
|
|
23
|
+
};
|
|
24
|
+
export const setDismissCookie = (type, hideDuration, elementId) => {
|
|
25
|
+
if (typeof document === "undefined") {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const maxAge = Math.floor(hideDuration / 1000);
|
|
29
|
+
document.cookie = `${getDismissCookieName(type, elementId)}=1; Max-Age=${maxAge}; Path=/; SameSite=Lax`;
|
|
30
|
+
document.cookie = `${getViewCountCookieName(type, elementId)}=0; Path=/; SameSite=Lax`;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=placementCookies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placementCookies.js","sourceRoot":"","sources":["../../../src/utils/placementCookies.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,cAAc,CAAC;AACtC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAU,EAAE,CAC9E,GAAG,cAAc,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;AAE1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAU,EAAE,CAChF,GAAG,iBAAiB,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,YAAoB,EAA0B,EAAE;IAC3E,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAQ,EAAE;IAC1E,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,wBAAwB,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,YAAoB,EAAE,SAAiB,EAAQ,EAAE;IAC9F,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,eAAe,MAAM,wBAAwB,CAAC;IACxG,QAAQ,CAAC,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,0BAA0B,CAAC;AACzF,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var SpsPulseHelpersBundle=(()=>{var N=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var se=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of re(t))!ne.call(e,n)&&n!==r&&N(e,n,{get:()=>t[n],enumerable:!(s=te(t,n))||s.enumerable});return e};var oe=e=>se(N({},"__esModule",{value:!0}),e);var de={};var y="pulse-tracker-proxy",ae=`${y}:request`,fe=`${y}:ack`,W=`${y}:invoke`,j=`${y}:return`,R=`${y}:return-error`,G=["trackAnonymousViewUIElement","trackEngagementAudio","trackEngagementForm","trackEngagementHealthUIElement","trackEngagementOffer","trackEngagementTeaser","trackEngagementUIElement","trackEngagementVideo","trackEngagementVideoAd","trackEngagementWidget","trackCompletedHealthAction","trackImpressionAdSlot","trackImpressionForm","trackImpressionHealthUIElement","trackImpressionOffer","trackImpressionPlayer","trackImpressionTeaser","trackImpressionUIElement","trackImpressionWidget","trackLeaveArticle","trackLeaveAudioPage","trackLeaveError","trackLeaveFrontpage","trackLeaveLandingpage","trackLeaveListing","trackLeaveLockedArticle","trackLeaveLockedAudioPage","trackLeaveLockedVideoPage","trackLeavePage","trackLeaveSportsPage","trackLeaveVideoPage","trackLeaveWeather","trackViewArticle","trackViewAudioPage","trackViewError","trackViewFrontpage","trackViewHealthPage","trackViewLandingpage","trackViewListing","trackViewLockedArticle","trackViewLockedAudioPage","trackViewLockedVideoPage","trackViewPage","trackViewSportsPage","trackViewTitle","trackViewVideoPage","trackViewWeather","trackLegacyViewArticle","trackLegacyViewLoginPoster","trackLegacyViewSalesPoster","trackLegacyViewListing","trackLegacyViewFrontpage","trackLegacyViewPage","trackLegacyViewUIElement","trackLegacyClickUIElement"];function v(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"&&e.type.startsWith(y)}function L(e,{target:t,timeout:r,debug:s=()=>{}}){return new Promise((n,c)=>{let a=new MessageChannel,p=r?setTimeout(()=>{a.port1.close(),c(new Error(`Message of type ${e.type} timed out`))},r):void 0,i=o=>{if(s("[Pulse Tracker Proxy] Received the response on the MessageChannel",o),!v(o.data)){s("[Pulse Tracker Proxy] Response was not a valid Proxy Message",o.data);return}o.data.type===R&&(s("[Pulse Tracker Proxy] Received an return error response",o.data.error),clearTimeout(p),a.port1.close(),c(new Error(o.data.error))),s("[Pulse Tracker Proxy] Received a valid response",o.data),clearTimeout(p),a.port1.close(),n(o.data)};a.port1.onmessage=i,s("[Pulse Tracker Proxy] Sending message to target window",e),t.postMessage(e,"*",[a.port2])})}var q="2.0.0-rc.9";function _(e){let t="tracker"in e&&typeof e.tracker=="object"?e.tracker:{};return{...e,tracker:{...t,proxyVersion:q}}}function D(e,t,r){let s="provider"in e&&typeof e.provider=="object"?e.provider:{};return{...e,provider:{...s,component:t,componentVersion:r}}}var O=class{constructor(t,r,s,n){this.target=t,this.component=r,this.componentVersion=s,this.debug=n}track(...t){this.debug("[Pulse Tracker Proxy] Calling `track`",t);let[r,s,...n]=t,c=_(s),a=D(c,this.component,this.componentVersion),p=[r,a,...n];return this.invoke({method:"track",args:p})}async invoke(t){this.debug("[Pulse Tracker Proxy] Invoking remote function",t);let r=await L({type:W,payload:t},{target:this.target});if(!v(r))throw this.debug("[Pulse Tracker Proxy] Invalid response from proxy",r),new Error("Invalid response from proxy");if(r.type===R)throw this.debug("[Pulse Tracker Proxy] Error response from proxy",r.error),new Error(r.error);if(r.type===j)return this.debug("[Pulse Tracker Proxy] Successful response from proxy",r.payload),r.payload;throw this.debug("[Pulse Tracker Proxy] Unhandled response from proxy",r),new Error("Unexpected response from proxy")}};var ie=Object.fromEntries(G.map(e=>[e,function(...t){this.debug("[Pulse Tracker Proxy] Calling `track`",t);let[r,...s]=t,n=_(r),a=[D(n,this.component,this.componentVersion),...s];return this.invoke({method:e,args:a})}]));function ce(){return class extends O{constructor(e,t,r,s){super(e,t,r,s),s("[Pulse TPaaS Proxy] Initialized"),Object.assign(this,ie)}}}var pe=ce();var le=e=>e==="payment.schibsted.com"||e.startsWith("bestilling.")||e==="pay.pre.schibsted.digital"||e.startsWith("test-bestilling."),me=e=>e==="login.schibsted.com"||e==="identity-pre.schibsted.com",B=e=>{var t;try{let s=new URL((t=e.getAttribute("href"))!=null?t:"").hostname;if(me(s))return"Login";if(le(s))return"Purchase"}catch{return}};var H=e=>{var t;try{let r=new URL((t=e.getAttribute("href"))!=null?t:""),n=new URLSearchParams(r.search).get("code");return n?n.split(","):[]}catch{return[]}};var S=e=>{var r;let t=(r=e==null?void 0:e.toLowerCase())!=null?r:"";if(t.includes("meter"))return"Meter";if(t.includes("paid")||t.includes("subscription"))return"Paid";if(t.includes("login"))return"Login"};function K(e,t,r,s){let{campaign:n,articleType:c,abTestGroup:a,placementType:p,experiment:i,legacy:o,contentName:l,pulseEvents:m}=t,d=400,T="",h=0;function f(g){var b,k,x,A,V;try{let w=g.target,P=(b=w==null?void 0:w.closest)==null?void 0:b.call(w,"a");if(!P)return;let E=P.textContent||P.getAttribute("href")||`${p} button`,F=`a|${E}`,M=Date.now();if(F===T&&M-h<d)return;T=F,h=M;let C=B(P),ee=C==="Purchase"?H(P):[];m.tpaas&&e.trackEngagementOffer({placement:{containerName:"page",offerPlacement:p},object:{objectId:s,objectSdrn:r,campaign:n,name:l,offerCodes:ee,offerType:S(c)},...i?{experiments:[{experimentSdrn:`${r}:experiment:${u(i)}`,name:i,platform:"SPS",variant:a||""}]}:{},engagement:{action:"Click",elementName:E},page:{},provider:{stage:"Test"},target:{info:{url:(k=P.getAttribute("href"))!=null?k:""}}}),m.legacy&&e.trackLegacyClickUIElement({object:{id:u(E),elementType:"Button",name:E,containerName:"Page",custom:{...o==null?void 0:o.offerData}},...o?{origin:o.pulseOrigin}:{},target:{url:(V=(A=(x=P.getAttribute("href"))==null?void 0:x.split("?"))==null?void 0:A[0])!=null?V:""},...C?{intent:C}:{},...i?{experiments:[{id:`experiment:${u(i)}`,name:i,platform:"SPS",variant:a}]}:{}})}catch{}}return document.addEventListener("click",f,!0),()=>document.removeEventListener("click",f,!0)}function
|
|
1
|
+
"use strict";var SpsPulseHelpersBundle=(()=>{var N=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var se=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of re(t))!ne.call(e,n)&&n!==r&&N(e,n,{get:()=>t[n],enumerable:!(s=te(t,n))||s.enumerable});return e};var oe=e=>se(N({},"__esModule",{value:!0}),e);var de={};var y="pulse-tracker-proxy",ae=`${y}:request`,fe=`${y}:ack`,W=`${y}:invoke`,j=`${y}:return`,R=`${y}:return-error`,G=["trackAnonymousViewUIElement","trackEngagementAudio","trackEngagementForm","trackEngagementHealthUIElement","trackEngagementOffer","trackEngagementTeaser","trackEngagementUIElement","trackEngagementVideo","trackEngagementVideoAd","trackEngagementWidget","trackCompletedHealthAction","trackImpressionAdSlot","trackImpressionForm","trackImpressionHealthUIElement","trackImpressionOffer","trackImpressionPlayer","trackImpressionTeaser","trackImpressionUIElement","trackImpressionWidget","trackLeaveArticle","trackLeaveAudioPage","trackLeaveError","trackLeaveFrontpage","trackLeaveLandingpage","trackLeaveListing","trackLeaveLockedArticle","trackLeaveLockedAudioPage","trackLeaveLockedVideoPage","trackLeavePage","trackLeaveSportsPage","trackLeaveVideoPage","trackLeaveWeather","trackViewArticle","trackViewAudioPage","trackViewError","trackViewFrontpage","trackViewHealthPage","trackViewLandingpage","trackViewListing","trackViewLockedArticle","trackViewLockedAudioPage","trackViewLockedVideoPage","trackViewPage","trackViewSportsPage","trackViewTitle","trackViewVideoPage","trackViewWeather","trackLegacyViewArticle","trackLegacyViewLoginPoster","trackLegacyViewSalesPoster","trackLegacyViewListing","trackLegacyViewFrontpage","trackLegacyViewPage","trackLegacyViewUIElement","trackLegacyClickUIElement"];function v(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"&&e.type.startsWith(y)}function L(e,{target:t,timeout:r,debug:s=()=>{}}){return new Promise((n,c)=>{let a=new MessageChannel,p=r?setTimeout(()=>{a.port1.close(),c(new Error(`Message of type ${e.type} timed out`))},r):void 0,i=o=>{if(s("[Pulse Tracker Proxy] Received the response on the MessageChannel",o),!v(o.data)){s("[Pulse Tracker Proxy] Response was not a valid Proxy Message",o.data);return}o.data.type===R&&(s("[Pulse Tracker Proxy] Received an return error response",o.data.error),clearTimeout(p),a.port1.close(),c(new Error(o.data.error))),s("[Pulse Tracker Proxy] Received a valid response",o.data),clearTimeout(p),a.port1.close(),n(o.data)};a.port1.onmessage=i,s("[Pulse Tracker Proxy] Sending message to target window",e),t.postMessage(e,"*",[a.port2])})}var q="2.0.0-rc.9";function _(e){let t="tracker"in e&&typeof e.tracker=="object"?e.tracker:{};return{...e,tracker:{...t,proxyVersion:q}}}function D(e,t,r){let s="provider"in e&&typeof e.provider=="object"?e.provider:{};return{...e,provider:{...s,component:t,componentVersion:r}}}var O=class{constructor(t,r,s,n){this.target=t,this.component=r,this.componentVersion=s,this.debug=n}track(...t){this.debug("[Pulse Tracker Proxy] Calling `track`",t);let[r,s,...n]=t,c=_(s),a=D(c,this.component,this.componentVersion),p=[r,a,...n];return this.invoke({method:"track",args:p})}async invoke(t){this.debug("[Pulse Tracker Proxy] Invoking remote function",t);let r=await L({type:W,payload:t},{target:this.target});if(!v(r))throw this.debug("[Pulse Tracker Proxy] Invalid response from proxy",r),new Error("Invalid response from proxy");if(r.type===R)throw this.debug("[Pulse Tracker Proxy] Error response from proxy",r.error),new Error(r.error);if(r.type===j)return this.debug("[Pulse Tracker Proxy] Successful response from proxy",r.payload),r.payload;throw this.debug("[Pulse Tracker Proxy] Unhandled response from proxy",r),new Error("Unexpected response from proxy")}};var ie=Object.fromEntries(G.map(e=>[e,function(...t){this.debug("[Pulse Tracker Proxy] Calling `track`",t);let[r,...s]=t,n=_(r),a=[D(n,this.component,this.componentVersion),...s];return this.invoke({method:e,args:a})}]));function ce(){return class extends O{constructor(e,t,r,s){super(e,t,r,s),s("[Pulse TPaaS Proxy] Initialized"),Object.assign(this,ie)}}}var pe=ce();var le=e=>e==="payment.schibsted.com"||e.startsWith("bestilling.")||e==="pay.pre.schibsted.digital"||e.startsWith("test-bestilling."),me=e=>e==="login.schibsted.com"||e==="identity-pre.schibsted.com",B=e=>{var t;try{let s=new URL((t=e.getAttribute("href"))!=null?t:"").hostname;if(me(s))return"Login";if(le(s))return"Purchase"}catch{return}};var H=e=>{var t;try{let r=new URL((t=e.getAttribute("href"))!=null?t:""),n=new URLSearchParams(r.search).get("code");return n?n.split(","):[]}catch{return[]}};var S=e=>{var r;let t=(r=e==null?void 0:e.toLowerCase())!=null?r:"";if(t.includes("meter"))return"Meter";if(t.includes("paid")||t.includes("subscription"))return"Paid";if(t.includes("login"))return"Login"};function K(e,t,r,s){let{campaign:n,articleType:c,abTestGroup:a,placementType:p,experiment:i,legacy:o,contentName:l,pulseEvents:m}=t,d=400,T="",h=0;function f(g){var b,k,x,A,V;try{let w=g.target,P=(b=w==null?void 0:w.closest)==null?void 0:b.call(w,"a");if(!P)return;let E=P.textContent||P.getAttribute("href")||`${p} button`,F=`a|${E}`,M=Date.now();if(F===T&&M-h<d)return;T=F,h=M;let C=B(P),ee=C==="Purchase"?H(P):[];m.tpaas&&e.trackEngagementOffer({placement:{containerName:"page",offerPlacement:p},object:{objectId:s,objectSdrn:r,campaign:n,name:l,offerCodes:ee,offerType:S(c)},...i?{experiments:[{experimentSdrn:`${r}:experiment:${u(i)}`,name:i,platform:"SPS",variant:a||""}]}:{},engagement:{action:"Click",elementName:E},page:{},provider:{stage:"Test"},target:{info:{url:(k=P.getAttribute("href"))!=null?k:""}}}),m.legacy&&e.trackLegacyClickUIElement({object:{id:u(E),elementType:"Button",name:E,containerName:"Page",custom:{...o==null?void 0:o.offerData}},...o?{origin:o.pulseOrigin}:{},target:{url:(V=(A=(x=P.getAttribute("href"))==null?void 0:x.split("?"))==null?void 0:A[0])!=null?V:""},...C?{intent:C}:{},...i?{experiments:[{id:`experiment:${u(i)}`,name:i,platform:"SPS",variant:a}]}:{}})}catch{}}return document.addEventListener("click",f,!0),()=>document.removeEventListener("click",f,!0)}function Y(e,t,r,s,n){let{campaign:c,articleType:a,abTestGroup:p,placementType:i,experiment:o,legacy:l,contentName:m,pulseEvents:d}=t;d.tpaas&&e.trackImpressionOffer({placement:{foldPosition:n,containerName:"page",offerPlacement:i},object:{campaign:c,name:m,objectId:s,objectSdrn:r,offerCodes:[],offerType:S(a)},...o?{experiments:[{experimentSdrn:`${r}:experiment:${u(o)}`,name:o,platform:"SPS",variant:p||""}]}:{},page:{},provider:{stage:"Test"},target:{info:{}}}),d.legacy&&e.trackLegacyViewUIElement({object:{id:u(m),elementType:i,name:m,placement:{},custom:{...l==null?void 0:l.offerData,...l==null?void 0:l.custom}},...o?{experiments:[{id:`${r}:experiment:${u(o)}`,name:o,platform:"SPS",variant:p}]}:{},...l?{origin:l.pulseOrigin}:{}})}async function J(e,t,r){let{placementType:s,legacy:n,pulseEvents:c}=t,a=window.location.pathname,i=`landingpage-${s==="campaignpage"?"CAMPAIGN":"STATIC"}-${U(a)}`.toLowerCase();c.legacy&&await e.trackLegacyViewPage({object:{pageId:i,name:document.title,"spt:custom":{...n==null?void 0:n.offerData,...n==null?void 0:n.custom}},origin:n==null?void 0:n.pulseOrigin}),c.tpaas&&await e.trackViewLandingpage({object:{objectId:i,objectSdrn:r,title:document.title},page:{},provider:{stage:"Test"}},{leaveTracking:{objectElement:"body",pageElement:"body",objectResizable:!1}})}var $={"sps-pulse-helpers":"2.2.0","pulse-tracker-proxy":"1.2.0"};var I=e=>e==="campaignpage"||e==="staticpage";var Q=!1,z=!1,X="script[data-sps-pulse-config='true']",u=e=>e.toLowerCase().replace(/ /g,"-").replace(/[^-a-z:0-9]/g,""),U=e=>{var t,r;return(e==null?void 0:e.replace((r=(t=window.__landingpages)==null?void 0:t.rootUrl)!=null?r:"","").replace(/^\/|\/$/g,""))||""};async function Z(){if(console.log("[SPS-Pulse-Helpers] boot initiated"),Q)return;Q=!0;let e=null;try{let t=document.querySelector(X);if(!t){console.warn(`[SPS-Pulse-Helpers] Config script tag not found with selector ${X}`);return}e=JSON.parse(t.textContent)}catch(t){console.warn("[SPS-Pulse-Helpers] Failed to parse config from script tag",t);return}try{let t=window.getPulseTrackerProxy;if(!t||typeof t!="function"){console.warn("[SPS-Pulse-Helpers] PulseTrackerProxy not available");return}let{placementType:r,publication:s,contentName:n}=e,c=I(r)?U(window.location.pathname):u(n),a=`sdrn:${s}:element:offer:${r}:${c}`,p=crypto==null?void 0:crypto.randomUUID(),i=await t({component:"SPS-SDK",componentVersion:$["sps-pulse-helpers"]});K(i,e,a,p);let o=f=>{z||(z=!0,Y(i,e,a,p,f))};if(I(r)){await J(i,e,a),o("Above");return}let l=window.frameElement,m=window.parent.IntersectionObserver;if(!l||!m){console.warn("[SPS-Pulse-Helpers] No iframe or IntersectionObserver available. Pulse View event will not be fired.");return}let d="Unknown",T=!0,h=new m(f=>{var x;let g=f[0],b=(x=g==null?void 0:g.intersectionRatio)!=null?x:0,k=(g==null?void 0:g.isIntersecting)&&b>=1/3;T&&(T=!1,d=k?"Above":"Below"),k&&(h.disconnect(),o(d))},{root:null,threshold:[0,1/3]});h.observe(l)}catch(t){console.warn("[SPS-Pulse-Helpers] boot failed",t)}}Z();return oe(de);})();
|