@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 +12 -0
- package/lib/index.js +1 -0
- package/lib/logger.js +1 -1
- package/lib/logger.test.js +28 -19
- package/lib/translator.js +22 -0
- package/lib/translator.test.js +35 -0
- package/package.json +1 -1
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
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
|
-
|
|
49
|
+
`${new global.Date().toISOString()} [${level.toUpperCase()}]`,
|
|
50
50
|
...[context ? JSON.stringify(context) : false, ...args].filter(Boolean))
|
|
51
51
|
}
|
package/lib/logger.test.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
22
|
+
it('can be instantiated', () => {
|
|
19
23
|
const logger = new Logger()
|
|
20
24
|
expect(logger).toBeTruthy()
|
|
21
25
|
})
|
|
22
26
|
|
|
23
|
-
|
|
27
|
+
it('can be instantiated', () => {
|
|
24
28
|
const logger = new Logger()
|
|
25
29
|
expect(logger).toBeTruthy()
|
|
26
30
|
})
|
|
27
31
|
|
|
28
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
74
|
+
expect(mockGlobal.debugArgs).toEqual(
|
|
75
|
+
['2025-02-15T00:00:00.000Z [DEBUG]', 'Logging something...'])
|
|
67
76
|
})
|
|
68
77
|
|
|
69
|
-
|
|
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
|
-
|
|
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
|
+
})
|