@knowark/loggarkjs 0.3.6 → 0.3.8

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.
package/lib/index.d.ts CHANGED
@@ -21,3 +21,15 @@ export declare class Logger {
21
21
 
22
22
  debug(...data: any[]): void
23
23
  }
24
+
25
+ export declare class Translator {
26
+ static translate(key: string, options?: object): string
27
+
28
+ constructor (options?: object)
29
+
30
+ translate(key: string, options?: object): string
31
+
32
+ t(key: string, options?: object): string
33
+ }
34
+
35
+ export declare function t(key: string, options?: object): string
package/lib/index.js CHANGED
@@ -1 +1,2 @@
1
1
  export { Logger } from './logger.js'
2
+ export { Translator, t } from './translator.js'
package/lib/logger.js CHANGED
@@ -46,6 +46,6 @@ export class Logger {
46
46
 
47
47
  function log (global, level, context, args) {
48
48
  return global.console[level](
49
- `[${level.toUpperCase()}]`,
49
+ `${new global.Date().toISOString()} [${level.toUpperCase()}]`,
50
50
  ...[context ? JSON.stringify(context) : false, ...args].filter(Boolean))
51
51
  }
@@ -1,7 +1,6 @@
1
- import { test, expect } from '@jest/globals'
1
+ import { it, expect } from '@jest/globals'
2
2
  import { Logger } from './logger.js'
3
3
 
4
-
5
4
  function setup () {
6
5
  const mockGlobal = {
7
6
  console: {
@@ -10,22 +9,27 @@ function setup () {
10
9
  warn (...args) { mockGlobal.warnArgs = args },
11
10
  info (...args) { mockGlobal.infoArgs = args },
12
11
  debug (...args) { mockGlobal.debugArgs = args }
12
+ },
13
+ Date: class {
14
+ toISOString() {
15
+ return new Date('2025-02-15').toISOString()
16
+ }
13
17
  }
14
18
  }
15
19
  return {mockGlobal}
16
20
  }
17
21
 
18
- test('can be instantiated', () => {
22
+ it('can be instantiated', () => {
19
23
  const logger = new Logger()
20
24
  expect(logger).toBeTruthy()
21
25
  })
22
26
 
23
- test('can be instantiated', () => {
27
+ it('can be instantiated', () => {
24
28
  const logger = new Logger()
25
29
  expect(logger).toBeTruthy()
26
30
  })
27
31
 
28
- test('is disabled by default', () => {
32
+ it('is disabled by default', () => {
29
33
  const { mockGlobal } = setup()
30
34
  const logger = new Logger({ global: mockGlobal })
31
35
 
@@ -45,28 +49,33 @@ test('is disabled by default', () => {
45
49
  expect(mockGlobal.debugArgs).toBeFalsy()
46
50
  })
47
51
 
48
- test('adds a prefix to the logging methods according to loglevel', () => {
52
+ it('adds a prefix to the logging methods according to loglevel', () => {
49
53
  const { mockGlobal } = setup()
50
54
  mockGlobal.LOGLEVEL = 'debug'
51
55
  const logger = new Logger({ global: mockGlobal })
52
56
 
53
57
  logger.log('Logging something...')
54
- expect(mockGlobal.logArgs).toEqual(['[LOG]', 'Logging something...'])
58
+ expect(mockGlobal.logArgs).toEqual(
59
+ ['2025-02-15T00:00:00.000Z [LOG]', 'Logging something...'])
55
60
 
56
61
  logger.error('Logging something...')
57
- expect(mockGlobal.errorArgs).toEqual(['[ERROR]', 'Logging something...'])
62
+ expect(mockGlobal.errorArgs).toEqual(
63
+ ['2025-02-15T00:00:00.000Z [ERROR]', 'Logging something...'])
58
64
 
59
65
  logger.warn('Logging something...')
60
- expect(mockGlobal.warnArgs).toEqual(['[WARN]', 'Logging something...'])
66
+ expect(mockGlobal.warnArgs).toEqual(
67
+ ['2025-02-15T00:00:00.000Z [WARN]', 'Logging something...'])
61
68
 
62
69
  logger.info('Logging something...')
63
- expect(mockGlobal.infoArgs).toEqual(['[INFO]', 'Logging something...'])
70
+ expect(mockGlobal.infoArgs).toEqual(
71
+ ['2025-02-15T00:00:00.000Z [INFO]', 'Logging something...'])
64
72
 
65
73
  logger.debug('Logging something...')
66
- expect(mockGlobal.debugArgs).toEqual(['[DEBUG]', 'Logging something...'])
74
+ expect(mockGlobal.debugArgs).toEqual(
75
+ ['2025-02-15T00:00:00.000Z [DEBUG]', 'Logging something...'])
67
76
  })
68
77
 
69
- test('adds the provided logging context labels to its final output', () => {
78
+ it('adds the provided logging context labels to its final output', () => {
70
79
  const { mockGlobal } = setup()
71
80
  mockGlobal.LOGLEVEL = 'debug'
72
81
  const context = { correlationId: 'ABCD1234', interactor: 'Informer' }
@@ -74,36 +83,36 @@ test('adds the provided logging context labels to its final output', () => {
74
83
 
75
84
  logger.log('Logging something...')
76
85
  expect(mockGlobal.logArgs).toEqual([
77
- '[LOG]',
86
+ '2025-02-15T00:00:00.000Z [LOG]',
78
87
  JSON.stringify({ correlationId: 'ABCD1234', interactor: 'Informer' }),
79
88
  'Logging something...'])
80
89
 
81
90
  logger.error('Logging something...')
82
91
  expect(mockGlobal.errorArgs).toEqual([
83
- '[ERROR]',
92
+ '2025-02-15T00:00:00.000Z [ERROR]',
84
93
  JSON.stringify({ correlationId: 'ABCD1234', interactor: 'Informer' }),
85
94
  'Logging something...'])
86
95
 
87
96
  logger.warn('Logging something...')
88
97
  expect(mockGlobal.warnArgs).toEqual([
89
- '[WARN]',
98
+ '2025-02-15T00:00:00.000Z [WARN]',
90
99
  JSON.stringify({ correlationId: 'ABCD1234', interactor: 'Informer' }),
91
100
  'Logging something...'])
92
101
 
93
102
  logger.info('Logging something...')
94
103
  expect(mockGlobal.infoArgs).toEqual([
95
- '[INFO]',
104
+ '2025-02-15T00:00:00.000Z [INFO]',
96
105
  JSON.stringify({ correlationId: 'ABCD1234', interactor: 'Informer' }),
97
106
  'Logging something...'])
98
107
 
99
108
  logger.debug('Logging something...')
100
109
  expect(mockGlobal.debugArgs).toEqual([
101
- '[DEBUG]',
110
+ '2025-02-15T00:00:00.000Z [DEBUG]',
102
111
  JSON.stringify({ correlationId: 'ABCD1234', interactor: 'Informer' }),
103
112
  'Logging something...'])
104
113
  })
105
114
 
106
- test('supports including static context labels', () => {
115
+ it('supports including static context labels', () => {
107
116
  Logger.context = () => {
108
117
  return { correlationId: 'ABCD1234' }
109
118
  }
@@ -115,7 +124,7 @@ test('supports including static context labels', () => {
115
124
 
116
125
  logger.info('Logging something...')
117
126
  expect(mockGlobal.infoArgs).toEqual([
118
- '[INFO]',
127
+ '2025-02-15T00:00:00.000Z [INFO]',
119
128
  JSON.stringify({ correlationId: 'ABCD1234', model: 'Product' }),
120
129
  'Logging something...'])
121
130
 
@@ -0,0 +1,22 @@
1
+ export class Translator {
2
+ static translate (key, _options) {
3
+ return key
4
+ }
5
+
6
+ #options = {}
7
+
8
+ constructor (options = {}) {
9
+ this.#options = options
10
+ }
11
+
12
+ translate (key, options) {
13
+ return this.constructor.translate(
14
+ key, { ...this.#options, ...options })
15
+ }
16
+
17
+ get t () {
18
+ return this.translate.bind(this)
19
+ }
20
+ }
21
+
22
+ export const t = (key, options) => Translator.translate(key, options)
@@ -0,0 +1,35 @@
1
+ import { it, expect } from '@jest/globals'
2
+ import { Translator, t } from './translator.js'
3
+
4
+ it('can be instantiated', () => {
5
+ const translator = new Translator()
6
+ expect(translator).toBeTruthy()
7
+ })
8
+
9
+ it('defines a translate function with options', () => {
10
+ const translator = new Translator()
11
+
12
+ const result = translator.translate('any.key')
13
+
14
+ expect(result).toBe('any.key')
15
+ })
16
+
17
+ it('defines a t shortcut for function translate', () => {
18
+ const t = new Translator().t
19
+
20
+ const result = t('any.key')
21
+
22
+ expect(result).toBe('any.key')
23
+ })
24
+
25
+ it('defines a global t shortcut translate', () => {
26
+ const originalTranslate = Translator.translate
27
+ Translator.translate = (key, _options) => {
28
+ return `translated:${key}`
29
+ }
30
+
31
+ const result = t('any.key')
32
+
33
+ expect(result).toBe('translated:any.key')
34
+ Translator.translate = originalTranslate
35
+ })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knowark/loggarkjs",
3
- "version": "0.3.6",
3
+ "version": "0.3.8",
4
4
  "description": "Utilitarian Logging Library",
5
5
  "main": "./lib/index.js",
6
6
  "type": "module",