@crimson-education/browser-logger 3.0.1 → 3.0.2

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 (38) hide show
  1. package/lib/index.d.ts +12 -12
  2. package/lib/index.js +69 -69
  3. package/lib/logger/consoleTransport.d.ts +36 -36
  4. package/lib/logger/consoleTransport.js +80 -80
  5. package/lib/logger/datadogTransport.d.ts +7 -7
  6. package/lib/logger/datadogTransport.js +20 -20
  7. package/lib/logger/index.d.ts +15 -15
  8. package/lib/logger/index.js +147 -147
  9. package/lib/logger/index.test.d.ts +1 -1
  10. package/lib/logger/index.test.js +59 -59
  11. package/lib/logger/utils.d.ts +14 -14
  12. package/lib/logger/utils.js +31 -31
  13. package/lib/reporters/amplifyReporter.d.ts +83 -83
  14. package/lib/reporters/amplifyReporter.js +162 -162
  15. package/lib/reporters/amplifyReporter.test.d.ts +1 -1
  16. package/lib/reporters/amplifyReporter.test.js +50 -50
  17. package/lib/reporters/datadogReporter.d.ts +85 -76
  18. package/lib/reporters/datadogReporter.d.ts.map +1 -1
  19. package/lib/reporters/datadogReporter.js +124 -122
  20. package/lib/reporters/datadogReporter.js.map +1 -1
  21. package/lib/reporters/gtmReporter.d.ts +8 -8
  22. package/lib/reporters/gtmReporter.js +56 -56
  23. package/lib/reporters/index.d.ts +66 -66
  24. package/lib/reporters/index.js +212 -212
  25. package/lib/reporters/logReporter.d.ts +34 -34
  26. package/lib/reporters/logReporter.js +61 -61
  27. package/lib/types/index.d.ts +2 -2
  28. package/lib/types/index.js +18 -18
  29. package/lib/types/logger.d.ts +77 -77
  30. package/lib/types/logger.js +10 -10
  31. package/lib/types/reporter.d.ts +154 -154
  32. package/lib/types/reporter.js +2 -2
  33. package/lib/utils.d.ts +9 -9
  34. package/lib/utils.js +31 -31
  35. package/lib/utils.test.d.ts +1 -1
  36. package/lib/utils.test.js +31 -31
  37. package/package.json +1 -1
  38. package/src/reporters/datadogReporter.ts +12 -2
package/lib/utils.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { IReporter, Metadata } from './types';
2
- /**
3
- * Recursively filter reporter metadata.
4
- * @param metadata Deep Metadata to filter.
5
- * @param reporter Reporter with filter config.
6
- * @param prefix Prefix for recusring nested metadata.
7
- * @returns Filtered metadata.
8
- */
9
- export declare function filterReporterMetadata<TMetadata extends Metadata | undefined>(metadata: TMetadata, reporter: Pick<IReporter, 'ignoreMetadataPatterns'>, prefix?: string): TMetadata;
1
+ import { IReporter, Metadata } from './types';
2
+ /**
3
+ * Recursively filter reporter metadata.
4
+ * @param metadata Deep Metadata to filter.
5
+ * @param reporter Reporter with filter config.
6
+ * @param prefix Prefix for recusring nested metadata.
7
+ * @returns Filtered metadata.
8
+ */
9
+ export declare function filterReporterMetadata<TMetadata extends Metadata | undefined>(metadata: TMetadata, reporter: Pick<IReporter, 'ignoreMetadataPatterns'>, prefix?: string): TMetadata;
10
10
  //# sourceMappingURL=utils.d.ts.map
package/lib/utils.js CHANGED
@@ -1,32 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.filterReporterMetadata = void 0;
4
- /**
5
- * Recursively filter reporter metadata.
6
- * @param metadata Deep Metadata to filter.
7
- * @param reporter Reporter with filter config.
8
- * @param prefix Prefix for recusring nested metadata.
9
- * @returns Filtered metadata.
10
- */
11
- function filterReporterMetadata(metadata, reporter, prefix) {
12
- const ignorePatterns = reporter.ignoreMetadataPatterns;
13
- // No metadata, or no patterns.
14
- if (metadata === undefined || !ignorePatterns) {
15
- return metadata;
16
- }
17
- const entries = Object.entries(metadata);
18
- return Object.fromEntries(entries
19
- .filter(([key]) => {
20
- const fullKey = prefix ? prefix + key : key;
21
- return !ignorePatterns.some((pattern) => typeof pattern === 'string' ? pattern === fullKey : pattern.test(fullKey));
22
- })
23
- .map(([key, value]) => {
24
- if (typeof value === 'object' && value !== null) {
25
- const fullKey = prefix ? prefix + key : key;
26
- return [key, filterReporterMetadata(value, reporter, `${fullKey}.`)];
27
- }
28
- return [key, value];
29
- }));
30
- }
31
- exports.filterReporterMetadata = filterReporterMetadata;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterReporterMetadata = void 0;
4
+ /**
5
+ * Recursively filter reporter metadata.
6
+ * @param metadata Deep Metadata to filter.
7
+ * @param reporter Reporter with filter config.
8
+ * @param prefix Prefix for recusring nested metadata.
9
+ * @returns Filtered metadata.
10
+ */
11
+ function filterReporterMetadata(metadata, reporter, prefix) {
12
+ const ignorePatterns = reporter.ignoreMetadataPatterns;
13
+ // No metadata, or no patterns.
14
+ if (metadata === undefined || !ignorePatterns) {
15
+ return metadata;
16
+ }
17
+ const entries = Object.entries(metadata);
18
+ return Object.fromEntries(entries
19
+ .filter(([key]) => {
20
+ const fullKey = prefix ? prefix + key : key;
21
+ return !ignorePatterns.some((pattern) => typeof pattern === 'string' ? pattern === fullKey : pattern.test(fullKey));
22
+ })
23
+ .map(([key, value]) => {
24
+ if (typeof value === 'object' && value !== null) {
25
+ const fullKey = prefix ? prefix + key : key;
26
+ return [key, filterReporterMetadata(value, reporter, `${fullKey}.`)];
27
+ }
28
+ return [key, value];
29
+ }));
30
+ }
31
+ exports.filterReporterMetadata = filterReporterMetadata;
32
32
  //# sourceMappingURL=utils.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=utils.test.d.ts.map
package/lib/utils.test.js CHANGED
@@ -1,32 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const utils_1 = require("./utils");
4
- describe('utils', () => {
5
- describe('filterReporterMetadata', () => {
6
- it('should remove attributes which match the ignore patterns', () => {
7
- const inputAttributeMap = {
8
- includeme: '5',
9
- excludeme: 'false',
10
- differentProp: 'boo',
11
- deep: {
12
- includeme: '5',
13
- excludeme: 'false',
14
- deepExcludeStr: 'boo',
15
- deepExcludeRegex: 'boo',
16
- },
17
- };
18
- const filtered = (0, utils_1.filterReporterMetadata)(inputAttributeMap, {
19
- ignoreMetadataPatterns: [/excludeme/g, /Prop/g, 'deep.deepExcludeStr', /deep\.deepExcludeRegex/g],
20
- });
21
- expect(filtered.includeme).toBeTruthy();
22
- expect(filtered.excludeme).toBeFalsy();
23
- expect(filtered.differentProp).toBeFalsy();
24
- // deep
25
- expect(filtered.deep.includeme).toBeTruthy();
26
- expect(filtered.deep.excludeme).toBeFalsy();
27
- expect(filtered.deep.deepExcludeStr).toBeFalsy();
28
- expect(filtered.deep.deepExcludeRegex).toBeFalsy();
29
- });
30
- });
31
- });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("./utils");
4
+ describe('utils', () => {
5
+ describe('filterReporterMetadata', () => {
6
+ it('should remove attributes which match the ignore patterns', () => {
7
+ const inputAttributeMap = {
8
+ includeme: '5',
9
+ excludeme: 'false',
10
+ differentProp: 'boo',
11
+ deep: {
12
+ includeme: '5',
13
+ excludeme: 'false',
14
+ deepExcludeStr: 'boo',
15
+ deepExcludeRegex: 'boo',
16
+ },
17
+ };
18
+ const filtered = (0, utils_1.filterReporterMetadata)(inputAttributeMap, {
19
+ ignoreMetadataPatterns: [/excludeme/g, /Prop/g, 'deep.deepExcludeStr', /deep\.deepExcludeRegex/g],
20
+ });
21
+ expect(filtered.includeme).toBeTruthy();
22
+ expect(filtered.excludeme).toBeFalsy();
23
+ expect(filtered.differentProp).toBeFalsy();
24
+ // deep
25
+ expect(filtered.deep.includeme).toBeTruthy();
26
+ expect(filtered.deep.excludeme).toBeFalsy();
27
+ expect(filtered.deep.deepExcludeStr).toBeFalsy();
28
+ expect(filtered.deep.deepExcludeRegex).toBeFalsy();
29
+ });
30
+ });
31
+ });
32
32
  //# sourceMappingURL=utils.test.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crimson-education/browser-logger",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "An abstract logger and reporting utility for browser environments",
5
5
  "scripts": {
6
6
  "prepack": "npm run build",
@@ -8,8 +8,8 @@ import {
8
8
  ServiceInfo,
9
9
  ReporterConfigBase,
10
10
  } from '../types';
11
- import { datadogLogs, HandlerType } from '@datadog/browser-logs';
12
- import { datadogRum, DefaultPrivacyLevel } from '@datadog/browser-rum';
11
+ import { datadogLogs, HandlerType, LogsInitConfiguration } from '@datadog/browser-logs';
12
+ import { datadogRum, DefaultPrivacyLevel, RumInitConfiguration } from '@datadog/browser-rum';
13
13
  import { logTransports } from '../logger';
14
14
  import { DatadogLogTransportConfig, datadogTransport } from '../logger/datadogTransport';
15
15
 
@@ -72,12 +72,20 @@ export interface DatadogReporterConfig extends ReporterConfigBase {
72
72
  * Defaults to `data-analytics-name` to coincide with analytics attributes used across reporters.
73
73
  */
74
74
  actionNameAttribute?: string;
75
+ /**
76
+ * Allows you to modify RUM events before they are sent to Datadog.
77
+ */
78
+ beforeSend?: RumInitConfiguration['beforeSend'];
75
79
 
76
80
  /**
77
81
  * Toggles/configures the Datadog Log Transport.
78
82
  * Defaults to true.
79
83
  */
80
84
  logTransport?: boolean | DatadogLogTransportConfig;
85
+ /**
86
+ * Allows you to modify Log events before they are sent to Datadog (Can only be set at ).
87
+ */
88
+ beforeLogsSend?: LogsInitConfiguration['beforeSend'];
81
89
 
82
90
  /**
83
91
  * By enabling Session Replay, you can automatically mask sensitive elements from being recorded through the RUM Browser SDK.
@@ -110,6 +118,7 @@ export function datadogReporter(info: ServiceInfo, config: DatadogReporterConfig
110
118
  version: config.version ?? info.version,
111
119
 
112
120
  sampleRate: config.sampleRate ?? 100,
121
+ beforeSend: config.beforeLogsSend,
113
122
 
114
123
  useSecureSessionCookie: config.useSecureSessionCookie ?? !isLocalhost,
115
124
  useCrossSiteSessionCookie: config.useCrossSiteSessionCookie ?? false,
@@ -145,6 +154,7 @@ export function datadogReporter(info: ServiceInfo, config: DatadogReporterConfig
145
154
  trackFrustrations: config.trackFrustrations ?? false,
146
155
  trackViewsManually: config.trackViewsManually ?? false,
147
156
  actionNameAttribute: config.actionNameAttribute ?? 'data-analytics-name',
157
+ beforeSend: config.beforeSend,
148
158
 
149
159
  defaultPrivacyLevel: config.defaultPrivacyLevel ?? 'mask-user-input',
150
160
  allowedTracingOrigins: config.allowedTracingOrigins,