@schibsted/sps-sdk 4.6.1-CBT-19878.4 → 4.7.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.
- package/dist/cjs/actions/dismiss.d.ts +23 -3
- package/dist/cjs/actions/dismiss.js +16 -20
- package/dist/cjs/actions/dismiss.js.map +1 -1
- package/dist/cjs/apiClient.d.ts +10 -3
- package/dist/cjs/apiClient.js.map +1 -1
- package/dist/cjs/sps.d.ts +0 -1
- package/dist/cjs/sps.js +20 -12
- package/dist/cjs/sps.js.map +1 -1
- package/dist/cjs/utils/placementCookies.d.ts +7 -3
- package/dist/cjs/utils/placementCookies.js +31 -14
- package/dist/cjs/utils/placementCookies.js.map +1 -1
- package/dist/esm/actions/dismiss.d.ts +23 -3
- package/dist/esm/actions/dismiss.js +16 -19
- package/dist/esm/actions/dismiss.js.map +1 -1
- package/dist/esm/apiClient.d.ts +10 -3
- package/dist/esm/apiClient.js.map +1 -1
- package/dist/esm/sps.d.ts +0 -1
- package/dist/esm/sps.js +21 -13
- package/dist/esm/sps.js.map +1 -1
- package/dist/esm/utils/placementCookies.d.ts +7 -3
- package/dist/esm/utils/placementCookies.js +27 -11
- package/dist/esm/utils/placementCookies.js.map +1 -1
- package/dist/public-scripts/sps-pulse-helpers.v2.2.0.min.js +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
import type { PlacementType, PlacementTypeWithStringContent } from "../sps/placement.js";
|
|
2
|
-
export declare const
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export declare const isDismissed: (placementType: PlacementType, iframeId: string) => boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Options for the {@link addDismiss} function.
|
|
5
|
+
*/
|
|
6
|
+
export interface AddDismissOptions {
|
|
7
|
+
/**
|
|
8
|
+
* The maximum number of times the user may dismiss the placement before the schedule
|
|
9
|
+
* expiry TTL is used instead of {@link hideDuration}.
|
|
10
|
+
* Set to `null` to disable the limit.
|
|
11
|
+
*/
|
|
12
|
+
dismissLimit: number | null;
|
|
13
|
+
/**
|
|
14
|
+
* Duration in milliseconds to hide the placement after each dismiss while the count
|
|
15
|
+
* is below {@link dismissLimit}.
|
|
16
|
+
*/
|
|
17
|
+
hideDuration: number;
|
|
18
|
+
/**
|
|
19
|
+
* Unix timestamp (ms) at which the schedule expires. Used as the cookie TTL when
|
|
20
|
+
* {@link dismissLimit} is reached. Set to `null` to fall back to {@link hideDuration}.
|
|
21
|
+
*/
|
|
22
|
+
scheduleEndDate: number | null;
|
|
23
|
+
}
|
|
24
|
+
export declare const addDismiss: (placementType: PlacementType, iframeId: string, options: AddDismissOptions) => void;
|
|
5
25
|
export declare const getDismissScript: (placementType: PlacementTypeWithStringContent) => string;
|
|
@@ -1,43 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDismissScript = exports.addDismiss = exports.isDismissed =
|
|
3
|
+
exports.getDismissScript = exports.addDismiss = exports.isDismissed = void 0;
|
|
4
4
|
const placementCookies_1 = require("../utils/placementCookies.js");
|
|
5
5
|
const DISMISS_KEY = "sps-dismiss-click";
|
|
6
|
-
const dismissListenerKeys = new
|
|
7
|
-
const getDismissIframeId = (placementType) => `sps-${placementType}-poster`;
|
|
8
|
-
exports.getDismissIframeId = getDismissIframeId;
|
|
6
|
+
const dismissListenerKeys = new Map();
|
|
9
7
|
const isDismissed = (placementType, iframeId) => {
|
|
10
8
|
if (typeof document === "undefined") {
|
|
11
9
|
return false;
|
|
12
10
|
}
|
|
13
|
-
const cookieName = (0, placementCookies_1.getDismissCookieName)(placementType, iframeId
|
|
11
|
+
const cookieName = (0, placementCookies_1.getDismissCookieName)(placementType, iframeId);
|
|
14
12
|
return cookieName in (0, placementCookies_1.parseCookies)(document.cookie);
|
|
15
13
|
};
|
|
16
14
|
exports.isDismissed = isDismissed;
|
|
17
|
-
const addDismiss = (placementType, iframeId,
|
|
15
|
+
const addDismiss = (placementType, iframeId, options) => {
|
|
18
16
|
const key = `${placementType}:${iframeId}`;
|
|
19
|
-
|
|
17
|
+
const alreadyRegistered = dismissListenerKeys.has(key);
|
|
18
|
+
dismissListenerKeys.set(key, options);
|
|
19
|
+
if (alreadyRegistered) {
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
|
-
dismissListenerKeys.add(key);
|
|
23
|
-
if (viewLimit) {
|
|
24
|
-
(0, placementCookies_1.incrementViewCount)(placementType, iframeId);
|
|
25
|
-
const cookies = (0, placementCookies_1.parseCookies)(document.cookie);
|
|
26
|
-
const count = parseInt(cookies[(0, placementCookies_1.getViewCountCookieName)(placementType, iframeId)] ?? "0", 10);
|
|
27
|
-
if (!isNaN(count) && count >= viewLimit) {
|
|
28
|
-
console.log("[SPS sdk] - Dismiss issued by view limit");
|
|
29
|
-
(0, placementCookies_1.setDismissCookie)(placementType, hideDuration, iframeId);
|
|
30
|
-
document.getElementById(iframeId)?.remove();
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
22
|
window.addEventListener("message", function (event) {
|
|
35
23
|
if (event.origin !== window.location.origin) {
|
|
36
24
|
return;
|
|
37
25
|
}
|
|
38
26
|
if (event.data.type === `${DISMISS_KEY}:${placementType}`) {
|
|
39
27
|
console.log("[SPS sdk] - Dismiss issued by user", event);
|
|
40
|
-
|
|
28
|
+
const currentOptions = dismissListenerKeys.get(key);
|
|
29
|
+
let pauseDuration = currentOptions.hideDuration;
|
|
30
|
+
if (currentOptions.dismissLimit !== null && currentOptions.scheduleEndDate !== null) {
|
|
31
|
+
const count = (0, placementCookies_1.incrementDismissCount)(placementType, iframeId, currentOptions.scheduleEndDate);
|
|
32
|
+
if (!isNaN(count) && count >= currentOptions.dismissLimit) {
|
|
33
|
+
pauseDuration = Math.max(0, currentOptions.scheduleEndDate - Date.now());
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
(0, placementCookies_1.setDismissCookie)(placementType, pauseDuration, iframeId);
|
|
41
37
|
document.getElementById(iframeId)?.remove();
|
|
42
38
|
}
|
|
43
39
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../../src/actions/dismiss.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../../src/actions/dismiss.ts"],"names":[],"mappings":";;;AACA,gEAKmC;AAEnC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA6B,CAAC;AAE1D,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;AAwBK,MAAM,UAAU,GAAG,CACxB,aAA4B,EAC5B,QAAgB,EAChB,OAA0B,EACpB,EAAE;IACR,MAAM,GAAG,GAAG,GAAG,aAAa,IAAI,QAAQ,EAAE,CAAC;IAC3C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvD,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEtC,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO;IACT,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,MAAM,cAAc,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YACrD,IAAI,aAAa,GAAG,cAAc,CAAC,YAAY,CAAC;YAEhD,IAAI,cAAc,CAAC,YAAY,KAAK,IAAI,IAAI,cAAc,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBACpF,MAAM,KAAK,GAAG,IAAA,wCAAqB,EACjC,aAAa,EACb,QAAQ,EACR,cAAc,CAAC,eAAe,CAC/B,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;oBAC1D,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAED,IAAA,mCAAgB,EAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YACzD,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAtCW,QAAA,UAAU,cAsCrB;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
|
@@ -45,13 +45,20 @@ export type SPSPosterResponse<T extends PlacementType> = {
|
|
|
45
45
|
*/
|
|
46
46
|
failReason?: string;
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* Duration in milliseconds to hide the placement after each dismiss while the dismiss
|
|
49
|
+
* count is below {@link dismissLimit}.
|
|
49
50
|
*/
|
|
50
51
|
hideDuration?: number;
|
|
51
52
|
/**
|
|
52
|
-
*
|
|
53
|
+
* The maximum number of times the user may dismiss the placement before the schedule
|
|
54
|
+
* expiry TTL ({@link scheduleEndDate}) is used instead of {@link hideDuration}.
|
|
53
55
|
*/
|
|
54
|
-
|
|
56
|
+
dismissLimit?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Unix timestamp (ms) at which the schedule expires. Used as the cookie TTL when
|
|
59
|
+
* {@link dismissLimit} is reached.
|
|
60
|
+
*/
|
|
61
|
+
scheduleEndDate?: number | null;
|
|
55
62
|
};
|
|
56
63
|
/**
|
|
57
64
|
* Returned by the SPS API when there is no content to display for the given placement.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/apiClient.ts"],"names":[],"mappings":";;;AAAA,qDAK4B;AAC5B,qCAA8C;
|
|
1
|
+
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/apiClient.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/sps.d.ts
CHANGED
|
@@ -13,7 +13,6 @@ export type Poster<T extends PlacementType> = SPSPosterResponse<T> & {
|
|
|
13
13
|
trackingData: TrackingData;
|
|
14
14
|
pulseOrigin: PulseOrigin;
|
|
15
15
|
pulseObject: PulseObject;
|
|
16
|
-
iframeId: string;
|
|
17
16
|
};
|
|
18
17
|
/**
|
|
19
18
|
* The decision result from SPS, used to subsequently fetch poster content via
|
package/dist/cjs/sps.js
CHANGED
|
@@ -53,7 +53,7 @@ class SPS {
|
|
|
53
53
|
*/
|
|
54
54
|
getPoster = async (placementType, props = {}, dismissOptions) => {
|
|
55
55
|
await this.validateClientEnvironment();
|
|
56
|
-
if ((0, dismiss_1.isDismissed)(placementType, dismissOptions
|
|
56
|
+
if (dismissOptions && (0, dismiss_1.isDismissed)(placementType, dismissOptions.elementId)) {
|
|
57
57
|
return null;
|
|
58
58
|
}
|
|
59
59
|
const poster = await (0, apiClient_1.fetchPoster)(`${this.endpoint}/${this.publication}/${placementType}`, props.params || {}, props.fallbackPoster, props.showFallbackPosterOnNoContent ?? false, props.timeoutMs);
|
|
@@ -61,7 +61,7 @@ class SPS {
|
|
|
61
61
|
return null;
|
|
62
62
|
}
|
|
63
63
|
const posterResponse = poster.posterResponse;
|
|
64
|
-
const enriched = await this.enrichPosterResponse(posterResponse, placementType, props,
|
|
64
|
+
const enriched = await this.enrichPosterResponse(posterResponse, placementType, props, {
|
|
65
65
|
articleType: props.params?.articleType,
|
|
66
66
|
posterType: props.params?.posterType,
|
|
67
67
|
section: props.params?.section,
|
|
@@ -69,6 +69,13 @@ class SPS {
|
|
|
69
69
|
failReason: poster?.failReason,
|
|
70
70
|
segmentNames: posterResponse.segmentNames || [],
|
|
71
71
|
});
|
|
72
|
+
if (dismissOptions) {
|
|
73
|
+
(0, dismiss_1.addDismiss)(placementType, dismissOptions.elementId, {
|
|
74
|
+
dismissLimit: posterResponse.dismissLimit ?? null,
|
|
75
|
+
hideDuration: posterResponse.hideDuration ?? 86400000,
|
|
76
|
+
scheduleEndDate: posterResponse.scheduleEndDate ?? null,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
72
79
|
return enriched;
|
|
73
80
|
};
|
|
74
81
|
/**
|
|
@@ -125,21 +132,28 @@ class SPS {
|
|
|
125
132
|
if (!contentKey) {
|
|
126
133
|
return null;
|
|
127
134
|
}
|
|
128
|
-
if ((0, dismiss_1.isDismissed)(placementType, dismissOptions
|
|
135
|
+
if (dismissOptions && (0, dismiss_1.isDismissed)(placementType, dismissOptions.elementId)) {
|
|
129
136
|
return null;
|
|
130
137
|
}
|
|
131
138
|
const poster = await (0, apiClient_1.fetchPoster)(`${this.endpoint}/poster/${encodeURIComponent(contentKey)}`, {}, props.fallbackPoster, props.showFallbackPosterOnNoContent ?? false, props.timeoutMs);
|
|
132
139
|
if (!poster) {
|
|
133
140
|
return null;
|
|
134
141
|
}
|
|
135
|
-
const enriched = await this.enrichPosterResponse(poster.posterResponse, placementType, props,
|
|
142
|
+
const enriched = await this.enrichPosterResponse(poster.posterResponse, placementType, props, {
|
|
136
143
|
articleType,
|
|
137
144
|
failReason: poster?.failReason,
|
|
138
145
|
segmentNames,
|
|
139
146
|
});
|
|
147
|
+
if (dismissOptions) {
|
|
148
|
+
(0, dismiss_1.addDismiss)(placementType, dismissOptions.elementId, {
|
|
149
|
+
dismissLimit: poster.posterResponse.dismissLimit ?? null,
|
|
150
|
+
hideDuration: poster.posterResponse.hideDuration ?? 86400000,
|
|
151
|
+
scheduleEndDate: poster.posterResponse.scheduleEndDate ?? null,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
140
154
|
return enriched;
|
|
141
155
|
};
|
|
142
|
-
async enrichPosterResponse(posterResponse, placementType, options,
|
|
156
|
+
async enrichPosterResponse(posterResponse, placementType, options, posterData) {
|
|
143
157
|
const { trackingData, pulseOrigin, pulseObject, searchParams, offerData } = await (0, create_tracking_params_1.createTrackingParams)({
|
|
144
158
|
contentId: options.tracking?.contentId || "",
|
|
145
159
|
contentType: options.tracking?.contentType || "article",
|
|
@@ -177,15 +191,9 @@ class SPS {
|
|
|
177
191
|
appendSearchParams: options.appendSearchParams ?? true,
|
|
178
192
|
});
|
|
179
193
|
}
|
|
180
|
-
const iframeId = dismissOptions?.elementId || (0, dismiss_1.getDismissIframeId)(placementType);
|
|
181
|
-
// Only add dismiss functionality for placement types that support it
|
|
182
|
-
if (posterResponse.hideDuration) {
|
|
183
|
-
(0, dismiss_1.addDismiss)(placementType, iframeId, posterResponse.hideDuration, posterResponse.viewLimit || null);
|
|
184
|
-
}
|
|
185
194
|
return {
|
|
186
195
|
...posterResponse,
|
|
187
196
|
segmentNames: posterData.segmentNames ?? [],
|
|
188
|
-
iframeId,
|
|
189
197
|
content,
|
|
190
198
|
trackingData,
|
|
191
199
|
pulseOrigin,
|
|
@@ -224,7 +232,7 @@ class SPS {
|
|
|
224
232
|
}
|
|
225
233
|
async enrichContextPlacements(placements, options) {
|
|
226
234
|
return Promise.all(placements.map(async (placement) => {
|
|
227
|
-
const enriched = await this.enrichPosterResponse(placement, placement.placementType, options,
|
|
235
|
+
const enriched = await this.enrichPosterResponse(placement, placement.placementType, options, {
|
|
228
236
|
segmentNames: placement.segmentNames,
|
|
229
237
|
});
|
|
230
238
|
return { ...enriched, type: placement.placementType };
|
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,2CAQqB;AAOrB,+
|
|
1
|
+
{"version":3,"file":"sps.js","sourceRoot":"","sources":["../../src/sps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export declare const getDismissCookieName: (type: string, elementId: string) => string;
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const getDismissCountCookieName: (type: string, elementId: string) => string;
|
|
3
3
|
export declare const parseCookies: (cookieString: string) => Record<string, string>;
|
|
4
|
-
export declare const
|
|
5
|
-
|
|
4
|
+
export declare const decodeDismissCount: (value: string) => {
|
|
5
|
+
count: number;
|
|
6
|
+
scheduleEndDate: number | null;
|
|
7
|
+
};
|
|
8
|
+
export declare const incrementDismissCount: (type: string, elementId: string, scheduleEndDate: number) => number;
|
|
9
|
+
export declare const setDismissCookie: (type: string, pauseDuration: number, elementId: string) => void;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setDismissCookie = exports.
|
|
3
|
+
exports.setDismissCookie = exports.incrementDismissCount = exports.decodeDismissCount = exports.parseCookies = exports.getDismissCountCookieName = exports.getDismissCookieName = void 0;
|
|
4
4
|
const DISMISS_PREFIX = "sps-dismissed-";
|
|
5
|
-
const
|
|
5
|
+
const DISMISS_COUNT_PREFIX = "sps-dismiss-count-";
|
|
6
6
|
const getDismissCookieName = (type, elementId) => `${DISMISS_PREFIX}${type}-${elementId}`;
|
|
7
7
|
exports.getDismissCookieName = getDismissCookieName;
|
|
8
|
-
const
|
|
9
|
-
exports.
|
|
8
|
+
const getDismissCountCookieName = (type, elementId) => `${DISMISS_COUNT_PREFIX}${type}-${elementId}`;
|
|
9
|
+
exports.getDismissCountCookieName = getDismissCountCookieName;
|
|
10
10
|
const parseCookies = (cookieString) => {
|
|
11
11
|
if (!cookieString) {
|
|
12
12
|
return {};
|
|
@@ -17,24 +17,41 @@ const parseCookies = (cookieString) => {
|
|
|
17
17
|
}));
|
|
18
18
|
};
|
|
19
19
|
exports.parseCookies = parseCookies;
|
|
20
|
-
const
|
|
20
|
+
const encodeDismissCount = (count, scheduleEndDate) => scheduleEndDate != null ? `${count}:${scheduleEndDate}` : String(count);
|
|
21
|
+
const decodeDismissCount = (value) => {
|
|
22
|
+
const [rawCount = "0", rawDate] = value.split(":");
|
|
23
|
+
return {
|
|
24
|
+
count: parseInt(rawCount, 10),
|
|
25
|
+
scheduleEndDate: rawDate != null ? parseInt(rawDate, 10) : null,
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
exports.decodeDismissCount = decodeDismissCount;
|
|
29
|
+
const incrementDismissCount = (type, elementId, scheduleEndDate) => {
|
|
21
30
|
if (typeof document === "undefined") {
|
|
22
|
-
return;
|
|
31
|
+
return 0;
|
|
23
32
|
}
|
|
24
|
-
const key = (0, exports.
|
|
33
|
+
const key = (0, exports.getDismissCountCookieName)(type, elementId);
|
|
25
34
|
const cookies = (0, exports.parseCookies)(document.cookie);
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
const raw = cookies[key];
|
|
36
|
+
let current = 0;
|
|
37
|
+
if (raw != null) {
|
|
38
|
+
const { count, scheduleEndDate: storedDate } = (0, exports.decodeDismissCount)(raw);
|
|
39
|
+
if (storedDate === scheduleEndDate && !isNaN(count)) {
|
|
40
|
+
current = count;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const next = current + 1;
|
|
44
|
+
const ttl = Math.max(0, Math.floor((scheduleEndDate - Date.now()) / 1000));
|
|
45
|
+
document.cookie = `${key}=${encodeDismissCount(next, scheduleEndDate)}; Max-Age=${ttl}; Path=/; SameSite=Lax`;
|
|
46
|
+
return next;
|
|
29
47
|
};
|
|
30
|
-
exports.
|
|
31
|
-
const setDismissCookie = (type,
|
|
48
|
+
exports.incrementDismissCount = incrementDismissCount;
|
|
49
|
+
const setDismissCookie = (type, pauseDuration, elementId) => {
|
|
32
50
|
if (typeof document === "undefined") {
|
|
33
51
|
return;
|
|
34
52
|
}
|
|
35
|
-
const maxAge = Math.floor(
|
|
53
|
+
const maxAge = Math.floor(pauseDuration / 1000);
|
|
36
54
|
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
55
|
};
|
|
39
56
|
exports.setDismissCookie = setDismissCookie;
|
|
40
57
|
//# sourceMappingURL=placementCookies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placementCookies.js","sourceRoot":"","sources":["../../../src/utils/placementCookies.ts"],"names":[],"mappings":";;;AAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,MAAM,
|
|
1
|
+
{"version":3,"file":"placementCookies.js","sourceRoot":"","sources":["../../../src/utils/placementCookies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
import type { PlacementType, PlacementTypeWithStringContent } from "../sps/placement.js";
|
|
2
|
-
export declare const
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export declare const isDismissed: (placementType: PlacementType, iframeId: string) => boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Options for the {@link addDismiss} function.
|
|
5
|
+
*/
|
|
6
|
+
export interface AddDismissOptions {
|
|
7
|
+
/**
|
|
8
|
+
* The maximum number of times the user may dismiss the placement before the schedule
|
|
9
|
+
* expiry TTL is used instead of {@link hideDuration}.
|
|
10
|
+
* Set to `null` to disable the limit.
|
|
11
|
+
*/
|
|
12
|
+
dismissLimit: number | null;
|
|
13
|
+
/**
|
|
14
|
+
* Duration in milliseconds to hide the placement after each dismiss while the count
|
|
15
|
+
* is below {@link dismissLimit}.
|
|
16
|
+
*/
|
|
17
|
+
hideDuration: number;
|
|
18
|
+
/**
|
|
19
|
+
* Unix timestamp (ms) at which the schedule expires. Used as the cookie TTL when
|
|
20
|
+
* {@link dismissLimit} is reached. Set to `null` to fall back to {@link hideDuration}.
|
|
21
|
+
*/
|
|
22
|
+
scheduleEndDate: number | null;
|
|
23
|
+
}
|
|
24
|
+
export declare const addDismiss: (placementType: PlacementType, iframeId: string, options: AddDismissOptions) => void;
|
|
5
25
|
export declare const getDismissScript: (placementType: PlacementTypeWithStringContent) => string;
|
|
@@ -1,38 +1,35 @@
|
|
|
1
|
-
import { setDismissCookie,
|
|
1
|
+
import { setDismissCookie, incrementDismissCount, getDismissCookieName, parseCookies, } from "../utils/placementCookies.js";
|
|
2
2
|
const DISMISS_KEY = "sps-dismiss-click";
|
|
3
|
-
const dismissListenerKeys = new
|
|
4
|
-
export const getDismissIframeId = (placementType) => `sps-${placementType}-poster`;
|
|
3
|
+
const dismissListenerKeys = new Map();
|
|
5
4
|
export const isDismissed = (placementType, iframeId) => {
|
|
6
5
|
if (typeof document === "undefined") {
|
|
7
6
|
return false;
|
|
8
7
|
}
|
|
9
|
-
const cookieName = getDismissCookieName(placementType, iframeId
|
|
8
|
+
const cookieName = getDismissCookieName(placementType, iframeId);
|
|
10
9
|
return cookieName in parseCookies(document.cookie);
|
|
11
10
|
};
|
|
12
|
-
export const addDismiss = (placementType, iframeId,
|
|
11
|
+
export const addDismiss = (placementType, iframeId, options) => {
|
|
13
12
|
const key = `${placementType}:${iframeId}`;
|
|
14
|
-
|
|
13
|
+
const alreadyRegistered = dismissListenerKeys.has(key);
|
|
14
|
+
dismissListenerKeys.set(key, options);
|
|
15
|
+
if (alreadyRegistered) {
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
|
-
dismissListenerKeys.add(key);
|
|
18
|
-
if (viewLimit) {
|
|
19
|
-
incrementViewCount(placementType, iframeId);
|
|
20
|
-
const cookies = parseCookies(document.cookie);
|
|
21
|
-
const count = parseInt(cookies[getViewCountCookieName(placementType, iframeId)] ?? "0", 10);
|
|
22
|
-
if (!isNaN(count) && count >= viewLimit) {
|
|
23
|
-
console.log("[SPS sdk] - Dismiss issued by view limit");
|
|
24
|
-
setDismissCookie(placementType, hideDuration, iframeId);
|
|
25
|
-
document.getElementById(iframeId)?.remove();
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
18
|
window.addEventListener("message", function (event) {
|
|
30
19
|
if (event.origin !== window.location.origin) {
|
|
31
20
|
return;
|
|
32
21
|
}
|
|
33
22
|
if (event.data.type === `${DISMISS_KEY}:${placementType}`) {
|
|
34
23
|
console.log("[SPS sdk] - Dismiss issued by user", event);
|
|
35
|
-
|
|
24
|
+
const currentOptions = dismissListenerKeys.get(key);
|
|
25
|
+
let pauseDuration = currentOptions.hideDuration;
|
|
26
|
+
if (currentOptions.dismissLimit !== null && currentOptions.scheduleEndDate !== null) {
|
|
27
|
+
const count = incrementDismissCount(placementType, iframeId, currentOptions.scheduleEndDate);
|
|
28
|
+
if (!isNaN(count) && count >= currentOptions.dismissLimit) {
|
|
29
|
+
pauseDuration = Math.max(0, currentOptions.scheduleEndDate - Date.now());
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
setDismissCookie(placementType, pauseDuration, iframeId);
|
|
36
33
|
document.getElementById(iframeId)?.remove();
|
|
37
34
|
}
|
|
38
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../../src/actions/dismiss.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../../src/actions/dismiss.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAExC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEjE,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;AAwBF,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,aAA4B,EAC5B,QAAgB,EAChB,OAA0B,EACpB,EAAE;IACR,MAAM,GAAG,GAAG,GAAG,aAAa,IAAI,QAAQ,EAAE,CAAC;IAC3C,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvD,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAEtC,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO;IACT,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,MAAM,cAAc,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YACrD,IAAI,aAAa,GAAG,cAAc,CAAC,YAAY,CAAC;YAEhD,IAAI,cAAc,CAAC,YAAY,KAAK,IAAI,IAAI,cAAc,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBACpF,MAAM,KAAK,GAAG,qBAAqB,CACjC,aAAa,EACb,QAAQ,EACR,cAAc,CAAC,eAAe,CAC/B,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;oBAC1D,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YAED,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YACzD,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
|
@@ -45,13 +45,20 @@ export type SPSPosterResponse<T extends PlacementType> = {
|
|
|
45
45
|
*/
|
|
46
46
|
failReason?: string;
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
48
|
+
* Duration in milliseconds to hide the placement after each dismiss while the dismiss
|
|
49
|
+
* count is below {@link dismissLimit}.
|
|
49
50
|
*/
|
|
50
51
|
hideDuration?: number;
|
|
51
52
|
/**
|
|
52
|
-
*
|
|
53
|
+
* The maximum number of times the user may dismiss the placement before the schedule
|
|
54
|
+
* expiry TTL ({@link scheduleEndDate}) is used instead of {@link hideDuration}.
|
|
53
55
|
*/
|
|
54
|
-
|
|
56
|
+
dismissLimit?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Unix timestamp (ms) at which the schedule expires. Used as the cookie TTL when
|
|
59
|
+
* {@link dismissLimit} is reached.
|
|
60
|
+
*/
|
|
61
|
+
scheduleEndDate?: number | null;
|
|
55
62
|
};
|
|
56
63
|
/**
|
|
57
64
|
* Returned by the SPS API when there is no content to display for the given placement.
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"apiClient.js","sourceRoot":"","sources":["../../src/apiClient.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/sps.d.ts
CHANGED
|
@@ -13,7 +13,6 @@ export type Poster<T extends PlacementType> = SPSPosterResponse<T> & {
|
|
|
13
13
|
trackingData: TrackingData;
|
|
14
14
|
pulseOrigin: PulseOrigin;
|
|
15
15
|
pulseObject: PulseObject;
|
|
16
|
-
iframeId: string;
|
|
17
16
|
};
|
|
18
17
|
/**
|
|
19
18
|
* The decision result from SPS, used to subsequently fetch poster content via
|
package/dist/esm/sps.js
CHANGED
|
@@ -3,7 +3,7 @@ import { createTrackingParams, } from "./tracking/create-tracking-params.js";
|
|
|
3
3
|
import { rewritePlaceholderVariables, rewriteJsonPosterVariables, } from "./sps/rewrite-salesposter-variables.js";
|
|
4
4
|
import { SpsPublication } from "./sps/publication.js";
|
|
5
5
|
import { fetchDecision, fetchDecisionsByContext, fetchPlacementsByContext, fetchPoster, } from "./apiClient.js";
|
|
6
|
-
import { addDismiss,
|
|
6
|
+
import { addDismiss, isDismissed } from "./actions/dismiss.js";
|
|
7
7
|
/**
|
|
8
8
|
* Main entry point for the SPS SDK. Provides methods to fetch posters and decisions
|
|
9
9
|
* from the SPS API for a given publication and environment.
|
|
@@ -51,7 +51,7 @@ export class SPS {
|
|
|
51
51
|
*/
|
|
52
52
|
getPoster = async (placementType, props = {}, dismissOptions) => {
|
|
53
53
|
await this.validateClientEnvironment();
|
|
54
|
-
if (isDismissed(placementType, dismissOptions
|
|
54
|
+
if (dismissOptions && isDismissed(placementType, dismissOptions.elementId)) {
|
|
55
55
|
return null;
|
|
56
56
|
}
|
|
57
57
|
const poster = await fetchPoster(`${this.endpoint}/${this.publication}/${placementType}`, props.params || {}, props.fallbackPoster, props.showFallbackPosterOnNoContent ?? false, props.timeoutMs);
|
|
@@ -59,7 +59,7 @@ export class SPS {
|
|
|
59
59
|
return null;
|
|
60
60
|
}
|
|
61
61
|
const posterResponse = poster.posterResponse;
|
|
62
|
-
const enriched = await this.enrichPosterResponse(posterResponse, placementType, props,
|
|
62
|
+
const enriched = await this.enrichPosterResponse(posterResponse, placementType, props, {
|
|
63
63
|
articleType: props.params?.articleType,
|
|
64
64
|
posterType: props.params?.posterType,
|
|
65
65
|
section: props.params?.section,
|
|
@@ -67,6 +67,13 @@ export class SPS {
|
|
|
67
67
|
failReason: poster?.failReason,
|
|
68
68
|
segmentNames: posterResponse.segmentNames || [],
|
|
69
69
|
});
|
|
70
|
+
if (dismissOptions) {
|
|
71
|
+
addDismiss(placementType, dismissOptions.elementId, {
|
|
72
|
+
dismissLimit: posterResponse.dismissLimit ?? null,
|
|
73
|
+
hideDuration: posterResponse.hideDuration ?? 86400000,
|
|
74
|
+
scheduleEndDate: posterResponse.scheduleEndDate ?? null,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
70
77
|
return enriched;
|
|
71
78
|
};
|
|
72
79
|
/**
|
|
@@ -123,21 +130,28 @@ export class SPS {
|
|
|
123
130
|
if (!contentKey) {
|
|
124
131
|
return null;
|
|
125
132
|
}
|
|
126
|
-
if (isDismissed(placementType, dismissOptions
|
|
133
|
+
if (dismissOptions && isDismissed(placementType, dismissOptions.elementId)) {
|
|
127
134
|
return null;
|
|
128
135
|
}
|
|
129
136
|
const poster = await fetchPoster(`${this.endpoint}/poster/${encodeURIComponent(contentKey)}`, {}, props.fallbackPoster, props.showFallbackPosterOnNoContent ?? false, props.timeoutMs);
|
|
130
137
|
if (!poster) {
|
|
131
138
|
return null;
|
|
132
139
|
}
|
|
133
|
-
const enriched = await this.enrichPosterResponse(poster.posterResponse, placementType, props,
|
|
140
|
+
const enriched = await this.enrichPosterResponse(poster.posterResponse, placementType, props, {
|
|
134
141
|
articleType,
|
|
135
142
|
failReason: poster?.failReason,
|
|
136
143
|
segmentNames,
|
|
137
144
|
});
|
|
145
|
+
if (dismissOptions) {
|
|
146
|
+
addDismiss(placementType, dismissOptions.elementId, {
|
|
147
|
+
dismissLimit: poster.posterResponse.dismissLimit ?? null,
|
|
148
|
+
hideDuration: poster.posterResponse.hideDuration ?? 86400000,
|
|
149
|
+
scheduleEndDate: poster.posterResponse.scheduleEndDate ?? null,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
138
152
|
return enriched;
|
|
139
153
|
};
|
|
140
|
-
async enrichPosterResponse(posterResponse, placementType, options,
|
|
154
|
+
async enrichPosterResponse(posterResponse, placementType, options, posterData) {
|
|
141
155
|
const { trackingData, pulseOrigin, pulseObject, searchParams, offerData } = await createTrackingParams({
|
|
142
156
|
contentId: options.tracking?.contentId || "",
|
|
143
157
|
contentType: options.tracking?.contentType || "article",
|
|
@@ -175,15 +189,9 @@ export class SPS {
|
|
|
175
189
|
appendSearchParams: options.appendSearchParams ?? true,
|
|
176
190
|
});
|
|
177
191
|
}
|
|
178
|
-
const iframeId = dismissOptions?.elementId || getDismissIframeId(placementType);
|
|
179
|
-
// Only add dismiss functionality for placement types that support it
|
|
180
|
-
if (posterResponse.hideDuration) {
|
|
181
|
-
addDismiss(placementType, iframeId, posterResponse.hideDuration, posterResponse.viewLimit || null);
|
|
182
|
-
}
|
|
183
192
|
return {
|
|
184
193
|
...posterResponse,
|
|
185
194
|
segmentNames: posterData.segmentNames ?? [],
|
|
186
|
-
iframeId,
|
|
187
195
|
content,
|
|
188
196
|
trackingData,
|
|
189
197
|
pulseOrigin,
|
|
@@ -222,7 +230,7 @@ export class SPS {
|
|
|
222
230
|
}
|
|
223
231
|
async enrichContextPlacements(placements, options) {
|
|
224
232
|
return Promise.all(placements.map(async (placement) => {
|
|
225
|
-
const enriched = await this.enrichPosterResponse(placement, placement.placementType, options,
|
|
233
|
+
const enriched = await this.enrichPosterResponse(placement, placement.placementType, options, {
|
|
226
234
|
segmentNames: placement.segmentNames,
|
|
227
235
|
});
|
|
228
236
|
return { ...enriched, type: placement.placementType };
|
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,EACL,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,WAAW,GAIZ,MAAM,aAAa,CAAC;AAOrB,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"sps.js","sourceRoot":"","sources":["../../src/sps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export declare const getDismissCookieName: (type: string, elementId: string) => string;
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const getDismissCountCookieName: (type: string, elementId: string) => string;
|
|
3
3
|
export declare const parseCookies: (cookieString: string) => Record<string, string>;
|
|
4
|
-
export declare const
|
|
5
|
-
|
|
4
|
+
export declare const decodeDismissCount: (value: string) => {
|
|
5
|
+
count: number;
|
|
6
|
+
scheduleEndDate: number | null;
|
|
7
|
+
};
|
|
8
|
+
export declare const incrementDismissCount: (type: string, elementId: string, scheduleEndDate: number) => number;
|
|
9
|
+
export declare const setDismissCookie: (type: string, pauseDuration: number, elementId: string) => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const DISMISS_PREFIX = "sps-dismissed-";
|
|
2
|
-
const
|
|
2
|
+
const DISMISS_COUNT_PREFIX = "sps-dismiss-count-";
|
|
3
3
|
export const getDismissCookieName = (type, elementId) => `${DISMISS_PREFIX}${type}-${elementId}`;
|
|
4
|
-
export const
|
|
4
|
+
export const getDismissCountCookieName = (type, elementId) => `${DISMISS_COUNT_PREFIX}${type}-${elementId}`;
|
|
5
5
|
export const parseCookies = (cookieString) => {
|
|
6
6
|
if (!cookieString) {
|
|
7
7
|
return {};
|
|
@@ -11,22 +11,38 @@ export const parseCookies = (cookieString) => {
|
|
|
11
11
|
return [key.trim(), rest.join("=").trim()];
|
|
12
12
|
}));
|
|
13
13
|
};
|
|
14
|
-
|
|
14
|
+
const encodeDismissCount = (count, scheduleEndDate) => scheduleEndDate != null ? `${count}:${scheduleEndDate}` : String(count);
|
|
15
|
+
export const decodeDismissCount = (value) => {
|
|
16
|
+
const [rawCount = "0", rawDate] = value.split(":");
|
|
17
|
+
return {
|
|
18
|
+
count: parseInt(rawCount, 10),
|
|
19
|
+
scheduleEndDate: rawDate != null ? parseInt(rawDate, 10) : null,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export const incrementDismissCount = (type, elementId, scheduleEndDate) => {
|
|
15
23
|
if (typeof document === "undefined") {
|
|
16
|
-
return;
|
|
24
|
+
return 0;
|
|
17
25
|
}
|
|
18
|
-
const key =
|
|
26
|
+
const key = getDismissCountCookieName(type, elementId);
|
|
19
27
|
const cookies = parseCookies(document.cookie);
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
const raw = cookies[key];
|
|
29
|
+
let current = 0;
|
|
30
|
+
if (raw != null) {
|
|
31
|
+
const { count, scheduleEndDate: storedDate } = decodeDismissCount(raw);
|
|
32
|
+
if (storedDate === scheduleEndDate && !isNaN(count)) {
|
|
33
|
+
current = count;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const next = current + 1;
|
|
37
|
+
const ttl = Math.max(0, Math.floor((scheduleEndDate - Date.now()) / 1000));
|
|
38
|
+
document.cookie = `${key}=${encodeDismissCount(next, scheduleEndDate)}; Max-Age=${ttl}; Path=/; SameSite=Lax`;
|
|
39
|
+
return next;
|
|
23
40
|
};
|
|
24
|
-
export const setDismissCookie = (type,
|
|
41
|
+
export const setDismissCookie = (type, pauseDuration, elementId) => {
|
|
25
42
|
if (typeof document === "undefined") {
|
|
26
43
|
return;
|
|
27
44
|
}
|
|
28
|
-
const maxAge = Math.floor(
|
|
45
|
+
const maxAge = Math.floor(pauseDuration / 1000);
|
|
29
46
|
document.cookie = `${getDismissCookieName(type, elementId)}=1; Max-Age=${maxAge}; Path=/; SameSite=Lax`;
|
|
30
|
-
document.cookie = `${getViewCountCookieName(type, elementId)}=0; Path=/; SameSite=Lax`;
|
|
31
47
|
};
|
|
32
48
|
//# sourceMappingURL=placementCookies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placementCookies.js","sourceRoot":"","sources":["../../../src/utils/placementCookies.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,MAAM,
|
|
1
|
+
{"version":3,"file":"placementCookies.js","sourceRoot":"","sources":["../../../src/utils/placementCookies.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var SpsPulseHelpersBundle=(()=>{var
|
|
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 O(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"&&e.type.startsWith(y)}function D(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),!O(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 L(e){let t="tracker"in e&&typeof e.tracker=="object"?e.tracker:{};return{...e,tracker:{...t,proxyVersion:q}}}function _(e,t,r){let s="provider"in e&&typeof e.provider=="object"?e.provider:{};return{...e,provider:{...s,component:t,componentVersion:r}}}var v=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=L(s),a=_(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 D({type:W,payload:t},{target:this.target});if(!O(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=L(r),a=[_(n,this.component,this.componentVersion),...s];return this.invoke({method:e,args:a})}]));function ce(){return class extends v{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,I,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=(I=(x=P.getAttribute("href"))==null?void 0:x.split("?"))==null?void 0:I[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"}-${$(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 U={"sps-pulse-helpers":"2.2.0","pulse-tracker-proxy":"1.2.0"};var A=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,""),$=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=A(r)?$(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:U["sps-pulse-helpers"]});K(i,e,a,p);let o=f=>{z||(z=!0,Y(i,e,a,p,f))};if(A(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);})();
|