@vvlad1973/simple-logger 2.2.0 → 2.2.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.
@@ -1,66 +1,395 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
1
  import SimpleLogger from '../classes/simple-logger.js';
3
2
  describe('SimpleLogger', () => {
4
3
  let consoleSpy;
4
+ let consoleWarnSpy;
5
5
  beforeEach(() => {
6
6
  consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
7
+ consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
7
8
  });
8
9
  afterEach(() => {
9
10
  consoleSpy.mockRestore();
11
+ consoleWarnSpy.mockRestore();
10
12
  });
11
- it('should log using console when no external logger is provided', () => {
12
- const logger = new SimpleLogger();
13
- logger.info('test message');
14
- expect(consoleSpy).toHaveBeenCalledOnce();
15
- expect(consoleSpy.mock.calls[0][0]).toMatch(/test message/);
13
+ describe('Initialization Cases', () => {
14
+ it('CASE 1: should use console when no external logger is provided', () => {
15
+ const logger = new SimpleLogger();
16
+ expect(logger.isExternal).toBe(false);
17
+ logger.info('test message');
18
+ expect(consoleSpy).toHaveBeenCalledOnce();
19
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/test message/);
20
+ });
21
+ it('CASE 2: should call logger factory with options', () => {
22
+ const mockLogger = {
23
+ info: vi.fn(),
24
+ level: 'info',
25
+ };
26
+ const factory = vi.fn(() => mockLogger);
27
+ const logger = new SimpleLogger(factory, { level: 'debug', msgPrefix: 'TEST' });
28
+ expect(factory).toHaveBeenCalledWith({
29
+ level: 'debug',
30
+ msgPrefix: 'TEST',
31
+ });
32
+ expect(logger.isExternal).toBe(true);
33
+ });
34
+ it('CASE 3: should fallback to console for invalid external logger', () => {
35
+ const logger = new SimpleLogger({});
36
+ expect(logger.isExternal).toBe(false);
37
+ expect(consoleWarnSpy).toHaveBeenCalledWith('Invalid or console logger passed, falling back to internal console.');
38
+ });
39
+ it('CASE 3b: should fallback to console when console is passed', () => {
40
+ const logger = new SimpleLogger(console);
41
+ expect(logger.isExternal).toBe(false);
42
+ });
43
+ it('CASE 4: should use external logger without params', () => {
44
+ const external = {
45
+ info: vi.fn(),
46
+ warn: vi.fn(),
47
+ level: 'info',
48
+ };
49
+ const logger = new SimpleLogger(external);
50
+ expect(logger.isExternal).toBe(true);
51
+ logger.info('test');
52
+ expect(external.info).toHaveBeenCalledWith('test');
53
+ });
54
+ it('CASE 5: should create child logger when external has .child() method', () => {
55
+ const childLogger = {
56
+ info: vi.fn(),
57
+ level: 'info',
58
+ };
59
+ const childFn = vi.fn(() => childLogger);
60
+ const external = {
61
+ info: vi.fn(),
62
+ level: 'info',
63
+ child: childFn,
64
+ };
65
+ const logger = new SimpleLogger(external, {
66
+ level: 'debug',
67
+ bindings: { app: 'test' },
68
+ msgPrefix: 'PREFIX',
69
+ });
70
+ expect(childFn).toHaveBeenCalledWith({ app: 'test' }, { level: 'debug', msgPrefix: 'PREFIX' });
71
+ expect(logger.isExternal).toBe(true);
72
+ });
73
+ it('CASE 6: should use external logger directly without .child() and set level', () => {
74
+ const external = {
75
+ info: vi.fn(),
76
+ level: 'info',
77
+ };
78
+ const logger = new SimpleLogger(external, { level: 'debug' });
79
+ expect(external.level).toBe('debug');
80
+ expect(logger.isExternal).toBe(true);
81
+ });
16
82
  });
17
- it('should not log below current level', () => {
18
- const logger = new SimpleLogger(null, { level: 'warn' });
19
- logger.info('should not log');
20
- logger.warn('should log');
21
- expect(consoleSpy).toHaveBeenCalledOnce();
22
- expect(consoleSpy.mock.calls[0][0]).toMatch(/should log/);
83
+ describe('Logging Methods', () => {
84
+ it('should log at all levels', () => {
85
+ const logger = new SimpleLogger(null, { level: 'trace' });
86
+ logger.trace('trace msg');
87
+ logger.debug('debug msg');
88
+ logger.info('info msg');
89
+ logger.warn('warn msg');
90
+ logger.error('error msg');
91
+ logger.fatal('fatal msg');
92
+ expect(consoleSpy).toHaveBeenCalledTimes(6);
93
+ });
94
+ it('should not log below current level', () => {
95
+ const logger = new SimpleLogger(null, { level: 'warn' });
96
+ logger.trace('should not log');
97
+ logger.debug('should not log');
98
+ logger.info('should not log');
99
+ logger.warn('should log');
100
+ logger.error('should log');
101
+ expect(consoleSpy).toHaveBeenCalledTimes(2);
102
+ });
103
+ it('should respect msgPrefix in console output', () => {
104
+ const logger = new SimpleLogger(null, { msgPrefix: '[PREFIX]' });
105
+ logger.info('message');
106
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/\[PREFIX\]/);
107
+ });
108
+ it('should include bindings in console output', () => {
109
+ const logger = new SimpleLogger(null, { bindings: { user: 'john', id: 123 } });
110
+ logger.info('message');
111
+ const output = consoleSpy.mock.calls[0][0];
112
+ expect(output).toMatch(/user=john/);
113
+ expect(output).toMatch(/id=123/);
114
+ });
115
+ it('should handle object context with message', () => {
116
+ const logger = new SimpleLogger();
117
+ logger.info({ userId: 123 }, 'user action');
118
+ const output = consoleSpy.mock.calls[0][0];
119
+ expect(output).toMatch(/userId=123/);
120
+ expect(output).toMatch(/user action/);
121
+ });
122
+ it('should handle message with format arguments', () => {
123
+ const logger = new SimpleLogger();
124
+ logger.info('Hello %s, you are %d years old', 'John', 30);
125
+ const output = consoleSpy.mock.calls[0][0];
126
+ expect(output).toMatch(/Hello John, you are 30 years old/);
127
+ });
128
+ it('should handle object-only logging', () => {
129
+ const logger = new SimpleLogger();
130
+ logger.info({ status: 'ok' });
131
+ expect(consoleSpy).toHaveBeenCalled();
132
+ });
23
133
  });
24
- it('should respect msgPrefix', () => {
25
- const logger = new SimpleLogger(null, { msgPrefix: '[PREFIX]' });
26
- logger.info('message');
27
- expect(consoleSpy.mock.calls[0][0]).toMatch(/\[PREFIX\]/);
134
+ describe('External Logger Integration', () => {
135
+ it('should call external logger with string message', () => {
136
+ const external = {
137
+ info: vi.fn(),
138
+ level: 'info',
139
+ };
140
+ const logger = new SimpleLogger(external);
141
+ logger.info('test message');
142
+ expect(external.info).toHaveBeenCalledWith('test message');
143
+ });
144
+ it('should call external logger with object and message', () => {
145
+ const external = {
146
+ info: vi.fn(),
147
+ level: 'info',
148
+ };
149
+ const logger = new SimpleLogger(external);
150
+ logger.info({ userId: 123 }, 'user action');
151
+ expect(external.info).toHaveBeenCalledWith({ userId: 123 }, 'user action');
152
+ });
153
+ it('should call external logger with object only', () => {
154
+ const external = {
155
+ info: vi.fn(),
156
+ level: 'info',
157
+ };
158
+ const logger = new SimpleLogger(external);
159
+ logger.info({ status: 'ok' });
160
+ expect(external.info).toHaveBeenCalledWith({ status: 'ok' }, undefined);
161
+ });
162
+ it('should call external logger with message and format args', () => {
163
+ const external = {
164
+ info: vi.fn(),
165
+ level: 'info',
166
+ };
167
+ const logger = new SimpleLogger(external);
168
+ logger.info('Hello %s', 'world');
169
+ expect(external.info).toHaveBeenCalledWith('Hello %s', 'world');
170
+ });
171
+ it('should skip logging if method does not exist on external logger', () => {
172
+ const external = {
173
+ info: vi.fn(),
174
+ level: 'info',
175
+ };
176
+ const logger = new SimpleLogger(external);
177
+ logger.debug('should not call');
178
+ expect(external.info).not.toHaveBeenCalled();
179
+ });
180
+ it('should warn on invalid log arguments', () => {
181
+ const external = {
182
+ info: vi.fn(),
183
+ level: 'info',
184
+ };
185
+ const logger = new SimpleLogger(external);
186
+ // Simulate invalid prepared args by calling with invalid types
187
+ logger.callExternalLogMethod('info', [undefined]);
188
+ expect(consoleWarnSpy).toHaveBeenCalled();
189
+ });
28
190
  });
29
- it('should use external logger methods if provided', () => {
30
- const external = {
31
- info: vi.fn(),
32
- level: 'info',
33
- };
34
- const logger = new SimpleLogger(external);
35
- logger.info('external log');
36
- expect(external.info).toHaveBeenCalledOnce();
37
- expect(external.info).toHaveBeenCalledWith('external log');
191
+ describe('Level Management', () => {
192
+ it('should get current level', () => {
193
+ const logger = new SimpleLogger(null, { level: 'warn' });
194
+ expect(logger.getLevel()).toBe('warn');
195
+ });
196
+ it('should set new level', () => {
197
+ const logger = new SimpleLogger(null, { level: 'info' });
198
+ expect(logger.getLevel()).toBe('info');
199
+ logger.setLevel('error');
200
+ expect(logger.getLevel()).toBe('error');
201
+ logger.info('should not log');
202
+ logger.error('should log');
203
+ expect(consoleSpy).toHaveBeenCalledOnce();
204
+ });
205
+ it('should sync level with external logger', () => {
206
+ const external = {
207
+ info: vi.fn(),
208
+ level: 'info',
209
+ };
210
+ const logger = new SimpleLogger(external);
211
+ logger.setLevel('debug');
212
+ expect(external.level).toBe('debug');
213
+ });
214
+ it('should resolve level from external logger', () => {
215
+ const external = {
216
+ info: vi.fn(),
217
+ level: 'warn',
218
+ };
219
+ const logger = new SimpleLogger(external);
220
+ expect(logger.getLevel()).toBe('warn');
221
+ });
222
+ it('should prioritize explicit level over logger level', () => {
223
+ const external = {
224
+ info: vi.fn(),
225
+ level: 'warn',
226
+ };
227
+ const logger = new SimpleLogger(external, { level: 'debug' });
228
+ expect(logger.getLevel()).toBe('debug');
229
+ });
230
+ it('should ignore invalid level in external logger', () => {
231
+ const external = {
232
+ info: vi.fn(),
233
+ level: 'invalid_level',
234
+ };
235
+ const logger = new SimpleLogger(external);
236
+ // Should fall back to default level
237
+ expect(logger.getLevel()).toBe('info');
238
+ });
38
239
  });
39
- it('should fallback to console for invalid external logger', () => {
40
- const logger = new SimpleLogger({});
41
- logger.info('fallback');
42
- expect(consoleSpy).toHaveBeenCalled();
240
+ describe('Enable/Disable', () => {
241
+ it('should disable all logging when disabled', () => {
242
+ const logger = new SimpleLogger(null, { level: 'trace' });
243
+ logger.disable();
244
+ logger.trace('should not log');
245
+ logger.info('should not log');
246
+ logger.error('should not log');
247
+ expect(consoleSpy).not.toHaveBeenCalled();
248
+ });
249
+ it('should enable logging when re-enabled', () => {
250
+ const logger = new SimpleLogger(null, { level: 'info' });
251
+ logger.disable();
252
+ logger.info('should not log');
253
+ logger.enable();
254
+ logger.info('should log');
255
+ expect(consoleSpy).toHaveBeenCalledOnce();
256
+ });
43
257
  });
44
- it('should create child logger with merged bindings', () => {
45
- const logger = new SimpleLogger(null, { bindings: { user: 'A' } });
46
- const child = logger.child({ request: '123' });
47
- child.info('child message');
48
- expect(consoleSpy.mock.calls.length).toBe(1);
49
- const output = consoleSpy.mock.calls[0][0];
50
- expect(output).toMatch(/user=A/);
51
- expect(output).toMatch(/request=123/);
52
- expect(output).toMatch(/child message/);
258
+ describe('Child Logger', () => {
259
+ it('should create child logger with merged bindings', () => {
260
+ const logger = new SimpleLogger(null, { bindings: { user: 'A' } });
261
+ const child = logger.child({ request: '123' });
262
+ child.info('child message');
263
+ const output = consoleSpy.mock.calls[0][0];
264
+ expect(output).toMatch(/user=A/);
265
+ expect(output).toMatch(/request=123/);
266
+ expect(output).toMatch(/child message/);
267
+ });
268
+ it('should call external logger .child() method if available', () => {
269
+ const childLogger = {
270
+ info: vi.fn(),
271
+ level: 'info',
272
+ };
273
+ const childFn = vi.fn(() => childLogger);
274
+ const external = {
275
+ level: 'info',
276
+ child: childFn,
277
+ info: vi.fn(),
278
+ };
279
+ const logger = new SimpleLogger(external);
280
+ const child = logger.child({ traceId: 'xyz' });
281
+ child.info('from child');
282
+ expect(childFn).toHaveBeenCalledWith({ traceId: 'xyz' });
283
+ expect(childLogger.info).toHaveBeenCalledWith('from child');
284
+ });
285
+ it('should create child without calling external .child() if not function', () => {
286
+ const external = {
287
+ info: vi.fn(),
288
+ level: 'info',
289
+ };
290
+ const logger = new SimpleLogger(external);
291
+ const child = logger.child({ req: '456' });
292
+ expect(child).toBeInstanceOf(SimpleLogger);
293
+ });
53
294
  });
54
- it('should call .child if external logger supports it', () => {
55
- const childFn = vi.fn(() => ({
56
- info: vi.fn(),
57
- level: 'info',
58
- }));
59
- const external = { level: 'info', child: childFn, info: vi.fn() };
60
- const logger = new SimpleLogger(external);
61
- const child = logger.child({ traceId: 'xyz' });
62
- child.info('from child');
63
- expect(childFn).toHaveBeenCalledWith({ traceId: 'xyz' });
295
+ describe('Function Logging', () => {
296
+ it('should log function start', () => {
297
+ const logger = new SimpleLogger(null, { level: 'trace' });
298
+ logger.logFunctionStart('myFunction');
299
+ expect(consoleSpy).toHaveBeenCalled();
300
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/Function start: myFunction/);
301
+ });
302
+ it('should log function end', () => {
303
+ const logger = new SimpleLogger(null, { level: 'trace' });
304
+ logger.logFunctionEnd('myFunction');
305
+ expect(consoleSpy).toHaveBeenCalled();
306
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/Function end: myFunction/);
307
+ });
308
+ it('should use caller name if not provided', () => {
309
+ const logger = new SimpleLogger(null, { level: 'trace' });
310
+ logger.logFunctionStart();
311
+ logger.logFunctionEnd();
312
+ expect(consoleSpy).toHaveBeenCalledTimes(2);
313
+ });
314
+ });
315
+ describe('Flush Method', () => {
316
+ it('should return immediately if not external logger', async () => {
317
+ const logger = new SimpleLogger();
318
+ await expect(logger.flush()).resolves.toBeUndefined();
319
+ });
320
+ it('should call flush on external logger if available', async () => {
321
+ const flushFn = vi.fn((cb) => cb());
322
+ const external = {
323
+ info: vi.fn(),
324
+ level: 'info',
325
+ flush: flushFn,
326
+ };
327
+ const logger = new SimpleLogger(external);
328
+ await logger.flush();
329
+ expect(flushFn).toHaveBeenCalled();
330
+ });
331
+ it('should handle flush errors gracefully', async () => {
332
+ const flushFn = vi.fn((cb) => cb(new Error('Flush error')));
333
+ const external = {
334
+ info: vi.fn(),
335
+ level: 'info',
336
+ flush: flushFn,
337
+ };
338
+ const logger = new SimpleLogger(external);
339
+ await expect(logger.flush()).resolves.toBeUndefined();
340
+ });
341
+ it('should return immediately if flush is not a function', async () => {
342
+ const external = {
343
+ info: vi.fn(),
344
+ level: 'info',
345
+ };
346
+ const logger = new SimpleLogger(external);
347
+ await expect(logger.flush()).resolves.toBeUndefined();
348
+ });
349
+ });
350
+ describe('Silent Level', () => {
351
+ it('should not log anything at silent level', () => {
352
+ const logger = new SimpleLogger(null, { level: 'silent' });
353
+ logger.trace('should not log');
354
+ logger.debug('should not log');
355
+ logger.info('should not log');
356
+ logger.warn('should not log');
357
+ logger.error('should not log');
358
+ logger.fatal('should not log');
359
+ expect(consoleSpy).not.toHaveBeenCalled();
360
+ });
361
+ });
362
+ describe('Level Resolution', () => {
363
+ it('should handle logger without level property', () => {
364
+ const external = {
365
+ info: vi.fn(),
366
+ };
367
+ const logger = new SimpleLogger(external);
368
+ expect(logger.getLevel()).toBe('info');
369
+ });
370
+ it('should not update level on external logger without level property', () => {
371
+ const external = {
372
+ info: vi.fn(),
373
+ };
374
+ const logger = new SimpleLogger(external);
375
+ logger.setLevel('debug');
376
+ expect(external.level).toBeUndefined();
377
+ });
378
+ });
379
+ describe('Factory with Transport', () => {
380
+ it('should pass transport option to factory', () => {
381
+ const mockLogger = {
382
+ info: vi.fn(),
383
+ level: 'info',
384
+ };
385
+ const factory = vi.fn(() => mockLogger);
386
+ const transport = { target: 'pino/file' };
387
+ new SimpleLogger(factory, { level: 'info', transport });
388
+ expect(factory).toHaveBeenCalledWith({
389
+ level: 'info',
390
+ transport,
391
+ });
392
+ });
64
393
  });
65
394
  });
66
395
  //# sourceMappingURL=simple-logger.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-logger.test.js","sourceRoot":"","sources":["../../src/__test__/simple-logger.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-logger.test.js","sourceRoot":"","sources":["../../src/__test__/simple-logger.test.ts"],"names":[],"mappings":"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"}
@@ -174,12 +174,20 @@ export default class SimpleLogger {
174
174
  if (prepared !== null) {
175
175
  const [first, ...rest] = prepared;
176
176
  if (typeof first === 'string') {
177
- method(first, ...rest);
177
+ // Call with string message signature: (msg: string, ...args: unknown[])
178
+ method.call(this.logger, first, ...rest);
178
179
  }
179
180
  else if (typeof first === 'object') {
181
+ // Call with object signature: (obj: object, msg?: string, ...args: unknown[])
180
182
  const [second, ...otherRest] = rest;
181
- const msg = typeof second === 'string' ? second : undefined;
182
- method(first, msg, ...otherRest);
183
+ if (typeof second === 'string') {
184
+ // Call with both object and message
185
+ method.call(this.logger, first, second, ...otherRest);
186
+ }
187
+ else {
188
+ // Call with object only (msg is undefined)
189
+ method.call(this.logger, first, undefined, ...otherRest);
190
+ }
183
191
  }
184
192
  }
185
193
  else {
@@ -308,8 +316,13 @@ export default class SimpleLogger {
308
316
  }
309
317
  const logger = this.logger;
310
318
  if (typeof logger.flush === 'function') {
311
- const flushAsync = util.promisify(logger.flush.bind(logger));
312
- await flushAsync();
319
+ try {
320
+ const promisifiedFlush = util.promisify(logger.flush.bind(logger));
321
+ return await promisifiedFlush();
322
+ }
323
+ catch {
324
+ // Ignore flush errors - they're not critical
325
+ }
313
326
  }
314
327
  }
315
328
  }
@@ -1 +1 @@
1
- {"version":3,"file":"simple-logger.js","sourceRoot":"","sources":["../../src/classes/simple-logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-logger.js","sourceRoot":"","sources":["../../src/classes/simple-logger.ts"],"names":[],"mappings":"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"}
package/eslint.config.js CHANGED
@@ -59,5 +59,19 @@ export default [
59
59
  'no-param-reassign': 'off',
60
60
  'complexity': ['warn', 25]
61
61
  }
62
+ },
63
+ {
64
+ files: ['src/**/*.test.ts'],
65
+ rules: {
66
+ '@typescript-eslint/no-unsafe-member-access': 'off',
67
+ '@typescript-eslint/no-unsafe-call': 'off',
68
+ '@typescript-eslint/no-unsafe-assignment': 'off',
69
+ '@typescript-eslint/no-unsafe-type-assertion': 'off',
70
+ '@typescript-eslint/no-explicit-any': 'off',
71
+ '@typescript-eslint/no-unsafe-return': 'off',
72
+ 'max-nested-callbacks': 'off',
73
+ '@typescript-eslint/no-confusing-void-expression': 'off',
74
+ 'no-new': 'off'
75
+ }
62
76
  }
63
77
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vvlad1973/simple-logger",
3
- "version": "2.2.0",
3
+ "version": "2.2.1",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -28,7 +28,7 @@
28
28
  "@eslint/compat": "^2.0.0",
29
29
  "@types/node": "^25.0.3",
30
30
  "@typescript-eslint/eslint-plugin": "^8.50.0",
31
- "@typescript-eslint/parser": "^8.50.0",
31
+ "@typescript-eslint/parser": "^8.50.1",
32
32
  "@vitest/coverage-v8": "^4.0.16",
33
33
  "@vvlad1973/gen-changelog": "^1.1.5",
34
34
  "eslint": "^9.39.2",
@@ -1,81 +1,511 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
1
  import SimpleLogger from '../classes/simple-logger.js';
3
- import type { ExternalLogger } from '../types/simple-logger.types.js';
2
+ import type { ExternalLogger, LoggerFactory } from '../types/simple-logger.types.js';
4
3
 
5
4
  describe('SimpleLogger', () => {
6
5
  let consoleSpy: ReturnType<typeof vi.spyOn>;
6
+ let consoleWarnSpy: ReturnType<typeof vi.spyOn>;
7
7
 
8
8
  beforeEach(() => {
9
9
  consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
10
+ consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
10
11
  });
11
12
 
12
13
  afterEach(() => {
13
14
  consoleSpy.mockRestore();
15
+ consoleWarnSpy.mockRestore();
14
16
  });
15
17
 
16
- it('should log using console when no external logger is provided', () => {
17
- const logger = new SimpleLogger();
18
- logger.info('test message');
19
- expect(consoleSpy).toHaveBeenCalledOnce();
20
- expect(consoleSpy.mock.calls[0][0]).toMatch(/test message/);
18
+ describe('Initialization Cases', () => {
19
+ it('CASE 1: should use console when no external logger is provided', () => {
20
+ const logger = new SimpleLogger();
21
+ expect(logger.isExternal).toBe(false);
22
+ logger.info('test message');
23
+ expect(consoleSpy).toHaveBeenCalledOnce();
24
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/test message/);
25
+ });
26
+
27
+ it('CASE 2: should call logger factory with options', () => {
28
+ const mockLogger: ExternalLogger = {
29
+ info: vi.fn(),
30
+ level: 'info',
31
+ };
32
+ const factory: LoggerFactory = vi.fn(() => mockLogger);
33
+
34
+ const logger = new SimpleLogger(factory, { level: 'debug', msgPrefix: 'TEST' });
35
+
36
+ expect(factory).toHaveBeenCalledWith({
37
+ level: 'debug',
38
+ msgPrefix: 'TEST',
39
+ });
40
+ expect(logger.isExternal).toBe(true);
41
+ });
42
+
43
+ it('CASE 3: should fallback to console for invalid external logger', () => {
44
+ const logger = new SimpleLogger({} as ExternalLogger);
45
+ expect(logger.isExternal).toBe(false);
46
+ expect(consoleWarnSpy).toHaveBeenCalledWith(
47
+ 'Invalid or console logger passed, falling back to internal console.'
48
+ );
49
+ });
50
+
51
+ it('CASE 3b: should fallback to console when console is passed', () => {
52
+ const logger = new SimpleLogger(console as unknown as ExternalLogger);
53
+ expect(logger.isExternal).toBe(false);
54
+ });
55
+
56
+ it('CASE 4: should use external logger without params', () => {
57
+ const external: ExternalLogger = {
58
+ info: vi.fn(),
59
+ warn: vi.fn(),
60
+ level: 'info',
61
+ };
62
+ const logger = new SimpleLogger(external);
63
+ expect(logger.isExternal).toBe(true);
64
+
65
+ logger.info('test');
66
+ expect(external.info).toHaveBeenCalledWith('test');
67
+ });
68
+
69
+ it('CASE 5: should create child logger when external has .child() method', () => {
70
+ const childLogger: ExternalLogger = {
71
+ info: vi.fn(),
72
+ level: 'info',
73
+ };
74
+ const childFn = vi.fn(() => childLogger);
75
+ const external: ExternalLogger = {
76
+ info: vi.fn(),
77
+ level: 'info',
78
+ child: childFn,
79
+ };
80
+
81
+ const logger = new SimpleLogger(external, {
82
+ level: 'debug',
83
+ bindings: { app: 'test' },
84
+ msgPrefix: 'PREFIX',
85
+ });
86
+
87
+ expect(childFn).toHaveBeenCalledWith(
88
+ { app: 'test' },
89
+ { level: 'debug', msgPrefix: 'PREFIX' }
90
+ );
91
+ expect(logger.isExternal).toBe(true);
92
+ });
93
+
94
+ it('CASE 6: should use external logger directly without .child() and set level', () => {
95
+ const external: ExternalLogger = {
96
+ info: vi.fn(),
97
+ level: 'info',
98
+ };
99
+
100
+ const logger = new SimpleLogger(external, { level: 'debug' });
101
+
102
+ expect(external.level).toBe('debug');
103
+ expect(logger.isExternal).toBe(true);
104
+ });
105
+ });
106
+
107
+ describe('Logging Methods', () => {
108
+ it('should log at all levels', () => {
109
+ const logger = new SimpleLogger(null, { level: 'trace' });
110
+
111
+ logger.trace('trace msg');
112
+ logger.debug('debug msg');
113
+ logger.info('info msg');
114
+ logger.warn('warn msg');
115
+ logger.error('error msg');
116
+ logger.fatal('fatal msg');
117
+
118
+ expect(consoleSpy).toHaveBeenCalledTimes(6);
119
+ });
120
+
121
+ it('should not log below current level', () => {
122
+ const logger = new SimpleLogger(null, { level: 'warn' });
123
+
124
+ logger.trace('should not log');
125
+ logger.debug('should not log');
126
+ logger.info('should not log');
127
+ logger.warn('should log');
128
+ logger.error('should log');
129
+
130
+ expect(consoleSpy).toHaveBeenCalledTimes(2);
131
+ });
132
+
133
+ it('should respect msgPrefix in console output', () => {
134
+ const logger = new SimpleLogger(null, { msgPrefix: '[PREFIX]' });
135
+ logger.info('message');
136
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/\[PREFIX\]/);
137
+ });
138
+
139
+ it('should include bindings in console output', () => {
140
+ const logger = new SimpleLogger(null, { bindings: { user: 'john', id: 123 } });
141
+ logger.info('message');
142
+ const output = consoleSpy.mock.calls[0][0];
143
+ expect(output).toMatch(/user=john/);
144
+ expect(output).toMatch(/id=123/);
145
+ });
146
+
147
+ it('should handle object context with message', () => {
148
+ const logger = new SimpleLogger();
149
+ logger.info({ userId: 123 }, 'user action');
150
+ const output = consoleSpy.mock.calls[0][0];
151
+ expect(output).toMatch(/userId=123/);
152
+ expect(output).toMatch(/user action/);
153
+ });
154
+
155
+ it('should handle message with format arguments', () => {
156
+ const logger = new SimpleLogger();
157
+ logger.info('Hello %s, you are %d years old', 'John', 30);
158
+ const output = consoleSpy.mock.calls[0][0];
159
+ expect(output).toMatch(/Hello John, you are 30 years old/);
160
+ });
161
+
162
+ it('should handle object-only logging', () => {
163
+ const logger = new SimpleLogger();
164
+ logger.info({ status: 'ok' });
165
+ expect(consoleSpy).toHaveBeenCalled();
166
+ });
167
+ });
168
+
169
+ describe('External Logger Integration', () => {
170
+ it('should call external logger with string message', () => {
171
+ const external: ExternalLogger = {
172
+ info: vi.fn(),
173
+ level: 'info',
174
+ };
175
+ const logger = new SimpleLogger(external);
176
+
177
+ logger.info('test message');
178
+
179
+ expect(external.info).toHaveBeenCalledWith('test message');
180
+ });
181
+
182
+ it('should call external logger with object and message', () => {
183
+ const external: ExternalLogger = {
184
+ info: vi.fn(),
185
+ level: 'info',
186
+ };
187
+ const logger = new SimpleLogger(external);
188
+
189
+ logger.info({ userId: 123 }, 'user action');
190
+
191
+ expect(external.info).toHaveBeenCalledWith({ userId: 123 }, 'user action');
192
+ });
193
+
194
+ it('should call external logger with object only', () => {
195
+ const external: ExternalLogger = {
196
+ info: vi.fn(),
197
+ level: 'info',
198
+ };
199
+ const logger = new SimpleLogger(external);
200
+
201
+ logger.info({ status: 'ok' });
202
+
203
+ expect(external.info).toHaveBeenCalledWith({ status: 'ok' }, undefined);
204
+ });
205
+
206
+ it('should call external logger with message and format args', () => {
207
+ const external: ExternalLogger = {
208
+ info: vi.fn(),
209
+ level: 'info',
210
+ };
211
+ const logger = new SimpleLogger(external);
212
+
213
+ logger.info('Hello %s', 'world');
214
+
215
+ expect(external.info).toHaveBeenCalledWith('Hello %s', 'world');
216
+ });
217
+
218
+ it('should skip logging if method does not exist on external logger', () => {
219
+ const external: ExternalLogger = {
220
+ info: vi.fn(),
221
+ level: 'info',
222
+ };
223
+ const logger = new SimpleLogger(external);
224
+
225
+ logger.debug('should not call');
226
+
227
+ expect(external.info).not.toHaveBeenCalled();
228
+ });
229
+
230
+ it('should warn on invalid log arguments', () => {
231
+ const external: ExternalLogger = {
232
+ info: vi.fn(),
233
+ level: 'info',
234
+ };
235
+ const logger = new SimpleLogger(external);
236
+
237
+ // Simulate invalid prepared args by calling with invalid types
238
+ (logger as any).callExternalLogMethod('info', [undefined]);
239
+
240
+ expect(consoleWarnSpy).toHaveBeenCalled();
241
+ });
242
+ });
243
+
244
+ describe('Level Management', () => {
245
+ it('should get current level', () => {
246
+ const logger = new SimpleLogger(null, { level: 'warn' });
247
+ expect(logger.getLevel()).toBe('warn');
248
+ });
249
+
250
+ it('should set new level', () => {
251
+ const logger = new SimpleLogger(null, { level: 'info' });
252
+ expect(logger.getLevel()).toBe('info');
253
+
254
+ logger.setLevel('error');
255
+ expect(logger.getLevel()).toBe('error');
256
+
257
+ logger.info('should not log');
258
+ logger.error('should log');
259
+
260
+ expect(consoleSpy).toHaveBeenCalledOnce();
261
+ });
262
+
263
+ it('should sync level with external logger', () => {
264
+ const external: ExternalLogger = {
265
+ info: vi.fn(),
266
+ level: 'info',
267
+ };
268
+ const logger = new SimpleLogger(external);
269
+
270
+ logger.setLevel('debug');
271
+
272
+ expect(external.level).toBe('debug');
273
+ });
274
+
275
+ it('should resolve level from external logger', () => {
276
+ const external: ExternalLogger = {
277
+ info: vi.fn(),
278
+ level: 'warn',
279
+ };
280
+ const logger = new SimpleLogger(external);
281
+
282
+ expect(logger.getLevel()).toBe('warn');
283
+ });
284
+
285
+ it('should prioritize explicit level over logger level', () => {
286
+ const external: ExternalLogger = {
287
+ info: vi.fn(),
288
+ level: 'warn',
289
+ };
290
+ const logger = new SimpleLogger(external, { level: 'debug' });
291
+
292
+ expect(logger.getLevel()).toBe('debug');
293
+ });
294
+
295
+ it('should ignore invalid level in external logger', () => {
296
+ const external: ExternalLogger = {
297
+ info: vi.fn(),
298
+ level: 'invalid_level' as any,
299
+ };
300
+ const logger = new SimpleLogger(external);
301
+
302
+ // Should fall back to default level
303
+ expect(logger.getLevel()).toBe('info');
304
+ });
21
305
  });
22
306
 
23
- it('should not log below current level', () => {
24
- const logger = new SimpleLogger(null, { level: 'warn' });
25
- logger.info('should not log');
26
- logger.warn('should log');
27
- expect(consoleSpy).toHaveBeenCalledOnce();
28
- expect(consoleSpy.mock.calls[0][0]).toMatch(/should log/);
307
+ describe('Enable/Disable', () => {
308
+ it('should disable all logging when disabled', () => {
309
+ const logger = new SimpleLogger(null, { level: 'trace' });
310
+
311
+ logger.disable();
312
+
313
+ logger.trace('should not log');
314
+ logger.info('should not log');
315
+ logger.error('should not log');
316
+
317
+ expect(consoleSpy).not.toHaveBeenCalled();
318
+ });
319
+
320
+ it('should enable logging when re-enabled', () => {
321
+ const logger = new SimpleLogger(null, { level: 'info' });
322
+
323
+ logger.disable();
324
+ logger.info('should not log');
325
+
326
+ logger.enable();
327
+ logger.info('should log');
328
+
329
+ expect(consoleSpy).toHaveBeenCalledOnce();
330
+ });
29
331
  });
30
332
 
31
- it('should respect msgPrefix', () => {
32
- const logger = new SimpleLogger(null, { msgPrefix: '[PREFIX]' });
33
- logger.info('message');
34
- expect(consoleSpy.mock.calls[0][0]).toMatch(/\[PREFIX\]/);
333
+ describe('Child Logger', () => {
334
+ it('should create child logger with merged bindings', () => {
335
+ const logger = new SimpleLogger(null, { bindings: { user: 'A' } });
336
+ const child = logger.child({ request: '123' });
337
+
338
+ child.info('child message');
339
+
340
+ const output = consoleSpy.mock.calls[0][0];
341
+ expect(output).toMatch(/user=A/);
342
+ expect(output).toMatch(/request=123/);
343
+ expect(output).toMatch(/child message/);
344
+ });
345
+
346
+ it('should call external logger .child() method if available', () => {
347
+ const childLogger: ExternalLogger = {
348
+ info: vi.fn(),
349
+ level: 'info',
350
+ };
351
+ const childFn = vi.fn(() => childLogger);
352
+ const external: ExternalLogger = {
353
+ level: 'info',
354
+ child: childFn,
355
+ info: vi.fn(),
356
+ };
357
+
358
+ const logger = new SimpleLogger(external);
359
+ const child = logger.child({ traceId: 'xyz' });
360
+
361
+ child.info('from child');
362
+
363
+ expect(childFn).toHaveBeenCalledWith({ traceId: 'xyz' });
364
+ expect(childLogger.info).toHaveBeenCalledWith('from child');
365
+ });
366
+
367
+ it('should create child without calling external .child() if not function', () => {
368
+ const external: ExternalLogger = {
369
+ info: vi.fn(),
370
+ level: 'info',
371
+ };
372
+
373
+ const logger = new SimpleLogger(external);
374
+ const child = logger.child({ req: '456' });
375
+
376
+ expect(child).toBeInstanceOf(SimpleLogger);
377
+ });
35
378
  });
36
379
 
37
- it('should use external logger methods if provided', () => {
38
- const external: ExternalLogger = {
39
- info: vi.fn(),
40
- level: 'info',
41
- };
42
- const logger = new SimpleLogger(external);
43
- logger.info('external log');
44
- expect(external.info).toHaveBeenCalledOnce();
45
- expect(external.info).toHaveBeenCalledWith('external log');
380
+ describe('Function Logging', () => {
381
+ it('should log function start', () => {
382
+ const logger = new SimpleLogger(null, { level: 'trace' });
383
+
384
+ logger.logFunctionStart('myFunction');
385
+
386
+ expect(consoleSpy).toHaveBeenCalled();
387
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/Function start: myFunction/);
388
+ });
389
+
390
+ it('should log function end', () => {
391
+ const logger = new SimpleLogger(null, { level: 'trace' });
392
+
393
+ logger.logFunctionEnd('myFunction');
394
+
395
+ expect(consoleSpy).toHaveBeenCalled();
396
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/Function end: myFunction/);
397
+ });
398
+
399
+ it('should use caller name if not provided', () => {
400
+ const logger = new SimpleLogger(null, { level: 'trace' });
401
+
402
+ logger.logFunctionStart();
403
+ logger.logFunctionEnd();
404
+
405
+ expect(consoleSpy).toHaveBeenCalledTimes(2);
406
+ });
407
+ });
408
+
409
+ describe('Flush Method', () => {
410
+ it('should return immediately if not external logger', async () => {
411
+ const logger = new SimpleLogger();
412
+
413
+ await expect(logger.flush()).resolves.toBeUndefined();
414
+ });
415
+
416
+ it('should call flush on external logger if available', async () => {
417
+ const flushFn = vi.fn((cb: (err?: Error) => void) => cb());
418
+ const external: ExternalLogger & { flush: typeof flushFn } = {
419
+ info: vi.fn(),
420
+ level: 'info',
421
+ flush: flushFn,
422
+ };
423
+
424
+ const logger = new SimpleLogger(external);
425
+
426
+ await logger.flush();
427
+
428
+ expect(flushFn).toHaveBeenCalled();
429
+ });
430
+
431
+ it('should handle flush errors gracefully', async () => {
432
+ const flushFn = vi.fn((cb: (err?: Error) => void) => cb(new Error('Flush error')));
433
+ const external: ExternalLogger & { flush: typeof flushFn } = {
434
+ info: vi.fn(),
435
+ level: 'info',
436
+ flush: flushFn,
437
+ };
438
+
439
+ const logger = new SimpleLogger(external);
440
+
441
+ await expect(logger.flush()).resolves.toBeUndefined();
442
+ });
443
+
444
+ it('should return immediately if flush is not a function', async () => {
445
+ const external: ExternalLogger = {
446
+ info: vi.fn(),
447
+ level: 'info',
448
+ };
449
+
450
+ const logger = new SimpleLogger(external);
451
+
452
+ await expect(logger.flush()).resolves.toBeUndefined();
453
+ });
46
454
  });
47
455
 
48
- it('should fallback to console for invalid external logger', () => {
49
- const logger = new SimpleLogger({} as ExternalLogger);
50
- logger.info('fallback');
51
- expect(consoleSpy).toHaveBeenCalled();
456
+ describe('Silent Level', () => {
457
+ it('should not log anything at silent level', () => {
458
+ const logger = new SimpleLogger(null, { level: 'silent' });
459
+
460
+ logger.trace('should not log');
461
+ logger.debug('should not log');
462
+ logger.info('should not log');
463
+ logger.warn('should not log');
464
+ logger.error('should not log');
465
+ logger.fatal('should not log');
466
+
467
+ expect(consoleSpy).not.toHaveBeenCalled();
468
+ });
52
469
  });
53
470
 
54
- it('should create child logger with merged bindings', () => {
55
- const logger = new SimpleLogger(null, { bindings: { user: 'A' } });
56
- const child = logger.child({ request: '123' });
57
-
58
- child.info('child message');
59
-
60
- expect(consoleSpy.mock.calls.length).toBe(1);
61
- const output = consoleSpy.mock.calls[0][0];
62
-
63
- expect(output).toMatch(/user=A/);
64
- expect(output).toMatch(/request=123/);
65
- expect(output).toMatch(/child message/);
471
+ describe('Level Resolution', () => {
472
+ it('should handle logger without level property', () => {
473
+ const external: ExternalLogger = {
474
+ info: vi.fn(),
475
+ };
476
+
477
+ const logger = new SimpleLogger(external);
478
+
479
+ expect(logger.getLevel()).toBe('info');
480
+ });
481
+
482
+ it('should not update level on external logger without level property', () => {
483
+ const external: ExternalLogger = {
484
+ info: vi.fn(),
485
+ };
486
+
487
+ const logger = new SimpleLogger(external);
488
+ logger.setLevel('debug');
489
+
490
+ expect(external.level).toBeUndefined();
491
+ });
66
492
  });
67
-
68
-
69
-
70
- it('should call .child if external logger supports it', () => {
71
- const childFn = vi.fn(() => ({
72
- info: vi.fn(),
73
- level: 'info',
74
- }));
75
- const external = { level: 'info', child: childFn, info: vi.fn() };
76
- const logger = new SimpleLogger(external);
77
- const child = logger.child({ traceId: 'xyz' });
78
- child.info('from child');
79
- expect(childFn).toHaveBeenCalledWith({ traceId: 'xyz' });
493
+
494
+ describe('Factory with Transport', () => {
495
+ it('should pass transport option to factory', () => {
496
+ const mockLogger: ExternalLogger = {
497
+ info: vi.fn(),
498
+ level: 'info',
499
+ };
500
+ const factory: LoggerFactory = vi.fn(() => mockLogger);
501
+ const transport = { target: 'pino/file' };
502
+
503
+ new SimpleLogger(factory, { level: 'info', transport });
504
+
505
+ expect(factory).toHaveBeenCalledWith({
506
+ level: 'info',
507
+ transport,
508
+ });
509
+ });
80
510
  });
81
511
  });
@@ -230,11 +230,28 @@ export default class SimpleLogger {
230
230
  if (prepared !== null) {
231
231
  const [first, ...rest] = prepared;
232
232
  if (typeof first === 'string') {
233
- method(first, ...rest);
233
+ // Call with string message signature: (msg: string, ...args: unknown[])
234
+ method.call(this.logger, first, ...rest);
234
235
  } else if (typeof first === 'object') {
236
+ // Call with object signature: (obj: object, msg?: string, ...args: unknown[])
235
237
  const [second, ...otherRest] = rest;
236
- const msg = typeof second === 'string' ? second : undefined;
237
- method(first, msg, ...otherRest);
238
+ if (typeof second === 'string') {
239
+ // Call with both object and message
240
+ (method as (obj: object, msg: string, ...args: unknown[]) => void).call(
241
+ this.logger,
242
+ first,
243
+ second,
244
+ ...otherRest
245
+ );
246
+ } else {
247
+ // Call with object only (msg is undefined)
248
+ (method as (obj: object, msg?: string, ...args: unknown[]) => void).call(
249
+ this.logger,
250
+ first,
251
+ undefined,
252
+ ...otherRest
253
+ );
254
+ }
238
255
  }
239
256
  } else {
240
257
  console.warn(`Invalid log arguments for "${level}"`, args);
@@ -376,10 +393,17 @@ export default class SimpleLogger {
376
393
  return;
377
394
  }
378
395
 
379
- const logger = this.logger as ExternalLogger & { flush?: (callback: () => void) => void };
396
+ const logger = this.logger as ExternalLogger & {
397
+ flush?: (callback: (err?: Error) => void) => void;
398
+ };
399
+
380
400
  if (typeof logger.flush === 'function') {
381
- const flushAsync = util.promisify(logger.flush.bind(logger)) as () => Promise<void>;
382
- await flushAsync();
401
+ try {
402
+ const promisifiedFlush = util.promisify(logger.flush.bind(logger));
403
+ return await promisifiedFlush();
404
+ } catch {
405
+ // Ignore flush errors - they're not critical
406
+ }
383
407
  }
384
408
  }
385
409
  }
package/tsconfig.json CHANGED
@@ -11,7 +11,8 @@
11
11
  "sourceMap": true,
12
12
  "resolveJsonModule": true,
13
13
  "skipLibCheck": true,
14
- "forceConsistentCasingInFileNames": true
14
+ "forceConsistentCasingInFileNames": true,
15
+ "types": ["node", "vitest/globals"]
15
16
  },
16
17
  "include": [
17
18
  "src/**/*"
package/vitest.config.ts CHANGED
@@ -12,6 +12,7 @@ export default defineConfig({
12
12
  include: ['src/**/*.test.ts'],
13
13
  exclude: ['node_modules/**', 'dist/**', 'docs/**'],
14
14
  coverage: {
15
+ enabled: true,
15
16
  provider: 'v8',
16
17
  reporter: ['text', 'json', 'html', 'lcov'],
17
18
  include: ['src/**/*.ts'],
@@ -22,7 +23,6 @@ export default defineConfig({
22
23
  '**/*.test.ts',
23
24
  '**/*.config.ts',
24
25
  '**/*.config.js',
25
- 'src/__test__/**'
26
26
  ],
27
27
  thresholds: {
28
28
  lines: 80,