@schibsted/sps-sdk 5.1.0 → 5.2.0-CBT-20903.2

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/esm/sps.d.ts CHANGED
@@ -2,7 +2,7 @@ import { type Environment, type SpsParams, type GetPosterByDecisionParams, type
2
2
  import { type ContentType, type TrackingData, type TrackingParamsProps } from "./tracking/create-tracking-params.js";
3
3
  import { SpsPublication } from "./sps/publication.js";
4
4
  import { type SPSPosterResponse } from "./apiClient.js";
5
- import type { PlacementType, PlacementTypeWithOptionalFallback, PlacementTypeWithRequiredFallback } from "./sps/placement.js";
5
+ import type { PlacementType, PlacementTypeWithOptionalFallback, PlacementTypeWithRequiredFallback, PlacementTypeWithStringContent } from "./sps/placement.js";
6
6
  /**
7
7
  * The full poster response enriched with segment names, tracking data, and Pulse event objects.
8
8
  * Returned by {@link SPS.getPoster} and {@link SPS.getPosterByDecision}.
@@ -94,25 +94,32 @@ export type SpsRequestOptions<T extends PlacementType> = {
94
94
  timeoutMs?: number;
95
95
  };
96
96
  /**
97
- * Options for {@link SPS.getFrontpagePlacements} and {@link SPS.getArticlePagePlacements}.
97
+ * Options for {@link SPS.renderFrontpagePlacements} and {@link SPS.renderArticlePagePlacements}.
98
98
  * @typeParam T - The placement type
99
99
  * @typeParam P - The params shape sent to SPS for this request
100
100
  */
101
101
  export type SpsContextPlacementsOptions<T extends PlacementType, P extends SpsParams = SpsParams> = Omit<SpsRequestOptions<T>, "fallbackPoster" | "showFallbackPosterOnNoContent"> & {
102
102
  /** Query params forwarded to the SPS API for the whole request. */
103
103
  params?: P;
104
- /** Placement types to exclude from the priority-ordered result. */
105
- excludedPlacementTypes?: PlacementType[];
106
104
  /**
107
105
  * Per-type fallback posters to return when the SPS context API call fails entirely
108
106
  * (network error or non-OK response). Each entry is enriched the same way as a real poster.
109
107
  */
110
108
  fallbackPosters?: FallbackPostersMap;
111
109
  };
110
+ /**
111
+ * Options for {@link renderFrontpagePlacements} and {@link renderArticlePagePlacements}.
112
+ * The SDK sets `context` in `params` and fires TPaaS Pulse events.
113
+ * @typeParam P - The params shape sent to SPS for this request
114
+ */
115
+ export type RenderPlacementsOptions<P extends SpsParams = SpsParams> = Pick<SpsOptions, "publication" | "environment" | "cookieDomain"> & Omit<SpsContextPlacementsOptions<PlacementType, P>, "params" | "pulseEvents" | "tracking" | "generateLoginUrl"> & {
116
+ /** Query params forwarded to the SPS API for the whole request. `context` is set by the SDK. */
117
+ params?: Omit<P, "context">;
118
+ };
112
119
  /**
113
120
  * Maps placement types to their fallback poster content.
114
- * Used by {@link SPS.getFrontpagePlacements} and {@link SPS.getArticlePagePlacements}
115
- * to return pre-configured posters when the SPS API call fails entirely.
121
+ * Used by {@link SPS.renderFrontpagePlacements} and {@link SPS.renderArticlePagePlacements}
122
+ * to render pre-configured posters when the SPS API call fails entirely.
116
123
  */
117
124
  export type FallbackPostersMap = {
118
125
  [T in PlacementType]?: SPSPosterResponse<T>;
@@ -126,8 +133,8 @@ export type SpsContextDecisionsOptions<P extends SpsParams = SpsParams> = {
126
133
  params?: P;
127
134
  /** Pass `req.headers.cookie` when calling server-side. */
128
135
  cookies?: string;
129
- /** Placement types to exclude from the priority-ordered result. */
130
- excludedPlacementTypes?: PlacementType[];
136
+ /** Placement types to include in the priority-ordered result. */
137
+ placementTypes?: PlacementType[];
131
138
  };
132
139
  /**
133
140
  * Variant of {@link SpsRequestOptions} that requires a `fallbackPoster` and forces
@@ -138,6 +145,14 @@ export type SpsRequestOptionsWithFallback<T extends PlacementType> = SpsRequestO
138
145
  fallbackPoster: SPSPosterResponse<T>;
139
146
  showFallbackPosterOnNoContent: true;
140
147
  };
148
+ /**
149
+ * A placement type and the host element its poster is rendered in.
150
+ * Used by {@link SPS.renderFrontpagePlacements} and {@link SPS.renderArticlePagePlacements}.
151
+ */
152
+ export type PlacementElement = {
153
+ placementType: PlacementTypeWithStringContent;
154
+ element: HTMLElement;
155
+ };
141
156
  /**
142
157
  * Options for the dismiss functionality, enabling a placement to be hidden when
143
158
  * an element with `data-dismiss-on-click` is clicked inside the placement.
@@ -295,6 +310,28 @@ export declare class SPS {
295
310
  */
296
311
  getPosterByDecision: GetPosterByDecision;
297
312
  private enrichPosterResponse;
313
+ /**
314
+ * Fetches priority-ordered placements for the frontpage context and renders each one
315
+ * in an iframe inside its element. Must be called from a browser environment.
316
+ * Also exported as {@link renderFrontpagePlacements}, which needs no SDK instance.
317
+ *
318
+ * @param placements - The placement types to fetch, each with the element to render it in.
319
+ * @param options - The publication and environment to request from, and request options including `params`.
320
+ * @returns The placement types that were rendered.
321
+ */
322
+ static renderFrontpagePlacements<P extends FrontpageParams = FrontpageParams>(placements: PlacementElement[], options: RenderPlacementsOptions<P>): Promise<PlacementTypeWithStringContent[]>;
323
+ /**
324
+ * Fetches priority-ordered placements for the article page context and renders each one
325
+ * in an iframe inside its element. Must be called from a browser environment.
326
+ * Also exported as {@link renderArticlePagePlacements}, which needs no SDK instance.
327
+ *
328
+ * @param placements - The placement types to fetch, each with the element to render it in.
329
+ * @param options - The publication and environment to request from, and request options including `params`.
330
+ * @returns The placement types that were rendered.
331
+ */
332
+ static renderArticlePagePlacements<P extends ArticlePageParams = ArticlePageParams>(placements: PlacementElement[], options: RenderPlacementsOptions<P>): Promise<PlacementTypeWithStringContent[]>;
333
+ private static renderContextPlacements;
334
+ private renderPlacements;
298
335
  /**
299
336
  * Fetches priority-ordered placements (full content) for the frontpage context.
300
337
  * Must be called from a browser environment.
@@ -302,12 +339,11 @@ export declare class SPS {
302
339
  * Applies the same post-processing as {@link SPS.getPoster}: rewrites login/redirect
303
340
  * placeholder variables and appends tracking search params to links.
304
341
  *
305
- * @param options - Optional request options including tracking context, URL rewrite callbacks, `params`, and `excludedPlacementTypes`.
342
+ * @param placementTypes - The placement types to request.
343
+ * @param options - Request options including tracking context, URL rewrite callbacks, and `params`.
306
344
  * @returns Array of enriched placements for the frontpage context, fallback posters (if configured) on API failure, or `[]` otherwise.
307
345
  */
308
- getFrontpagePlacements<P extends FrontpageParams = FrontpageParams>(options?: SpsContextPlacementsOptions<PlacementType, P>): Promise<(Poster<PlacementType> & {
309
- type: PlacementType;
310
- })[]>;
346
+ private getFrontpagePlacements;
311
347
  /**
312
348
  * Fetches priority-ordered placements (full content) for the article page context.
313
349
  * Must be called from a browser environment.
@@ -315,12 +351,11 @@ export declare class SPS {
315
351
  * Applies the same post-processing as {@link SPS.getPoster}: rewrites login/redirect
316
352
  * placeholder variables and appends tracking search params to links.
317
353
  *
318
- * @param options - Optional request options including tracking context, URL rewrite callbacks, `params`, and `excludedPlacementTypes`.
354
+ * @param placementTypes - The placement types to request.
355
+ * @param options - Request options including tracking context, URL rewrite callbacks, and `params`.
319
356
  * @returns Array of enriched placements for the article page context, fallback posters (if configured) on API failure, or `[]` otherwise.
320
357
  */
321
- getArticlePagePlacements<P extends ArticlePageParams = ArticlePageParams>(options?: SpsContextPlacementsOptions<PlacementType, P>): Promise<(Poster<PlacementType> & {
322
- type: PlacementType;
323
- })[]>;
358
+ private getArticlePagePlacements;
324
359
  private enrichContextPlacements;
325
360
  private enrichFallbackPosters;
326
361
  /**
@@ -329,7 +364,7 @@ export declare class SPS {
329
364
  *
330
365
  * Returns values compatible with {@link SPS.getPosterByDecision}.
331
366
  *
332
- * @param options - Optional. Pass `cookies: req.headers.cookie` when calling server-side, and/or `params`/`excludedPlacementTypes`.
367
+ * @param options - Optional. Pass `cookies: req.headers.cookie` when calling server-side, and/or `params`/`placementTypes`.
333
368
  * @returns Array of decisions for the frontpage context, or `[]` on error.
334
369
  */
335
370
  getFrontpageDecisions<P extends FrontpageParams = FrontpageParams>(options?: SpsContextDecisionsOptions<P>): Promise<Decision<PlacementType>[]>;
@@ -339,9 +374,11 @@ export declare class SPS {
339
374
  *
340
375
  * Returns values compatible with {@link SPS.getPosterByDecision}.
341
376
  *
342
- * @param options - Optional. Pass `cookies: req.headers.cookie` when calling server-side, and/or `params`/`excludedPlacementTypes`.
377
+ * @param options - Optional. Pass `cookies: req.headers.cookie` when calling server-side, and/or `params`/`placementTypes`.
343
378
  * @returns Array of decisions for the article page context, or `[]` on error.
344
379
  */
345
380
  getArticlePageDecisions<P extends ArticlePageParams = ArticlePageParams>(options?: SpsContextDecisionsOptions<P>): Promise<Decision<PlacementType>[]>;
346
381
  }
382
+ export declare const renderFrontpagePlacements: typeof SPS.renderFrontpagePlacements;
383
+ export declare const renderArticlePagePlacements: typeof SPS.renderArticlePagePlacements;
347
384
  export {};
package/dist/esm/sps.js CHANGED
@@ -5,6 +5,20 @@ import { SpsPublication } from "./sps/publication.js";
5
5
  import { fetchDecision, fetchDecisionsByContext, fetchPlacementsByContext, fetchPoster, } from "./apiClient.js";
6
6
  import { addDismiss, getDismissIframeId, isDismissed } from "./actions/dismiss.js";
7
7
  import { addConsentForwarding } from "./actions/consent.js";
8
+ import { renderPosterInIframe } from "./actions/iframe.js";
9
+ /**
10
+ * The domain SPS is requested from for each publication, used by {@link renderFrontpagePlacements}
11
+ * and {@link renderArticlePagePlacements}. Publications not listed use the default domain.
12
+ */
13
+ const publicationDomains = {
14
+ [SpsPublication.AB]: "aftonbladet.se",
15
+ [SpsPublication.AP]: "aftenposten.no",
16
+ [SpsPublication.BT]: "bt.no",
17
+ [SpsPublication.E24]: "e24.no",
18
+ [SpsPublication.SA]: "aftenbladet.no",
19
+ [SpsPublication.SVD]: "svd.se",
20
+ [SpsPublication.VG]: "vg.no",
21
+ };
8
22
  /**
9
23
  * Main entry point for the SPS SDK. Provides methods to fetch posters and decisions
10
24
  * from the SPS API for a given publication and environment.
@@ -198,6 +212,61 @@ export class SPS {
198
212
  pulseObject,
199
213
  };
200
214
  }
215
+ /**
216
+ * Fetches priority-ordered placements for the frontpage context and renders each one
217
+ * in an iframe inside its element. Must be called from a browser environment.
218
+ * Also exported as {@link renderFrontpagePlacements}, which needs no SDK instance.
219
+ *
220
+ * @param placements - The placement types to fetch, each with the element to render it in.
221
+ * @param options - The publication and environment to request from, and request options including `params`.
222
+ * @returns The placement types that were rendered.
223
+ */
224
+ static async renderFrontpagePlacements(placements, options) {
225
+ return SPS.renderContextPlacements("frontpage", placements, options);
226
+ }
227
+ /**
228
+ * Fetches priority-ordered placements for the article page context and renders each one
229
+ * in an iframe inside its element. Must be called from a browser environment.
230
+ * Also exported as {@link renderArticlePagePlacements}, which needs no SDK instance.
231
+ *
232
+ * @param placements - The placement types to fetch, each with the element to render it in.
233
+ * @param options - The publication and environment to request from, and request options including `params`.
234
+ * @returns The placement types that were rendered.
235
+ */
236
+ static async renderArticlePagePlacements(placements, options) {
237
+ return SPS.renderContextPlacements("article", placements, options);
238
+ }
239
+ static async renderContextPlacements(context, placements, { publication, environment, cookieDomain, params, ...options }) {
240
+ const sps = new SPS({
241
+ publication,
242
+ domain: publicationDomains[publication],
243
+ environment,
244
+ cookieDomain,
245
+ });
246
+ const contextOptions = {
247
+ ...options,
248
+ params: { ...params, context },
249
+ pulseEvents: { tpaas: true },
250
+ };
251
+ return sps.renderPlacements(placements, (placementTypes) => context === "frontpage"
252
+ ? sps.getFrontpagePlacements(placementTypes, contextOptions)
253
+ : sps.getArticlePagePlacements(placementTypes, contextOptions));
254
+ }
255
+ async renderPlacements(placements, fetchPosters) {
256
+ const placementTypes = placements.map((p) => p.placementType);
257
+ if (new Set(placementTypes).size !== placementTypes.length) {
258
+ throw new Error("[SPS sdk] Each placement type can only be rendered in one element");
259
+ }
260
+ const posters = await fetchPosters(placementTypes);
261
+ placements.forEach(({ element }) => element.replaceChildren());
262
+ return Promise.all(posters.flatMap((poster) => {
263
+ const placement = placements.find((p) => p.placementType === poster.type);
264
+ if (!placement) {
265
+ return [];
266
+ }
267
+ return renderPosterInIframe(placement.element, poster.iframeId, poster.content).then(() => placement.placementType);
268
+ }));
269
+ }
201
270
  /**
202
271
  * Fetches priority-ordered placements (full content) for the frontpage context.
203
272
  * Must be called from a browser environment.
@@ -205,14 +274,15 @@ export class SPS {
205
274
  * Applies the same post-processing as {@link SPS.getPoster}: rewrites login/redirect
206
275
  * placeholder variables and appends tracking search params to links.
207
276
  *
208
- * @param options - Optional request options including tracking context, URL rewrite callbacks, `params`, and `excludedPlacementTypes`.
277
+ * @param placementTypes - The placement types to request.
278
+ * @param options - Request options including tracking context, URL rewrite callbacks, and `params`.
209
279
  * @returns Array of enriched placements for the frontpage context, fallback posters (if configured) on API failure, or `[]` otherwise.
210
280
  */
211
- async getFrontpagePlacements(options = {}) {
281
+ async getFrontpagePlacements(placementTypes, options) {
212
282
  await this.validateClientEnvironment();
213
- const result = await fetchPlacementsByContext(this.publication, "frontpage", this.endpoint, options.params, undefined, options.excludedPlacementTypes, options.timeoutMs);
283
+ const result = await fetchPlacementsByContext(this.publication, "frontpage", this.endpoint, options.params, undefined, placementTypes, options.timeoutMs);
214
284
  if (!result) {
215
- return options.fallbackPosters ? this.enrichFallbackPosters(options) : [];
285
+ return options.fallbackPosters ? this.enrichFallbackPosters(placementTypes, options) : [];
216
286
  }
217
287
  return this.enrichContextPlacements(result.placements, options);
218
288
  }
@@ -223,14 +293,15 @@ export class SPS {
223
293
  * Applies the same post-processing as {@link SPS.getPoster}: rewrites login/redirect
224
294
  * placeholder variables and appends tracking search params to links.
225
295
  *
226
- * @param options - Optional request options including tracking context, URL rewrite callbacks, `params`, and `excludedPlacementTypes`.
296
+ * @param placementTypes - The placement types to request.
297
+ * @param options - Request options including tracking context, URL rewrite callbacks, and `params`.
227
298
  * @returns Array of enriched placements for the article page context, fallback posters (if configured) on API failure, or `[]` otherwise.
228
299
  */
229
- async getArticlePagePlacements(options = {}) {
300
+ async getArticlePagePlacements(placementTypes, options) {
230
301
  await this.validateClientEnvironment();
231
- const result = await fetchPlacementsByContext(this.publication, "article", this.endpoint, options.params, undefined, options.excludedPlacementTypes, options.timeoutMs);
302
+ const result = await fetchPlacementsByContext(this.publication, "article", this.endpoint, options.params, undefined, placementTypes, options.timeoutMs);
232
303
  if (!result) {
233
- return options.fallbackPosters ? this.enrichFallbackPosters(options) : [];
304
+ return options.fallbackPosters ? this.enrichFallbackPosters(placementTypes, options) : [];
234
305
  }
235
306
  return this.enrichContextPlacements(result.placements, options);
236
307
  }
@@ -246,9 +317,9 @@ export class SPS {
246
317
  return { ...enriched, type: placement.placementType };
247
318
  }));
248
319
  }
249
- async enrichFallbackPosters(options) {
320
+ async enrichFallbackPosters(placementTypes, options) {
250
321
  return Promise.all(Object.entries(options.fallbackPosters ?? {})
251
- .filter(([placementType]) => !options.excludedPlacementTypes?.includes(placementType))
322
+ .filter(([placementType]) => placementTypes.includes(placementType))
252
323
  .filter(([, poster]) => poster !== undefined)
253
324
  .map(async ([placementType, poster]) => {
254
325
  const enriched = await this.enrichPosterResponse(poster, placementType, options, undefined, {
@@ -268,11 +339,11 @@ export class SPS {
268
339
  *
269
340
  * Returns values compatible with {@link SPS.getPosterByDecision}.
270
341
  *
271
- * @param options - Optional. Pass `cookies: req.headers.cookie` when calling server-side, and/or `params`/`excludedPlacementTypes`.
342
+ * @param options - Optional. Pass `cookies: req.headers.cookie` when calling server-side, and/or `params`/`placementTypes`.
272
343
  * @returns Array of decisions for the frontpage context, or `[]` on error.
273
344
  */
274
345
  async getFrontpageDecisions(options = {}) {
275
- const { placements } = await fetchDecisionsByContext(this.publication, "frontpage", this.endpoint, options.params, options.cookies, options.excludedPlacementTypes);
346
+ const { placements } = await fetchDecisionsByContext(this.publication, "frontpage", this.endpoint, options.params, options.cookies, options.placementTypes);
276
347
  return placements.map((d) => ({
277
348
  placementType: d.placementType,
278
349
  contentKey: d.contentKey,
@@ -285,11 +356,11 @@ export class SPS {
285
356
  *
286
357
  * Returns values compatible with {@link SPS.getPosterByDecision}.
287
358
  *
288
- * @param options - Optional. Pass `cookies: req.headers.cookie` when calling server-side, and/or `params`/`excludedPlacementTypes`.
359
+ * @param options - Optional. Pass `cookies: req.headers.cookie` when calling server-side, and/or `params`/`placementTypes`.
289
360
  * @returns Array of decisions for the article page context, or `[]` on error.
290
361
  */
291
362
  async getArticlePageDecisions(options = {}) {
292
- const { placements } = await fetchDecisionsByContext(this.publication, "article", this.endpoint, options.params, options.cookies, options.excludedPlacementTypes);
363
+ const { placements } = await fetchDecisionsByContext(this.publication, "article", this.endpoint, options.params, options.cookies, options.placementTypes);
293
364
  return placements.map((d) => ({
294
365
  placementType: d.placementType,
295
366
  contentKey: d.contentKey,
@@ -297,4 +368,6 @@ export class SPS {
297
368
  }));
298
369
  }
299
370
  }
371
+ export const renderFrontpagePlacements = SPS.renderFrontpagePlacements;
372
+ export const renderArticlePagePlacements = SPS.renderArticlePagePlacements;
300
373
  //# sourceMappingURL=sps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sps.js","sourceRoot":"","sources":["../../src/sps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sps.js","sourceRoot":"","sources":["../../src/sps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- "use strict";var SpsPulseHelpersBundle=(()=>{var F=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var oe=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var se=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of oe(t))!ne.call(e,o)&&o!==r&&F(e,o,{get:()=>t[o],enumerable:!(n=re(t,o))||n.enumerable});return e};var ae=e=>se(F({},"__esModule",{value:!0}),e);var de={};var y="pulse-tracker-proxy",ie=`${y}:request`,fe=`${y}:ack`,D=`${y}:invoke`,G=`${y}:return`,L=`${y}:return-error`,q=["trackAnonymousViewUIElement","trackEngagementAd","trackEngagementAffiliate","trackEngagementAudio","trackEngagementForm","trackEngagementHealthUIElement","trackEngagementOffer","trackEngagementSchoolUIElement","trackEngagementSportsUIElement","trackEngagementTeaser","trackEngagementTvModule","trackEngagementUIElement","trackEngagementVideo","trackEngagementVideoAd","trackEngagementWidget","trackCompletedHealthAction","trackImpressionAd","trackImpressionAdSlot","trackImpressionAffiliate","trackImpressionForm","trackImpressionHealthUIElement","trackImpressionOffer","trackImpressionPlayer","trackImpressionSchoolUIElement","trackImpressionSportsUIElement","trackImpressionTeaser","trackImpressionUIElement","trackImpressionWidget","trackLoadAd","trackRequestAd","trackLeaveArticle","trackLeaveAudioPage","trackLeaveError","trackLeaveFrontpage","trackLeaveLandingpage","trackLeaveListing","trackLeaveLockedArticle","trackLeaveLockedAudioPage","trackLeaveLockedPage","trackLeaveLockedVideoPage","trackLeavePage","trackLeaveSchoolPage","trackLeaveSportsPage","trackLeaveVideoPage","trackLeaveWeather","trackViewArticle","trackViewAudioPage","trackViewError","trackViewFrontpage","trackViewHealthPage","trackViewLandingpage","trackViewListing","trackViewLockedArticle","trackViewLockedAudioPage","trackViewLockedPage","trackViewLockedVideoPage","trackViewPage","trackViewSchoolPage","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 O(e,{target:t,timeout:r,debug:n=()=>{}}){return new Promise((o,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=s=>{if(n("[Pulse Tracker Proxy] Received the response on the MessageChannel",s),!V(s.data)){n("[Pulse Tracker Proxy] Response was not a valid Proxy Message",s.data);return}s.data.type===L&&(n("[Pulse Tracker Proxy] Received an return error response",s.data.error),clearTimeout(p),a.port1.close(),c(new Error(s.data.error))),n("[Pulse Tracker Proxy] Received a valid response",s.data),clearTimeout(p),a.port1.close(),o(s.data)};a.port1.onmessage=i,n("[Pulse Tracker Proxy] Sending message to target window",e),t.postMessage(e,"*",[a.port2])})}var Y="2.0.0-rc.19";function j(e){let t="tracker"in e&&typeof e.tracker=="object"?e.tracker:{};return{...e,tracker:{...t,proxyVersion:Y}}}function R(e,t,r){let n="provider"in e&&typeof e.provider=="object"?e.provider:{};return{...e,provider:{...n,component:t,componentVersion:r}}}var v=class{constructor(t,r,n,o){this.target=t,this.component=r,this.componentVersion=n,this.debug=o}track(...t){this.debug("[Pulse Tracker Proxy] Calling `track`",t);let[r,n,...o]=t,c=j(n),a=R(c,this.component,this.componentVersion),p=[r,a,...o];return this.invoke({method:"track",args:p})}async invoke(t){this.debug("[Pulse Tracker Proxy] Invoking remote function",t);let r=await O({type:D,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===L)throw this.debug("[Pulse Tracker Proxy] Error response from proxy",r.error),new Error(r.error);if(r.type===G)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 ce=Object.fromEntries(q.map(e=>[e,function(...t){this.debug("[Pulse Tracker Proxy] Calling `track`",t);let[r,...n]=t,o=j(r),a=[R(o,this.component,this.componentVersion),...n];return this.invoke({method:e,args:a})}]));function pe(){return class extends v{constructor(e,t,r,n){super(e,t,r,n),n("[Pulse TPaaS Proxy] Initialized"),Object.assign(this,ce)}}}var le=pe();var me=e=>e==="payment.schibsted.com"||e.startsWith("bestilling.")||e==="pay.pre.schibsted.digital"||e.startsWith("test-bestilling."),ue=e=>e==="login.schibsted.com"||e==="identity-pre.schibsted.com",K=e=>{var t;try{let n=new URL((t=e.getAttribute("href"))!=null?t:"").hostname;if(ue(n))return"Login";if(me(n))return"Purchase"}catch{return}};var B=e=>{var t;try{let r=new URL((t=e.getAttribute("href"))!=null?t:""),o=new URLSearchParams(r.search).get("code");return o?o.split(","):[]}catch{return[]}};var A=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 z(e,t,r,n){let{campaign:o,articleType:c,abTestGroup:a,placementType:p,experiment:i,legacy:s,contentName:m,pulseEvents:l}=t,g=400,d="",h=0;function k(P){var b,x,E,U,$;try{let T=P.target,f=(b=T==null?void 0:T.closest)==null?void 0:b.call(T,"a");if(!f)return;let S=f.textContent||f.getAttribute("href")||`${p} button`,N=`a|${S}`,W=Date.now();if(N===d&&W-h<g)return;d=N,h=W;let C=K(f),H=C==="Purchase"?B(f):[];l.tpaas&&e.trackEngagementOffer({placement:{containerName:"page",offerPlacement:p},object:{objectId:n,objectSdrn:r,campaign:o,name:m,offerCodes:H,offerType:A(c)},...i?{experiments:[{experimentSdrn:`${r}:experiment:${u(i)}`,name:i,platform:"SPS",variant:a||""}]}:{},engagement:{action:"Click",elementName:S},page:{},target:{info:{url:(x=f.getAttribute("href"))!=null?x:""}}}).catch(w),l.legacy&&e.trackLegacyClickUIElement({object:{id:u(S),elementType:"Button",name:S,containerName:"Page",custom:{...s==null?void 0:s.offerData,offerCodes:H}},...s?{origin:s.pulseOrigin}:{},target:{url:($=(U=(E=f.getAttribute("href"))==null?void 0:E.split("?"))==null?void 0:U[0])!=null?$:""},...C?{intent:C}:{},...i?{experiments:[{id:`experiment:${u(i)}`,name:i,platform:"SPS",variant:a}]}:{}}).catch(w)}catch{}}return document.addEventListener("click",k,!0),()=>document.removeEventListener("click",k,!0)}function X(e,t,r,n,o){let{campaign:c,articleType:a,abTestGroup:p,placementType:i,experiment:s,offerCodes:m,legacy:l,contentName:g,pulseEvents:d}=t;d.tpaas&&e.trackImpressionOffer({placement:{foldPosition:o,containerName:"page",offerPlacement:i},object:{campaign:c,name:g,objectId:n,objectSdrn:r,offerCodes:m!=null?m:[],offerType:A(a)},...s?{experiments:[{experimentSdrn:`${r}:experiment:${u(s)}`,name:s,platform:"SPS",variant:p||""}]}:{},page:{},target:{info:{}}}).catch(w),d.legacy&&e.trackLegacyViewUIElement({object:{id:u(g),elementType:i,name:g,placement:{},custom:{...l==null?void 0:l.offerData,...l==null?void 0:l.custom,offerCodes:m}},...s?{experiments:[{id:`${r}:experiment:${u(s)}`,name:s,platform:"SPS",variant:p}]}:{},...l?{origin:l.pulseOrigin}:{}}).catch(w)}async function Q(e,t,r){let{placementType:n,legacy:o,pulseEvents:c}=t,a=window.location.pathname,i=`landingpage-${n==="campaignpage"?"CAMPAIGN":"STATIC"}-${_(a)}`.toLowerCase();c.legacy&&await e.trackLegacyViewPage({object:{pageId:i,name:document.title,"spt:custom":{...o==null?void 0:o.offerData,...o==null?void 0:o.custom}},origin:o==null?void 0:o.pulseOrigin}),c.tpaas&&await e.trackViewLandingpage({object:{objectId:i,objectSdrn:r,title:document.title},page:{}},{leaveTracking:{objectElement:"body",pageElement:"body",objectResizable:!1}})}var M=e=>e==="campaignpage"||e==="staticpage";var I={name:"@schibsted/sps-sdk",version:"5.0.0",description:"SPS SDK for node.js",packageManager:"pnpm@10.27.0",engines:{node:">=18.0.0"},repository:{type:"git",url:"https://schibsted.ghe.com/urs-ma/sps-sdk.git"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},author:"Schibsted Subscription Product & Tech",license:"UNLICENSED",type:"module",main:"dist/cjs/index.js",module:"dist/esm/index.js",exports:{".":{types:"./dist/esm/index.d.ts",import:"./dist/esm/index.js",require:"./dist/cjs/index.js"}},files:["dist"],scripts:{preinstall:"npx only-allow pnpm",build:"npm run build:clean && npm run build:public-scripts && npm run build:esm && npm run build:cjs","build:clean":"rm -rf dist/cjs dist/esm","build:esm":"tsc -p tsconfig.esm.json && tsc-alias -p tsconfig.esm.json","build:cjs":`tsc -p tsconfig.cjs.json && tsc-alias -p tsconfig.cjs.json && echo '{"type":"commonjs"}' > dist/cjs/package.json`,"build:sps-pulse-helpers":"tsup --config packages/sps-pulse-helpers/tsup.config.ts","build:pulse-tracker-proxy":"tsup --config packages/pulse-tracker-proxy/tsup.config.ts","build:public-scripts":"npm run build:sps-pulse-helpers && npm run build:pulse-tracker-proxy && node scripts/generate-public-scripts-content.js",test:"node --experimental-vm-modules node_modules/jest/bin/jest.js",lint:"eslint .","release:alpha":"npm publish --tag alpha","release:beta":"npm publish --tag beta"},devDependencies:{"@jest/globals":"^30.0.0","@schibsted/pulse-tracker-proxy":"^2.0.0-rc.19","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@snoam/mono-ma-shared-configs":"^1.1.0","@types/jest":"30.0.0","@types/node":"^24.0.3","conventional-changelog-conventionalcommits":"^9.1.0",eslint:"^9.29.0",jest:"^30.0.0","jest-environment-jsdom":"^30.0.2","jest-fixed-jsdom":"^0.0.11",msw:"^2.13.0",prettier:"3.9.4","semantic-release":"^25.0.8","ts-jest":"^29.4.0","ts-node":"^10.9.2","tsc-alias":"^1.8.16",tsup:"^8.5.1",typescript:"^5.9.3"},peerDependencies:{"@schibsted/pulse-sdk":">=8.0.0-rc.19"},dependencies:{"@schibsted/consent-url-utils":"^2.0.0"}};var J=!1,Z=!1,ee="script[data-sps-pulse-config='true']",w=e=>console.error(`[SPS-Pulse-Helpers] Failed to send Pulse event. Events are dropped if the host page runs an older @schibsted/pulse-sdk. SPS SDK ${I.version} requires @schibsted/pulse-sdk ${I.peerDependencies["@schibsted/pulse-sdk"]}.`,e),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 te(){if(console.log("[SPS-Pulse-Helpers] boot initiated"),J)return;J=!0;let e=null;try{let t=document.querySelector(ee);if(!t){console.warn(`[SPS-Pulse-Helpers] Config script tag not found with selector ${ee}`);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:n,contentName:o}=e,c=M(r)?_(window.location.pathname):u(o),a=`sdrn:${n}:element:offer:${r}:${c}`,p=crypto==null?void 0:crypto.randomUUID(),i=await t({component:"SPS-SDK",componentVersion:I.version});z(i,e,a,p);let s=k=>{Z||(Z=!0,X(i,e,a,p,k))};if(M(r)){await Q(i,e,a),s("Above");return}let m=window.frameElement,l=window.parent.IntersectionObserver;if(!m||!l){console.warn("[SPS-Pulse-Helpers] No iframe or IntersectionObserver available. Pulse View event will not be fired.");return}let g="Unknown",d=!0,h=new l(k=>{var E;let P=k[0],b=(E=P==null?void 0:P.intersectionRatio)!=null?E:0,x=(P==null?void 0:P.isIntersecting)&&b>=1/3;d&&(d=!1,g=x?"Above":"Below"),x&&(h.disconnect(),s(g))},{root:null,threshold:[0,1/3]});h.observe(m)}catch(t){console.warn("[SPS-Pulse-Helpers] boot failed",t)}}te();return ae(de);})();
1
+ "use strict";var SpsPulseHelpersBundle=(()=>{var F=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var oe=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var se=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of oe(t))!ne.call(e,o)&&o!==r&&F(e,o,{get:()=>t[o],enumerable:!(n=re(t,o))||n.enumerable});return e};var ae=e=>se(F({},"__esModule",{value:!0}),e);var de={};var y="pulse-tracker-proxy",ie=`${y}:request`,fe=`${y}:ack`,D=`${y}:invoke`,G=`${y}:return`,L=`${y}:return-error`,q=["trackAnonymousViewUIElement","trackEngagementAd","trackEngagementAffiliate","trackEngagementAudio","trackEngagementForm","trackEngagementHealthUIElement","trackEngagementOffer","trackEngagementSchoolUIElement","trackEngagementSportsUIElement","trackEngagementTeaser","trackEngagementTvModule","trackEngagementUIElement","trackEngagementVideo","trackEngagementVideoAd","trackEngagementWidget","trackCompletedHealthAction","trackImpressionAd","trackImpressionAdSlot","trackImpressionAffiliate","trackImpressionForm","trackImpressionHealthUIElement","trackImpressionOffer","trackImpressionPlayer","trackImpressionSchoolUIElement","trackImpressionSportsUIElement","trackImpressionTeaser","trackImpressionUIElement","trackImpressionWidget","trackLoadAd","trackRequestAd","trackLeaveArticle","trackLeaveAudioPage","trackLeaveError","trackLeaveFrontpage","trackLeaveLandingpage","trackLeaveListing","trackLeaveLockedArticle","trackLeaveLockedAudioPage","trackLeaveLockedPage","trackLeaveLockedVideoPage","trackLeavePage","trackLeaveSchoolPage","trackLeaveSportsPage","trackLeaveVideoPage","trackLeaveWeather","trackViewArticle","trackViewAudioPage","trackViewError","trackViewFrontpage","trackViewHealthPage","trackViewLandingpage","trackViewListing","trackViewLockedArticle","trackViewLockedAudioPage","trackViewLockedPage","trackViewLockedVideoPage","trackViewPage","trackViewSchoolPage","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 O(e,{target:t,timeout:r,debug:n=()=>{}}){return new Promise((o,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=s=>{if(n("[Pulse Tracker Proxy] Received the response on the MessageChannel",s),!V(s.data)){n("[Pulse Tracker Proxy] Response was not a valid Proxy Message",s.data);return}s.data.type===L&&(n("[Pulse Tracker Proxy] Received an return error response",s.data.error),clearTimeout(p),a.port1.close(),c(new Error(s.data.error))),n("[Pulse Tracker Proxy] Received a valid response",s.data),clearTimeout(p),a.port1.close(),o(s.data)};a.port1.onmessage=i,n("[Pulse Tracker Proxy] Sending message to target window",e),t.postMessage(e,"*",[a.port2])})}var Y="2.0.0-rc.19";function j(e){let t="tracker"in e&&typeof e.tracker=="object"?e.tracker:{};return{...e,tracker:{...t,proxyVersion:Y}}}function R(e,t,r){let n="provider"in e&&typeof e.provider=="object"?e.provider:{};return{...e,provider:{...n,component:t,componentVersion:r}}}var v=class{constructor(t,r,n,o){this.target=t,this.component=r,this.componentVersion=n,this.debug=o}track(...t){this.debug("[Pulse Tracker Proxy] Calling `track`",t);let[r,n,...o]=t,c=j(n),a=R(c,this.component,this.componentVersion),p=[r,a,...o];return this.invoke({method:"track",args:p})}async invoke(t){this.debug("[Pulse Tracker Proxy] Invoking remote function",t);let r=await O({type:D,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===L)throw this.debug("[Pulse Tracker Proxy] Error response from proxy",r.error),new Error(r.error);if(r.type===G)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 ce=Object.fromEntries(q.map(e=>[e,function(...t){this.debug("[Pulse Tracker Proxy] Calling `track`",t);let[r,...n]=t,o=j(r),a=[R(o,this.component,this.componentVersion),...n];return this.invoke({method:e,args:a})}]));function pe(){return class extends v{constructor(e,t,r,n){super(e,t,r,n),n("[Pulse TPaaS Proxy] Initialized"),Object.assign(this,ce)}}}var le=pe();var me=e=>e==="payment.schibsted.com"||e.startsWith("bestilling.")||e==="pay.pre.schibsted.digital"||e.startsWith("test-bestilling."),ue=e=>e==="login.schibsted.com"||e==="identity-pre.schibsted.com",K=e=>{var t;try{let n=new URL((t=e.getAttribute("href"))!=null?t:"").hostname;if(ue(n))return"Login";if(me(n))return"Purchase"}catch{return}};var B=e=>{var t;try{let r=new URL((t=e.getAttribute("href"))!=null?t:""),o=new URLSearchParams(r.search).get("code");return o?o.split(","):[]}catch{return[]}};var A=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 z(e,t,r,n){let{campaign:o,articleType:c,abTestGroup:a,placementType:p,experiment:i,legacy:s,contentName:m,pulseEvents:l}=t,g=400,d="",h=0;function k(P){var b,x,E,U,$;try{let T=P.target,f=(b=T==null?void 0:T.closest)==null?void 0:b.call(T,"a");if(!f)return;let S=f.textContent||f.getAttribute("href")||`${p} button`,N=`a|${S}`,W=Date.now();if(N===d&&W-h<g)return;d=N,h=W;let C=K(f),H=C==="Purchase"?B(f):[];l.tpaas&&e.trackEngagementOffer({placement:{containerName:"page",offerPlacement:p},object:{objectId:n,objectSdrn:r,campaign:o,name:m,offerCodes:H,offerType:A(c)},...i?{experiments:[{experimentSdrn:`${r}:experiment:${u(i)}`,name:i,platform:"SPS",variant:a||""}]}:{},engagement:{action:"Click",elementName:S},page:{},target:{info:{url:(x=f.getAttribute("href"))!=null?x:""}}}).catch(w),l.legacy&&e.trackLegacyClickUIElement({object:{id:u(S),elementType:"Button",name:S,containerName:"Page",custom:{...s==null?void 0:s.offerData,offerCodes:H}},...s?{origin:s.pulseOrigin}:{},target:{url:($=(U=(E=f.getAttribute("href"))==null?void 0:E.split("?"))==null?void 0:U[0])!=null?$:""},...C?{intent:C}:{},...i?{experiments:[{id:`experiment:${u(i)}`,name:i,platform:"SPS",variant:a}]}:{}}).catch(w)}catch{}}return document.addEventListener("click",k,!0),()=>document.removeEventListener("click",k,!0)}function X(e,t,r,n,o){let{campaign:c,articleType:a,abTestGroup:p,placementType:i,experiment:s,offerCodes:m,legacy:l,contentName:g,pulseEvents:d}=t;d.tpaas&&e.trackImpressionOffer({placement:{foldPosition:o,containerName:"page",offerPlacement:i},object:{campaign:c,name:g,objectId:n,objectSdrn:r,offerCodes:m!=null?m:[],offerType:A(a)},...s?{experiments:[{experimentSdrn:`${r}:experiment:${u(s)}`,name:s,platform:"SPS",variant:p||""}]}:{},page:{},target:{info:{}}}).catch(w),d.legacy&&e.trackLegacyViewUIElement({object:{id:u(g),elementType:i,name:g,placement:{},custom:{...l==null?void 0:l.offerData,...l==null?void 0:l.custom,offerCodes:m}},...s?{experiments:[{id:`${r}:experiment:${u(s)}`,name:s,platform:"SPS",variant:p}]}:{},...l?{origin:l.pulseOrigin}:{}}).catch(w)}async function Q(e,t,r){let{placementType:n,legacy:o,pulseEvents:c}=t,a=window.location.pathname,i=`landingpage-${n==="campaignpage"?"CAMPAIGN":"STATIC"}-${_(a)}`.toLowerCase();c.legacy&&await e.trackLegacyViewPage({object:{pageId:i,name:document.title,"spt:custom":{...o==null?void 0:o.offerData,...o==null?void 0:o.custom}},origin:o==null?void 0:o.pulseOrigin}),c.tpaas&&await e.trackViewLandingpage({object:{objectId:i,objectSdrn:r,title:document.title},page:{}},{leaveTracking:{objectElement:"body",pageElement:"body",objectResizable:!1}})}var M=e=>e==="campaignpage"||e==="staticpage";var I={name:"@schibsted/sps-sdk",version:"5.1.0",description:"SPS SDK for node.js",packageManager:"pnpm@10.27.0",engines:{node:">=18.0.0"},repository:{type:"git",url:"https://schibsted.ghe.com/urs-ma/sps-sdk.git"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},author:"Schibsted Subscription Product & Tech",license:"UNLICENSED",type:"module",main:"dist/cjs/index.js",module:"dist/esm/index.js",exports:{".":{types:"./dist/esm/index.d.ts",import:"./dist/esm/index.js",require:"./dist/cjs/index.js"}},files:["dist"],scripts:{preinstall:"npx only-allow pnpm",build:"npm run build:clean && npm run build:public-scripts && npm run build:esm && npm run build:cjs","build:clean":"rm -rf dist/cjs dist/esm","build:esm":"tsc -p tsconfig.esm.json && tsc-alias -p tsconfig.esm.json","build:cjs":`tsc -p tsconfig.cjs.json && tsc-alias -p tsconfig.cjs.json && echo '{"type":"commonjs"}' > dist/cjs/package.json`,"build:sps-pulse-helpers":"tsup --config packages/sps-pulse-helpers/tsup.config.ts","build:pulse-tracker-proxy":"tsup --config packages/pulse-tracker-proxy/tsup.config.ts","build:public-scripts":"npm run build:sps-pulse-helpers && npm run build:pulse-tracker-proxy && node scripts/generate-public-scripts-content.js",test:"node --experimental-vm-modules node_modules/jest/bin/jest.js",lint:"eslint .","release:alpha":"npm publish --tag alpha","release:beta":"npm publish --tag beta"},devDependencies:{"@jest/globals":"^30.0.0","@schibsted/pulse-tracker-proxy":"^2.0.0-rc.19","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@snoam/mono-ma-shared-configs":"^1.1.0","@types/jest":"30.0.0","@types/node":"^24.0.3","conventional-changelog-conventionalcommits":"^9.1.0",eslint:"^9.29.0",jest:"^30.0.0","jest-environment-jsdom":"^30.0.2","jest-fixed-jsdom":"^0.0.11",msw:"^2.13.0",prettier:"3.9.4","semantic-release":"^25.0.8","ts-jest":"^29.4.0","ts-node":"^10.9.2","tsc-alias":"^1.8.16",tsup:"^8.5.1",typescript:"^5.9.3"},peerDependencies:{"@schibsted/pulse-sdk":">=8.0.0-rc.19"},dependencies:{"@schibsted/consent-url-utils":"^2.0.0"}};var J=!1,Z=!1,ee="script[data-sps-pulse-config='true']",w=e=>console.error(`[SPS-Pulse-Helpers] Failed to send Pulse event. Events are dropped if the host page runs an older @schibsted/pulse-sdk. SPS SDK ${I.version} requires @schibsted/pulse-sdk ${I.peerDependencies["@schibsted/pulse-sdk"]}.`,e),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 te(){if(console.log("[SPS-Pulse-Helpers] boot initiated"),J)return;J=!0;let e=null;try{let t=document.querySelector(ee);if(!t){console.warn(`[SPS-Pulse-Helpers] Config script tag not found with selector ${ee}`);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:n,contentName:o}=e,c=M(r)?_(window.location.pathname):u(o),a=`sdrn:${n}:element:offer:${r}:${c}`,p=crypto==null?void 0:crypto.randomUUID(),i=await t({component:"SPS-SDK",componentVersion:I.version});z(i,e,a,p);let s=k=>{Z||(Z=!0,X(i,e,a,p,k))};if(M(r)){await Q(i,e,a),s("Above");return}let m=window.frameElement,l=window.parent.IntersectionObserver;if(!m||!l){console.warn("[SPS-Pulse-Helpers] No iframe or IntersectionObserver available. Pulse View event will not be fired.");return}let g="Unknown",d=!0,h=new l(k=>{var E;let P=k[0],b=(E=P==null?void 0:P.intersectionRatio)!=null?E:0,x=(P==null?void 0:P.isIntersecting)&&b>=1/3;d&&(d=!1,g=x?"Above":"Below"),x&&(h.disconnect(),s(g))},{root:null,threshold:[0,1/3]});h.observe(m)}catch(t){console.warn("[SPS-Pulse-Helpers] boot failed",t)}}te();return ae(de);})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schibsted/sps-sdk",
3
- "version": "5.1.0",
3
+ "version": "5.2.0-CBT-20903.2",
4
4
  "description": "SPS SDK for node.js",
5
5
  "packageManager": "pnpm@10.27.0",
6
6
  "engines": {