@crimson-education/browser-logger 4.1.4 → 5.0.0-beta.1
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 +81 -29
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +22 -41
- package/lib/index.js.map +1 -1
- package/lib/logger/consoleTransport.d.ts +1 -1
- package/lib/logger/consoleTransport.d.ts.map +1 -1
- package/lib/logger/consoleTransport.js +16 -22
- package/lib/logger/consoleTransport.js.map +1 -1
- package/lib/logger/datadogTransport.d.ts +1 -1
- package/lib/logger/datadogTransport.d.ts.map +1 -1
- package/lib/logger/datadogTransport.js +4 -8
- package/lib/logger/datadogTransport.js.map +1 -1
- package/lib/logger/index.js +29 -49
- package/lib/logger/index.js.map +1 -1
- package/lib/logger/index.test.js +16 -18
- package/lib/logger/index.test.js.map +1 -1
- package/lib/logger/utils.js +4 -9
- package/lib/logger/utils.js.map +1 -1
- package/lib/reporters/amplifyReporter.d.ts +3 -3
- package/lib/reporters/amplifyReporter.d.ts.map +1 -1
- package/lib/reporters/amplifyReporter.js +154 -82
- package/lib/reporters/amplifyReporter.js.map +1 -1
- package/lib/reporters/amplifyReporter.test.js +9 -12
- package/lib/reporters/amplifyReporter.test.js.map +1 -1
- package/lib/reporters/datadogReporter.d.ts +1 -1
- package/lib/reporters/datadogReporter.d.ts.map +1 -1
- package/lib/reporters/datadogReporter.js +117 -48
- package/lib/reporters/datadogReporter.js.map +1 -1
- package/lib/reporters/gtmReporter.d.ts +1 -1
- package/lib/reporters/gtmReporter.d.ts.map +1 -1
- package/lib/reporters/gtmReporter.js +1 -5
- package/lib/reporters/gtmReporter.js.map +1 -1
- package/lib/reporters/index.js +46 -71
- package/lib/reporters/index.js.map +1 -1
- package/lib/reporters/logReporter.js +24 -34
- package/lib/reporters/logReporter.js.map +1 -1
- package/lib/types/index.js +2 -18
- package/lib/types/index.js.map +1 -1
- package/lib/types/logger.d.ts +3 -3
- package/lib/types/logger.d.ts.map +1 -1
- package/lib/types/logger.js +2 -5
- package/lib/types/logger.js.map +1 -1
- package/lib/types/reporter.d.ts +6 -6
- package/lib/types/reporter.d.ts.map +1 -1
- package/lib/types/reporter.js +1 -2
- package/lib/utils.js +1 -5
- package/lib/utils.js.map +1 -1
- package/lib/utils.test.js +2 -4
- package/lib/utils.test.js.map +1 -1
- package/package.json +15 -13
- package/src/reporters/amplifyReporter.ts +165 -68
- package/src/reporters/datadogReporter.ts +106 -18
package/lib/logger/index.test.js
CHANGED
|
@@ -1,33 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const reporters_1 = require("../reporters");
|
|
6
|
-
const types_1 = require("../types");
|
|
1
|
+
import { createLogger, setLogLevel as setGlobalLogLevel, logTransports, consoleTransport } from '.';
|
|
2
|
+
import { init } from '..';
|
|
3
|
+
import { addMetadata, setUser } from '../reporters';
|
|
4
|
+
import { LogLevel } from '../types';
|
|
7
5
|
// This isn't actually asserting anything.
|
|
8
6
|
// But it ensures that the logs look correct, and no errors get thrown.
|
|
9
7
|
describe('logger', () => {
|
|
10
|
-
const logger =
|
|
8
|
+
const logger = createLogger({
|
|
11
9
|
metadata: {
|
|
12
10
|
service: 'test',
|
|
13
11
|
},
|
|
14
12
|
});
|
|
15
13
|
// Manually set the log transports.
|
|
16
|
-
|
|
17
|
-
const transport =
|
|
14
|
+
logTransports.length = 0;
|
|
15
|
+
const transport = consoleTransport({
|
|
18
16
|
// So we can see everything.
|
|
19
17
|
ignoreMetadataPatterns: [],
|
|
20
18
|
});
|
|
21
|
-
|
|
19
|
+
logTransports.push(transport);
|
|
22
20
|
it('should log', async () => {
|
|
23
21
|
logger.log({
|
|
24
22
|
level: 'info',
|
|
25
23
|
message: 'data',
|
|
26
24
|
});
|
|
27
25
|
logger.log({ data: 'obj' });
|
|
28
|
-
logger.log(
|
|
29
|
-
logger.log(
|
|
30
|
-
|
|
26
|
+
logger.log(LogLevel.Debug, 'level, message', { data: 'obj' });
|
|
27
|
+
logger.log(LogLevel.Debug, 'level, message, metadata', { data: 'obj' });
|
|
28
|
+
init({
|
|
31
29
|
service: 'test-service',
|
|
32
30
|
environment: 'test',
|
|
33
31
|
version: 'no-version',
|
|
@@ -41,17 +39,17 @@ describe('logger', () => {
|
|
|
41
39
|
const timer = logger.startTimer();
|
|
42
40
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
43
41
|
timer.done({ message: 'timer done', metadata: { id: 1 } });
|
|
44
|
-
(
|
|
45
|
-
|
|
42
|
+
setGlobalLogLevel(LogLevel.Info);
|
|
43
|
+
addMetadata({ global: 'metadata' });
|
|
46
44
|
logger.debug('You should not see this');
|
|
47
45
|
logger.info('You should see this with { global: "metadata" }');
|
|
48
|
-
(
|
|
49
|
-
|
|
46
|
+
setGlobalLogLevel(null);
|
|
47
|
+
setUser({
|
|
50
48
|
id: '123',
|
|
51
49
|
email: 'test@example.com',
|
|
52
50
|
});
|
|
53
51
|
logger.debug('debug call, user metadata');
|
|
54
|
-
transport.logLevel =
|
|
52
|
+
transport.logLevel = LogLevel.Info;
|
|
55
53
|
logger.debug('You should not see this');
|
|
56
54
|
logger.info('You should see this');
|
|
57
55
|
transport.logLevel = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/logger/index.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/logger/index.test.ts"],"names":[],"mappings":"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"}
|
package/lib/logger/utils.js
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLogMessage = exports.isAboveLevel = void 0;
|
|
4
|
-
const types_1 = require("../types");
|
|
1
|
+
import { LogLevel } from '../types';
|
|
5
2
|
/**
|
|
6
3
|
* Checks if a log level is above the global log level.
|
|
7
4
|
* @param level The log level to check
|
|
8
5
|
* @param checkLevel THe log level to check against
|
|
9
6
|
* @returns Is above the checkLevel?
|
|
10
7
|
*/
|
|
11
|
-
function isAboveLevel(level, checkLevel) {
|
|
12
|
-
const levels = [
|
|
8
|
+
export function isAboveLevel(level, checkLevel) {
|
|
9
|
+
const levels = [LogLevel.Debug, LogLevel.Info, LogLevel.Warn, LogLevel.Error];
|
|
13
10
|
return levels.indexOf(level) >= levels.indexOf(checkLevel);
|
|
14
11
|
}
|
|
15
|
-
exports.isAboveLevel = isAboveLevel;
|
|
16
12
|
/**
|
|
17
13
|
* Ensures a message output is a string.
|
|
18
14
|
* @param message The message to assert is/convert to a string
|
|
19
15
|
* @returns The message as a string
|
|
20
16
|
*/
|
|
21
|
-
function getLogMessage(message) {
|
|
17
|
+
export function getLogMessage(message) {
|
|
22
18
|
if (typeof message === 'string') {
|
|
23
19
|
return message;
|
|
24
20
|
}
|
|
@@ -28,5 +24,4 @@ function getLogMessage(message) {
|
|
|
28
24
|
}
|
|
29
25
|
return String(message);
|
|
30
26
|
}
|
|
31
|
-
exports.getLogMessage = getLogMessage;
|
|
32
27
|
//# sourceMappingURL=utils.js.map
|
package/lib/logger/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/logger/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/logger/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAe,EAAE,UAAoB;IAChE,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAY;IACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IReporter, Metadata, ReporterConfigBase, ServiceInfo } from '../types';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
type AttributeMap = Record<string, string[] | string | null>;
|
|
3
|
+
type AmplifyAutoTrackSource = 'pageView' | 'event' | 'session';
|
|
4
4
|
export interface AmplifyReporterConfig extends ReporterConfigBase {
|
|
5
5
|
/**
|
|
6
6
|
* AWS Region for Amplify.
|
|
@@ -61,7 +61,7 @@ export interface AmplifyReporterConfig extends ReporterConfigBase {
|
|
|
61
61
|
*
|
|
62
62
|
* @see https://docs.amplify.aws/lib/analytics/getting-started/q/platform/js/#set-up-existing-analytics-backend
|
|
63
63
|
*/
|
|
64
|
-
|
|
64
|
+
type AmplifyReporterBufferingConfig = {
|
|
65
65
|
/** Number of items to buffer for sending. */
|
|
66
66
|
bufferSize?: number;
|
|
67
67
|
/** Number of events sent each time Pinpoint flushes. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amplifyReporter.d.ts","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"amplifyReporter.d.ts","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,SAAS,EACT,QAAQ,EAER,kBAAkB,EAGlB,WAAW,EACZ,MAAM,UAAU,CAAC;AAIlB,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;AAE7D,KAAK,sBAAsB,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAkI/D,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB;IAC/D;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,cAAc,EAAE,MAAM,GAAG,KAAK,CAAC;IAC/B;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,eAAe,CAAC,CAAC,MAAM,EAAE,sBAAsB,GAAG,QAAQ,GAAG,SAAS,CAAC;IAEvE;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,8BAA8B,CAAC;CAC5C;AAED;;;;GAIG;AACH,KAAK,8BAA8B,GAAG;IACpC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,qBAAqB,GAAG,SAAS,CA8F3F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,UAAO,GAAG,YAAY,CAqBhG;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,SAAS,GAAE,MAAM,GAAG,SAAqB,EACzC,WAAW,UAAO,GACjB,YAAY,CAsBd"}
|
|
@@ -1,24 +1,136 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { Amplify } from '@aws-amplify/core';
|
|
2
|
+
import { record } from '@aws-amplify/analytics';
|
|
3
|
+
import { HttpRequest } from '@aws-sdk/protocol-http';
|
|
4
|
+
import { logger } from '../logger';
|
|
5
|
+
// Auto-tracking implementation for Gen2
|
|
6
|
+
class AmplifyAutoTracker {
|
|
7
|
+
config;
|
|
8
|
+
allMetadata;
|
|
9
|
+
currentUser = null;
|
|
10
|
+
sessionStartTime = Date.now();
|
|
11
|
+
pageViewCount = 0;
|
|
12
|
+
lastPageUrl = window.location.href;
|
|
13
|
+
isPageVisible = !document.hidden;
|
|
14
|
+
constructor(config, allMetadata) {
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.allMetadata = allMetadata;
|
|
17
|
+
this.setupEventListeners();
|
|
18
|
+
}
|
|
19
|
+
setupEventListeners() {
|
|
20
|
+
// Page visibility tracking
|
|
21
|
+
document.addEventListener('visibilitychange', () => {
|
|
22
|
+
this.isPageVisible = !document.hidden;
|
|
23
|
+
if (this.config.autoTrackSessions) {
|
|
24
|
+
this.trackSessionState();
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// Page view tracking
|
|
28
|
+
if (this.config.autoTrackPageViews) {
|
|
29
|
+
this.trackPageView();
|
|
30
|
+
// Track route changes for SPAs
|
|
31
|
+
let currentUrl = window.location.href;
|
|
32
|
+
const observer = new MutationObserver(() => {
|
|
33
|
+
if (window.location.href !== currentUrl) {
|
|
34
|
+
currentUrl = window.location.href;
|
|
35
|
+
this.trackPageView();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
39
|
+
}
|
|
40
|
+
// User interaction tracking
|
|
41
|
+
if (this.config.autoTrackEvents) {
|
|
42
|
+
this.setupInteractionTracking();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
trackPageView() {
|
|
46
|
+
this.pageViewCount++;
|
|
47
|
+
const pageViewEvent = {
|
|
48
|
+
message: 'Page View',
|
|
49
|
+
metadata: {
|
|
50
|
+
url: window.location.href,
|
|
51
|
+
title: document.title,
|
|
52
|
+
referrer: document.referrer,
|
|
53
|
+
pageViewCount: this.pageViewCount,
|
|
54
|
+
...this.getAutoTrackMetadata('pageView'),
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
record({
|
|
58
|
+
name: pageViewEvent.message,
|
|
59
|
+
attributes: asAttributeMap(pageViewEvent.metadata, false),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
trackSessionState() {
|
|
63
|
+
const sessionDuration = Date.now() - this.sessionStartTime;
|
|
64
|
+
const sessionEvent = {
|
|
65
|
+
message: this.isPageVisible ? 'Session Active' : 'Session Inactive',
|
|
66
|
+
metadata: {
|
|
67
|
+
sessionDuration,
|
|
68
|
+
isVisible: this.isPageVisible,
|
|
69
|
+
...this.getAutoTrackMetadata('session'),
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
record({
|
|
73
|
+
name: sessionEvent.message,
|
|
74
|
+
attributes: asAttributeMap(sessionEvent.metadata, false),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
setupInteractionTracking() {
|
|
78
|
+
const selectorPrefix = this.config.selectorPrefix ?? 'data-analytics-';
|
|
79
|
+
document.addEventListener('click', (event) => {
|
|
80
|
+
const target = event.target;
|
|
81
|
+
if (!target)
|
|
82
|
+
return;
|
|
83
|
+
// Find the closest element with analytics attributes
|
|
84
|
+
const analyticsElement = target.closest(`[${selectorPrefix}name]`);
|
|
85
|
+
if (!analyticsElement)
|
|
86
|
+
return;
|
|
87
|
+
const analyticsName = analyticsElement.getAttribute(`${selectorPrefix}name`);
|
|
88
|
+
if (!analyticsName)
|
|
89
|
+
return;
|
|
90
|
+
const interactionEvent = {
|
|
91
|
+
message: 'User Interaction',
|
|
92
|
+
metadata: {
|
|
93
|
+
elementName: analyticsName,
|
|
94
|
+
elementType: target.tagName.toLowerCase(),
|
|
95
|
+
elementText: target.textContent?.slice(0, 100),
|
|
96
|
+
interactionType: 'click',
|
|
97
|
+
...this.getAutoTrackMetadata('event'),
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
record({
|
|
101
|
+
name: interactionEvent.message,
|
|
102
|
+
attributes: asAttributeMap(interactionEvent.metadata, false),
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
getAutoTrackMetadata(source) {
|
|
107
|
+
const { beforeAutoTrack } = this.config;
|
|
108
|
+
return typeof beforeAutoTrack === 'function' ? (beforeAutoTrack(source) ?? {}) : {};
|
|
109
|
+
}
|
|
110
|
+
setUser(user) {
|
|
111
|
+
this.currentUser = user;
|
|
112
|
+
}
|
|
113
|
+
updateMetadata(metadata) {
|
|
114
|
+
Object.assign(this.allMetadata, metadata);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export function amplifyReporter(info, config) {
|
|
10
118
|
if (config.identityPoolId !== false) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
119
|
+
// Gen2 configuration structure
|
|
120
|
+
const authConfig = {
|
|
121
|
+
Cognito: {
|
|
122
|
+
identityPoolId: config.identityPoolId,
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
// Only add user pool config if both userPoolId and userPoolWebClientId are provided
|
|
126
|
+
if (config.userPoolId && config.userPoolWebClientId) {
|
|
127
|
+
authConfig.Cognito.userPoolId = config.userPoolId;
|
|
128
|
+
authConfig.Cognito.userPoolClientId = config.userPoolWebClientId;
|
|
129
|
+
}
|
|
130
|
+
Amplify.configure({
|
|
131
|
+
Auth: authConfig,
|
|
16
132
|
});
|
|
17
133
|
}
|
|
18
|
-
const wrapAutoTrackMiddleware = (source) => {
|
|
19
|
-
const { beforeAutoTrack } = config;
|
|
20
|
-
return typeof beforeAutoTrack === 'function' ? () => { var _a; return (_a = beforeAutoTrack(source)) !== null && _a !== void 0 ? _a : {}; } : undefined;
|
|
21
|
-
};
|
|
22
134
|
const allMetadata = asAttributeMap({
|
|
23
135
|
appName: info.service,
|
|
24
136
|
service: info.service,
|
|
@@ -26,51 +138,29 @@ function amplifyReporter(info, config) {
|
|
|
26
138
|
environment: info.environment,
|
|
27
139
|
version: info.version,
|
|
28
140
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
141
|
+
Amplify.configure({
|
|
142
|
+
Analytics: {
|
|
143
|
+
Pinpoint: {
|
|
144
|
+
appId: config.analyticsAppId,
|
|
145
|
+
region: config.region,
|
|
146
|
+
...config.buffering,
|
|
147
|
+
},
|
|
34
148
|
},
|
|
35
|
-
...config.buffering,
|
|
36
149
|
});
|
|
37
|
-
//
|
|
38
|
-
|
|
39
|
-
// See: https://docs.amplify.aws/lib/analytics/autotrack/q/platform/js/#session-tracking
|
|
40
|
-
analytics_1.Analytics.autoTrack('session', {
|
|
41
|
-
enable: config.autoTrackSessions === true,
|
|
42
|
-
attributes: wrapAutoTrackMiddleware('session'),
|
|
43
|
-
});
|
|
44
|
-
if (config.autoTrackPageViews) {
|
|
45
|
-
analytics_1.Analytics.autoTrack('pageView', {
|
|
46
|
-
enable: true,
|
|
47
|
-
eventName: 'pageView',
|
|
48
|
-
type: 'SPA',
|
|
49
|
-
provider: 'AWSPinpoint',
|
|
50
|
-
attributes: wrapAutoTrackMiddleware('pageView'),
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
if (config.autoTrackEvents) {
|
|
54
|
-
analytics_1.Analytics.autoTrack('event', {
|
|
55
|
-
enable: true,
|
|
56
|
-
selectorPrefix: (_a = config.selectorPrefix) !== null && _a !== void 0 ? _a : 'data-analytics-',
|
|
57
|
-
attributes: wrapAutoTrackMiddleware('event'),
|
|
58
|
-
});
|
|
59
|
-
}
|
|
150
|
+
// Initialize auto-tracker for Gen2
|
|
151
|
+
const autoTracker = new AmplifyAutoTracker(config, allMetadata);
|
|
60
152
|
if (config.proxyUrl) {
|
|
61
153
|
installPinpointProxy(new URL(config.proxyUrl));
|
|
62
154
|
}
|
|
63
155
|
const reporter = {
|
|
64
156
|
trackEvent: function (event) {
|
|
65
|
-
|
|
157
|
+
record({
|
|
66
158
|
name: event.message,
|
|
67
159
|
attributes: asAttributeMap({
|
|
68
160
|
...event.metadata,
|
|
69
161
|
...event.tags,
|
|
70
162
|
}, false),
|
|
71
163
|
metrics: event.metrics,
|
|
72
|
-
}).catch(() => {
|
|
73
|
-
// Swallow; see: https://crimsonhq.slack.com/archives/G4UN6Q4KF/p1648599302847539
|
|
74
164
|
});
|
|
75
165
|
},
|
|
76
166
|
addBreadcrumb: function (breadcrumb) {
|
|
@@ -84,34 +174,20 @@ function amplifyReporter(info, config) {
|
|
|
84
174
|
},
|
|
85
175
|
addMetadata: function (metadata) {
|
|
86
176
|
Object.assign(allMetadata, asAttributeMap(metadata, true));
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
// Swallow; see: https://crimsonhq.slack.com/archives/G4UN6Q4KF/p1648599302847539
|
|
91
|
-
});
|
|
177
|
+
autoTracker.updateMetadata(asAttributeMap(metadata, true));
|
|
178
|
+
// Note: updateEndpoint is not available in Amplify v7
|
|
179
|
+
// Metadata updates would need to be handled differently
|
|
92
180
|
},
|
|
93
181
|
setUser: function (user) {
|
|
94
|
-
var _a, _b;
|
|
95
182
|
const userMetadata = user
|
|
96
183
|
? asAttributeMap({
|
|
97
184
|
userId: user.id,
|
|
98
185
|
})
|
|
99
186
|
: {};
|
|
100
187
|
Object.assign(allMetadata, asAttributeMap(userMetadata, true));
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
userAttributes: user
|
|
105
|
-
? asAttributeMap({
|
|
106
|
-
id: user.id,
|
|
107
|
-
email: user.email,
|
|
108
|
-
name: (_b = user.name) !== null && _b !== void 0 ? _b : user.email,
|
|
109
|
-
username: user.username,
|
|
110
|
-
})
|
|
111
|
-
: {},
|
|
112
|
-
}).catch(() => {
|
|
113
|
-
// Swallow; see: https://crimsonhq.slack.com/archives/G4UN6Q4KF/p1648599302847539
|
|
114
|
-
});
|
|
188
|
+
autoTracker.setUser(user);
|
|
189
|
+
// Note: updateEndpoint is not available in Amplify v7
|
|
190
|
+
// User updates would need to be handled differently
|
|
115
191
|
},
|
|
116
192
|
setRouteName: function (routeName) {
|
|
117
193
|
reporter.addMetadata({ routeName });
|
|
@@ -122,36 +198,33 @@ function amplifyReporter(info, config) {
|
|
|
122
198
|
};
|
|
123
199
|
return reporter;
|
|
124
200
|
}
|
|
125
|
-
exports.amplifyReporter = amplifyReporter;
|
|
126
201
|
/**
|
|
127
202
|
* Pinpoint has strict attribute name and value length limits
|
|
128
203
|
*/
|
|
129
|
-
function asAttributeMap(values, groupValues = true) {
|
|
204
|
+
export function asAttributeMap(values, groupValues = true) {
|
|
130
205
|
const attributeMap = buildAttributeMap(values, undefined, groupValues);
|
|
131
206
|
const checkedEntries = Object.entries(attributeMap).map(([key, value]) => {
|
|
132
|
-
var _a, _b;
|
|
133
207
|
const truncatedKey = key.length > 50 ? `___${key.slice(-47)}` : key;
|
|
134
208
|
const truncatedValue = Array.isArray(value)
|
|
135
|
-
? (
|
|
136
|
-
: (
|
|
209
|
+
? (value?.map((val) => val.slice(0, 100)) ?? null)
|
|
210
|
+
: (value?.slice(0, 100) ?? null);
|
|
137
211
|
return [truncatedKey, truncatedValue];
|
|
138
212
|
});
|
|
139
213
|
// Pinpoint only accepts 40 attributes
|
|
140
214
|
if (checkedEntries.length > 40) {
|
|
141
|
-
|
|
215
|
+
logger.error(`Amplify only allows 40 attributes per event, truncating to 40 attributes`, {
|
|
142
216
|
attributes: checkedEntries,
|
|
143
217
|
});
|
|
144
218
|
checkedEntries.length = 40;
|
|
145
219
|
}
|
|
146
220
|
return Object.fromEntries(checkedEntries);
|
|
147
221
|
}
|
|
148
|
-
exports.asAttributeMap = asAttributeMap;
|
|
149
222
|
/**
|
|
150
223
|
* Pinpoint expects `endpoint.attributes` and `endpoint.userAttributes` to have
|
|
151
224
|
* values which are string arrays. This function takes in an object and ensures
|
|
152
225
|
* all of its values are of type `string[]` to appease Pinpoint.
|
|
153
226
|
*/
|
|
154
|
-
function buildAttributeMap(values, parentKey = undefined, groupValues = true) {
|
|
227
|
+
export function buildAttributeMap(values, parentKey = undefined, groupValues = true) {
|
|
155
228
|
const valuesWithStringArrays = {};
|
|
156
229
|
Object.entries(values).forEach(([key, value]) => {
|
|
157
230
|
const combinedKey = parentKey ? [parentKey, key].join('.') : key;
|
|
@@ -172,7 +245,6 @@ function buildAttributeMap(values, parentKey = undefined, groupValues = true) {
|
|
|
172
245
|
});
|
|
173
246
|
return valuesWithStringArrays;
|
|
174
247
|
}
|
|
175
|
-
exports.buildAttributeMap = buildAttributeMap;
|
|
176
248
|
function installPinpointProxy(proxyUrl) {
|
|
177
249
|
// No public API for overriding where the Pinpoint client sends events to... 🤮
|
|
178
250
|
// In theory you can pass in an `endpoint` to the Pinpoint client's constructor like any other AWS
|
|
@@ -182,15 +254,15 @@ function installPinpointProxy(proxyUrl) {
|
|
|
182
254
|
// The Pinpoint client _also_ isn't available synchronously because it is instantiated when events
|
|
183
255
|
// get sent out, and then reconfigured whenever the API credentials change. We need to hook `_initClients`
|
|
184
256
|
// to ensure that the Pinpoint client being used is always patched with our custom endpoint.
|
|
185
|
-
const provider =
|
|
257
|
+
const provider = globalThis.Analytics?.getPluggable?.('AWSPinpoint');
|
|
186
258
|
if (!provider || typeof provider._initClients !== 'function') {
|
|
187
|
-
|
|
259
|
+
logger.error('Installation of the Pinpoint proxy failed. This likely means the internals of the @aws-amplify/analytics package have changed.');
|
|
188
260
|
return;
|
|
189
261
|
}
|
|
190
262
|
const originalInitClients = provider._initClients;
|
|
191
263
|
const requestMiddleware = (next) => async (args) => {
|
|
192
264
|
const pinpointClient = provider.pinpointClient;
|
|
193
|
-
if (pinpointClient && proxyUrl.pathname !== '/' &&
|
|
265
|
+
if (pinpointClient && proxyUrl.pathname !== '/' && HttpRequest.isInstance(args.request)) {
|
|
194
266
|
// Add proxyUrl.pathname to final request url if it was provided
|
|
195
267
|
const shouldStripSlash = proxyUrl.pathname.endsWith('/');
|
|
196
268
|
args.request.path = `${proxyUrl.pathname}${args.request.path.slice(shouldStripSlash ? 1 : 0)}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amplifyReporter.js","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"amplifyReporter.js","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const amplifyReporter_1 = require("./amplifyReporter");
|
|
1
|
+
import { asAttributeMap } from './amplifyReporter';
|
|
4
2
|
describe('amplifyReporter', () => {
|
|
5
3
|
it('should convert all attribute values to arrays of strings', () => {
|
|
6
4
|
const testMetadata = { a: 'a', d: ['e', 'f'] };
|
|
7
|
-
const attributeMap =
|
|
5
|
+
const attributeMap = asAttributeMap(testMetadata);
|
|
8
6
|
expect(attributeMap.a).toEqual(['a']);
|
|
9
7
|
expect(attributeMap.d).toEqual(['e', 'f']);
|
|
10
8
|
});
|
|
11
9
|
it('should handle undefined / null attributes', () => {
|
|
12
10
|
const testMetadata = { a: null, d: undefined };
|
|
13
|
-
const attributeMap =
|
|
11
|
+
const attributeMap = asAttributeMap(testMetadata);
|
|
14
12
|
expect(attributeMap.a).toBeNull();
|
|
15
13
|
expect(attributeMap.d).toBeNull();
|
|
16
14
|
});
|
|
17
15
|
it('should flatten hierarchies', () => {
|
|
18
16
|
const testMetadata = { foo: { bar: 'baz' } };
|
|
19
|
-
const attributeMap =
|
|
17
|
+
const attributeMap = asAttributeMap(testMetadata);
|
|
20
18
|
expect(attributeMap['foo.bar']).toEqual(['baz']);
|
|
21
19
|
});
|
|
22
20
|
it('should stringify non-string array members', () => {
|
|
23
|
-
var _a;
|
|
24
21
|
const testMetadata = { foo: 5, bar: [{ baz: 'maz' }] };
|
|
25
|
-
const attributeMap =
|
|
22
|
+
const attributeMap = asAttributeMap(testMetadata);
|
|
26
23
|
expect(attributeMap.foo).toEqual(['5']);
|
|
27
|
-
expect(typeof
|
|
24
|
+
expect(typeof attributeMap.bar?.[0]).toEqual('string');
|
|
28
25
|
});
|
|
29
26
|
it('should truncate attribute names', () => {
|
|
30
27
|
const testMetadata = { thisIsAVeryVeryLongAttributeNameThatNeedsToBeTruncated: 5 };
|
|
31
|
-
const attributeMap =
|
|
28
|
+
const attributeMap = asAttributeMap(testMetadata);
|
|
32
29
|
expect(attributeMap.___VeryVeryLongAttributeNameThatNeedsToBeTruncated).toEqual(['5']);
|
|
33
30
|
});
|
|
34
31
|
it('should truncate attribute values', () => {
|
|
35
32
|
const testMetadata = {
|
|
36
33
|
a: 'ThisIsAVeryLongStringThatNeedsToBeTruncatedTo100CharsOrElseThereWillBeAProblemWithSendingTheBeautifulDataToPinpoint',
|
|
37
34
|
};
|
|
38
|
-
const attributeMap =
|
|
35
|
+
const attributeMap = asAttributeMap(testMetadata);
|
|
39
36
|
expect(attributeMap.a).toEqual([
|
|
40
37
|
'ThisIsAVeryLongStringThatNeedsToBeTruncatedTo100CharsOrElseThereWillBeAProblemWithSendingTheBeautifu',
|
|
41
38
|
]);
|
|
@@ -44,7 +41,7 @@ describe('amplifyReporter', () => {
|
|
|
44
41
|
const testMetadata = {
|
|
45
42
|
a: '5',
|
|
46
43
|
};
|
|
47
|
-
const attributeMap =
|
|
44
|
+
const attributeMap = asAttributeMap(testMetadata, false);
|
|
48
45
|
expect(attributeMap.a).toEqual('5');
|
|
49
46
|
});
|
|
50
47
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amplifyReporter.test.js","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"amplifyReporter.test.js","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,7 +100,7 @@ export interface DatadogReporterConfig extends ReporterConfigBase {
|
|
|
100
100
|
/**
|
|
101
101
|
* A list of request origins used to inject tracing headers, to be able to connect RUM and backend tracing.
|
|
102
102
|
*/
|
|
103
|
-
|
|
103
|
+
allowedTrackingOrigins?: (string | RegExp)[];
|
|
104
104
|
/**
|
|
105
105
|
* Enables action tracking for user interactions. This enables the Heatmap tab within Datadog
|
|
106
106
|
*/
|
|
@@ -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;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,CAmI3F"}
|