@nommos/core 0.0.39 → 0.0.42

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.
@@ -1,4 +1,4 @@
1
- import { AnalyticsEvent, ConnectionConfig, UrlTrackingKey } from './types';
1
+ import { AnalyticsEvent, ConnectionConfig, UrlTrackingKey, WebPopupInboxState } from './types';
2
2
  import { ANALYTICS_ACTION, ANALYTICS_ACTION_STATE } from './enums';
3
3
  export declare class EventTracker {
4
4
  private readonly urlTrackingKey;
@@ -28,6 +28,16 @@ export declare class EventTracker {
28
28
  */
29
29
  private readonly readySubject;
30
30
  readonly isReady$: import("rxjs").Observable<boolean>;
31
+ /** Backend URLs for the stack `cfg.mode` selected. Fixed for the life of the instance. */
32
+ private readonly endpoints;
33
+ private consentManager;
34
+ private marketingInitialized;
35
+ private popupInbox;
36
+ private consentProof;
37
+ /** Consent barrier state — see {@link publishWhenPermitted}. */
38
+ private consentEvaluated;
39
+ private analyticsAllowed;
40
+ private preConsentBuffer;
31
41
  /**
32
42
  * Internal state map used to track SELECT/UNSELECT status of toggleable actions.
33
43
  */
@@ -38,6 +48,19 @@ export declare class EventTracker {
38
48
  * engine and WebSocket connection if tracking is enabled.
39
49
  */
40
50
  constructor(config: ConnectionConfig, urlTrackingKey: UrlTrackingKey);
51
+ /**
52
+ * The consent barrier (§10).
53
+ *
54
+ * Events raised before consent has been evaluated are held, not sent. Once the decision is
55
+ * known the buffer is either flushed or discarded. Without this, the VISIT event raised
56
+ * during bootstrap would reach the backend before the visitor had seen the banner.
57
+ */
58
+ private publishWhenPermitted;
59
+ /**
60
+ * Records the analytics decision and releases or drops whatever was buffered while it was
61
+ * pending. Called for both grant and refusal, so the barrier always resolves.
62
+ */
63
+ private resolveConsentBarrier;
41
64
  /**
42
65
  * Returns whether tracking is enabled at runtime.
43
66
  */
@@ -77,6 +100,22 @@ export declare class EventTracker {
77
100
  private initFacebookPixel;
78
101
  private fireAdPixelEvent;
79
102
  private bootstrap;
103
+ private initializeConsentManager;
104
+ private applyConsentProof;
105
+ private startSessionRecording;
106
+ private stopSessionRecording;
107
+ private startMarketing;
108
+ private startPopupInbox;
109
+ /** Opens the popup viewer on demand — from the launcher, or a host application's own trigger. */
110
+ openViewer(popupId?: number): Promise<void>;
111
+ /** The popups this visitor currently holds, and how many are unread. */
112
+ getInbox(): WebPopupInboxState;
113
+ /**
114
+ * Mutes or unmutes the chime played when a popup arrives mid-session. Persisted per visitor, so
115
+ * a host application can offer the preference without owning the storage.
116
+ */
117
+ setPopupSoundEnabled(enabled: boolean): void;
118
+ private stopMarketing;
80
119
  private fetchConfig;
81
120
  private applyConfig;
82
121
  unsubscribe(): void;
@@ -2,10 +2,13 @@ import { forkJoin, from, of, Subject } from 'rxjs';
2
2
  import { catchError, map, switchMap } from 'rxjs/operators';
3
3
  import { WebSocketClient } from './webSocket-client';
4
4
  import { DataAttribution } from './data-attribution';
5
+ import { ConsentManager } from './consent-manager';
5
6
  import { SessionTracker } from './session-tracker';
7
+ import { PopupInbox } from './popup-inbox';
8
+ import { PopupViewer } from './popup-viewer';
6
9
  import { ANALYTICS_ACTION, ANALYTICS_ACTION_STATE } from './enums';
7
10
  import { getQueryParams, userAgentInfo } from './utils';
8
- import { CONFIG_ENDPOINT, ACTIVE_AD_ID_KEY, ACTIVE_PIXEL_ID_KEY, ACTIVE_EVENT_TYPE_KEY, ACTIVE_PLATFORM_KEY, FB_PIXEL_SCRIPT_URL, GTAG_SCRIPT_URL, } from './constants';
11
+ import { resolveEndpoints, ACTIVE_AD_ID_KEY, ACTIVE_PIXEL_ID_KEY, ACTIVE_EVENT_TYPE_KEY, ACTIVE_PLATFORM_KEY, FB_PIXEL_SCRIPT_URL, GTAG_SCRIPT_URL, MAX_BUFFERED_EVENTS, } from './constants';
9
12
  import { v4 as uuidv4 } from 'uuid';
10
13
  export class EventTracker {
11
14
  /**
@@ -32,6 +35,14 @@ export class EventTracker {
32
35
  */
33
36
  this.readySubject = new Subject();
34
37
  this.isReady$ = this.readySubject.asObservable();
38
+ this.consentManager = null;
39
+ this.marketingInitialized = false;
40
+ this.popupInbox = null;
41
+ this.consentProof = null;
42
+ /** Consent barrier state — see {@link publishWhenPermitted}. */
43
+ this.consentEvaluated = false;
44
+ this.analyticsAllowed = false;
45
+ this.preConsentBuffer = [];
35
46
  /**
36
47
  * Internal state map used to track SELECT/UNSELECT status of toggleable actions.
37
48
  */
@@ -76,6 +87,7 @@ export class EventTracker {
76
87
  this.cfg = {
77
88
  ...config,
78
89
  };
90
+ this.endpoints = resolveEndpoints(this.cfg.mode, this.cfg.baseUrl);
79
91
  // Warn in dev mode if another instance with the same token is already active.
80
92
  // This prevents duplicate events being sent to the queue.
81
93
  if (this.cfg.token) {
@@ -93,12 +105,59 @@ export class EventTracker {
93
105
  this.da.init(window.location.href, { stripFromUrl: false });
94
106
  this.lastCapturedUrl = window.location.href;
95
107
  }
96
- // Subscribe immediately so events fired before config loads are correctly buffered by WebSocketClient
108
+ // Every emitted event passes through the consent barrier rather than going straight to the
109
+ // socket. Until consent has been evaluated nothing may leave the browser.
97
110
  this.eventSubscription = this.analyticsEvents$.subscribe((track) => {
98
- this.ws.publishAnalyticsMessage(track);
111
+ this.publishWhenPermitted(track);
99
112
  });
100
113
  this.bootstrap(this.cfg); // Fire and forget
101
114
  }
115
+ /**
116
+ * The consent barrier (§10).
117
+ *
118
+ * Events raised before consent has been evaluated are held, not sent. Once the decision is
119
+ * known the buffer is either flushed or discarded. Without this, the VISIT event raised
120
+ * during bootstrap would reach the backend before the visitor had seen the banner.
121
+ */
122
+ publishWhenPermitted(track) {
123
+ if (!this.trackingIsEnabled()) {
124
+ return;
125
+ }
126
+ if (!this.consentEvaluated) {
127
+ this.preConsentBuffer.push(track);
128
+ if (this.preConsentBuffer.length > MAX_BUFFERED_EVENTS) {
129
+ this.preConsentBuffer.shift();
130
+ }
131
+ return;
132
+ }
133
+ if (!this.analyticsAllowed) {
134
+ return;
135
+ }
136
+ this.ws.publishAnalyticsMessage(track);
137
+ }
138
+ /**
139
+ * Records the analytics decision and releases or drops whatever was buffered while it was
140
+ * pending. Called for both grant and refusal, so the barrier always resolves.
141
+ */
142
+ resolveConsentBarrier(allowed) {
143
+ this.consentEvaluated = true;
144
+ this.analyticsAllowed = allowed;
145
+ const buffered = this.preConsentBuffer;
146
+ this.preConsentBuffer = [];
147
+ if (!allowed) {
148
+ if (this.cfg.mode === 'dev') {
149
+ console.log(`[Nommos Tracker] Analytics refused; discarding ${buffered.length} buffered event(s).`);
150
+ }
151
+ return;
152
+ }
153
+ if (!this.trackingIsEnabled()) {
154
+ if (this.cfg.mode === 'dev') {
155
+ console.log(`[Nommos Tracker] Action tracking disabled; discarding ${buffered.length} buffered event(s).`);
156
+ }
157
+ return;
158
+ }
159
+ buffered.forEach((event) => this.ws.publishAnalyticsMessage(event));
160
+ }
102
161
  /**
103
162
  * Returns whether tracking is enabled at runtime.
104
163
  */
@@ -210,6 +269,7 @@ export class EventTracker {
210
269
  initializeAdTracking() {
211
270
  if (typeof window === 'undefined')
212
271
  return;
272
+ this.marketingInitialized = true;
213
273
  const params = getQueryParams(window.location.href);
214
274
  const fbclid = params['fbclid'];
215
275
  const gclid = params['gclid'];
@@ -355,6 +415,8 @@ export class EventTracker {
355
415
  fireAdPixelEvent(action, state, data) {
356
416
  if (typeof window === 'undefined')
357
417
  return;
418
+ if (!this.marketingInitialized)
419
+ return;
358
420
  const fbConfig = this.cfg.ads_events?.facebook;
359
421
  const googleConfig = this.cfg.ads_events?.google;
360
422
  // 1. GLOBAL VISIT TRACKING (Facebook PageView & Google page_view)
@@ -386,6 +448,13 @@ export class EventTracker {
386
448
  // Skip PageView here as it was handled above in the global section
387
449
  if (action === ANALYTICS_ACTION.VISIT)
388
450
  return;
451
+ const allowedStates = [
452
+ ANALYTICS_ACTION_STATE.SUBMIT,
453
+ ANALYTICS_ACTION_STATE.SUCCESS,
454
+ ];
455
+ if (!allowedStates.includes(state)) {
456
+ return;
457
+ }
389
458
  if (platform === 'facebook' && activeEventType && window.fbq) {
390
459
  let fbEvent = activeEventType;
391
460
  let internalAction = activeEventType;
@@ -409,6 +478,7 @@ export class EventTracker {
409
478
  ['donate', 'Donate'],
410
479
  ['findlocation', 'FindLocation'],
411
480
  ['initiatecheckout', 'InitiateCheckout'],
481
+ ['initiatedcheckout', 'InitiateCheckout'],
412
482
  ['lead', 'Lead'],
413
483
  ['purchase', 'Purchase'],
414
484
  ['schedule', 'Schedule'],
@@ -416,9 +486,10 @@ export class EventTracker {
416
486
  ['starttrial', 'StartTrial'],
417
487
  ['submitapplication', 'SubmitApplication'],
418
488
  ['subscribe', 'Subscribe'],
419
- ['viewcontent', 'ViewContent']
489
+ ['viewcontent', 'ViewContent'],
490
+ ['contentview', 'ViewContent']
420
491
  ]);
421
- const key = fbEvent?.trim().toLowerCase();
492
+ const key = fbEvent?.trim().toLowerCase().replace(/[_\s-]/g, '');
422
493
  const isStandard = standardEvents.has(key);
423
494
  const normalizedEvent = standardEvents.get(key) || fbEvent;
424
495
  if (this.cfg.mode === 'dev') {
@@ -479,22 +550,14 @@ export class EventTracker {
479
550
  this.readySubject.next(false);
480
551
  return;
481
552
  }
482
- // Initialize ad platform tracking (Facebook and future others)
483
- this.initializeAdTracking();
484
- // Initialize session recording (rrweb) if enabled
485
- const sessionEnabled = this.cfg.controls?.session_tracking_enabled !== false;
486
- if (!this.sessionTracker && sessionEnabled) {
487
- const { channel } = userAgentInfo(navigator.userAgent || '');
488
- this.sessionTracker = new SessionTracker(this.ws, this.cfg, this.da.browserId, () => this.da.userIp, // getter ensures each flush uses the most current IP
489
- channel, this.sessionId);
490
- this.sessionTracker.start();
491
- }
492
553
  // Enrich buffered events with IP and brand_id now that they are available
493
554
  this.ws.enrichPendingEventsMeta(this.da.userIp, this.cfg.brand_id);
494
555
  this.readySubject.next(true);
495
- // Automatically track a VISIT event upon successful bootstrap
556
+ // Consent is initialised before anything is emitted. The VISIT below is buffered by the
557
+ // consent barrier and only released once the visitor's decision is known.
558
+ this.initializeConsentManager();
496
559
  this.trackEvent(ANALYTICS_ACTION.VISIT, ANALYTICS_ACTION_STATE.INIT);
497
- if (cfg.rabbitUrl && cfg.username && cfg.password) {
560
+ if ((cfg.wsUrl && cfg.wsToken) || (cfg.rabbitUrl && cfg.username && cfg.password)) {
498
561
  this.ws.connectAnalyticsStomp(cfg);
499
562
  }
500
563
  else if (cfg.token) {
@@ -526,8 +589,101 @@ export class EventTracker {
526
589
  });
527
590
  }
528
591
  }
592
+ initializeConsentManager() {
593
+ if (typeof window === 'undefined' || this.consentManager || !this.cfg.token)
594
+ return;
595
+ this.consentManager = new ConsentManager(this.cfg.token, this.da.browserId, this.endpoints.cmpConfig, {
596
+ onConsentProof: (state) => this.applyConsentProof(state),
597
+ onAnalyticsGranted: () => this.resolveConsentBarrier(true),
598
+ onAnalyticsRevoked: () => this.resolveConsentBarrier(false),
599
+ onSessionRecordingGranted: () => this.startSessionRecording(),
600
+ onSessionRecordingRevoked: () => this.stopSessionRecording(true),
601
+ onMarketingGranted: () => this.startMarketing(),
602
+ onMarketingRevoked: () => this.stopMarketing(),
603
+ });
604
+ this.consentManager.init();
605
+ }
606
+ applyConsentProof(state) {
607
+ this.consentProof = state;
608
+ this.cfg.consentRef = state?.consentRef;
609
+ this.cfg.consentReceiptId = state?.receiptId;
610
+ this.cfg.consentVersion = state?.configVersion;
611
+ this.cfg.consentPermission = state?.permissions.sessionRecording ? 'session-recording' : undefined;
612
+ this.ws.setConsentState(state);
613
+ }
614
+ startSessionRecording() {
615
+ const sessionEnabled = this.cfg.controls?.session_tracking_enabled !== false;
616
+ if (!sessionEnabled || this.sessionTracker)
617
+ return;
618
+ const { channel } = userAgentInfo(navigator.userAgent || '');
619
+ this.sessionTracker = new SessionTracker(this.ws, this.cfg, this.da.browserId, () => this.da.userIp, channel, this.sessionId);
620
+ this.sessionTracker.start();
621
+ }
622
+ stopSessionRecording(discardPending = false) {
623
+ this.sessionTracker?.stop(discardPending);
624
+ if (discardPending) {
625
+ this.sessionTracker?.purge();
626
+ this.ws.clearPendingSessionRecordings();
627
+ }
628
+ this.sessionTracker = null;
629
+ }
630
+ startMarketing() {
631
+ this.initializeAdTracking();
632
+ this.startPopupInbox();
633
+ }
634
+ startPopupInbox() {
635
+ if (typeof window === 'undefined')
636
+ return;
637
+ if (!this.popupInbox) {
638
+ this.popupInbox = new PopupInbox({
639
+ cfg: this.cfg,
640
+ browserId: this.da.browserId,
641
+ // Popup analytics ride the normal pipeline, so they sit behind the *analytics* barrier
642
+ // while the popup itself rides *marketing*.
643
+ //
644
+ // The module decides the state (see EVENT_STATE), so `toggle: false` and `selected: true`
645
+ // stop trackEvent flipping it: those two are only read when the state is SELECT, and there
646
+ // they pin it rather than letting it toggle against the shared select map.
647
+ emit: (event, data, state) => this.trackEvent(ANALYTICS_ACTION.NOTIFICATION, state, { ...data, popup_event: event }, false, true),
648
+ hasMarketingConsent: () => this.consentProof?.permissions.marketing === true &&
649
+ this.consentManager?.isCategoryActivated('marketing') !== false,
650
+ subscribeTopic: (destination, handler) => this.ws.subscribeTopic(destination, handler),
651
+ unsubscribeTopic: (destination) => this.ws.unsubscribeTopic(destination),
652
+ });
653
+ }
654
+ void this.popupInbox.initialize();
655
+ }
656
+ /** Opens the popup viewer on demand — from the launcher, or a host application's own trigger. */
657
+ openViewer(popupId) {
658
+ return this.popupInbox?.openViewer(popupId) ?? Promise.resolve();
659
+ }
660
+ /** The popups this visitor currently holds, and how many are unread. */
661
+ getInbox() {
662
+ return this.popupInbox?.getInbox() ?? { items: [], unreadCount: 0 };
663
+ }
664
+ /**
665
+ * Mutes or unmutes the chime played when a popup arrives mid-session. Persisted per visitor, so
666
+ * a host application can offer the preference without owning the storage.
667
+ */
668
+ setPopupSoundEnabled(enabled) {
669
+ PopupViewer.setSoundEnabled(enabled);
670
+ }
671
+ stopMarketing() {
672
+ this.marketingInitialized = false;
673
+ void this.popupInbox?.shutdown();
674
+ if (typeof sessionStorage === 'undefined')
675
+ return;
676
+ sessionStorage.removeItem(ACTIVE_AD_ID_KEY);
677
+ sessionStorage.removeItem(ACTIVE_PIXEL_ID_KEY);
678
+ sessionStorage.removeItem(ACTIVE_EVENT_TYPE_KEY);
679
+ sessionStorage.removeItem(ACTIVE_PLATFORM_KEY);
680
+ }
529
681
  fetchConfig(token) {
530
- const url = `${CONFIG_ENDPOINT}/${token}`;
682
+ // `bid` puts the browser id in the wsToken's claims, which is what scopes the popup inbox and
683
+ // the popup topic to this visitor. Without it the token can track but cannot receive.
684
+ const url = `${this.endpoints.secureConfig}/${encodeURIComponent(token)}`
685
+ + `?sessionId=${encodeURIComponent(this.sessionId)}`
686
+ + `&bid=${encodeURIComponent(this.da.browserId)}`;
531
687
  return from(fetch(url)).pipe(switchMap((res) => {
532
688
  if (!res.ok) {
533
689
  throw new Error(`Failed to fetch config: ${res.statusText}`);
@@ -550,6 +706,11 @@ export class EventTracker {
550
706
  this.cfg.masterEnabled = data.enabled !== false;
551
707
  // enableTracking now specifically refers to actions
552
708
  this.cfg.enableTracking = data.controls?.action_tracking_enabled !== false;
709
+ // The server no longer sends ws_url on the token path — the socket is always the backend that
710
+ // minted the token, so the SDK derives it. Still honoured when present, which leaves room for
711
+ // a deployment that terminates the socket on a different origin to the REST API.
712
+ this.cfg.wsUrl = data.ws_url ?? this.endpoints.ws;
713
+ this.cfg.wsToken = data.wsToken;
553
714
  this.cfg.rabbitUrl = data.rabbit_url;
554
715
  this.cfg.username = data.rabbit_username;
555
716
  this.cfg.password = data.rabbit_password;
@@ -573,6 +734,7 @@ export class EventTracker {
573
734
  this.eventSubscription?.unsubscribe();
574
735
  this.webSocketConnectedSubscription?.unsubscribe();
575
736
  this.readySubject.complete();
737
+ this.consentManager?.destroy();
576
738
  // Remove token from the active registry so a future re-instantiation
577
739
  // does not incorrectly trigger the duplicate-instance warning.
578
740
  if (this.cfg.token) {
@@ -1 +1 @@
1
- {"version":3,"file":"event-tracker.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/event-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-tracker.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/event-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /** The languages the SDK ships copy for. Anything else falls back to English. */
2
+ export type SdkLanguage = 'en' | 'fr' | 'es';
3
+ /**
4
+ * The visitor's language, from the browser rather than from tenant configuration.
5
+ *
6
+ * <p>Chrome the SDK draws — consent banner, popup buttons — is addressed to the visitor, not to
7
+ * the tenant admin who authored the campaign, so it follows `navigator.language`. The popup
8
+ * *body* is authored content and is never translated here.
9
+ */
10
+ export declare function resolveLanguage(): SdkLanguage;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The visitor's language, from the browser rather than from tenant configuration.
3
+ *
4
+ * <p>Chrome the SDK draws — consent banner, popup buttons — is addressed to the visitor, not to
5
+ * the tenant admin who authored the campaign, so it follows `navigator.language`. The popup
6
+ * *body* is authored content and is never translated here.
7
+ */
8
+ export function resolveLanguage() {
9
+ const lang = (navigator.language || 'en').slice(0, 2).toLowerCase();
10
+ return lang === 'fr' || lang === 'es' ? lang : 'en';
11
+ }
12
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/i18n.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACpE,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC"}
@@ -0,0 +1,143 @@
1
+ import { ANALYTICS_ACTION_STATE } from './enums';
2
+ import { ConsentAwareModule, FullConfig, WebPopupInboxState } from './types';
3
+ /**
4
+ * Analytics events this module emits, all through the existing NOTIFICATION action.
5
+ *
6
+ * `NOTIFICATION` on its own is too coarse — push and chatbot land in the same bucket — so every
7
+ * popup event carries `notification_type: "WEB_POPUP"` and a `popup_event` discriminator. That
8
+ * keeps popup reporting separable without standing up a second pipeline.
9
+ */
10
+ export type PopupEvent = 'auto_open' | 'manual_open' | 'viewed' | 'closed' | 'dismissed' | 'cta_click' | 'link_click' | 'carousel_next' | 'carousel_prev' | 'arrival_nudge' | 'abandoned' | 'render_failed';
11
+ /**
12
+ * The `state` each event rides on.
13
+ *
14
+ * <p>`state` is an engagement *span*, not a second verb — that is what the tracker's select map is
15
+ * for. A popup is one of the few things here with a genuine open/closed lifetime, so SELECT marks
16
+ * the viewer opening and UN_SELECT marks it closing, which makes dwell time answerable without
17
+ * reading `popup_event` at all. The two exceptions earn their place: a CTA is the conversion, and
18
+ * a failed render never opened.
19
+ *
20
+ * <p>Every SELECT must be matched by an UN_SELECT or the data shows spans that never end, which is
21
+ * why `abandoned` exists — closing the tab with a popup open is otherwise silent.
22
+ */
23
+ export type PopupEventState = ANALYTICS_ACTION_STATE.INIT | ANALYTICS_ACTION_STATE.SELECT | ANALYTICS_ACTION_STATE.UNSELECT | ANALYTICS_ACTION_STATE.SUBMIT | ANALYTICS_ACTION_STATE.FAILURE;
24
+ export interface PopupInboxDeps {
25
+ cfg: FullConfig;
26
+ browserId: string;
27
+ /**
28
+ * Emits through the tracker's normal pipeline, which sits behind the *analytics* consent
29
+ * barrier. Popups themselves ride *marketing*, so a visitor who grants marketing and denies
30
+ * analytics sees popups that emit nothing. That is correct, and it means popup metrics
31
+ * under-count by design.
32
+ */
33
+ emit: (event: PopupEvent, data: Record<string, unknown>, state: PopupEventState) => void;
34
+ /**
35
+ * Whether the visitor has a *recorded* marketing grant, read from the stored consent decision.
36
+ *
37
+ * <p>Distinct from the module's consent lifecycle: under the opt-out model a visitor who has not
38
+ * answered yet counts as granted, so `initialize()` is called before any decision exists. The
39
+ * server holds no matching grant in that state and rejects both the inbox fetch and the topic
40
+ * subscribe. Checking the stored decision here means the module stays dormant until the visitor
41
+ * actually says yes, instead of asking for something that is certain to be refused.
42
+ */
43
+ hasMarketingConsent: () => boolean;
44
+ subscribeTopic: (destination: string, handler: (body: string) => void) => void;
45
+ unsubscribeTopic: (destination: string) => void;
46
+ }
47
+ /**
48
+ * The visitor-facing half of CRM web popups: fetches the inbox, decides what to show, and reports
49
+ * what happened.
50
+ *
51
+ * <p>Implements {@link ConsentAwareModule} with `id: 'marketing'`, so the consent manager starts
52
+ * and stops it exactly as it does ad tracking. Nothing here runs — no fetch, no subscription, no
53
+ * DOM — until marketing consent is granted.
54
+ */
55
+ export declare class PopupInbox implements ConsentAwareModule {
56
+ private readonly deps;
57
+ readonly id: "marketing";
58
+ readonly supportsRuntimeShutdown = true;
59
+ private initialized;
60
+ private items;
61
+ private etag;
62
+ /** In-memory only: popup bodies are large and stale ones must not outlive the page. */
63
+ private readonly contentCache;
64
+ private readonly viewer;
65
+ private topic;
66
+ /** Ids the visitor has already been shown a launcher for, so an arrival can be told from a re-read. */
67
+ private knownIds;
68
+ /** False until the first inbox read of this page load has landed — see {@link refresh}. */
69
+ private settled;
70
+ /** Epoch ms of the last push that opened itself; 0 means none this page. */
71
+ private lastPushOpenAt;
72
+ /** Popup API root for the stack `cfg.mode` selected. */
73
+ private readonly popupEndpoint;
74
+ constructor(deps: PopupInboxDeps);
75
+ initialize(): Promise<void>;
76
+ /** Revocation must leave nothing behind: no viewer, no cache, no subscription. */
77
+ shutdown(): Promise<void>;
78
+ purge(): Promise<void>;
79
+ isInitialized(): boolean;
80
+ getInbox(): WebPopupInboxState;
81
+ openViewer(id?: number): Promise<void>;
82
+ /**
83
+ * Revalidates against the server with `If-None-Match`. A 304 keeps whatever is already cached,
84
+ * which is what stops a long-lived tab from sitting on a popup that was dismissed elsewhere
85
+ * while still avoiding a full payload on every SPA route change.
86
+ */
87
+ private refresh;
88
+ /**
89
+ * Reacts to popups that landed mid-session — by opening one if it is urgent enough, otherwise
90
+ * by shaking the launcher and chiming.
91
+ *
92
+ * <p>Deliberately silent on the first read of a page load and on the cache restore: those are
93
+ * the same inbox the visitor already has, and buzzing on every page view — or every SPA route
94
+ * change — would train them to ignore it. It also stays quiet while the viewer is open, since
95
+ * the popup on screen is already the notification. In practice that leaves the WebSocket push,
96
+ * which is exactly the case this exists for.
97
+ *
98
+ * <p><b>Whether an arrival takes over the screen is the author's call, not ours.</b> Seizing the
99
+ * screen of someone mid-task on the tenant's own site is expensive, so only HIGH and CRITICAL do
100
+ * it; everything else waits behind the launcher. The per-page-visit cap that governs
101
+ * {@link autoOpen} does not apply here — a push is a new event, not a replay of an inbox the
102
+ * visitor already had — so {@link POPUP_PUSH_OPEN_COOLDOWN_MS} is what stops a burst of sends
103
+ * from repeatedly taking over.
104
+ */
105
+ private nudgeIfArrived;
106
+ private pushOpenAllowed;
107
+ private content;
108
+ /** Exactly one popup opens by itself per page visit; the rest wait behind the launcher. */
109
+ private autoOpen;
110
+ private handleOpened;
111
+ private handleCtaClick;
112
+ private dismiss;
113
+ /**
114
+ * @returns whether the server accepted the transition.
115
+ *
116
+ * <p>The status is checked, not just the absence of a throw. `fetch` rejects only on a network
117
+ * failure — a 401 or a 404 resolves normally — so a bare try/catch here reported every rejected
118
+ * lifecycle call as a success. Since these calls are made optimistically, that turned a server
119
+ * refusal into a local state that quietly disagreed with the server until the next reload put it
120
+ * back: the visitor marks everything read, reloads, and the unread badge returns.
121
+ */
122
+ private post;
123
+ /**
124
+ * Forgets a popup the server will no longer serve.
125
+ *
126
+ * <p>A 404 from a lifecycle or content call is a verdict, not a hiccup: the entry is gone,
127
+ * expired, or dismissed elsewhere, and every future call for it will fail the same way. Holding
128
+ * on to it strands a phantom in the inbox that can never be read — it cannot be marked viewed,
129
+ * because the call that would mark it is the one returning 404 — so the unread badge survives
130
+ * every reload with no way for the visitor to clear it.
131
+ */
132
+ private dropItem;
133
+ private listen;
134
+ private headers;
135
+ /** Single exit for analytics, so no call site can forget the state that goes with its event. */
136
+ private emit;
137
+ private meta;
138
+ private restoreCache;
139
+ private persistCache;
140
+ private alreadyAutoOpened;
141
+ private markAutoOpened;
142
+ private warn;
143
+ }