@crimson-education/browser-logger 5.0.1 → 5.0.3

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.
Files changed (66) hide show
  1. package/README.md +72 -94
  2. package/lib/index.d.ts +1 -1
  3. package/lib/index.d.ts.map +1 -1
  4. package/lib/index.js +23 -46
  5. package/lib/index.js.map +1 -1
  6. package/lib/logger/consoleTransport.d.ts +1 -1
  7. package/lib/logger/consoleTransport.d.ts.map +1 -1
  8. package/lib/logger/consoleTransport.js +16 -22
  9. package/lib/logger/consoleTransport.js.map +1 -1
  10. package/lib/logger/datadogTransport.d.ts +1 -1
  11. package/lib/logger/datadogTransport.d.ts.map +1 -1
  12. package/lib/logger/datadogTransport.js +4 -8
  13. package/lib/logger/datadogTransport.js.map +1 -1
  14. package/lib/logger/index.js +29 -49
  15. package/lib/logger/index.js.map +1 -1
  16. package/lib/logger/index.test.js +16 -18
  17. package/lib/logger/index.test.js.map +1 -1
  18. package/lib/logger/utils.js +4 -9
  19. package/lib/logger/utils.js.map +1 -1
  20. package/lib/reporters/datadogReporter.d.ts +13 -1
  21. package/lib/reporters/datadogReporter.d.ts.map +1 -1
  22. package/lib/reporters/datadogReporter.js +122 -49
  23. package/lib/reporters/datadogReporter.js.map +1 -1
  24. package/lib/reporters/gtmReporter.d.ts +1 -1
  25. package/lib/reporters/gtmReporter.d.ts.map +1 -1
  26. package/lib/reporters/gtmReporter.js +1 -5
  27. package/lib/reporters/gtmReporter.js.map +1 -1
  28. package/lib/reporters/index.js +46 -71
  29. package/lib/reporters/index.js.map +1 -1
  30. package/lib/reporters/logReporter.js +24 -34
  31. package/lib/reporters/logReporter.js.map +1 -1
  32. package/lib/reporters/posthogReporter.d.ts +1 -1
  33. package/lib/reporters/posthogReporter.d.ts.map +1 -1
  34. package/lib/reporters/posthogReporter.js +46 -55
  35. package/lib/reporters/posthogReporter.js.map +1 -1
  36. package/lib/reporters/posthogReporter.test.js +21 -23
  37. package/lib/reporters/posthogReporter.test.js.map +1 -1
  38. package/lib/types/index.js +2 -18
  39. package/lib/types/index.js.map +1 -1
  40. package/lib/types/logger.d.ts +3 -3
  41. package/lib/types/logger.d.ts.map +1 -1
  42. package/lib/types/logger.js +2 -5
  43. package/lib/types/logger.js.map +1 -1
  44. package/lib/types/reporter.d.ts +6 -12
  45. package/lib/types/reporter.d.ts.map +1 -1
  46. package/lib/types/reporter.js +1 -2
  47. package/lib/utils.js +1 -5
  48. package/lib/utils.js.map +1 -1
  49. package/lib/utils.test.js +2 -4
  50. package/lib/utils.test.js.map +1 -1
  51. package/package.json +16 -16
  52. package/src/index.ts +0 -6
  53. package/src/reporters/datadogReporter.ts +133 -22
  54. package/src/reporters/posthogReporter.test.ts +6 -1
  55. package/src/reporters/posthogReporter.ts +6 -1
  56. package/src/types/reporter.ts +0 -7
  57. package/lib/reporters/amplifyReporter.d.ts +0 -86
  58. package/lib/reporters/amplifyReporter.d.ts.map +0 -1
  59. package/lib/reporters/amplifyReporter.js +0 -225
  60. package/lib/reporters/amplifyReporter.js.map +0 -1
  61. package/lib/reporters/amplifyReporter.test.d.ts +0 -2
  62. package/lib/reporters/amplifyReporter.test.d.ts.map +0 -1
  63. package/lib/reporters/amplifyReporter.test.js +0 -51
  64. package/lib/reporters/amplifyReporter.test.js.map +0 -1
  65. package/src/reporters/amplifyReporter.test.ts +0 -61
  66. package/src/reporters/amplifyReporter.ts +0 -344
@@ -1,225 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildAttributeMap = exports.asAttributeMap = exports.amplifyReporter = void 0;
4
- const auth_1 = require("@aws-amplify/auth");
5
- const analytics_1 = require("@aws-amplify/analytics");
6
- const protocol_http_1 = require("@aws-sdk/protocol-http");
7
- const logger_1 = require("../logger");
8
- function amplifyReporter(info, config) {
9
- var _a;
10
- if (config.identityPoolId !== false) {
11
- auth_1.Auth.configure({
12
- region: config.region,
13
- identityPoolId: config.identityPoolId,
14
- userPoolId: config.userPoolId,
15
- userPoolWebClientId: config.userPoolWebClientId,
16
- });
17
- }
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
- const allMetadata = asAttributeMap({
23
- appName: info.service,
24
- service: info.service,
25
- domain: window.location.host,
26
- environment: info.environment,
27
- version: info.version,
28
- });
29
- analytics_1.Analytics.configure({
30
- region: config.region,
31
- appId: config.analyticsAppId,
32
- endpoint: {
33
- attributes: allMetadata,
34
- },
35
- ...config.buffering,
36
- });
37
- // Session autotracking is enabled by default for backwards compatibility reasons, so we _must_
38
- // call this unconditionally to ensure we opt out of session tracking when `autoTrackSessions` isn't set
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
- }
60
- if (config.proxyUrl) {
61
- installPinpointProxy(new URL(config.proxyUrl));
62
- }
63
- const reporter = {
64
- trackEvent: function (event) {
65
- analytics_1.Analytics.record({
66
- name: event.message,
67
- attributes: asAttributeMap({
68
- ...event.metadata,
69
- ...event.tags,
70
- }, false),
71
- metrics: event.metrics,
72
- }).catch(() => {
73
- // Swallow; see: https://crimsonhq.slack.com/archives/G4UN6Q4KF/p1648599302847539
74
- });
75
- },
76
- addBreadcrumb: function (breadcrumb) {
77
- reporter.trackEvent({
78
- message: breadcrumb.message,
79
- metadata: {
80
- category: breadcrumb.category,
81
- ...breadcrumb.metadata,
82
- },
83
- });
84
- },
85
- addMetadata: function (metadata) {
86
- Object.assign(allMetadata, asAttributeMap(metadata, true));
87
- analytics_1.Analytics.updateEndpoint({
88
- attributes: allMetadata,
89
- }).catch(() => {
90
- // Swallow; see: https://crimsonhq.slack.com/archives/G4UN6Q4KF/p1648599302847539
91
- });
92
- },
93
- setUser: function (user) {
94
- var _a, _b;
95
- const userMetadata = user
96
- ? asAttributeMap({
97
- userId: user.id,
98
- })
99
- : {};
100
- Object.assign(allMetadata, asAttributeMap(userMetadata, true));
101
- analytics_1.Analytics.updateEndpoint({
102
- userId: (_a = user === null || user === void 0 ? void 0 : user.id) !== null && _a !== void 0 ? _a : '',
103
- attributes: allMetadata,
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
- });
115
- },
116
- setRouteName: function (routeName) {
117
- reporter.addMetadata({ routeName });
118
- },
119
- setPageName: function (pageName) {
120
- reporter.addMetadata({ pageName });
121
- },
122
- };
123
- return reporter;
124
- }
125
- exports.amplifyReporter = amplifyReporter;
126
- /**
127
- * Pinpoint has strict attribute name and value length limits
128
- */
129
- function asAttributeMap(values, groupValues = true) {
130
- const attributeMap = buildAttributeMap(values, undefined, groupValues);
131
- const checkedEntries = Object.entries(attributeMap).map(([key, value]) => {
132
- var _a, _b;
133
- const truncatedKey = key.length > 50 ? `___${key.slice(-47)}` : key;
134
- const truncatedValue = Array.isArray(value)
135
- ? (_a = value === null || value === void 0 ? void 0 : value.map((val) => val.slice(0, 100))) !== null && _a !== void 0 ? _a : null
136
- : (_b = value === null || value === void 0 ? void 0 : value.slice(0, 100)) !== null && _b !== void 0 ? _b : null;
137
- return [truncatedKey, truncatedValue];
138
- });
139
- // Pinpoint only accepts 40 attributes
140
- if (checkedEntries.length > 40) {
141
- logger_1.logger.error(`Amplify only allows 40 attributes per event, truncating to 40 attributes`, {
142
- attributes: checkedEntries,
143
- });
144
- checkedEntries.length = 40;
145
- }
146
- return Object.fromEntries(checkedEntries);
147
- }
148
- exports.asAttributeMap = asAttributeMap;
149
- /**
150
- * Pinpoint expects `endpoint.attributes` and `endpoint.userAttributes` to have
151
- * values which are string arrays. This function takes in an object and ensures
152
- * all of its values are of type `string[]` to appease Pinpoint.
153
- */
154
- function buildAttributeMap(values, parentKey = undefined, groupValues = true) {
155
- const valuesWithStringArrays = {};
156
- Object.entries(values).forEach(([key, value]) => {
157
- const combinedKey = parentKey ? [parentKey, key].join('.') : key;
158
- if (!value) {
159
- valuesWithStringArrays[combinedKey] = null;
160
- }
161
- else if (groupValues && Array.isArray(value)) {
162
- valuesWithStringArrays[combinedKey] = value.map((element) => typeof element === 'string' ? element : JSON.stringify(element));
163
- }
164
- else if (typeof value === 'object') {
165
- const flattenedAttribute = buildAttributeMap(value, combinedKey, groupValues);
166
- Object.assign(valuesWithStringArrays, flattenedAttribute);
167
- }
168
- else {
169
- const stringValue = typeof value === 'string' ? value : JSON.stringify(value);
170
- valuesWithStringArrays[combinedKey] = groupValues ? [stringValue] : stringValue;
171
- }
172
- });
173
- return valuesWithStringArrays;
174
- }
175
- exports.buildAttributeMap = buildAttributeMap;
176
- function installPinpointProxy(proxyUrl) {
177
- // No public API for overriding where the Pinpoint client sends events to... 🤮
178
- // In theory you can pass in an `endpoint` to the Pinpoint client's constructor like any other AWS
179
- // client, but Amplify's analytics doesn't expose anything we can use to get an endpoint threaded
180
- // down to the Pinpoint client's constructor.
181
- //
182
- // The Pinpoint client _also_ isn't available synchronously because it is instantiated when events
183
- // get sent out, and then reconfigured whenever the API credentials change. We need to hook `_initClients`
184
- // to ensure that the Pinpoint client being used is always patched with our custom endpoint.
185
- const provider = analytics_1.Analytics.getPluggable('AWSPinpoint');
186
- if (!provider || typeof provider._initClients !== 'function') {
187
- logger_1.logger.error('Installation of the Pinpoint proxy failed. This likely means the internals of the @aws-amplify/analytics package have changed.');
188
- return;
189
- }
190
- const originalInitClients = provider._initClients;
191
- const requestMiddleware = (next) => async (args) => {
192
- const pinpointClient = provider.pinpointClient;
193
- if (pinpointClient && proxyUrl.pathname !== '/' && protocol_http_1.HttpRequest.isInstance(args.request)) {
194
- // Add proxyUrl.pathname to final request url if it was provided
195
- const shouldStripSlash = proxyUrl.pathname.endsWith('/');
196
- args.request.path = `${proxyUrl.pathname}${args.request.path.slice(shouldStripSlash ? 1 : 0)}`;
197
- // Wrap request body so the proxy has signing info
198
- if (typeof args.request.body === 'string') {
199
- const credentials = await pinpointClient.config.credentials();
200
- args.request.body = JSON.stringify({
201
- credentials,
202
- data: JSON.parse(args.request.body),
203
- });
204
- }
205
- }
206
- return next(args);
207
- };
208
- provider._initClients = async (credentials) => {
209
- const result = await originalInitClients.call(provider, credentials);
210
- const pinpointClient = provider.pinpointClient;
211
- if (pinpointClient) {
212
- pinpointClient.config.endpoint = () => Promise.resolve({
213
- hostname: proxyUrl.hostname,
214
- // Passing proxyUrl.pathname here doesn't work; it gets overridden
215
- path: '/',
216
- port: undefined,
217
- protocol: proxyUrl.protocol,
218
- });
219
- pinpointClient.middlewareStack.remove(requestMiddleware);
220
- pinpointClient.middlewareStack.add(requestMiddleware, { step: 'finalizeRequest' });
221
- }
222
- return result;
223
- };
224
- }
225
- //# sourceMappingURL=amplifyReporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"amplifyReporter.js","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.ts"],"names":[],"mappings":";;;AAAA,4CAAyC;AACzC,sDAAmD;AAEnD,0DAAqD;AAYrD,sCAAmC;AAkFnC,SAAgB,eAAe,CAAC,IAAiB,EAAE,MAA6B;;IAC9E,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK,EAAE;QACnC,WAAI,CAAC,SAAS,CAAC;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;SAChD,CAAC,CAAC;KACJ;IAED,MAAM,uBAAuB,GAAG,CAAC,MAA8B,EAAE,EAAE;QACjE,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAAC;QACnC,OAAO,OAAO,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,eAAe,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAA,EAAA,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,cAAc,CAAC;QACjC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;QAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,qBAAS,CAAC,SAAS,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,cAAc;QAC5B,QAAQ,EAAE;YACR,UAAU,EAAE,WAAW;SACxB;QACD,GAAG,MAAM,CAAC,SAAS;KACpB,CAAC,CAAC;IAEH,+FAA+F;IAC/F,wGAAwG;IACxG,wFAAwF;IACxF,qBAAS,CAAC,SAAS,CAAC,SAAS,EAAE;QAC7B,MAAM,EAAE,MAAM,CAAC,iBAAiB,KAAK,IAAI;QACzC,UAAU,EAAE,uBAAuB,CAAC,SAAS,CAAC;KAC/C,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,kBAAkB,EAAE;QAC7B,qBAAS,CAAC,SAAS,CAAC,UAAU,EAAE;YAC9B,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,aAAa;YACvB,UAAU,EAAE,uBAAuB,CAAC,UAAU,CAAC;SAChD,CAAC,CAAC;KACJ;IAED,IAAI,MAAM,CAAC,eAAe,EAAE;QAC1B,qBAAS,CAAC,SAAS,CAAC,OAAO,EAAE;YAC3B,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,MAAA,MAAM,CAAC,cAAc,mCAAI,iBAAiB;YAC1D,UAAU,EAAE,uBAAuB,CAAC,OAAO,CAAC;SAC7C,CAAC,CAAC;KACJ;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE;QACnB,oBAAoB,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;KAChD;IAED,MAAM,QAAQ,GAAc;QAC1B,UAAU,EAAE,UAAU,KAAoB;YACxC,qBAAS,CAAC,MAAM,CAAC;gBACf,IAAI,EAAE,KAAK,CAAC,OAAO;gBACnB,UAAU,EAAE,cAAc,CACxB;oBACE,GAAG,KAAK,CAAC,QAAQ;oBACjB,GAAG,KAAK,CAAC,IAAI;iBACd,EACD,KAAK,CACoB;gBAC3B,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACZ,iFAAiF;YACnF,CAAC,CAAC,CAAC;QACL,CAAC;QACD,aAAa,EAAE,UAAU,UAA8B;YACrD,QAAQ,CAAC,UAAU,CAAC;gBAClB,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,QAAQ,EAAE;oBACR,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,GAAG,UAAU,CAAC,QAAQ;iBACvB;aACF,CAAC,CAAC;QACL,CAAC;QACD,WAAW,EAAE,UAAU,QAAkB;YACvC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3D,qBAAS,CAAC,cAAc,CAAC;gBACvB,UAAU,EAAE,WAAW;aACxB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACZ,iFAAiF;YACnF,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,UAAU,IAAuB;;YACxC,MAAM,YAAY,GAAG,IAAI;gBACvB,CAAC,CAAC,cAAc,CAAC;oBACb,MAAM,EAAE,IAAI,CAAC,EAAE;iBAChB,CAAC;gBACJ,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/D,qBAAS,CAAC,cAAc,CAAC;gBACvB,MAAM,EAAE,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,mCAAI,EAAE;gBACtB,UAAU,EAAE,WAAW;gBACvB,cAAc,EAAE,IAAI;oBAClB,CAAC,CAAC,cAAc,CAAC;wBACb,EAAE,EAAE,IAAI,CAAC,EAAE;wBACX,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,mCAAI,IAAI,CAAC,KAAK;wBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC;oBACJ,CAAC,CAAC,EAAE;aACP,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBACZ,iFAAiF;YACnF,CAAC,CAAC,CAAC;QACL,CAAC;QACD,YAAY,EAAE,UAAU,SAAiB;YACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,WAAW,EAAE,UAAU,QAAgB;YACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrC,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AA9HD,0CA8HC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAA+B,EAAE,WAAW,GAAG,IAAI;IAChF,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAEvE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;;QACvE,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACpE,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACzC,CAAC,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,mCAAI,IAAI;YAChD,CAAC,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,mCAAI,IAAI,CAAC;QAEjC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,sCAAsC;IACtC,IAAI,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE;QAC9B,eAAM,CAAC,KAAK,CAAC,0EAA0E,EAAE;YACvF,UAAU,EAAE,cAAc;SAC3B,CAAC,CAAC;QACH,cAAc,CAAC,MAAM,GAAG,EAAE,CAAC;KAC5B;IAED,OAAO,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAC5C,CAAC;AArBD,wCAqBC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAC/B,MAA2B,EAC3B,YAAgC,SAAS,EACzC,WAAW,GAAG,IAAI;IAElB,MAAM,sBAAsB,GAAiB,EAAE,CAAC;IAEhD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAEjE,IAAI,CAAC,KAAK,EAAE;YACV,sBAAsB,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;SAC5C;aAAM,IAAI,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC9C,sBAAsB,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1D,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAChE,CAAC;SACH;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;YAC9E,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;SAC3D;aAAM;YACL,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC9E,sBAAsB,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACjF;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,sBAAsB,CAAC;AAChC,CAAC;AA1BD,8CA0BC;AAED,SAAS,oBAAoB,CAAC,QAAa;IACzC,+EAA+E;IAC/E,kGAAkG;IAClG,iGAAiG;IACjG,6CAA6C;IAC7C,EAAE;IACF,kGAAkG;IAClG,0GAA0G;IAC1G,4FAA4F;IAC5F,MAAM,QAAQ,GAAG,qBAAS,CAAC,YAAY,CAAC,aAAa,CAAQ,CAAC;IAC9D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,UAAU,EAAE;QAC5D,eAAM,CAAC,KAAK,CACV,gIAAgI,CACjI,CAAC;QACF,OAAO;KACR;IAED,MAAM,mBAAmB,GAAG,QAAQ,CAAC,YAAY,CAAC;IAClD,MAAM,iBAAiB,GACrB,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,cAAc,GAAG,QAAQ,CAAC,cAA4C,CAAC;QAE7E,IAAI,cAAc,IAAI,QAAQ,CAAC,QAAQ,KAAK,GAAG,IAAI,2BAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACvF,gEAAgE;YAChE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE/F,kDAAkD;YAClD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzC,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;oBACjC,WAAW;oBACX,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;iBACpC,CAAC,CAAC;aACJ;SACF;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEJ,QAAQ,CAAC,YAAY,GAAG,KAAK,EAAE,WAAoB,EAAE,EAAE;QACrD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACrE,MAAM,cAAc,GAAG,QAAQ,CAAC,cAA4C,CAAC;QAE7E,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAsB,EAAE,CACvD,OAAO,CAAC,OAAO,CAAC;gBACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,kEAAkE;gBAClE,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;aAC5B,CAAC,CAAC;YAEL,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACzD,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;SACpF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=amplifyReporter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"amplifyReporter.test.d.ts","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const amplifyReporter_1 = require("./amplifyReporter");
4
- describe('amplifyReporter', () => {
5
- it('should convert all attribute values to arrays of strings', () => {
6
- const testMetadata = { a: 'a', d: ['e', 'f'] };
7
- const attributeMap = (0, amplifyReporter_1.asAttributeMap)(testMetadata);
8
- expect(attributeMap.a).toEqual(['a']);
9
- expect(attributeMap.d).toEqual(['e', 'f']);
10
- });
11
- it('should handle undefined / null attributes', () => {
12
- const testMetadata = { a: null, d: undefined };
13
- const attributeMap = (0, amplifyReporter_1.asAttributeMap)(testMetadata);
14
- expect(attributeMap.a).toBeNull();
15
- expect(attributeMap.d).toBeNull();
16
- });
17
- it('should flatten hierarchies', () => {
18
- const testMetadata = { foo: { bar: 'baz' } };
19
- const attributeMap = (0, amplifyReporter_1.asAttributeMap)(testMetadata);
20
- expect(attributeMap['foo.bar']).toEqual(['baz']);
21
- });
22
- it('should stringify non-string array members', () => {
23
- var _a;
24
- const testMetadata = { foo: 5, bar: [{ baz: 'maz' }] };
25
- const attributeMap = (0, amplifyReporter_1.asAttributeMap)(testMetadata);
26
- expect(attributeMap.foo).toEqual(['5']);
27
- expect(typeof ((_a = attributeMap.bar) === null || _a === void 0 ? void 0 : _a[0])).toEqual('string');
28
- });
29
- it('should truncate attribute names', () => {
30
- const testMetadata = { thisIsAVeryVeryLongAttributeNameThatNeedsToBeTruncated: 5 };
31
- const attributeMap = (0, amplifyReporter_1.asAttributeMap)(testMetadata);
32
- expect(attributeMap.___VeryVeryLongAttributeNameThatNeedsToBeTruncated).toEqual(['5']);
33
- });
34
- it('should truncate attribute values', () => {
35
- const testMetadata = {
36
- a: 'ThisIsAVeryLongStringThatNeedsToBeTruncatedTo100CharsOrElseThereWillBeAProblemWithSendingTheBeautifulDataToPinpoint',
37
- };
38
- const attributeMap = (0, amplifyReporter_1.asAttributeMap)(testMetadata);
39
- expect(attributeMap.a).toEqual([
40
- 'ThisIsAVeryLongStringThatNeedsToBeTruncatedTo100CharsOrElseThereWillBeAProblemWithSendingTheBeautifu',
41
- ]);
42
- });
43
- it('should not group values into arrays when groupValues===false', () => {
44
- const testMetadata = {
45
- a: '5',
46
- };
47
- const attributeMap = (0, amplifyReporter_1.asAttributeMap)(testMetadata, false);
48
- expect(attributeMap.a).toEqual('5');
49
- });
50
- });
51
- //# sourceMappingURL=amplifyReporter.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"amplifyReporter.test.js","sourceRoot":"","sources":["../../src/reporters/amplifyReporter.test.ts"],"names":[],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- import { asAttributeMap } from './amplifyReporter';
2
-
3
- describe('amplifyReporter', () => {
4
- it('should convert all attribute values to arrays of strings', () => {
5
- const testMetadata = { a: 'a', d: ['e', 'f'] };
6
- const attributeMap = asAttributeMap(testMetadata);
7
-
8
- expect(attributeMap.a).toEqual(['a']);
9
- expect(attributeMap.d).toEqual(['e', 'f']);
10
- });
11
-
12
- it('should handle undefined / null attributes', () => {
13
- const testMetadata = { a: null, d: undefined };
14
- const attributeMap = asAttributeMap(testMetadata);
15
-
16
- expect(attributeMap.a).toBeNull();
17
- expect(attributeMap.d).toBeNull();
18
- });
19
-
20
- it('should flatten hierarchies', () => {
21
- const testMetadata = { foo: { bar: 'baz' } };
22
- const attributeMap = asAttributeMap(testMetadata);
23
-
24
- expect(attributeMap['foo.bar']).toEqual(['baz']);
25
- });
26
-
27
- it('should stringify non-string array members', () => {
28
- const testMetadata = { foo: 5, bar: [{ baz: 'maz' }] };
29
- const attributeMap = asAttributeMap(testMetadata);
30
-
31
- expect(attributeMap.foo).toEqual(['5']);
32
- expect(typeof attributeMap.bar?.[0]).toEqual('string');
33
- });
34
-
35
- it('should truncate attribute names', () => {
36
- const testMetadata = { thisIsAVeryVeryLongAttributeNameThatNeedsToBeTruncated: 5 };
37
- const attributeMap = asAttributeMap(testMetadata);
38
-
39
- expect(attributeMap.___VeryVeryLongAttributeNameThatNeedsToBeTruncated).toEqual(['5']);
40
- });
41
-
42
- it('should truncate attribute values', () => {
43
- const testMetadata = {
44
- a: 'ThisIsAVeryLongStringThatNeedsToBeTruncatedTo100CharsOrElseThereWillBeAProblemWithSendingTheBeautifulDataToPinpoint',
45
- };
46
- const attributeMap = asAttributeMap(testMetadata);
47
-
48
- expect(attributeMap.a).toEqual([
49
- 'ThisIsAVeryLongStringThatNeedsToBeTruncatedTo100CharsOrElseThereWillBeAProblemWithSendingTheBeautifu',
50
- ]);
51
- });
52
-
53
- it('should not group values into arrays when groupValues===false', () => {
54
- const testMetadata = {
55
- a: '5',
56
- };
57
-
58
- const attributeMap = asAttributeMap(testMetadata, false);
59
- expect(attributeMap.a).toEqual('5');
60
- });
61
- });