@nommos/core 0.0.40 → 0.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-manager.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/consent-manager.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,73 @@
1
1
  import { UaDef } from './types';
2
- export declare const BASE_URL = "https://api.nommos.ai";
3
- export declare const CONFIG_ENDPOINT = "https://api.nommos.ai/api/tracking-module/config";
2
+ export interface Endpoints {
3
+ config: string;
4
+ secureConfig: string;
5
+ cmpConfig: string;
6
+ popup: string;
7
+ ws: string;
8
+ }
9
+ /**
10
+ * Resolves every backend URL from the caller's `mode`.
11
+ *
12
+ * An unrecognised mode falls back to production rather than throwing: a typo in a customer's
13
+ * snippet should not take their tracking offline, and pointing at prod is the safe wrong answer.
14
+ * `baseUrl` overrides the registry entirely, for local backends and self-hosted deployments.
15
+ *
16
+ * The STOMP endpoint is derived here rather than sent by the server so host and scheme cannot
17
+ * drift apart — an https origin yields wss, which a browser requires on an https page.
18
+ */
19
+ export declare function resolveEndpoints(mode?: string, baseUrl?: string): Endpoints;
4
20
  export declare const SOURCE_KEY = "attr:source";
5
21
  export declare const AFFILIATE_KEY = "attr:affiliate";
6
22
  export declare const PARRAINAGE_KEY = "attr:parrainage";
7
23
  export declare const AFFILIATE_HISTORY_KEY = "attr:affiliate:history";
8
24
  export declare const ONE_YEAR_MS: number;
9
25
  export declare const BROWSER_KEY = "anon:device_id";
26
+ export declare const CMP_COOKIE_PREFIX = "nommos_cmp_consent_";
27
+ export declare const CMP_STORAGE_PREFIX = "nommos:cmp:state:";
28
+ export declare const CMP_BROADCAST_CHANNEL = "nommos-cmp-consent";
10
29
  export declare const ANALYTICS_QUEUE = "/queue/user.activity";
11
30
  export declare const SESSION_RECORDING_QUEUE = "/queue/user.session.recording";
31
+ export declare const TRACKING_ACTIVITY_DESTINATION = "/app/tracking/activity";
32
+ export declare const TRACKING_SESSION_DESTINATION = "/app/tracking/session";
33
+ /**
34
+ * Per-visitor topic the backend pushes popup-inbox updates to. Dot-joined with the brand/browser
35
+ * id, not slash-joined — RabbitMQ's STOMP `/topic/<name>` form takes exactly one name segment.
36
+ */
37
+ export declare const POPUP_TOPIC_PREFIX = "/topic/tracking.popups";
38
+ /**
39
+ * Bumped whenever the cached inbox shape changes, so an SDK upgrade discards stale entries
40
+ * rather than misreading them.
41
+ */
42
+ export declare const POPUP_CACHE_VERSION = "v1";
43
+ export declare const POPUP_INBOX_CACHE_KEY = "nommos:popup:inbox:v1";
44
+ /** Guards the one auto-open per page visit. */
45
+ export declare const POPUP_AUTO_OPEN_KEY = "nommos:popup:autoOpened:v1";
46
+ /** Set when the visitor hides the launcher; cleared when a genuinely new popup arrives. */
47
+ export declare const POPUP_LAUNCHER_HIDDEN_KEY = "nommos:popup:launcherHidden:v1";
48
+ /** Visitor-level mute for the arrival chime. `localStorage`, so it outlives the tab. */
49
+ export declare const POPUP_SOUND_KEY = "nommos:popup:sound";
50
+ /**
51
+ * Priorities urgent enough to take over the screen when they arrive mid-session. Anything below
52
+ * these only badges the launcher — a routine promo interrupting someone mid-checkout on the
53
+ * tenant's own site costs more goodwill than the impression is worth.
54
+ */
55
+ export declare const POPUP_INTERRUPTIVE_PRIORITIES: string[];
56
+ /**
57
+ * Floor between two self-opening pushes. The per-page-visit cap deliberately does not apply to
58
+ * pushes, so this is the only thing stopping a burst of sends from machine-gunning the screen.
59
+ */
60
+ export declare const POPUP_PUSH_OPEN_COOLDOWN_MS = 30000;
61
+ /** The only popup schema this SDK build can render fully. */
62
+ export declare const POPUP_SCHEMA_VERSION = 1;
63
+ export declare const POPUP_MAX_ITEMS = 3;
64
+ /** Below this width the mobile variant is used. */
65
+ export declare const POPUP_MOBILE_BREAKPOINT_PX = 768;
66
+ /**
67
+ * Opt-in marker an integrator places on their own page to say where the launcher should live.
68
+ * When it matches, the launcher mounts inside it instead of floating in the viewport corner.
69
+ */
70
+ export declare const POPUP_ANCHOR_SELECTOR = "[data-nommos-notification-anchor]";
12
71
  export declare const ACTIVE_AD_ID_KEY = "nommos:ad:id";
13
72
  export declare const ACTIVE_PIXEL_ID_KEY = "nommos:pixel:id";
14
73
  export declare const ACTIVE_EVENT_TYPE_KEY = "nommos:event:type";
@@ -1,14 +1,87 @@
1
- export const BASE_URL = 'https://api.nommos.ai';
2
- export const CONFIG_ENDPOINT = `${BASE_URL}/api/tracking-module/config`;
3
- // export const SESSION_ENDPOINT = `${BASE_URL}/api/v1/session/chunk`;
1
+ /**
2
+ * Origin per environment. `mode` on ConnectionConfig picks one at runtime, so a single published
3
+ * build serves both stacks — nothing here is baked in at compile time.
4
+ *
5
+ * Test and production are separate deployments with their own database and their own tokens, so a
6
+ * token minted on one stack is not valid on the other. Adding a third environment is one entry.
7
+ */
8
+ const BASE_URLS = {
9
+ dev: 'https://svc.test.flexbet-software.com:14443/nommos-api',
10
+ prod: 'https://api.nommos.ai',
11
+ };
12
+ const DEFAULT_MODE = 'prod';
13
+ /**
14
+ * Resolves every backend URL from the caller's `mode`.
15
+ *
16
+ * An unrecognised mode falls back to production rather than throwing: a typo in a customer's
17
+ * snippet should not take their tracking offline, and pointing at prod is the safe wrong answer.
18
+ * `baseUrl` overrides the registry entirely, for local backends and self-hosted deployments.
19
+ *
20
+ * The STOMP endpoint is derived here rather than sent by the server so host and scheme cannot
21
+ * drift apart — an https origin yields wss, which a browser requires on an https page.
22
+ */
23
+ export function resolveEndpoints(mode, baseUrl) {
24
+ const base = baseUrl ?? BASE_URLS[mode ?? DEFAULT_MODE] ?? BASE_URLS[DEFAULT_MODE];
25
+ return {
26
+ config: `${base}/api/tracking-module/config`,
27
+ secureConfig: `${base}/api/tracking-module/config/session`,
28
+ cmpConfig: `${base}/api/tracking-module/config/cmp`,
29
+ popup: `${base}/api/tracking-module/popups`,
30
+ ws: `${base.replace(/^http/, 'ws')}/api/ws-tracking`,
31
+ };
32
+ }
4
33
  export const SOURCE_KEY = 'attr:source';
5
34
  export const AFFILIATE_KEY = 'attr:affiliate';
6
35
  export const PARRAINAGE_KEY = 'attr:parrainage';
7
36
  export const AFFILIATE_HISTORY_KEY = 'attr:affiliate:history'; // { v: string[], e: number }
8
37
  export const ONE_YEAR_MS = 365 * 24 * 60 * 60 * 1000;
9
38
  export const BROWSER_KEY = 'anon:device_id';
39
+ export const CMP_COOKIE_PREFIX = 'nommos_cmp_consent_';
40
+ export const CMP_STORAGE_PREFIX = 'nommos:cmp:state:';
41
+ export const CMP_BROADCAST_CHANNEL = 'nommos-cmp-consent';
10
42
  export const ANALYTICS_QUEUE = '/queue/user.activity';
11
43
  export const SESSION_RECORDING_QUEUE = '/queue/user.session.recording';
44
+ export const TRACKING_ACTIVITY_DESTINATION = '/app/tracking/activity';
45
+ export const TRACKING_SESSION_DESTINATION = '/app/tracking/session';
46
+ /**
47
+ * Per-visitor topic the backend pushes popup-inbox updates to. Dot-joined with the brand/browser
48
+ * id, not slash-joined — RabbitMQ's STOMP `/topic/<name>` form takes exactly one name segment.
49
+ */
50
+ export const POPUP_TOPIC_PREFIX = '/topic/tracking.popups';
51
+ // Web Popups
52
+ /**
53
+ * Bumped whenever the cached inbox shape changes, so an SDK upgrade discards stale entries
54
+ * rather than misreading them.
55
+ */
56
+ export const POPUP_CACHE_VERSION = 'v1';
57
+ export const POPUP_INBOX_CACHE_KEY = `nommos:popup:inbox:${POPUP_CACHE_VERSION}`;
58
+ /** Guards the one auto-open per page visit. */
59
+ export const POPUP_AUTO_OPEN_KEY = `nommos:popup:autoOpened:${POPUP_CACHE_VERSION}`;
60
+ /** Set when the visitor hides the launcher; cleared when a genuinely new popup arrives. */
61
+ export const POPUP_LAUNCHER_HIDDEN_KEY = `nommos:popup:launcherHidden:${POPUP_CACHE_VERSION}`;
62
+ /** Visitor-level mute for the arrival chime. `localStorage`, so it outlives the tab. */
63
+ export const POPUP_SOUND_KEY = 'nommos:popup:sound';
64
+ /**
65
+ * Priorities urgent enough to take over the screen when they arrive mid-session. Anything below
66
+ * these only badges the launcher — a routine promo interrupting someone mid-checkout on the
67
+ * tenant's own site costs more goodwill than the impression is worth.
68
+ */
69
+ export const POPUP_INTERRUPTIVE_PRIORITIES = ['HIGH', 'CRITICAL'];
70
+ /**
71
+ * Floor between two self-opening pushes. The per-page-visit cap deliberately does not apply to
72
+ * pushes, so this is the only thing stopping a burst of sends from machine-gunning the screen.
73
+ */
74
+ export const POPUP_PUSH_OPEN_COOLDOWN_MS = 30000;
75
+ /** The only popup schema this SDK build can render fully. */
76
+ export const POPUP_SCHEMA_VERSION = 1;
77
+ export const POPUP_MAX_ITEMS = 3;
78
+ /** Below this width the mobile variant is used. */
79
+ export const POPUP_MOBILE_BREAKPOINT_PX = 768;
80
+ /**
81
+ * Opt-in marker an integrator places on their own page to say where the launcher should live.
82
+ * When it matches, the launcher mounts inside it instead of floating in the viewport corner.
83
+ */
84
+ export const POPUP_ANCHOR_SELECTOR = '[data-nommos-notification-anchor]';
12
85
  // Ad Tracking Constants
13
86
  export const ACTIVE_AD_ID_KEY = 'nommos:ad:id';
14
87
  export const ACTIVE_PIXEL_ID_KEY = 'nommos:pixel:id';
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAChD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,QAAQ,6BAA6B,CAAC;AACxE,sEAAsE;AAEtE,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,CAAC,6BAA6B;AAC5F,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AACtD,MAAM,CAAC,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;AAEvE,wBAAwB;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AACrD,MAAM,CAAC,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,mBAAmB,GAAG,gDAAgD,CAAC;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG,0CAA0C,CAAC;AAE1E,6BAA6B;AAC7B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAG,KAAM,CAAC,CAAC,YAAY;AACjE,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,GAAG,KAAM,CAAC,CAAC,YAAY;AACrE,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,kBAAkB;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC,CAAC,uCAAuC;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,CAAC,yCAAyC;AAEjF,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC,CAAC,eAAe,EAAE,MAAM,CAAC;IACzB,CAAC,eAAe,EAAE,OAAO,CAAC;IAC1B,CAAC,kBAAkB,EAAE,QAAQ,CAAC,EAAE,gDAAgD;IAChF,CAAC,mBAAmB,EAAE,SAAS,CAAC;IAChC,CAAC,8BAA8B,EAAE,QAAQ,CAAC;IAC1C,CAAC,mBAAmB,EAAE,SAAS,CAAC;IAChC,CAAC,eAAe,EAAE,mBAAmB,CAAC;IACtC,CAAC,wBAAwB,EAAE,mBAAmB,CAAC;IAC/C,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC5B,CAAC,mBAAmB,EAAE,SAAS,CAAC;IAChC,CAAC,0BAA0B,EAAE,kBAAkB,CAAC;IAChD,CAAC,qBAAqB,EAAE,YAAY,CAAC;IACrC,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;IACzC,CAAC,qBAAqB,EAAE,YAAY,CAAC;IACrC,CAAC,8BAA8B,EAAE,sBAAsB,CAAC;IACxD,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IAC9B,CAAC,sBAAsB,EAAE,YAAY,CAAC;CACvC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAY;IAC9B,CAAC,sBAAsB,EAAE,SAAS,CAAC;IACnC,CAAC,qBAAqB,EAAE,SAAS,CAAC;IAClC,CAAC,yBAAyB,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClE,CAAC,4BAA4B,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC,wBAAwB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC,wBAAwB,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,sBAAsB,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,6BAA6B,EAAE,YAAY,CAAC;IAC7C,CAAC,yBAAyB,EAAE,eAAe,CAAC;IAC5C,CAAC,mBAAmB,EAAE,SAAS,CAAC;IAChC,CAAC,mBAAmB,EAAE,SAAS,CAAC;IAChC,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IAC9B,CAAC,iBAAiB,EAAE,SAAS,CAAC;IAC9B,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC5B,CAAC,eAAe,EAAE,KAAK,CAAC;IACxB,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC5B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,mBAAmB,EAAE,SAAS,CAAC;CACjC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Escaping and URL sanitisation for values that reach the consent UI.
3
+ *
4
+ * The CMP renders on the *customer's* site, and its branding and copy originate from tenant
5
+ * configuration. A tenant administrator must therefore never be able to turn a company name
6
+ * or a logo URL into script execution in their own visitors' browsers.
7
+ */
8
+ /**
9
+ * Escapes a value for interpolation into markup, covering both text nodes and quoted
10
+ * attribute values. Quotes are escaped precisely so a value cannot break out of an
11
+ * attribute and introduce a new one such as `onerror`.
12
+ */
13
+ export declare function escapeHtml(value: unknown): string;
14
+ /**
15
+ * Returns the URL if it is safe to place in `href` or `src`, otherwise an empty string.
16
+ *
17
+ * Allows http, https, mailto, protocol-relative and site-relative URLs. Rejects
18
+ * `javascript:` and `vbscript:`, and permits `data:` only for images — a `data:text/html`
19
+ * URL is a script-execution vector, an inline PNG is not.
20
+ */
21
+ export declare function sanitizeUrl(value: unknown): string;
22
+ /**
23
+ * Returns the value only if it is a plain CSS colour, otherwise the fallback.
24
+ *
25
+ * Branding colours are interpolated into a `<style>` block, so an unchecked value could close
26
+ * the rule and append its own — `red;} body{background:url(https://attacker/?c=…` exfiltrates
27
+ * via a background request without needing script execution.
28
+ */
29
+ export declare function sanitizeCssColor(value: unknown, fallback: string): string;
30
+ /** Returns the value only if it is a plain font-family list, otherwise the fallback. */
31
+ export declare function sanitizeCssFontFamily(value: unknown, fallback: string): string;
32
+ /** Creates an element with escaped text content and sanitized attributes. */
33
+ export declare function createElement(tag: string, options?: {
34
+ className?: string;
35
+ text?: string;
36
+ attributes?: Record<string, string>;
37
+ }): HTMLElement;
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-safe.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/dom-safe.ts"],"names":[],"mappings":"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"}
@@ -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)
@@ -488,22 +550,14 @@ export class EventTracker {
488
550
  this.readySubject.next(false);
489
551
  return;
490
552
  }
491
- // Initialize ad platform tracking (Facebook and future others)
492
- this.initializeAdTracking();
493
- // Initialize session recording (rrweb) if enabled
494
- const sessionEnabled = this.cfg.controls?.session_tracking_enabled !== false;
495
- if (!this.sessionTracker && sessionEnabled) {
496
- const { channel } = userAgentInfo(navigator.userAgent || '');
497
- this.sessionTracker = new SessionTracker(this.ws, this.cfg, this.da.browserId, () => this.da.userIp, // getter ensures each flush uses the most current IP
498
- channel, this.sessionId);
499
- this.sessionTracker.start();
500
- }
501
553
  // Enrich buffered events with IP and brand_id now that they are available
502
554
  this.ws.enrichPendingEventsMeta(this.da.userIp, this.cfg.brand_id);
503
555
  this.readySubject.next(true);
504
- // 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();
505
559
  this.trackEvent(ANALYTICS_ACTION.VISIT, ANALYTICS_ACTION_STATE.INIT);
506
- if (cfg.rabbitUrl && cfg.username && cfg.password) {
560
+ if ((cfg.wsUrl && cfg.wsToken) || (cfg.rabbitUrl && cfg.username && cfg.password)) {
507
561
  this.ws.connectAnalyticsStomp(cfg);
508
562
  }
509
563
  else if (cfg.token) {
@@ -535,8 +589,101 @@ export class EventTracker {
535
589
  });
536
590
  }
537
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
+ }
538
681
  fetchConfig(token) {
539
- 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)}`;
540
687
  return from(fetch(url)).pipe(switchMap((res) => {
541
688
  if (!res.ok) {
542
689
  throw new Error(`Failed to fetch config: ${res.statusText}`);
@@ -559,6 +706,11 @@ export class EventTracker {
559
706
  this.cfg.masterEnabled = data.enabled !== false;
560
707
  // enableTracking now specifically refers to actions
561
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;
562
714
  this.cfg.rabbitUrl = data.rabbit_url;
563
715
  this.cfg.username = data.rabbit_username;
564
716
  this.cfg.password = data.rabbit_password;
@@ -582,6 +734,7 @@ export class EventTracker {
582
734
  this.eventSubscription?.unsubscribe();
583
735
  this.webSocketConnectedSubscription?.unsubscribe();
584
736
  this.readySubject.complete();
737
+ this.consentManager?.destroy();
585
738
  // Remove token from the active registry so a future re-instantiation
586
739
  // does not incorrectly trigger the duplicate-instance warning.
587
740
  if (this.cfg.token) {