@crimson-education/browser-logger 5.0.3 → 5.0.4
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 +55 -0
- package/lib/reporters/analyticsNoise.d.ts +2 -0
- package/lib/reporters/analyticsNoise.d.ts.map +1 -0
- package/lib/reporters/analyticsNoise.js +13 -0
- package/lib/reporters/analyticsNoise.js.map +1 -0
- package/lib/reporters/datadogReporter.d.ts +10 -0
- package/lib/reporters/datadogReporter.d.ts.map +1 -1
- package/lib/reporters/datadogReporter.js +99 -36
- package/lib/reporters/datadogReporter.js.map +1 -1
- package/lib/reporters/datadogReporter.test.d.ts +2 -0
- package/lib/reporters/datadogReporter.test.d.ts.map +1 -0
- package/lib/reporters/datadogReporter.test.js +163 -0
- package/lib/reporters/datadogReporter.test.js.map +1 -0
- package/lib/reporters/posthogReporter.d.ts.map +1 -1
- package/lib/reporters/posthogReporter.js +4 -0
- package/lib/reporters/posthogReporter.js.map +1 -1
- package/lib/reporters/posthogReporter.test.js +44 -0
- package/lib/reporters/posthogReporter.test.js.map +1 -1
- package/lib/types/reporter.d.ts +5 -0
- package/lib/types/reporter.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/reporters/analyticsNoise.ts +15 -0
- package/src/reporters/datadogReporter.test.ts +229 -0
- package/src/reporters/datadogReporter.ts +117 -44
- package/src/reporters/posthogReporter.test.ts +58 -0
- package/src/reporters/posthogReporter.ts +4 -0
- package/src/types/reporter.ts +6 -0
package/README.md
CHANGED
|
@@ -260,6 +260,28 @@ Check out the [`DatadogReporterConfig`](https://github.com/crimson-education/bro
|
|
|
260
260
|
|
|
261
261
|
This automatically adds a Datadog Log Transport that transmits Log data to Datadog, this can be customized in `DatadogReporterConfig` with `logTransport`, or disabled by setting `logTransport` to `false`.
|
|
262
262
|
|
|
263
|
+
If you need to keep browser logs while disabling RUM, or vice versa, use the independent Datadog switches:
|
|
264
|
+
|
|
265
|
+
```ts
|
|
266
|
+
Logger.init({
|
|
267
|
+
reporters: {
|
|
268
|
+
datadog: {
|
|
269
|
+
applicationId: config.datadogApplicationId,
|
|
270
|
+
clientToken: config.datadogClientToken,
|
|
271
|
+
site: config.datadogSite,
|
|
272
|
+
logsEnabled: true,
|
|
273
|
+
rumEnabled: false,
|
|
274
|
+
logTransport: {
|
|
275
|
+
level: Logger.LogLevel.Info,
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
},
|
|
279
|
+
});
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
`logsEnabled` only affects Datadog Browser Logs and the Datadog log transport. `rumEnabled` only affects Datadog Browser
|
|
283
|
+
RUM, browser actions, view tracking, error reporting, and replay controls.
|
|
284
|
+
|
|
263
285
|
#### PostHog
|
|
264
286
|
|
|
265
287
|
To configure PostHog, this requires at least `apiKey` and `apiHost`.
|
|
@@ -284,6 +306,39 @@ Logger.init({
|
|
|
284
306
|
`replaySampleRate` is provided as a compatibility alias for existing Datadog-style config. Values less than or equal to `0` disable session recording at startup, while `Logger.recordSession()` can still enable replay later for allowlisted users.
|
|
285
307
|
|
|
286
308
|
When multiple repos write into the same PostHog project, prefer setting `application` at `Logger.init(...)`. This ensures a stable product-level dimension is present on all events independently of each app's `service` name.
|
|
309
|
+
|
|
310
|
+
#### Filtering technical analytics noise
|
|
311
|
+
|
|
312
|
+
`Logger.trackEvent()` still fans out to every enabled reporter. If a repo wants to keep technical log noise in the log
|
|
313
|
+
reporter while excluding it from Datadog RUM or PostHog, configure `ignoreTrackEventPatterns` explicitly in that
|
|
314
|
+
reporter.
|
|
315
|
+
|
|
316
|
+
Example:
|
|
317
|
+
|
|
318
|
+
```ts
|
|
319
|
+
Logger.init({
|
|
320
|
+
reporters: {
|
|
321
|
+
datadog: {
|
|
322
|
+
applicationId: config.datadogApplicationId,
|
|
323
|
+
clientToken: config.datadogClientToken,
|
|
324
|
+
site: config.datadogSite,
|
|
325
|
+
ignoreTrackEventPatterns: [
|
|
326
|
+
'TIM_LOGIN_SUCCESS',
|
|
327
|
+
/^TIM_MESSAGE_RECEIVED:/,
|
|
328
|
+
/^feedback fetch (triggered|deduped inflight|skipped ttl|success)$/,
|
|
329
|
+
],
|
|
330
|
+
},
|
|
331
|
+
posthog: {
|
|
332
|
+
apiKey: config.posthogApiKey,
|
|
333
|
+
apiHost: config.posthogApiHost,
|
|
334
|
+
ignoreTrackEventPatterns: [
|
|
335
|
+
'TIM_LOGIN_SUCCESS',
|
|
336
|
+
/^TIM_MESSAGE_RECEIVED:/,
|
|
337
|
+
],
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
});
|
|
341
|
+
```
|
|
287
342
|
#### Google Tag Manager
|
|
288
343
|
|
|
289
344
|
To configure GTM, you will need to have loaded the GTM script into your App.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyticsNoise.d.ts","sourceRoot":"","sources":["../../src/reporters/analyticsNoise.ts"],"names":[],"mappings":"AAQA,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAMrG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function patternMatches(message, pattern) {
|
|
2
|
+
if (typeof pattern === 'string') {
|
|
3
|
+
return message === pattern;
|
|
4
|
+
}
|
|
5
|
+
return pattern.test(message);
|
|
6
|
+
}
|
|
7
|
+
export function shouldSuppressAnalyticsEvent(message, patterns) {
|
|
8
|
+
if (!patterns?.length) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
return patterns.some((pattern) => patternMatches(message, pattern));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=analyticsNoise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyticsNoise.js","sourceRoot":"","sources":["../../src/reporters/analyticsNoise.ts"],"names":[],"mappings":"AAAA,SAAS,cAAc,CAAC,OAAe,EAAE,OAAwB;IAC/D,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,OAAO,KAAK,OAAO,CAAC;KAC5B;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAe,EAAE,QAA8B;IAC1F,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -4,6 +4,16 @@ import { LogsInitConfiguration } from '@datadog/browser-logs';
|
|
|
4
4
|
import { DefaultPrivacyLevel, RumInitConfiguration } from '@datadog/browser-rum';
|
|
5
5
|
import { DatadogLogTransportConfig } from '../logger/datadogTransport';
|
|
6
6
|
export interface DatadogReporterConfig extends ReporterConfigBase {
|
|
7
|
+
/**
|
|
8
|
+
* Enable Datadog Browser Logs initialization and log transport wiring.
|
|
9
|
+
* Defaults to true.
|
|
10
|
+
*/
|
|
11
|
+
logsEnabled?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Enable Datadog Browser RUM initialization.
|
|
14
|
+
* Defaults to true.
|
|
15
|
+
*/
|
|
16
|
+
rumEnabled?: boolean;
|
|
7
17
|
/** The RUM application ID. */
|
|
8
18
|
applicationId: string;
|
|
9
19
|
/** A Datadog client token (Generated in the RUM Page) */
|
|
@@ -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;
|
|
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;AA4FzF,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,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;IAEpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;;OAIG;IACH,oCAAoC,CAAC,EAAE,OAAO,CAAC;IAE/C;;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,CAqM3F"}
|
|
@@ -2,6 +2,7 @@ import { datadogLogs, HandlerType } from '@datadog/browser-logs';
|
|
|
2
2
|
import { datadogRum } from '@datadog/browser-rum';
|
|
3
3
|
import { logTransports } from '../logger';
|
|
4
4
|
import { datadogTransport } from '../logger/datadogTransport';
|
|
5
|
+
import { shouldSuppressAnalyticsEvent } from './analyticsNoise';
|
|
5
6
|
// User frustration detection for Datadog Gen2
|
|
6
7
|
class DatadogFrustrationDetector {
|
|
7
8
|
config;
|
|
@@ -81,12 +82,14 @@ class DatadogFrustrationDetector {
|
|
|
81
82
|
}
|
|
82
83
|
export function datadogReporter(info, config) {
|
|
83
84
|
const isLocalhost = window.location.hostname === 'localhost';
|
|
85
|
+
const logsEnabled = config.logsEnabled ?? true;
|
|
86
|
+
const rumEnabled = config.rumEnabled ?? true;
|
|
84
87
|
// Don't forward error logs by default, do enable the log transport by default
|
|
85
88
|
// forwardErrorsToLogs incorrectly is called forwardConsoleLogs, this is for backwards compatibility
|
|
86
89
|
const forwardErrorsToLogs = config.forwardConsoleLogs ?? false;
|
|
87
90
|
const enableLogTransport = config.logTransport !== false;
|
|
88
91
|
// Only init datadog logs if something is using it.
|
|
89
|
-
if (forwardErrorsToLogs === true || enableLogTransport === true) {
|
|
92
|
+
if (logsEnabled && (forwardErrorsToLogs === true || enableLogTransport === true)) {
|
|
90
93
|
datadogLogs.init({
|
|
91
94
|
site: config.site,
|
|
92
95
|
clientToken: config.clientToken,
|
|
@@ -104,37 +107,57 @@ export function datadogReporter(info, config) {
|
|
|
104
107
|
datadogLogs.logger.setHandler(HandlerType.http);
|
|
105
108
|
}
|
|
106
109
|
// Add the datadog log transport
|
|
107
|
-
if (enableLogTransport) {
|
|
110
|
+
if (logsEnabled && enableLogTransport) {
|
|
108
111
|
logTransports.push(datadogTransport(typeof config.logTransport === 'boolean' ? {} : config.logTransport));
|
|
109
112
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
113
|
+
if (rumEnabled) {
|
|
114
|
+
datadogRum.init({
|
|
115
|
+
enableExperimentalFeatures: ['feature_flags'],
|
|
116
|
+
site: config.site,
|
|
117
|
+
clientToken: config.clientToken,
|
|
118
|
+
applicationId: config.applicationId,
|
|
119
|
+
service: info.service,
|
|
120
|
+
env: info.environment,
|
|
121
|
+
version: config.version ?? info.version,
|
|
122
|
+
usePartitionedCrossSiteSessionCookie: config.usePartitionedCrossSiteSessionCookie,
|
|
123
|
+
// Use correct Datadog v6 SDK options
|
|
124
|
+
sessionSampleRate: config.sessionSampleRate ?? config.rumSampleRate ?? config.sampleRate ?? 100,
|
|
125
|
+
sessionReplaySampleRate: config.sessionReplaySampleRate ?? config.replaySampleRate ?? 100,
|
|
126
|
+
// Track interactions (Note: trackFrustrations is not available in Datadog v6)
|
|
127
|
+
trackUserInteractions: config.trackUserInteractions ?? config.trackInteractions ?? false,
|
|
128
|
+
useSecureSessionCookie: config.useSecureSessionCookie ?? !isLocalhost,
|
|
129
|
+
// Note: useCrossSiteSessionCookie is not available in newer Datadog versions
|
|
130
|
+
trackSessionAcrossSubdomains: config.trackSessionAcrossSubdomains,
|
|
131
|
+
trackViewsManually: config.trackViewsManually ?? false,
|
|
132
|
+
actionNameAttribute: config.actionNameAttribute ?? 'data-analytics-name',
|
|
133
|
+
beforeSend: config.beforeSend,
|
|
134
|
+
defaultPrivacyLevel: config.defaultPrivacyLevel ?? 'mask-user-input',
|
|
135
|
+
allowedTracingUrls: config.allowedTracingUrls ?? config.allowedTrackingOrigins,
|
|
136
|
+
excludedActivityUrls: config.excludedActivityUrls,
|
|
137
|
+
});
|
|
138
|
+
// Initialize frustration detector
|
|
139
|
+
new DatadogFrustrationDetector(config);
|
|
140
|
+
}
|
|
141
|
+
function normalizeErrorForLogs(error) {
|
|
142
|
+
if (error instanceof Error) {
|
|
143
|
+
return {
|
|
144
|
+
message: error.message,
|
|
145
|
+
name: error.name,
|
|
146
|
+
stack: error.stack,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
message: String(error),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
136
153
|
const reporter = {
|
|
137
154
|
trackEvent: function (event) {
|
|
155
|
+
if (!rumEnabled) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (shouldSuppressAnalyticsEvent(event.message, config.ignoreTrackEventPatterns)) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
138
161
|
datadogRum.addAction(event.message, {
|
|
139
162
|
level: event.level,
|
|
140
163
|
...event.metadata,
|
|
@@ -143,6 +166,9 @@ export function datadogReporter(info, config) {
|
|
|
143
166
|
});
|
|
144
167
|
},
|
|
145
168
|
addBreadcrumb: function (breadcrumb) {
|
|
169
|
+
if (!rumEnabled) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
146
172
|
datadogRum.addAction(breadcrumb.message, {
|
|
147
173
|
...breadcrumb.metadata,
|
|
148
174
|
category: breadcrumb.category,
|
|
@@ -151,19 +177,30 @@ export function datadogReporter(info, config) {
|
|
|
151
177
|
addMetadata: function (metadata) {
|
|
152
178
|
for (const [key, value] of Object.entries(metadata)) {
|
|
153
179
|
if (value !== null) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
180
|
+
if (rumEnabled) {
|
|
181
|
+
datadogRum.setGlobalContextProperty(key, value);
|
|
182
|
+
}
|
|
183
|
+
if (logsEnabled) {
|
|
184
|
+
// Note, this will add duplicate context data in logs.
|
|
185
|
+
// But this is valuable for logs ingested outside of the browser logger.
|
|
186
|
+
datadogLogs.setGlobalContextProperty(key, value);
|
|
187
|
+
}
|
|
158
188
|
}
|
|
159
189
|
else {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
190
|
+
if (rumEnabled) {
|
|
191
|
+
datadogRum.removeGlobalContextProperty(key);
|
|
192
|
+
}
|
|
193
|
+
if (logsEnabled) {
|
|
194
|
+
// But this is valuable for logs ingested outside of the browser logger.
|
|
195
|
+
datadogLogs.removeGlobalContextProperty(key);
|
|
196
|
+
}
|
|
163
197
|
}
|
|
164
198
|
}
|
|
165
199
|
},
|
|
166
200
|
setUser: function (user) {
|
|
201
|
+
if (!rumEnabled) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
167
204
|
if (user) {
|
|
168
205
|
datadogRum.setUser({
|
|
169
206
|
...user,
|
|
@@ -177,9 +214,15 @@ export function datadogReporter(info, config) {
|
|
|
177
214
|
}
|
|
178
215
|
},
|
|
179
216
|
setRouteName: function (routeName) {
|
|
217
|
+
if (!rumEnabled) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
180
220
|
reporter.addMetadata({ routeName });
|
|
181
221
|
},
|
|
182
222
|
setPageName: function (pageName) {
|
|
223
|
+
if (!rumEnabled) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
183
226
|
if (config.trackViewsManually) {
|
|
184
227
|
datadogRum.startView(pageName);
|
|
185
228
|
}
|
|
@@ -188,15 +231,35 @@ export function datadogReporter(info, config) {
|
|
|
188
231
|
}
|
|
189
232
|
},
|
|
190
233
|
reportError: function (error, metadata) {
|
|
191
|
-
|
|
234
|
+
if (rumEnabled) {
|
|
235
|
+
datadogRum.addError(error, metadata);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (logsEnabled) {
|
|
239
|
+
const normalized = normalizeErrorForLogs(error);
|
|
240
|
+
datadogLogs.logger.error(normalized.message, {
|
|
241
|
+
...metadata,
|
|
242
|
+
errorName: normalized.name,
|
|
243
|
+
errorStack: normalized.stack,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
192
246
|
},
|
|
193
247
|
reportFeatureFlag: function (flag) {
|
|
248
|
+
if (!rumEnabled) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
194
251
|
datadogRum.addFeatureFlagEvaluation(flag.name, flag.value);
|
|
195
252
|
},
|
|
196
253
|
recordSession: function () {
|
|
254
|
+
if (!rumEnabled) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
197
257
|
datadogRum.startSessionReplayRecording();
|
|
198
258
|
},
|
|
199
259
|
recordSessionStop: function () {
|
|
260
|
+
if (!rumEnabled) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
200
263
|
datadogRum.stopSessionReplayRecording();
|
|
201
264
|
},
|
|
202
265
|
};
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"datadogReporter.js","sourceRoot":"","sources":["../../src/reporters/datadogReporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datadogReporter.test.d.ts","sourceRoot":"","sources":["../../src/reporters/datadogReporter.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
jest.mock('@datadog/browser-rum', () => ({
|
|
2
|
+
__esModule: true,
|
|
3
|
+
datadogRum: {
|
|
4
|
+
init: jest.fn(),
|
|
5
|
+
addAction: jest.fn(),
|
|
6
|
+
setGlobalContextProperty: jest.fn(),
|
|
7
|
+
removeGlobalContextProperty: jest.fn(),
|
|
8
|
+
setUser: jest.fn(),
|
|
9
|
+
startView: jest.fn(),
|
|
10
|
+
addError: jest.fn(),
|
|
11
|
+
addFeatureFlagEvaluation: jest.fn(),
|
|
12
|
+
startSessionReplayRecording: jest.fn(),
|
|
13
|
+
stopSessionReplayRecording: jest.fn(),
|
|
14
|
+
},
|
|
15
|
+
DefaultPrivacyLevel: {},
|
|
16
|
+
}));
|
|
17
|
+
jest.mock('@datadog/browser-logs', () => ({
|
|
18
|
+
__esModule: true,
|
|
19
|
+
HandlerType: {
|
|
20
|
+
http: 'http',
|
|
21
|
+
},
|
|
22
|
+
datadogLogs: {
|
|
23
|
+
init: jest.fn(),
|
|
24
|
+
setGlobalContextProperty: jest.fn(),
|
|
25
|
+
removeGlobalContextProperty: jest.fn(),
|
|
26
|
+
logger: {
|
|
27
|
+
setHandler: jest.fn(),
|
|
28
|
+
debug: jest.fn(),
|
|
29
|
+
info: jest.fn(),
|
|
30
|
+
warn: jest.fn(),
|
|
31
|
+
error: jest.fn(),
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
}));
|
|
35
|
+
jest.mock('../logger/datadogTransport', () => ({
|
|
36
|
+
__esModule: true,
|
|
37
|
+
datadogTransport: jest.fn(() => ({ log: jest.fn() })),
|
|
38
|
+
}));
|
|
39
|
+
import { datadogLogs } from '@datadog/browser-logs';
|
|
40
|
+
import { datadogRum } from '@datadog/browser-rum';
|
|
41
|
+
import { LogLevel } from '../types';
|
|
42
|
+
import { datadogReporter } from './datadogReporter';
|
|
43
|
+
const datadogLogsMock = datadogLogs;
|
|
44
|
+
const datadogRumMock = datadogRum;
|
|
45
|
+
describe('datadogReporter', () => {
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
jest.clearAllMocks();
|
|
48
|
+
Object.defineProperty(globalThis, 'window', {
|
|
49
|
+
configurable: true,
|
|
50
|
+
value: {
|
|
51
|
+
location: {
|
|
52
|
+
hostname: 'app.crimsoneducation.org',
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
it('can initialize logs without rum', () => {
|
|
58
|
+
const reporter = datadogReporter({
|
|
59
|
+
service: 'crimson-app-frontend',
|
|
60
|
+
application: 'crimson-app',
|
|
61
|
+
environment: 'production',
|
|
62
|
+
version: '1.2.3',
|
|
63
|
+
}, {
|
|
64
|
+
applicationId: 'app-id',
|
|
65
|
+
clientToken: 'client-token',
|
|
66
|
+
site: 'datadoghq.eu',
|
|
67
|
+
rumEnabled: false,
|
|
68
|
+
logsEnabled: true,
|
|
69
|
+
});
|
|
70
|
+
expect(datadogLogsMock.init).toHaveBeenCalled();
|
|
71
|
+
expect(datadogRumMock.init).not.toHaveBeenCalled();
|
|
72
|
+
reporter.addMetadata({
|
|
73
|
+
namespace: 'production',
|
|
74
|
+
clearMe: null,
|
|
75
|
+
});
|
|
76
|
+
expect(datadogLogsMock.setGlobalContextProperty).toHaveBeenCalledWith('namespace', 'production');
|
|
77
|
+
expect(datadogLogsMock.removeGlobalContextProperty).toHaveBeenCalledWith('clearMe');
|
|
78
|
+
expect(datadogRumMock.setGlobalContextProperty).not.toHaveBeenCalled();
|
|
79
|
+
reporter.reportError?.(new Error('broken'), {
|
|
80
|
+
routeName: 'messages',
|
|
81
|
+
});
|
|
82
|
+
expect(datadogLogsMock.logger.error).toHaveBeenCalledWith('broken', expect.objectContaining({
|
|
83
|
+
routeName: 'messages',
|
|
84
|
+
errorName: 'Error',
|
|
85
|
+
errorStack: expect.any(String),
|
|
86
|
+
}));
|
|
87
|
+
expect(datadogRumMock.addError).not.toHaveBeenCalled();
|
|
88
|
+
});
|
|
89
|
+
it('can initialize rum without logs', () => {
|
|
90
|
+
const reporter = datadogReporter({
|
|
91
|
+
service: 'student-center-frontend',
|
|
92
|
+
application: 'core-student-center',
|
|
93
|
+
environment: 'production',
|
|
94
|
+
version: '2.0.0',
|
|
95
|
+
}, {
|
|
96
|
+
applicationId: 'app-id',
|
|
97
|
+
clientToken: 'client-token',
|
|
98
|
+
site: 'datadoghq.eu',
|
|
99
|
+
rumEnabled: true,
|
|
100
|
+
logsEnabled: false,
|
|
101
|
+
});
|
|
102
|
+
expect(datadogRumMock.init).toHaveBeenCalled();
|
|
103
|
+
expect(datadogLogsMock.init).not.toHaveBeenCalled();
|
|
104
|
+
reporter.trackEvent({
|
|
105
|
+
message: 'message-sent',
|
|
106
|
+
metadata: {
|
|
107
|
+
userId: '123',
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
expect(datadogRumMock.addAction).toHaveBeenCalledWith('message-sent', expect.objectContaining({ userId: '123' }));
|
|
111
|
+
reporter.reportError?.(new Error('broken'));
|
|
112
|
+
expect(datadogRumMock.addError).toHaveBeenCalled();
|
|
113
|
+
expect(datadogLogsMock.logger.error).not.toHaveBeenCalled();
|
|
114
|
+
});
|
|
115
|
+
it('suppresses configured trackEvent messages from rum actions', () => {
|
|
116
|
+
const reporter = datadogReporter({
|
|
117
|
+
service: 'crimson-app-frontend',
|
|
118
|
+
application: 'crimson-app',
|
|
119
|
+
environment: 'production',
|
|
120
|
+
version: '1.2.3',
|
|
121
|
+
}, {
|
|
122
|
+
applicationId: 'app-id',
|
|
123
|
+
clientToken: 'client-token',
|
|
124
|
+
site: 'datadoghq.eu',
|
|
125
|
+
ignoreTrackEventPatterns: ['TIM_LOGIN_SUCCESS'],
|
|
126
|
+
});
|
|
127
|
+
reporter.trackEvent({
|
|
128
|
+
message: 'TIM_LOGIN_SUCCESS',
|
|
129
|
+
level: LogLevel.Info,
|
|
130
|
+
metadata: {
|
|
131
|
+
userId: '123',
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
expect(datadogRumMock.addAction).not.toHaveBeenCalled();
|
|
135
|
+
reporter.trackEvent({
|
|
136
|
+
message: 'message-sent',
|
|
137
|
+
level: LogLevel.Info,
|
|
138
|
+
});
|
|
139
|
+
expect(datadogRumMock.addAction).toHaveBeenCalledWith('message-sent', expect.objectContaining({
|
|
140
|
+
level: LogLevel.Info,
|
|
141
|
+
}));
|
|
142
|
+
});
|
|
143
|
+
it('does not suppress trackEvent messages unless configured', () => {
|
|
144
|
+
const reporter = datadogReporter({
|
|
145
|
+
service: 'crimson-app-frontend',
|
|
146
|
+
application: 'crimson-app',
|
|
147
|
+
environment: 'production',
|
|
148
|
+
version: '1.2.3',
|
|
149
|
+
}, {
|
|
150
|
+
applicationId: 'app-id',
|
|
151
|
+
clientToken: 'client-token',
|
|
152
|
+
site: 'datadoghq.eu',
|
|
153
|
+
});
|
|
154
|
+
reporter.trackEvent({
|
|
155
|
+
message: 'TIM_LOGIN_SUCCESS',
|
|
156
|
+
level: LogLevel.Info,
|
|
157
|
+
});
|
|
158
|
+
expect(datadogRumMock.addAction).toHaveBeenCalledWith('TIM_LOGIN_SUCCESS', expect.objectContaining({
|
|
159
|
+
level: LogLevel.Info,
|
|
160
|
+
}));
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
//# sourceMappingURL=datadogReporter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datadogReporter.test.js","sourceRoot":"","sources":["../../src/reporters/datadogReporter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthogReporter.d.ts","sourceRoot":"","sources":["../../src/reporters/posthogReporter.ts"],"names":[],"mappings":"AAAA,OAAgB,EAA+B,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EACL,SAAS,EACT,QAAQ,EAGR,kBAAkB,EAIlB,WAAW,EACZ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"posthogReporter.d.ts","sourceRoot":"","sources":["../../src/reporters/posthogReporter.ts"],"names":[],"mappings":"AAAA,OAAgB,EAA+B,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EACL,SAAS,EACT,QAAQ,EAGR,kBAAkB,EAIlB,WAAW,EACZ,MAAM,UAAU,CAAC;AAKlB,KAAK,wBAAwB,GAAG,OAAO,CACrC,IAAI,CACF,aAAa,EACX,UAAU,GACV,aAAa,GACb,aAAa,GACb,WAAW,GACX,mBAAmB,GACnB,kBAAkB,GAClB,wBAAwB,GACxB,OAAO,GACP,UAAU,GACV,2BAA2B,GAC3B,QAAQ,GACR,iBAAiB,GACjB,aAAa,GACb,kBAAkB,CACrB,CACF,CAAC;AAEF,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,yCAAyC;IACzC,UAAU,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC1C,sDAAsD;IACtD,WAAW,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,gFAAgF;IAChF,eAAe,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACtD,yDAAyD;IACzD,oBAAoB,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAC/D,gCAAgC;IAChC,WAAW,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,iCAAiC;IACjC,eAAe,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACpD,iCAAiC;IACjC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAClD,4CAA4C;IAC5C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wCAAwC;IACxC,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,iEAAiE;IACjE,SAAS,CAAC,EAAE,wBAAwB,CAAC;CACtC;AAyJD,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAc/E;AAcD,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,GAAG,SAAS,CA0H3F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import posthog from 'posthog-js';
|
|
2
|
+
import { shouldSuppressAnalyticsEvent } from './analyticsNoise';
|
|
2
3
|
function hasActiveUser(user) {
|
|
3
4
|
if (!user) {
|
|
4
5
|
return false;
|
|
@@ -153,6 +154,9 @@ export function posthogReporter(info, config) {
|
|
|
153
154
|
const reporter = {
|
|
154
155
|
...config,
|
|
155
156
|
trackEvent: function (event) {
|
|
157
|
+
if (shouldSuppressAnalyticsEvent(event.message, config.ignoreTrackEventPatterns)) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
156
160
|
posthog.capture(event.message, {
|
|
157
161
|
message: event.message,
|
|
158
162
|
level: event.level,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posthogReporter.js","sourceRoot":"","sources":["../../src/reporters/posthogReporter.ts"],"names":[],"mappings":"AAAA,OAAO,OAAmE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"posthogReporter.js","sourceRoot":"","sources":["../../src/reporters/posthogReporter.ts"],"names":[],"mappings":"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"}
|