@autofleet/node-common 1.0.9 → 1.1.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.
package/.eslintrc.json ADDED
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": [
3
+ "airbnb/base"
4
+ ],
5
+ "env": {
6
+ "jest": true
7
+ },
8
+ "rules": {
9
+ "semi": ["error", "never"]
10
+ }
11
+ }
package/logger/index.js CHANGED
@@ -1,11 +1,12 @@
1
- require('dotenv').config();
2
1
  const winston = require('winston')
2
+ require('dotenv').config()
3
+
3
4
  const { env } = process
4
5
 
5
6
  const getLevel = (logLevel) => {
6
7
  if (logLevel) return logLevel
7
- if (env.LOG_LEVEL) return env.LOG_LEVEL
8
- if (env.NODE_ENV === 'development') return 'debug'
8
+ if (env.LOG_LEVEL) return env.LOG_LEVEL
9
+ if (env.NODE_ENV === 'development') return 'debug'
9
10
  // test and producion will return info
10
11
  return 'info'
11
12
  }
@@ -15,7 +16,7 @@ const getTransporters = () => {
15
16
  if (env.USE_LOG_FILES === 'true') {
16
17
  transporters = transporters.concat([
17
18
  new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
18
- new winston.transports.File({ filename: 'logs/all.log' })
19
+ new winston.transports.File({ filename: 'logs/all.log' }),
19
20
  ])
20
21
  }
21
22
  return transporters
@@ -24,9 +25,9 @@ const getTransporters = () => {
24
25
  const createLogger = (level, transporters) => {
25
26
  const logger = winston.createLogger({
26
27
  level,
27
- format: winston.format.simple(),
28
- transports: transporters
29
- });
28
+ format: winston.format.json(),
29
+ transports: transporters,
30
+ })
30
31
 
31
32
  return logger
32
33
  }
@@ -37,4 +38,4 @@ const getLogger = (logLevel) => {
37
38
  return createLogger(level, transporters)
38
39
  }
39
40
 
40
- module.exports = getLogger
41
+ module.exports = getLogger
@@ -1,57 +1,67 @@
1
1
  const Logger = require('./index')
2
- const fs = require('fs');
3
- const wait = require('wait-promise');
2
+ const fs = require('fs')
3
+ const wait = require('wait-promise')
4
4
 
5
5
  const { env } = process
6
6
 
7
- const waitForFileToHaveContent = (filePath) => {
8
- return wait.limit(30).until(() => {
9
- if(fs.existsSync(filePath)) {
10
- const content = fs.readFileSync(filePath, 'utf8');
11
- return content != ''
7
+ const deleteLogFile = (filePath) => {
8
+ const dir = 'logs'
9
+ if (!fs.existsSync(dir)) {
10
+ fs.mkdirSync(dir)
11
+ }
12
+ if (fs.existsSync(filePath)) {
13
+ fs.unlinkSync(filePath)
14
+ }
15
+ }
16
+
17
+ const waitForFileToHaveContent = ((filePath) => {
18
+ return wait.limit(30).until(() => {
19
+ if (fs.existsSync(filePath)) {
20
+ const content = fs.readFileSync(filePath, 'utf8')
21
+ return content !== ''
12
22
  }
13
23
  return false
14
24
  })
15
- }
25
+ })
16
26
 
17
27
  describe('Logger', () => {
18
28
  it('it`s default level is info', () => {
19
29
  env.NODE_ENV=''
20
30
  const logger = Logger()
21
- expect(logger).toBeDefined();
22
- expect(logger.level).toBe('info');
31
+ expect(logger).toBeDefined()
32
+ expect(logger.level).toBe('info')
23
33
  })
24
34
 
25
35
  it('its default develpment level is debug', () => {
26
36
  env.NODE_ENV='development'
27
37
  const logger = Logger()
28
- expect(logger.level).toBe('debug');
38
+ expect(logger.level).toBe('debug')
29
39
  })
30
40
 
31
41
  it('its default test level is info', () => {
32
42
  env.NODE_ENV='test'
33
43
  const logger = Logger()
34
- expect(logger.level).toBe('info');
44
+ expect(logger.level).toBe('info')
35
45
  })
36
46
 
37
47
  it('its default production level is info', () => {
38
48
  env.NODE_ENV='production'
39
49
  const logger = Logger()
40
- expect(logger.level).toBe('info');
50
+ expect(logger.level).toBe('info')
41
51
  })
42
52
 
43
53
  it('its level can be override by LOG_LEVEL env variable', () => {
44
54
  env.NODE_ENV='development'
45
55
  env.LOG_LEVEL='warn'
46
56
  const logger = Logger()
47
- expect(logger.level).toBe('warn');
57
+ expect(logger.level).toBe('warn')
48
58
  })
49
59
 
50
60
  it('its level can be override by function variable', () => {
51
61
  env.NODE_ENV='production'
52
62
  env.LOG_LEVEL='warn'
53
63
  const logger = Logger('silly')
54
- expect(logger.level).toBe('silly');
64
+ expect(logger.level).toBe('silly')
55
65
  })
56
66
 
57
67
  it('its has functions for each level', () => {
@@ -67,7 +77,8 @@ describe('Logger', () => {
67
77
  it('it can have general file transporters', async () => {
68
78
  env.USE_LOG_FILES='true'
69
79
  const allPath = 'logs/all.log'
70
- fs.unlinkSync(allPath)
80
+ deleteLogFile(allPath)
81
+
71
82
  const logger = Logger()
72
83
  const errorText = "this is error"
73
84
  logger.error(errorText)
@@ -76,15 +87,15 @@ describe('Logger', () => {
76
87
 
77
88
  expect(fs.existsSync(allPath)).toBe(true)
78
89
 
79
- const contents = fs.readFileSync(allPath, 'utf8');
90
+ const contents = fs.readFileSync(allPath, 'utf8')
80
91
  expect(contents).toBe(`error: ${errorText}\n`)
81
92
  })
82
93
 
83
94
  it('it can have general file transporters', async () => {
84
95
  env.USE_LOG_FILES='true'
85
-
86
96
  const errorPath = 'logs/error.log'
87
- fs.unlinkSync(errorPath)
97
+ deleteLogFile(errorPath)
98
+
88
99
  expect(fs.existsSync(errorPath)).toBe(false)
89
100
 
90
101
  const logger = Logger()
@@ -93,8 +104,7 @@ describe('Logger', () => {
93
104
 
94
105
  await waitForFileToHaveContent(errorPath)
95
106
 
96
- const contents = fs.readFileSync(errorPath, 'utf8');
107
+ const contents = fs.readFileSync(errorPath, 'utf8')
97
108
  expect(contents).toBe(`error: ${errorText}\n`)
98
109
  })
99
-
100
- });
110
+ })
package/network/index.js CHANGED
@@ -1,11 +1,12 @@
1
- const axios = require('axios');
2
- require('dotenv').config();
1
+ const axios = require('axios')
2
+ const httpAdapter = require('axios/lib/adapters/http')
3
+ require('dotenv').config()
3
4
  /**
4
- * Add support for nock testing
5
+ * Add support for nock testing
5
6
  * see s://github.com/axios/axios/issues/305
6
7
  */
7
8
  if (process.env.NODE_ENV === 'test') {
8
- axios.defaults.adapter = require('axios/lib/adapters/http')
9
+ axios.defaults.adapter = httpAdapter
9
10
  }
10
11
 
11
12
  const HTTPMethods = [
@@ -15,12 +16,12 @@ const HTTPMethods = [
15
16
  'head',
16
17
  'put',
17
18
  'patch',
18
- 'options'
19
+ 'options',
19
20
  ]
20
21
 
21
22
  const defaultSettings = {
22
23
  timeout: 2500,
23
- headers: { 'X-AF-AUTH': 'ANYONE' }
24
+ headers: { 'X-AF-AUTH': 'ANYONE' },
24
25
  }
25
26
 
26
27
  module.exports = class Network {
@@ -38,23 +39,25 @@ module.exports = class Network {
38
39
  }
39
40
 
40
41
  createBaseUrl() {
41
- let settings = this.settings
42
+ const { settings } = this
42
43
  if (settings.serviceUrl) {
43
- settings.baseURL = settings.serviceUrl;
44
+ settings.baseURL = settings.serviceUrl
44
45
  } else if (settings.serviceName) {
45
46
  const envServiceHostName = `${settings.serviceName}_SERVICE_HOST`
46
- settings.baseURL = 'http://' + process.env[envServiceHostName]
47
- if(!settings.baseURL) {
47
+ settings.baseURL = `http://${process.env[envServiceHostName]}`
48
+ if (!settings.baseURL) {
48
49
  throw new Error(`Missing environment variable: ${envServiceHostName}`)
49
50
  }
50
51
  }
51
52
  }
52
-
53
+
53
54
  /**
54
55
  * Build class methods that wrap axios methods
55
56
  */
56
57
  buildClassHttpMethods() {
57
- this.axios = axios.create(this.settings);
58
- HTTPMethods.map((method) => this[method] = (...args) => this.axios[method](...args))
58
+ this.axios = axios.create(this.settings)
59
+ HTTPMethods.forEach((method) => {
60
+ this[method] = (...args) => this.axios[method](...args)
61
+ })
59
62
  }
60
63
  }
@@ -1,5 +1,5 @@
1
- const nock = require('nock');
2
- const Network = require('./index');
1
+ const nock = require('nock')
2
+ const Network = require('./index')
3
3
 
4
4
  nock('http://www.google.com')
5
5
  .get('/resource')
@@ -13,19 +13,19 @@ nock('https://www.apple.com')
13
13
  describe('Network', () => {
14
14
  it('Making requests by service name from ENV', async () => {
15
15
  process.env.TEST_SERVICE_HOST = 'www.google.com'
16
- n = new Network({ serviceName: 'TEST' });
17
- const response = await n.get('/resource');
18
- expect(response).toBeDefined();
19
- expect(response.data).toBeDefined();
20
- expect(response.data.one).toBe(1);
16
+ const n = new Network({ serviceName: 'TEST' })
17
+ const response = await n.get('/resource')
18
+ expect(response).toBeDefined()
19
+ expect(response.data).toBeDefined()
20
+ expect(response.data.one).toBe(1)
21
21
  })
22
22
 
23
23
  it('Making requests by service name from ENV', async () => {
24
24
  process.env.TEST_SERVICE_HOST = 'www.google.com'
25
- n = new Network({ serviceUrl: 'https://www.apple.com' });
26
- const response = await n.get('/resource');
27
- expect(response).toBeDefined();
28
- expect(response.data).toBeDefined();
29
- expect(response.data.two).toBe(2);
25
+ const n = new Network({ serviceUrl: 'https://www.apple.com' })
26
+ const response = await n.get('/resource')
27
+ expect(response).toBeDefined()
28
+ expect(response.data).toBeDefined()
29
+ expect(response.data.two).toBe(2)
30
30
  })
31
- });
31
+ })
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@autofleet/node-common",
3
- "version": "1.0.9",
3
+ "version": "1.1.1",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "coverage": "jest --coverage --forceExit --runInBand",
7
7
  "test": "jest --forceExit --runInBand",
8
- "test-auto": "jest --watch --runInBand"
8
+ "test-auto": "jest --watch --runInBand",
9
+ "linter": "./node_modules/.bin/eslint ."
9
10
  },
10
11
  "jest": {
11
12
  "setupTestFrameworkScriptFile": "jest-extended"
@@ -28,6 +29,9 @@
28
29
  "winston": "^3.0.0-rc5"
29
30
  },
30
31
  "devDependencies": {
32
+ "eslint": "^4.19.1",
33
+ "eslint-config-airbnb": "^16.1.0",
34
+ "eslint-plugin-import": "^2.11.0",
31
35
  "jest-extended": "^0.7.1",
32
36
  "nock": "^9.2.5"
33
37
  }