@crimson-education/browser-logger 5.0.0-beta.10 → 5.0.0-beta.14
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.
|
@@ -23,6 +23,8 @@ export interface DatadogReporterConfig extends ReporterConfigBase {
|
|
|
23
23
|
* @deprecated Prefer using the dedicated `logSampleRate`, `rumSampleRate`, and `replaySampleRate` options.
|
|
24
24
|
*/
|
|
25
25
|
sampleRate?: number;
|
|
26
|
+
sessionSampleRate?: number;
|
|
27
|
+
sessionReplaySampleRate?: number;
|
|
26
28
|
/**
|
|
27
29
|
* Sampling rate for browser log collection. Defaults to 100, meaning every log message is sent to Datadog.
|
|
28
30
|
*/
|
|
@@ -101,6 +103,7 @@ export interface DatadogReporterConfig extends ReporterConfigBase {
|
|
|
101
103
|
* A list of request origins used to inject tracing headers, to be able to connect RUM and backend tracing.
|
|
102
104
|
*/
|
|
103
105
|
allowedTrackingOrigins?: (string | RegExp)[];
|
|
106
|
+
allowedTracingUrls?: (string | RegExp)[];
|
|
104
107
|
/**
|
|
105
108
|
* Enables action tracking for user interactions. This enables the Heatmap tab within Datadog
|
|
106
109
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datadogReporter.d.ts","sourceRoot":"","sources":["../../src/reporters/datadogReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAMT,WAAW,EACX,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAA4B,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAc,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE7F,OAAO,EAAE,yBAAyB,EAAoB,MAAM,4BAA4B,CAAC;AA2FzF,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;OAEG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAEvC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEhD;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACnD;;OAEG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAErD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;OAEG;IACH,sBAAsB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC7C;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;CACtC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"datadogReporter.d.ts","sourceRoot":"","sources":["../../src/reporters/datadogReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAMT,WAAW,EACX,kBAAkB,EAEnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAA4B,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAc,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE7F,OAAO,EAAE,yBAAyB,EAAoB,MAAM,4BAA4B,CAAC;AA2FzF,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;OAEG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAEvC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,UAAU,CAAC,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEhD;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,yBAAyB,CAAC;IACnD;;OAEG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAErD;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C;;OAEG;IACH,sBAAsB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC7C,kBAAkB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACzC;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;CACtC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,GAAG,SAAS,CAqI3F"}
|
|
@@ -18,13 +18,13 @@ class DatadogFrustrationDetector {
|
|
|
18
18
|
// Track rapid clicks (potential frustration)
|
|
19
19
|
let clickCount = 0;
|
|
20
20
|
let lastClickTime = 0;
|
|
21
|
-
document.addEventListener('click', (
|
|
21
|
+
document.addEventListener('click', () => {
|
|
22
22
|
const now = Date.now();
|
|
23
23
|
if (now - lastClickTime < 1000) {
|
|
24
24
|
// Rapid clicks within 1 second
|
|
25
25
|
clickCount++;
|
|
26
26
|
if (clickCount >= 3) {
|
|
27
|
-
this.recordFrustrationEvent('rapid_clicks'
|
|
27
|
+
this.recordFrustrationEvent('rapid_clicks');
|
|
28
28
|
clickCount = 0;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -34,13 +34,13 @@ class DatadogFrustrationDetector {
|
|
|
34
34
|
lastClickTime = now;
|
|
35
35
|
});
|
|
36
36
|
// Track form errors (potential frustration)
|
|
37
|
-
document.addEventListener('invalid', (
|
|
38
|
-
this.recordFrustrationEvent('form_validation_error'
|
|
37
|
+
document.addEventListener('invalid', () => {
|
|
38
|
+
this.recordFrustrationEvent('form_validation_error');
|
|
39
39
|
});
|
|
40
40
|
// Track 404 errors (potential frustration)
|
|
41
41
|
window.addEventListener('error', (event) => {
|
|
42
42
|
if (event.message.includes('404') || event.message.includes('Not Found')) {
|
|
43
|
-
this.recordFrustrationEvent('page_not_found'
|
|
43
|
+
this.recordFrustrationEvent('page_not_found');
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
// Track network errors (potential frustration)
|
|
@@ -48,12 +48,12 @@ class DatadogFrustrationDetector {
|
|
|
48
48
|
if (event.reason && typeof event.reason === 'object' && 'status' in event.reason) {
|
|
49
49
|
const status = event.reason.status;
|
|
50
50
|
if (status >= 400) {
|
|
51
|
-
this.recordFrustrationEvent('network_error'
|
|
51
|
+
this.recordFrustrationEvent('network_error');
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
|
-
recordFrustrationEvent(type
|
|
56
|
+
recordFrustrationEvent(type) {
|
|
57
57
|
const now = Date.now();
|
|
58
58
|
this.frustrationEvents.push({ type, timestamp: now });
|
|
59
59
|
// Clean old events outside the window
|
|
@@ -86,14 +86,13 @@ export function datadogReporter(info, config) {
|
|
|
86
86
|
const forwardErrorsToLogs = config.forwardConsoleLogs ?? false;
|
|
87
87
|
const enableLogTransport = config.logTransport !== false;
|
|
88
88
|
// Only init datadog logs if something is using it.
|
|
89
|
-
if (forwardErrorsToLogs
|
|
89
|
+
if (forwardErrorsToLogs === true || enableLogTransport === true) {
|
|
90
90
|
datadogLogs.init({
|
|
91
91
|
site: config.site,
|
|
92
92
|
clientToken: config.clientToken,
|
|
93
93
|
service: info.service,
|
|
94
94
|
env: info.environment,
|
|
95
95
|
version: config.version ?? info.version,
|
|
96
|
-
// Note: sampleRate is not available in newer Datadog versions
|
|
97
96
|
beforeSend: config.beforeLogsSend,
|
|
98
97
|
useSecureSessionCookie: config.useSecureSessionCookie ?? !isLocalhost,
|
|
99
98
|
// Note: useCrossSiteSessionCookie is not available in newer Datadog versions
|
|
@@ -115,8 +114,11 @@ export function datadogReporter(info, config) {
|
|
|
115
114
|
service: info.service,
|
|
116
115
|
env: info.environment,
|
|
117
116
|
version: config.version ?? info.version,
|
|
118
|
-
//
|
|
119
|
-
|
|
117
|
+
// Use correct Datadog v6 SDK options
|
|
118
|
+
sessionSampleRate: config.sessionSampleRate ?? config.rumSampleRate ?? config.sampleRate ?? 100,
|
|
119
|
+
sessionReplaySampleRate: config.sessionReplaySampleRate ?? config.replaySampleRate ?? 100,
|
|
120
|
+
// Track interactions (Note: trackFrustrations is not available in Datadog v6)
|
|
121
|
+
trackUserInteractions: config.trackUserInteractions ?? config.trackInteractions ?? false,
|
|
120
122
|
useSecureSessionCookie: config.useSecureSessionCookie ?? !isLocalhost,
|
|
121
123
|
// Note: useCrossSiteSessionCookie is not available in newer Datadog versions
|
|
122
124
|
trackSessionAcrossSubdomains: config.trackSessionAcrossSubdomains,
|
|
@@ -124,12 +126,11 @@ export function datadogReporter(info, config) {
|
|
|
124
126
|
actionNameAttribute: config.actionNameAttribute ?? 'data-analytics-name',
|
|
125
127
|
beforeSend: config.beforeSend,
|
|
126
128
|
defaultPrivacyLevel: config.defaultPrivacyLevel ?? 'mask-user-input',
|
|
127
|
-
|
|
128
|
-
trackUserInteractions: config.trackUserInteractions ?? false,
|
|
129
|
+
allowedTracingUrls: config.allowedTracingUrls ?? config.allowedTrackingOrigins,
|
|
129
130
|
excludedActivityUrls: config.excludedActivityUrls,
|
|
130
131
|
});
|
|
131
132
|
// Initialize frustration detector
|
|
132
|
-
|
|
133
|
+
new DatadogFrustrationDetector(config);
|
|
133
134
|
const reporter = {
|
|
134
135
|
trackEvent: function (event) {
|
|
135
136
|
datadogRum.addAction(event.message, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datadogReporter.js","sourceRoot":"","sources":["../../src/reporters/datadogReporter.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAyB,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,UAAU,EAA6C,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAA6B,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEzF,8CAA8C;AAC9C,MAAM,0BAA0B;IACtB,MAAM,CAAwB;IAC9B,iBAAiB,GAA+C,EAAE,CAAC;IAC1D,qBAAqB,GAAG,CAAC,CAAC,CAAC,0CAA0C;IACrE,kBAAkB,GAAG,IAAI,CAAC,CAAC,oBAAoB;IAEhE,YAAY,MAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,MAAM,CAAC,iBAAiB,EAAE;YAC5B,IAAI,CAAC,yBAAyB,EAAE,CAAC;SAClC;IACH,CAAC;IAEO,yBAAyB;QAC/B,6CAA6C;QAC7C,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"datadogReporter.js","sourceRoot":"","sources":["../../src/reporters/datadogReporter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -34,13 +34,13 @@ class DatadogFrustrationDetector {
|
|
|
34
34
|
let clickCount = 0;
|
|
35
35
|
let lastClickTime = 0;
|
|
36
36
|
|
|
37
|
-
document.addEventListener('click', (
|
|
37
|
+
document.addEventListener('click', () => {
|
|
38
38
|
const now = Date.now();
|
|
39
39
|
if (now - lastClickTime < 1000) {
|
|
40
40
|
// Rapid clicks within 1 second
|
|
41
41
|
clickCount++;
|
|
42
42
|
if (clickCount >= 3) {
|
|
43
|
-
this.recordFrustrationEvent('rapid_clicks'
|
|
43
|
+
this.recordFrustrationEvent('rapid_clicks');
|
|
44
44
|
clickCount = 0;
|
|
45
45
|
}
|
|
46
46
|
} else {
|
|
@@ -50,14 +50,14 @@ class DatadogFrustrationDetector {
|
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
// Track form errors (potential frustration)
|
|
53
|
-
document.addEventListener('invalid', (
|
|
54
|
-
this.recordFrustrationEvent('form_validation_error'
|
|
53
|
+
document.addEventListener('invalid', () => {
|
|
54
|
+
this.recordFrustrationEvent('form_validation_error');
|
|
55
55
|
});
|
|
56
56
|
|
|
57
57
|
// Track 404 errors (potential frustration)
|
|
58
58
|
window.addEventListener('error', (event) => {
|
|
59
59
|
if (event.message.includes('404') || event.message.includes('Not Found')) {
|
|
60
|
-
this.recordFrustrationEvent('page_not_found'
|
|
60
|
+
this.recordFrustrationEvent('page_not_found');
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
63
|
|
|
@@ -66,13 +66,13 @@ class DatadogFrustrationDetector {
|
|
|
66
66
|
if (event.reason && typeof event.reason === 'object' && 'status' in event.reason) {
|
|
67
67
|
const status = (event.reason as any).status;
|
|
68
68
|
if (status >= 400) {
|
|
69
|
-
this.recordFrustrationEvent('network_error'
|
|
69
|
+
this.recordFrustrationEvent('network_error');
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
private recordFrustrationEvent(type: string
|
|
75
|
+
private recordFrustrationEvent(type: string) {
|
|
76
76
|
const now = Date.now();
|
|
77
77
|
this.frustrationEvents.push({ type, timestamp: now });
|
|
78
78
|
|
|
@@ -125,6 +125,8 @@ export interface DatadogReporterConfig extends ReporterConfigBase {
|
|
|
125
125
|
* @deprecated Prefer using the dedicated `logSampleRate`, `rumSampleRate`, and `replaySampleRate` options.
|
|
126
126
|
*/
|
|
127
127
|
sampleRate?: number;
|
|
128
|
+
sessionSampleRate?: number;
|
|
129
|
+
sessionReplaySampleRate?: number;
|
|
128
130
|
/**
|
|
129
131
|
* Sampling rate for browser log collection. Defaults to 100, meaning every log message is sent to Datadog.
|
|
130
132
|
*/
|
|
@@ -207,6 +209,7 @@ export interface DatadogReporterConfig extends ReporterConfigBase {
|
|
|
207
209
|
* A list of request origins used to inject tracing headers, to be able to connect RUM and backend tracing.
|
|
208
210
|
*/
|
|
209
211
|
allowedTrackingOrigins?: (string | RegExp)[];
|
|
212
|
+
allowedTracingUrls?: (string | RegExp)[];
|
|
210
213
|
/**
|
|
211
214
|
* Enables action tracking for user interactions. This enables the Heatmap tab within Datadog
|
|
212
215
|
*/
|
|
@@ -229,7 +232,7 @@ export function datadogReporter(info: ServiceInfo, config: DatadogReporterConfig
|
|
|
229
232
|
const enableLogTransport = config.logTransport !== false;
|
|
230
233
|
|
|
231
234
|
// Only init datadog logs if something is using it.
|
|
232
|
-
if (forwardErrorsToLogs
|
|
235
|
+
if (forwardErrorsToLogs === true || enableLogTransport === true) {
|
|
233
236
|
datadogLogs.init({
|
|
234
237
|
site: config.site as any,
|
|
235
238
|
clientToken: config.clientToken,
|
|
@@ -237,7 +240,6 @@ export function datadogReporter(info: ServiceInfo, config: DatadogReporterConfig
|
|
|
237
240
|
env: info.environment,
|
|
238
241
|
version: config.version ?? info.version,
|
|
239
242
|
|
|
240
|
-
// Note: sampleRate is not available in newer Datadog versions
|
|
241
243
|
beforeSend: config.beforeLogsSend,
|
|
242
244
|
|
|
243
245
|
useSecureSessionCookie: config.useSecureSessionCookie ?? !isLocalhost,
|
|
@@ -264,8 +266,12 @@ export function datadogReporter(info: ServiceInfo, config: DatadogReporterConfig
|
|
|
264
266
|
env: info.environment,
|
|
265
267
|
version: config.version ?? info.version,
|
|
266
268
|
|
|
267
|
-
//
|
|
268
|
-
|
|
269
|
+
// Use correct Datadog v6 SDK options
|
|
270
|
+
sessionSampleRate: config.sessionSampleRate ?? config.rumSampleRate ?? config.sampleRate ?? 100,
|
|
271
|
+
sessionReplaySampleRate: config.sessionReplaySampleRate?? config.replaySampleRate ?? 100,
|
|
272
|
+
|
|
273
|
+
// Track interactions (Note: trackFrustrations is not available in Datadog v6)
|
|
274
|
+
trackUserInteractions: config.trackUserInteractions ?? config.trackInteractions ?? false,
|
|
269
275
|
|
|
270
276
|
useSecureSessionCookie: config.useSecureSessionCookie ?? !isLocalhost,
|
|
271
277
|
// Note: useCrossSiteSessionCookie is not available in newer Datadog versions
|
|
@@ -275,14 +281,13 @@ export function datadogReporter(info: ServiceInfo, config: DatadogReporterConfig
|
|
|
275
281
|
beforeSend: config.beforeSend,
|
|
276
282
|
|
|
277
283
|
defaultPrivacyLevel: config.defaultPrivacyLevel ?? 'mask-user-input',
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
284
|
+
allowedTracingUrls: config.allowedTracingUrls ?? config.allowedTrackingOrigins,
|
|
285
|
+
|
|
281
286
|
excludedActivityUrls: config.excludedActivityUrls,
|
|
282
287
|
});
|
|
283
288
|
|
|
284
289
|
// Initialize frustration detector
|
|
285
|
-
|
|
290
|
+
new DatadogFrustrationDetector(config);
|
|
286
291
|
|
|
287
292
|
const reporter: IReporter = {
|
|
288
293
|
trackEvent: function (event: ReporterEvent): void {
|