@nommos/core 0.0.13 → 0.0.17

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, FullConfig } from './types';
1
+ import { AnalyticsEvent, FullConfig, HeatmapPayload, SessionRecordingPayload } from './types';
2
2
  /**
3
3
  * WebSocketClient
4
4
  * ----------------
@@ -18,6 +18,7 @@ export declare class WebSocketClient {
18
18
  * Initialized in `connectAnalyticsStomp()`.
19
19
  */
20
20
  private analyticsClient;
21
+ private cfg;
21
22
  /**
22
23
  * Buffer containing analytics events produced before the socket
23
24
  * becomes connected. They are automatically flushed on connection.
@@ -60,6 +61,18 @@ export declare class WebSocketClient {
60
61
  * @param payload The analytics event to send.
61
62
  */
62
63
  publishAnalyticsMessage(payload: AnalyticsEvent): void;
64
+ /**
65
+ * Publishes an aggregated heatmap payload to the user-heatmap queue.
66
+ *
67
+ * @param payload The heatmap data to send.
68
+ */
69
+ publishHeatmapMessage(payload: HeatmapPayload): void;
70
+ /**
71
+ * Publishes a session recording payload to the user.session.recording queue.
72
+ *
73
+ * @param payload The session recording data to send.
74
+ */
75
+ publishSessionRecordingMessage(payload: SessionRecordingPayload): void;
63
76
  /**
64
77
  * Gracefully shuts down the STOMP client and updates connection status.
65
78
  *
@@ -1,6 +1,6 @@
1
1
  import { Client } from '@stomp/stompjs';
2
2
  import { BehaviorSubject } from 'rxjs';
3
- import { ANALYTICS_QUEUE } from './constants';
3
+ import { ANALYTICS_QUEUE, HEATMAP_QUEUE, SESSION_RECORDING_QUEUE } from './constants';
4
4
  /**
5
5
  * WebSocketClient
6
6
  * ----------------
@@ -21,6 +21,7 @@ export class WebSocketClient {
21
21
  * Initialized in `connectAnalyticsStomp()`.
22
22
  */
23
23
  this.analyticsClient = null;
24
+ this.cfg = null;
24
25
  /**
25
26
  * Buffer containing analytics events produced before the socket
26
27
  * becomes connected. They are automatically flushed on connection.
@@ -43,7 +44,6 @@ export class WebSocketClient {
43
44
  * @returns A configured but not yet activated STOMP `Client` instance.
44
45
  */
45
46
  createStompClient(cfg) {
46
- console.log('[Nommos Tracker] Rabbit Configs... ', cfg);
47
47
  const client = new Client({
48
48
  brokerURL: cfg.rabbitUrl ?? '',
49
49
  connectHeaders: {
@@ -74,9 +74,12 @@ export class WebSocketClient {
74
74
  * @param cfg Configuration including URL, credentials, mode etc.
75
75
  */
76
76
  connectAnalyticsStomp(cfg) {
77
+ this.cfg = cfg;
77
78
  this.analyticsClient = this.createStompClient(cfg);
78
79
  this.analyticsClient.onConnect = () => {
79
- console.log('[Nommos Tracker] Connected');
80
+ if (this.cfg?.mode === 'dev') {
81
+ console.log('[Nommos Tracker] Connected');
82
+ }
80
83
  this.stompAnalyticsConnected.next(true);
81
84
  // flush pending events
82
85
  for (const m of this.pendingEvents) {
@@ -85,9 +88,13 @@ export class WebSocketClient {
85
88
  this.pendingEvents = [];
86
89
  };
87
90
  this.analyticsClient.onStompError = (frame) => {
88
- console.error('[Nommos Tracker] Broker error:', frame.headers['message']);
91
+ if (this.cfg?.mode === 'dev') {
92
+ console.error('[Nommos Tracker] Broker error:', frame.headers['message']);
93
+ }
89
94
  };
90
- console.log('[Nommos Tracker] Activating STOMP client...');
95
+ if (this.cfg?.mode === 'dev') {
96
+ console.log('[Nommos Tracker] Activating STOMP client...');
97
+ }
91
98
  this.analyticsClient.activate();
92
99
  }
93
100
  /**
@@ -109,6 +116,38 @@ export class WebSocketClient {
109
116
  body: JSON.stringify(payload),
110
117
  });
111
118
  }
119
+ /**
120
+ * Publishes an aggregated heatmap payload to the user-heatmap queue.
121
+ *
122
+ * @param payload The heatmap data to send.
123
+ */
124
+ publishHeatmapMessage(payload) {
125
+ if (!this.analyticsClient?.connected || this.analyticsClient == null) {
126
+ // We don't buffer heatmap data for now to avoid memory bloat,
127
+ // as they are aggregated and sent in batches anyway.
128
+ return;
129
+ }
130
+ this.analyticsClient.publish({
131
+ destination: HEATMAP_QUEUE,
132
+ headers: { 'content-type': 'application/json' },
133
+ body: JSON.stringify(payload),
134
+ });
135
+ }
136
+ /**
137
+ * Publishes a session recording payload to the user.session.recording queue.
138
+ *
139
+ * @param payload The session recording data to send.
140
+ */
141
+ publishSessionRecordingMessage(payload) {
142
+ if (!this.analyticsClient?.connected || this.analyticsClient == null) {
143
+ return;
144
+ }
145
+ this.analyticsClient.publish({
146
+ destination: SESSION_RECORDING_QUEUE,
147
+ headers: { 'content-type': 'application/json' },
148
+ body: JSON.stringify(payload),
149
+ });
150
+ }
112
151
  /**
113
152
  * Gracefully shuts down the STOMP client and updates connection status.
114
153
  *
@@ -118,7 +157,9 @@ export class WebSocketClient {
118
157
  if (this.analyticsClient) {
119
158
  this.analyticsClient.deactivate().then(() => {
120
159
  this.stompAnalyticsConnected.next(false);
121
- console.log('[Nommos Tracker] Disconnected');
160
+ if (this.cfg?.mode === 'dev') {
161
+ console.log('[Nommos Tracker] Disconnected');
162
+ }
122
163
  });
123
164
  }
124
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webSocket-client.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/webSocket-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webSocket-client.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/webSocket-client.ts"],"names":[],"mappings":"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"}