@crimson-education/browser-logger 3.0.4 → 3.0.5

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 +85 -85
  14. package/lib/reporters/amplifyReporter.d.ts.map +1 -1
  15. package/lib/reporters/amplifyReporter.js +222 -215
  16. package/lib/reporters/amplifyReporter.js.map +1 -1
  17. package/lib/reporters/amplifyReporter.test.d.ts +1 -1
  18. package/lib/reporters/amplifyReporter.test.js +50 -50
  19. package/lib/reporters/datadogReporter.d.ts +85 -85
  20. package/lib/reporters/datadogReporter.js +124 -124
  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/amplifyReporter.ts +7 -0
@@ -1,148 +1,148 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.logger = exports.createLogger = exports.setLogLevel = exports.globalLogLevel = exports.logTransports = exports.globalMetadata = void 0;
18
- /* eslint-disable prefer-rest-params */
19
- const types_1 = require("../types");
20
- const utils_1 = require("../utils");
21
- const consoleTransport_1 = require("./consoleTransport");
22
- const utils_2 = require("./utils");
23
- __exportStar(require("./consoleTransport"), exports);
24
- __exportStar(require("./datadogTransport"), exports);
25
- exports.globalMetadata = {};
26
- exports.logTransports = [(0, consoleTransport_1.consoleTransport)()];
27
- /**
28
- * Sets the global log level.
29
- */
30
- function setLogLevel(level) {
31
- exports.globalLogLevel = level !== null && level !== void 0 ? level : undefined;
32
- }
33
- exports.setLogLevel = setLogLevel;
34
- /**
35
- * Creates a Logger Instance.
36
- */
37
- function createLogger(options = {}) {
38
- var _a;
39
- const rootMetadata = (_a = options.metadata) !== null && _a !== void 0 ? _a : {};
40
- const logger = {
41
- // impl loosely based on Winston Logger's dynamic log function
42
- // https://github.com/winstonjs/winston/blob/master/lib/winston/logger.js
43
- log() {
44
- var _a, _b;
45
- let logInfo;
46
- // Optimize for the hotpath of logging JSON literals
47
- if (arguments.length === 1) {
48
- logInfo = {
49
- level: types_1.LogLevel.Info,
50
- ...arguments[0],
51
- };
52
- }
53
- // Slightly less hotpath, but worth optimizing for.
54
- else if (arguments.length === 2) {
55
- const [level, message] = Array.from(arguments);
56
- if (message && typeof message === 'object') {
57
- logInfo = {
58
- ...message,
59
- level: (_a = message.level) !== null && _a !== void 0 ? _a : level,
60
- };
61
- }
62
- else {
63
- logInfo = {
64
- level,
65
- message,
66
- };
67
- }
68
- }
69
- else {
70
- const [level, message, ...splat] = Array.from(arguments);
71
- const [meta] = splat;
72
- if (typeof meta === 'object' && meta !== null) {
73
- logInfo = {
74
- ...meta,
75
- level,
76
- splat: splat.slice(1),
77
- message,
78
- };
79
- if (meta.message) {
80
- logInfo.message = `${(0, utils_2.getLogMessage)(logInfo.message)} ${(0, utils_2.getLogMessage)(meta.message)}`;
81
- }
82
- if (meta.stack) {
83
- logInfo.stack = meta.stack;
84
- }
85
- }
86
- else {
87
- logInfo = {
88
- level,
89
- splat,
90
- message,
91
- };
92
- }
93
- }
94
- // Check if we should log this message
95
- const minLevel = exports.globalLogLevel !== null && exports.globalLogLevel !== void 0 ? exports.globalLogLevel : options.logLevel;
96
- if (minLevel && !(0, utils_2.isAboveLevel)(logInfo.level, minLevel)) {
97
- return logger;
98
- }
99
- // Add timestamp and root metadata.
100
- // Ensure there is a message property.
101
- logInfo = {
102
- ...exports.globalMetadata,
103
- ...rootMetadata,
104
- timestamp: new Date().toISOString(),
105
- ...logInfo,
106
- message: (_b = logInfo.message) !== null && _b !== void 0 ? _b : '',
107
- };
108
- for (const transport of exports.logTransports) {
109
- if (transport.logLevel) {
110
- if (!(0, utils_2.isAboveLevel)(logInfo.level, transport.logLevel)) {
111
- continue;
112
- }
113
- }
114
- transport.log({
115
- ...(0, utils_1.filterReporterMetadata)(logInfo, transport),
116
- // These would break the transport if excluded.
117
- level: logInfo.level,
118
- message: logInfo.message,
119
- splat: logInfo.splat,
120
- });
121
- }
122
- return logger;
123
- },
124
- child(metadata) {
125
- return createLogger({ ...rootMetadata, metadata });
126
- },
127
- startTimer() {
128
- const start = new Date();
129
- return {
130
- logger: this,
131
- done: ({ message, level, metadata } = {}) => {
132
- const duration = new Date().getTime() - start.getTime();
133
- logger.log(level !== null && level !== void 0 ? level : types_1.LogLevel.Info, message !== null && message !== void 0 ? message : 'Timer Completed', { duration, ...(metadata !== null && metadata !== void 0 ? metadata : {}) });
134
- return true;
135
- },
136
- };
137
- },
138
- // Forward the log levels into the log function, essentially shortcuts.
139
- debug: (...args) => logger.log(types_1.LogLevel.Debug, ...args),
140
- info: (...args) => logger.log(types_1.LogLevel.Info, ...args),
141
- warn: (...args) => logger.log(types_1.LogLevel.Warn, ...args),
142
- error: (...args) => logger.log(types_1.LogLevel.Error, ...args),
143
- };
144
- return logger;
145
- }
146
- exports.createLogger = createLogger;
147
- exports.logger = createLogger();
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.logger = exports.createLogger = exports.setLogLevel = exports.globalLogLevel = exports.logTransports = exports.globalMetadata = void 0;
18
+ /* eslint-disable prefer-rest-params */
19
+ const types_1 = require("../types");
20
+ const utils_1 = require("../utils");
21
+ const consoleTransport_1 = require("./consoleTransport");
22
+ const utils_2 = require("./utils");
23
+ __exportStar(require("./consoleTransport"), exports);
24
+ __exportStar(require("./datadogTransport"), exports);
25
+ exports.globalMetadata = {};
26
+ exports.logTransports = [(0, consoleTransport_1.consoleTransport)()];
27
+ /**
28
+ * Sets the global log level.
29
+ */
30
+ function setLogLevel(level) {
31
+ exports.globalLogLevel = level !== null && level !== void 0 ? level : undefined;
32
+ }
33
+ exports.setLogLevel = setLogLevel;
34
+ /**
35
+ * Creates a Logger Instance.
36
+ */
37
+ function createLogger(options = {}) {
38
+ var _a;
39
+ const rootMetadata = (_a = options.metadata) !== null && _a !== void 0 ? _a : {};
40
+ const logger = {
41
+ // impl loosely based on Winston Logger's dynamic log function
42
+ // https://github.com/winstonjs/winston/blob/master/lib/winston/logger.js
43
+ log() {
44
+ var _a, _b;
45
+ let logInfo;
46
+ // Optimize for the hotpath of logging JSON literals
47
+ if (arguments.length === 1) {
48
+ logInfo = {
49
+ level: types_1.LogLevel.Info,
50
+ ...arguments[0],
51
+ };
52
+ }
53
+ // Slightly less hotpath, but worth optimizing for.
54
+ else if (arguments.length === 2) {
55
+ const [level, message] = Array.from(arguments);
56
+ if (message && typeof message === 'object') {
57
+ logInfo = {
58
+ ...message,
59
+ level: (_a = message.level) !== null && _a !== void 0 ? _a : level,
60
+ };
61
+ }
62
+ else {
63
+ logInfo = {
64
+ level,
65
+ message,
66
+ };
67
+ }
68
+ }
69
+ else {
70
+ const [level, message, ...splat] = Array.from(arguments);
71
+ const [meta] = splat;
72
+ if (typeof meta === 'object' && meta !== null) {
73
+ logInfo = {
74
+ ...meta,
75
+ level,
76
+ splat: splat.slice(1),
77
+ message,
78
+ };
79
+ if (meta.message) {
80
+ logInfo.message = `${(0, utils_2.getLogMessage)(logInfo.message)} ${(0, utils_2.getLogMessage)(meta.message)}`;
81
+ }
82
+ if (meta.stack) {
83
+ logInfo.stack = meta.stack;
84
+ }
85
+ }
86
+ else {
87
+ logInfo = {
88
+ level,
89
+ splat,
90
+ message,
91
+ };
92
+ }
93
+ }
94
+ // Check if we should log this message
95
+ const minLevel = exports.globalLogLevel !== null && exports.globalLogLevel !== void 0 ? exports.globalLogLevel : options.logLevel;
96
+ if (minLevel && !(0, utils_2.isAboveLevel)(logInfo.level, minLevel)) {
97
+ return logger;
98
+ }
99
+ // Add timestamp and root metadata.
100
+ // Ensure there is a message property.
101
+ logInfo = {
102
+ ...exports.globalMetadata,
103
+ ...rootMetadata,
104
+ timestamp: new Date().toISOString(),
105
+ ...logInfo,
106
+ message: (_b = logInfo.message) !== null && _b !== void 0 ? _b : '',
107
+ };
108
+ for (const transport of exports.logTransports) {
109
+ if (transport.logLevel) {
110
+ if (!(0, utils_2.isAboveLevel)(logInfo.level, transport.logLevel)) {
111
+ continue;
112
+ }
113
+ }
114
+ transport.log({
115
+ ...(0, utils_1.filterReporterMetadata)(logInfo, transport),
116
+ // These would break the transport if excluded.
117
+ level: logInfo.level,
118
+ message: logInfo.message,
119
+ splat: logInfo.splat,
120
+ });
121
+ }
122
+ return logger;
123
+ },
124
+ child(metadata) {
125
+ return createLogger({ ...rootMetadata, metadata });
126
+ },
127
+ startTimer() {
128
+ const start = new Date();
129
+ return {
130
+ logger: this,
131
+ done: ({ message, level, metadata } = {}) => {
132
+ const duration = new Date().getTime() - start.getTime();
133
+ logger.log(level !== null && level !== void 0 ? level : types_1.LogLevel.Info, message !== null && message !== void 0 ? message : 'Timer Completed', { duration, ...(metadata !== null && metadata !== void 0 ? metadata : {}) });
134
+ return true;
135
+ },
136
+ };
137
+ },
138
+ // Forward the log levels into the log function, essentially shortcuts.
139
+ debug: (...args) => logger.log(types_1.LogLevel.Debug, ...args),
140
+ info: (...args) => logger.log(types_1.LogLevel.Info, ...args),
141
+ warn: (...args) => logger.log(types_1.LogLevel.Warn, ...args),
142
+ error: (...args) => logger.log(types_1.LogLevel.Error, ...args),
143
+ };
144
+ return logger;
145
+ }
146
+ exports.createLogger = createLogger;
147
+ exports.logger = createLogger();
148
148
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=index.test.d.ts.map
@@ -1,60 +1,60 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const _1 = require(".");
4
- const __1 = require("..");
5
- const reporters_1 = require("../reporters");
6
- const types_1 = require("../types");
7
- // This isn't actually asserting anything.
8
- // But it ensures that the logs look correct, and no errors get thrown.
9
- describe('logger', () => {
10
- const logger = (0, _1.createLogger)({
11
- metadata: {
12
- service: 'test',
13
- },
14
- });
15
- // Manually set the log transports.
16
- _1.logTransports.length = 0;
17
- const transport = (0, _1.consoleTransport)({
18
- // So we can see everything.
19
- ignoreMetadataPatterns: [],
20
- });
21
- _1.logTransports.push(transport);
22
- it('should log', async () => {
23
- logger.log({
24
- level: 'info',
25
- message: 'data',
26
- });
27
- logger.log({ data: 'obj' });
28
- logger.log(types_1.LogLevel.Debug, 'level, message', { data: 'obj' });
29
- logger.log(types_1.LogLevel.Debug, 'level, message, metadata', { data: 'obj' });
30
- (0, __1.init)({
31
- service: 'test-service',
32
- environment: 'test',
33
- version: 'no-version',
34
- defaultMetadata: {
35
- application: 'test',
36
- },
37
- });
38
- const infoLogger = logger.child({ isLevel: 'info' });
39
- infoLogger.info('info call, message');
40
- infoLogger.info('info call, message, metadata', { data: 'metadataobj' });
41
- const timer = logger.startTimer();
42
- await new Promise((resolve) => setTimeout(resolve, 1000));
43
- timer.done({ message: 'timer done', metadata: { id: 1 } });
44
- (0, _1.setLogLevel)(types_1.LogLevel.Info);
45
- (0, reporters_1.addMetadata)({ global: 'metadata' });
46
- logger.debug('You should not see this');
47
- logger.info('You should see this with { global: "metadata" }');
48
- (0, _1.setLogLevel)(null);
49
- (0, reporters_1.setUser)({
50
- id: '123',
51
- email: 'test@example.com',
52
- });
53
- logger.debug('debug call, user metadata');
54
- transport.logLevel = types_1.LogLevel.Info;
55
- logger.debug('You should not see this');
56
- logger.info('You should see this');
57
- transport.logLevel = undefined;
58
- });
59
- });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const _1 = require(".");
4
+ const __1 = require("..");
5
+ const reporters_1 = require("../reporters");
6
+ const types_1 = require("../types");
7
+ // This isn't actually asserting anything.
8
+ // But it ensures that the logs look correct, and no errors get thrown.
9
+ describe('logger', () => {
10
+ const logger = (0, _1.createLogger)({
11
+ metadata: {
12
+ service: 'test',
13
+ },
14
+ });
15
+ // Manually set the log transports.
16
+ _1.logTransports.length = 0;
17
+ const transport = (0, _1.consoleTransport)({
18
+ // So we can see everything.
19
+ ignoreMetadataPatterns: [],
20
+ });
21
+ _1.logTransports.push(transport);
22
+ it('should log', async () => {
23
+ logger.log({
24
+ level: 'info',
25
+ message: 'data',
26
+ });
27
+ logger.log({ data: 'obj' });
28
+ logger.log(types_1.LogLevel.Debug, 'level, message', { data: 'obj' });
29
+ logger.log(types_1.LogLevel.Debug, 'level, message, metadata', { data: 'obj' });
30
+ (0, __1.init)({
31
+ service: 'test-service',
32
+ environment: 'test',
33
+ version: 'no-version',
34
+ defaultMetadata: {
35
+ application: 'test',
36
+ },
37
+ });
38
+ const infoLogger = logger.child({ isLevel: 'info' });
39
+ infoLogger.info('info call, message');
40
+ infoLogger.info('info call, message, metadata', { data: 'metadataobj' });
41
+ const timer = logger.startTimer();
42
+ await new Promise((resolve) => setTimeout(resolve, 1000));
43
+ timer.done({ message: 'timer done', metadata: { id: 1 } });
44
+ (0, _1.setLogLevel)(types_1.LogLevel.Info);
45
+ (0, reporters_1.addMetadata)({ global: 'metadata' });
46
+ logger.debug('You should not see this');
47
+ logger.info('You should see this with { global: "metadata" }');
48
+ (0, _1.setLogLevel)(null);
49
+ (0, reporters_1.setUser)({
50
+ id: '123',
51
+ email: 'test@example.com',
52
+ });
53
+ logger.debug('debug call, user metadata');
54
+ transport.logLevel = types_1.LogLevel.Info;
55
+ logger.debug('You should not see this');
56
+ logger.info('You should see this');
57
+ transport.logLevel = undefined;
58
+ });
59
+ });
60
60
  //# sourceMappingURL=index.test.js.map
@@ -1,15 +1,15 @@
1
- import { LogLevel } from '../types';
2
- /**
3
- * Checks if a log level is above the global log level.
4
- * @param level The log level to check
5
- * @param checkLevel THe log level to check against
6
- * @returns Is above the checkLevel?
7
- */
8
- export declare function isAboveLevel(level: LogLevel, checkLevel: LogLevel): boolean;
9
- /**
10
- * Ensures a message output is a string.
11
- * @param message The message to assert is/convert to a string
12
- * @returns The message as a string
13
- */
14
- export declare function getLogMessage(message: any): string;
1
+ import { LogLevel } from '../types';
2
+ /**
3
+ * Checks if a log level is above the global log level.
4
+ * @param level The log level to check
5
+ * @param checkLevel THe log level to check against
6
+ * @returns Is above the checkLevel?
7
+ */
8
+ export declare function isAboveLevel(level: LogLevel, checkLevel: LogLevel): boolean;
9
+ /**
10
+ * Ensures a message output is a string.
11
+ * @param message The message to assert is/convert to a string
12
+ * @returns The message as a string
13
+ */
14
+ export declare function getLogMessage(message: any): string;
15
15
  //# sourceMappingURL=utils.d.ts.map
@@ -1,32 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLogMessage = exports.isAboveLevel = void 0;
4
- const types_1 = require("../types");
5
- /**
6
- * Checks if a log level is above the global log level.
7
- * @param level The log level to check
8
- * @param checkLevel THe log level to check against
9
- * @returns Is above the checkLevel?
10
- */
11
- function isAboveLevel(level, checkLevel) {
12
- const levels = [types_1.LogLevel.Debug, types_1.LogLevel.Info, types_1.LogLevel.Warn, types_1.LogLevel.Error];
13
- return levels.indexOf(level) >= levels.indexOf(checkLevel);
14
- }
15
- exports.isAboveLevel = isAboveLevel;
16
- /**
17
- * Ensures a message output is a string.
18
- * @param message The message to assert is/convert to a string
19
- * @returns The message as a string
20
- */
21
- function getLogMessage(message) {
22
- if (typeof message === 'string') {
23
- return message;
24
- }
25
- if (typeof message === 'object' && message !== null) {
26
- const data = { ...message };
27
- return JSON.stringify(data);
28
- }
29
- return String(message);
30
- }
31
- exports.getLogMessage = getLogMessage;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLogMessage = exports.isAboveLevel = void 0;
4
+ const types_1 = require("../types");
5
+ /**
6
+ * Checks if a log level is above the global log level.
7
+ * @param level The log level to check
8
+ * @param checkLevel THe log level to check against
9
+ * @returns Is above the checkLevel?
10
+ */
11
+ function isAboveLevel(level, checkLevel) {
12
+ const levels = [types_1.LogLevel.Debug, types_1.LogLevel.Info, types_1.LogLevel.Warn, types_1.LogLevel.Error];
13
+ return levels.indexOf(level) >= levels.indexOf(checkLevel);
14
+ }
15
+ exports.isAboveLevel = isAboveLevel;
16
+ /**
17
+ * Ensures a message output is a string.
18
+ * @param message The message to assert is/convert to a string
19
+ * @returns The message as a string
20
+ */
21
+ function getLogMessage(message) {
22
+ if (typeof message === 'string') {
23
+ return message;
24
+ }
25
+ if (typeof message === 'object' && message !== null) {
26
+ const data = { ...message };
27
+ return JSON.stringify(data);
28
+ }
29
+ return String(message);
30
+ }
31
+ exports.getLogMessage = getLogMessage;
32
32
  //# sourceMappingURL=utils.js.map