@rsdk/logging 5.7.0-next.2 → 6.0.0-next.0

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.
@@ -1 +1,2 @@
1
+ export * from './noop-logger.class';
1
2
  export * from './pino-logger.class';
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./noop-logger.class"), exports);
17
18
  __exportStar(require("./pino-logger.class"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/implementations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/implementations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,sDAAoC"}
@@ -0,0 +1,40 @@
1
+ import type { ErrorLike } from '@rsdk/common';
2
+ import type { ILogger } from '../logger.interface';
3
+ import type { LogLevel, Params } from '../types';
4
+ /**
5
+ * Implementation of ILogger interface that does nothing.
6
+ * Used when logging needs to be completely disabled.
7
+ *
8
+ * Features:
9
+ * - Implements all ILogger methods but performs no operations
10
+ * - Useful for testing or when logging needs to be disabled
11
+ */
12
+ export declare class NoopLogger implements ILogger {
13
+ fatal(error: Error): void;
14
+ fatal(message: string): void;
15
+ fatal(message: string, params: Params): void;
16
+ fatal(message: string, error: ErrorLike): void;
17
+ error(error: Error): void;
18
+ error(message: string): void;
19
+ error(message: string, params: Params): void;
20
+ error(message: string, error: ErrorLike): void;
21
+ warn(error: ErrorLike): void;
22
+ warn(message: string): void;
23
+ warn(message: string, params: Params): void;
24
+ warn(message: string, error: ErrorLike): void;
25
+ info(message: string): void;
26
+ info(message: string, params: Params): void;
27
+ debug(error: ErrorLike): void;
28
+ debug(params: Params): void;
29
+ debug(message: string): void;
30
+ debug(message: string, params: Params): void;
31
+ trace(error: ErrorLike): void;
32
+ trace(params: Params): void;
33
+ trace(message: string): void;
34
+ trace(message: string, params: Params): void;
35
+ log(level: LogLevel, message: string): void;
36
+ log(level: LogLevel, error: ErrorLike): void;
37
+ log(level: LogLevel, params: Params): void;
38
+ log(level: LogLevel, message: string, params?: Params): void;
39
+ log(level: LogLevel, message: string, error?: ErrorLike): void;
40
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoopLogger = void 0;
4
+ /**
5
+ * Implementation of ILogger interface that does nothing.
6
+ * Used when logging needs to be completely disabled.
7
+ *
8
+ * Features:
9
+ * - Implements all ILogger methods but performs no operations
10
+ * - Useful for testing or when logging needs to be disabled
11
+ */
12
+ class NoopLogger {
13
+ fatal() {
14
+ return;
15
+ }
16
+ error() {
17
+ return;
18
+ }
19
+ warn() {
20
+ return;
21
+ }
22
+ info() {
23
+ return;
24
+ }
25
+ debug() {
26
+ return;
27
+ }
28
+ trace() {
29
+ return;
30
+ }
31
+ log() {
32
+ return;
33
+ }
34
+ }
35
+ exports.NoopLogger = NoopLogger;
36
+ //# sourceMappingURL=noop-logger.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noop-logger.class.js","sourceRoot":"","sources":["../../src/implementations/noop-logger.class.ts"],"names":[],"mappings":";;;AAMA;;;;;;;GAOG;AAEH,MAAa,UAAU;IAKrB,KAAK;QACH,OAAO;IACT,CAAC;IAMD,KAAK;QACH,OAAO;IACT,CAAC;IAMD,IAAI;QACF,OAAO;IACT,CAAC;IAID,IAAI;QACF,OAAO;IACT,CAAC;IAMD,KAAK;QACH,OAAO;IACT,CAAC;IAMD,KAAK;QACH,OAAO;IACT,CAAC;IAOD,GAAG;QACD,OAAO;IACT,CAAC;CACF;AAvDD,gCAuDC"}
@@ -9,6 +9,17 @@ import { LogLevel } from '../types';
9
9
  * https://github.com/pinojs/pino-pretty/issues/275
10
10
  */
11
11
  type GetLogger = () => Pino;
12
+ /**
13
+ * Implementation of ILogger interface using Pino logger.
14
+ * Provides logging functionality with different severity levels and context support.
15
+ *
16
+ * Features:
17
+ * - Supports trace, debug, info, warn, error and fatal log levels
18
+ * - Includes context information in logs
19
+ * - Handles both string messages and error objects
20
+ * - Normalizes and formats error objects and parameters
21
+ * - Emits log events through provided callback
22
+ */
12
23
  export declare class PinoLogger implements ILogger {
13
24
  private readonly context;
14
25
  /**
@@ -4,6 +4,17 @@ exports.PinoLogger = void 0;
4
4
  const common_1 = require("@rsdk/common");
5
5
  const helpers_1 = require("../helpers");
6
6
  const types_1 = require("../types");
7
+ /**
8
+ * Implementation of ILogger interface using Pino logger.
9
+ * Provides logging functionality with different severity levels and context support.
10
+ *
11
+ * Features:
12
+ * - Supports trace, debug, info, warn, error and fatal log levels
13
+ * - Includes context information in logs
14
+ * - Handles both string messages and error objects
15
+ * - Normalizes and formats error objects and parameters
16
+ * - Emits log events through provided callback
17
+ */
7
18
  class PinoLogger {
8
19
  context;
9
20
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pino-logger.class.js","sourceRoot":"","sources":["../../src/implementations/pino-logger.class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pino-logger.class.js","sourceRoot":"","sources":["../../src/implementations/pino-logger.class.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/logging",
3
- "version": "5.7.0-next.2",
3
+ "version": "6.0.0-next.0",
4
4
  "description": "Base framework independent logging functionality",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -17,5 +17,5 @@
17
17
  "peerDependencies": {
18
18
  "@rsdk/common": "*"
19
19
  },
20
- "gitHead": "c85fca0b594a2ea168d06f1d2941a4fb05b59440"
20
+ "gitHead": "215cccea23d95118dd8b6af3ce11c6a35ce19c30"
21
21
  }
@@ -1 +1,2 @@
1
+ export * from './noop-logger.class';
1
2
  export * from './pino-logger.class';
@@ -0,0 +1,71 @@
1
+ /* eslint-disable @typescript-eslint/unified-signatures */
2
+ import type { ErrorLike } from '@rsdk/common';
3
+
4
+ import type { ILogger } from '../logger.interface';
5
+ import type { LogLevel, Params } from '../types';
6
+
7
+ /**
8
+ * Implementation of ILogger interface that does nothing.
9
+ * Used when logging needs to be completely disabled.
10
+ *
11
+ * Features:
12
+ * - Implements all ILogger methods but performs no operations
13
+ * - Useful for testing or when logging needs to be disabled
14
+ */
15
+
16
+ export class NoopLogger implements ILogger {
17
+ fatal(error: Error): void;
18
+ fatal(message: string): void;
19
+ fatal(message: string, params: Params): void;
20
+ fatal(message: string, error: ErrorLike): void;
21
+ fatal(): void {
22
+ return;
23
+ }
24
+
25
+ error(error: Error): void;
26
+ error(message: string): void;
27
+ error(message: string, params: Params): void;
28
+ error(message: string, error: ErrorLike): void;
29
+ error(): void {
30
+ return;
31
+ }
32
+
33
+ warn(error: ErrorLike): void;
34
+ warn(message: string): void;
35
+ warn(message: string, params: Params): void;
36
+ warn(message: string, error: ErrorLike): void;
37
+ warn(): void {
38
+ return;
39
+ }
40
+
41
+ info(message: string): void;
42
+ info(message: string, params: Params): void;
43
+ info(): void {
44
+ return;
45
+ }
46
+
47
+ debug(error: ErrorLike): void;
48
+ debug(params: Params): void;
49
+ debug(message: string): void;
50
+ debug(message: string, params: Params): void;
51
+ debug(): void {
52
+ return;
53
+ }
54
+
55
+ trace(error: ErrorLike): void;
56
+ trace(params: Params): void;
57
+ trace(message: string): void;
58
+ trace(message: string, params: Params): void;
59
+ trace(): void {
60
+ return;
61
+ }
62
+
63
+ log(level: LogLevel, message: string): void;
64
+ log(level: LogLevel, error: ErrorLike): void;
65
+ log(level: LogLevel, params: Params): void;
66
+ log(level: LogLevel, message: string, params?: Params): void;
67
+ log(level: LogLevel, message: string, error?: ErrorLike): void;
68
+ log(): void {
69
+ return;
70
+ }
71
+ }
@@ -0,0 +1,117 @@
1
+ import type { Logger as Pino } from 'pino';
2
+
3
+ import { LogLevel } from '../types';
4
+
5
+ import { PinoLogger } from './pino-logger.class';
6
+
7
+ describe('PinoLogger', () => {
8
+ let mockPino: jest.Mocked<Pino>;
9
+ let logger: PinoLogger;
10
+ let emitSpy: jest.Mock;
11
+
12
+ beforeEach(() => {
13
+ mockPino = {
14
+ trace: jest.fn(),
15
+ debug: jest.fn(),
16
+ info: jest.fn(),
17
+ warn: jest.fn(),
18
+ error: jest.fn(),
19
+ fatal: jest.fn(),
20
+ levelVal: 10, // trace level
21
+ levels: {
22
+ values: {
23
+ [LogLevel.trace]: 10,
24
+ [LogLevel.debug]: 20,
25
+ [LogLevel.info]: 30,
26
+ [LogLevel.warn]: 40,
27
+ [LogLevel.error]: 50,
28
+ [LogLevel.fatal]: 60,
29
+ },
30
+ },
31
+ } as unknown as jest.Mocked<Pino>;
32
+
33
+ emitSpy = jest.fn();
34
+ logger = new PinoLogger(() => mockPino, emitSpy, 'TestContext');
35
+ });
36
+
37
+ describe('binary data handling', () => {
38
+ it('should handle Buffer and ArrayBuffer in parameters', () => {
39
+ // Arrange
40
+ const params = {
41
+ normalField: 'test',
42
+ buffer: Buffer.from('binary content'),
43
+ arrayBuffer: new ArrayBuffer(16),
44
+ nested: {
45
+ buffer: Buffer.from('nested binary'),
46
+ arrayBuffer: new ArrayBuffer(8),
47
+ },
48
+ };
49
+
50
+ // Act
51
+ logger.info('test message', params);
52
+
53
+ // Assert
54
+ expect(mockPino.info).toHaveBeenCalledWith(
55
+ expect.objectContaining({
56
+ context: 'TestContext',
57
+ normalField: 'test',
58
+ buffer: expect.stringContaining('[Buffer'),
59
+ arrayBuffer: '[ArrayBuffer 16]',
60
+ nested: expect.objectContaining({
61
+ buffer: expect.stringContaining('[Buffer'),
62
+ arrayBuffer: '[ArrayBuffer 8]',
63
+ }),
64
+ }),
65
+ 'test message',
66
+ );
67
+ });
68
+
69
+ it('should handle binary data in error object', () => {
70
+ // Arrange
71
+ const error = new Error('test error', {
72
+ cause: {
73
+ binaryData: Buffer.from('some binary data'),
74
+ arrayBuffer: new ArrayBuffer(16),
75
+ },
76
+ });
77
+
78
+ // Act
79
+ logger.error('Error occurred', error);
80
+
81
+ // Assert
82
+ expect(mockPino.error).toHaveBeenCalledWith(
83
+ expect.objectContaining({
84
+ context: 'TestContext',
85
+ error: expect.objectContaining({
86
+ cause: expect.objectContaining({
87
+ binaryData: expect.stringContaining('[Buffer'),
88
+ arrayBuffer: '[ArrayBuffer 16]',
89
+ }),
90
+ }),
91
+ }),
92
+ 'Error occurred',
93
+ );
94
+ });
95
+
96
+ it('should emit normalized data without binary content', () => {
97
+ // Arrange
98
+ const params = {
99
+ buffer: Buffer.from('binary content'),
100
+ arrayBuffer: new ArrayBuffer(16),
101
+ };
102
+
103
+ // Act
104
+ logger.info('test message', params);
105
+
106
+ // Assert
107
+ expect(emitSpy).toHaveBeenCalledWith(
108
+ LogLevel.info,
109
+ expect.objectContaining({
110
+ context: 'TestContext',
111
+ buffer: expect.stringContaining('[Buffer'),
112
+ arrayBuffer: '[ArrayBuffer 16]',
113
+ }),
114
+ );
115
+ });
116
+ });
117
+ });
@@ -15,6 +15,17 @@ import { LogLevel } from '../types';
15
15
 
16
16
  type GetLogger = () => Pino;
17
17
 
18
+ /**
19
+ * Implementation of ILogger interface using Pino logger.
20
+ * Provides logging functionality with different severity levels and context support.
21
+ *
22
+ * Features:
23
+ * - Supports trace, debug, info, warn, error and fatal log levels
24
+ * - Includes context information in logs
25
+ * - Handles both string messages and error objects
26
+ * - Normalizes and formats error objects and parameters
27
+ * - Emits log events through provided callback
28
+ */
18
29
  export class PinoLogger implements ILogger {
19
30
  private readonly context: string;
20
31