Skip to content

Commit dd45f37

Browse files
sonicoder86ngabor84
andcommitted
fix(typescript): use only named exports
EME-5173 BREAKING CHANGE: remove default exports to make named exports work properly Co-authored-by: Gabor Nemeth <gabor.nemeth@emarsys.com>
1 parent 6b044f8 commit dd45f37

File tree

7 files changed

+81
-48
lines changed

7 files changed

+81
-48
lines changed

README.md

Lines changed: 60 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@ npm install @emartech/json-logger
1111

1212
### Usage
1313

14+
#### Script
15+
1416
```javascript
1517
process.env.DEBUG = 'redis';
16-
const mongoLogger = require('@emartech/json-logger')('mongo');
17-
const redisLogger = require('@emartech/json-logger')('redis');
18+
const { createLogger } = require('@emartech/json-logger');
19+
const mongoLogger = createLogger('mongo');
20+
const redisLogger = createLogger('redis');
1821

1922
redisLogger.info('connected', { domain: 'yahoo' });
2023
// {"name":"redis","action":"connected","level":30,"time":"2016-08-15T08:50:23.566Z","domain":"yahoo"}
@@ -26,6 +29,47 @@ redisLogger.fromError('query', new Error('Unauthorized'), { problem: 'missmatch'
2629
// {"name":"redis","action":"query","level":50,"time":"2016-08-15T08:50:23.569Z","error_name":"Error","error_stack":"Error: Unauthorized\n at Object.<anonymous> (/home/blacksonic/workspace/bunyan-debug/example.js:15:32)\n at Module._compile (module.js:541:32)\n at Object.Module._extensions..js (module.js:550:10)\n at Module.load (module.js:458:32)\n at tryModuleLoad (module.js:417:12)\n at Function.Module._load (module.js:409:3)\n at Module.runMain (module.js:575:10)\n at run (bootstrap_node.js:352:7)\n at startup (bootstrap_node.js:144:9)\n at bootstrap_node.js:467:3","error_message":"Unauthorized","problem":"missmatch"}
2730
```
2831

32+
#### Class
33+
34+
```javascript
35+
const { createLogger } = require('@emartech/json-logger');
36+
const logger = createLogger('Exporter');
37+
38+
class Exporter {
39+
export() {
40+
mongoLogger.info('export', { customer_id: 123 });
41+
}
42+
}
43+
```
44+
45+
```typescript
46+
import { createLogger } from '@emartech/json-logger';
47+
const logger = createLogger('Exporter');
48+
49+
class Exporter {
50+
export() {
51+
mongoLogger.info('export', { customer_id: 123 });
52+
}
53+
}
54+
```
55+
56+
#### Tests
57+
58+
```javascript
59+
import { Logger } from '@emartech/json-logger';
60+
61+
describe('Exporter', () => {
62+
it('should log', () => {
63+
jest.spyOn(Logger.prototype, 'info').mockReturnValue();
64+
const exporter = new Exporter();
65+
66+
exporter.export();
67+
68+
expect(Logger.prototype.info).toHaveBeenCalledWith('export', { customer_id: 123 });
69+
})
70+
});
71+
```
72+
2973
More examples can be found in the `examples` directory.
3074

3175
### API
@@ -39,11 +83,12 @@ Disabled instances output no logs.
3983

4084
```javascript
4185
process.env.DEBUG = 'redis,mysql';
86+
const { createLogger } = require('@emartech/json-logger');
4287

43-
const mongoLogger = require('@emartech/json-logger')('mongo');
88+
const mongoLogger = createLogger('mongo');
4489
// mongo instance will be disabled
4590

46-
const redisLogger = require('@emartech/json-logger')('redis');
91+
const redisLogger = createLogger('redis');
4792
// redis instance will be enabled
4893
```
4994

@@ -52,7 +97,8 @@ const redisLogger = require('@emartech/json-logger')('redis');
5297
Prints the provided data to the console in JSON format.
5398

5499
```javascript
55-
const redisLogger = require('@emartech/json-logger')('redis');
100+
const { createLogger } = require('@emartech/json-logger');
101+
const redisLogger = createLogger('redis');
56102

57103
redisLogger.info('connected', { domain: 'yahoo' });
58104
// {"name":"redis","action":"connected","level":30,"time":"2016-08-15T08:50:23.566Z","domain":"yahoo"}
@@ -92,7 +138,8 @@ The displayed line contains the stack trace, the name and the message of the err
92138
The log level defaults to error.
93139

94140
```javascript
95-
const redisLogger = require('@emartech/json-logger')('redis');
141+
const { createLogger } = require('@emartech/json-logger');
142+
const redisLogger = createLogger('redis');
96143

97144
redisLogger.fromError('query', new Error('Unauthorized'), { problem: 'missmatch' });
98145
// {"name":"redis","action":"query","level":50,"time":"2016-08-15T08:50:23.569Z","error_name":"Error","error_stack":"Error: Unauthorized\n at Object.<anonymous> (/home/blacksonic/workspace/bunyan-debug/example.js:15:32)\n at Module._compile (module.js:541:32)\n at Object.Module._extensions..js (module.js:550:10)\n at Module.load (module.js:458:32)\n at tryModuleLoad (module.js:417:12)\n at Function.Module._load (module.js:409:3)\n at Module.runMain (module.js:575:10)\n at run (bootstrap_node.js:352:7)\n at startup (bootstrap_node.js:144:9)\n at bootstrap_node.js:467:3","error_message":"Unauthorized","problem":"missmatch"}
@@ -109,7 +156,8 @@ but also logs the elapsed time in milliseconds from the creation of the instance
109156
The elapsed time will be logged into the `duration` field.
110157

111158
```javascript
112-
const redisLogger = require('@emartech/json-logger')('redis');
159+
const { createLogger } = require('@emartech/json-logger');
160+
const redisLogger = createLogger('redis');
113161

114162
const timer = redisLogger.timer();
115163

@@ -127,9 +175,9 @@ With transformers we can alter the data to be logged before passing to the forma
127175
It is a perfect place to add the name of the machine is running on or the request id associated with the current thread stored on a continuation local storage.
128176

129177
```javascript
130-
const Logger = require('@emartech/json-logger');
178+
const { createLogger } = require('@emartech/json-logger');
131179

132-
Logger.configure({
180+
createLogger.configure({
133181
formatter: JSON.stringify,
134182
output: console.log,
135183
transformers: []
@@ -160,11 +208,11 @@ For automating
160208

161209
```javascript
162210
const Koa = require('koa');
163-
const logFactory = require('@emartech/json-logger');
211+
const { createLogger } = require('@emartech/json-logger');
164212
const clsAdapter = require('@emartech/cls-adapter');
165-
const logger = logFactory('redis');
213+
const logger = createLogger('redis');
166214

167-
logFactory.configure({
215+
createLogger.configure({
168216
transformers: [
169217
clsAdapter.addContextStorageToInput()
170218
]

examples/express.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
'use strict';
22

33
const express = require('express');
4-
const logFactory = require('../dist');
4+
const { createLogger } = require('../dist');
55
const clsAdapter = require('@emartech/cls-adapter');
6-
const logger = logFactory('example');
6+
const logger = createLogger('example');
77
const port = 3000;
88

9-
logFactory.configure({
9+
createLogger.configure({
1010
transformers: [
1111
clsAdapter.addContextStorageToInput()
1212
]

examples/index-js.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
'use strict';
22

33
process.env.DEBUG = 'redis';
4-
const logger = require('../dist');
4+
const { createLogger } = require('../dist');
55

6-
const mongoLogger = logger('mongo');
7-
const redisLogger = logger('redis');
6+
const mongoLogger = createLogger('mongo');
7+
const redisLogger = createLogger('redis');
88

99
// simple info logging with enabled namespace
1010
redisLogger.info('connected', { domain: 'yahoo' });

examples/index-ts.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
process.env.DEBUG = 'redis';
2-
import logger from '../dist';
2+
import { createLogger } from '../dist';
33

4-
const mongoLogger = logger('mongo');
5-
const redisLogger = logger('redis');
4+
const mongoLogger = createLogger('mongo');
5+
const redisLogger = createLogger('redis');
66

77
// simple info logging with enabled namespace
88
redisLogger.info('connected', { domain: 'yahoo' });

examples/koa.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
'use strict';
22

33
const Koa = require('koa');
4-
const logFactory = require('../dist');
4+
const { createLogger } = require('../dist');
55

66
const clsAdapter = require('@emartech/cls-adapter');
7-
const logger = logFactory('example');
7+
const logger = createLogger('example');
88
const port = 3000;
99

10-
logFactory.configure({
10+
createLogger.configure({
1111
transformers: [
1212
clsAdapter.addContextStorageToInput()
1313
]

src/index.spec.js

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
'use strict';
22

3-
const logFactory = require('./index');
4-
const { Logger } = require('./logger/logger');
3+
const { createLogger, Logger } = require('./index');
54

6-
describe('LogFactory', function() {
5+
describe('createLogger', function() {
76
beforeEach(function() {
87
process.env.DEBUG = 'mongo';
98
});
@@ -13,25 +12,16 @@ describe('LogFactory', function() {
1312
});
1413

1514
it('should return an enabled log instance when env variable is set to same', function() {
16-
const logger = logFactory('mongo');
15+
const logger = createLogger('mongo');
1716

1817
expect(logger).to.be.an.instanceOf(Logger);
1918
expect(logger.isEnabled()).to.be.true;
2019
});
2120

2221
it('should return a disabled log instance when different', function() {
23-
const logger = logFactory('redis');
22+
const logger = createLogger('redis');
2423

2524
expect(logger).to.be.an.instanceOf(Logger);
2625
expect(logger.isEnabled()).to.be.false;
2726
});
28-
29-
it('should be mockable through public interface', function() {
30-
this.sandbox.stub(logFactory.Logger.prototype, 'info');
31-
32-
const logger = logFactory('mongo');
33-
logger.info('hello');
34-
35-
expect(logFactory.Logger.prototype.info).to.have.been.calledWith('hello');
36-
})
3727
});

src/index.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,16 @@ export { Timer } from './timer/timer';
55
import { isNamespaceEnabled } from './enabled/enabled';
66
import { formatter } from './formatter';
77

8-
export function logFactory(namespace: string): Logger {
8+
export function createLogger(namespace: string): Logger {
99
return new Logger(namespace, isNamespaceEnabled(
10-
logFactory.getNamespaces(), namespace
10+
createLogger.getNamespaces(), namespace
1111
));
1212
}
1313

14-
logFactory.Logger = Logger;
15-
logFactory.Timer = Timer;
16-
logFactory.getNamespaces = function(): string {
14+
createLogger.getNamespaces = function(): string {
1715
return process.env.DEBUG || '';
1816
};
19-
logFactory.configure = function(options: LoggerConfig): void {
17+
createLogger.configure = function(options: LoggerConfig): void {
2018
Logger.configure(options);
2119
};
22-
logFactory.formatter = formatter;
23-
24-
export default logFactory;
25-
module.exports = logFactory;
20+
createLogger.formatter = formatter;

0 commit comments

Comments
 (0)