@tracelog/lib 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,10 +28,11 @@ npm install @tracelog/lib
28
28
  import { tracelog } from '@tracelog/lib';
29
29
 
30
30
  // Standalone mode (no backend)
31
- await tracelog.init();
31
+ const { sessionId } = await tracelog.init();
32
+ console.log('Session:', sessionId);
32
33
 
33
34
  // With TraceLog SaaS
34
- await tracelog.init({
35
+ const { sessionId } = await tracelog.init({
35
36
  integrations: {
36
37
  tracelog: { projectId: 'your-project-id' }
37
38
  }
@@ -415,6 +416,50 @@ Transform events dynamically at runtime before they're sent to integrations. Use
415
416
  - Custom backend receives **transformed events**
416
417
  - Independent error handling and retry per integration
417
418
 
419
+ **Event Listeners and Transformers:**
420
+
421
+ Event listeners (`tracelog.on('event', ...)`) receive **original events**, not transformed events. Transformers only affect data sent to backends.
422
+
423
+ ```typescript
424
+ tracelog.setTransformer('beforeSend', (data) => {
425
+ if ('type' in data) {
426
+ return { ...data, enrichedField: 'value' };
427
+ }
428
+ return data;
429
+ });
430
+
431
+ tracelog.on('event', (ev) => {
432
+ console.log(ev.enrichedField); // undefined - listeners receive original events
433
+ });
434
+ ```
435
+
436
+ **Workaround for GTM/Third-Party Relay:**
437
+
438
+ If you need to forward enriched events to GTM or other systems, apply the transformation in your listener:
439
+
440
+ ```typescript
441
+ // Define enrichment function once
442
+ const enrichEvent = (event) => ({
443
+ ...event,
444
+ appVersion: '1.0.0',
445
+ environment: 'production'
446
+ });
447
+
448
+ // Use in transformer (for backend)
449
+ tracelog.setTransformer('beforeSend', (data) => {
450
+ if ('type' in data) {
451
+ return enrichEvent(data);
452
+ }
453
+ return data;
454
+ });
455
+
456
+ // Use in listener (for GTM relay)
457
+ tracelog.on('event', (event) => {
458
+ const enrichedEvent = enrichEvent(event);
459
+ window.dataLayer?.push({ event: 'tracelog_event', ...enrichedEvent });
460
+ });
461
+ ```
462
+
418
463
  ### Available Hooks
419
464
 
420
465
  #### `beforeSend` - Per-Event Transformation