@autofleet/settings 1.4.4 → 2.0.0-beta.0

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/dist/index.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  /// <reference types="node" />
2
+ import { LoggerInstanceManager } from '@autofleet/logger';
2
3
  import NodeCache from 'node-cache';
3
4
  import EventEmitter from 'events';
4
5
  interface SettingsClassOptions {
5
6
  serviceUrl?: string;
6
7
  ttl?: number;
7
8
  disableTestEnvCheck?: boolean;
9
+ logger?: LoggerInstanceManager;
8
10
  }
9
- declare type SettingValue = string | boolean | number | any[] | any;
11
+ type SettingValue = string | boolean | number | any[] | any;
10
12
  interface Location {
11
13
  lat: number;
12
14
  lng: number;
@@ -19,7 +21,7 @@ interface Label {
19
21
  time?: string | Date;
20
22
  location?: Location;
21
23
  }
22
- declare type LabelsArray = Label[];
24
+ type LabelsArray = Label[];
23
25
  interface GetSettingOption {
24
26
  timeout?: number;
25
27
  rejectOnFail?: boolean;
@@ -29,11 +31,12 @@ declare class SettingsManager {
29
31
  settingsCache: NodeCache;
30
32
  networkEvents: EventEmitter;
31
33
  network: any;
34
+ logger?: LoggerInstanceManager;
32
35
  NEVER_DEFAULT_VALUE: string;
33
36
  disableTestEnvCheck: boolean;
34
37
  static get NEVER_DEFAULT_VALUE(): string;
35
38
  static readNetworkValue(networkValue: SettingValue, defaultValue: SettingValue): any;
36
- constructor({ serviceUrl, ttl, disableTestEnvCheck }?: SettingsClassOptions);
39
+ constructor({ serviceUrl, ttl, disableTestEnvCheck, logger, }?: SettingsClassOptions);
37
40
  get(key: SettingValue, defaultValue?: any, labels?: LabelsArray, { timeout, rejectOnFail }?: GetSettingOption): Promise<any>;
38
41
  getMultiple(settingsToGet: {
39
42
  key: SettingValue;
package/dist/index.js CHANGED
@@ -17,7 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  // eslint-disable-next-line max-classes-per-file
18
18
  const dotenv_1 = __importDefault(require("dotenv"));
19
19
  const network_1 = __importDefault(require("@autofleet/network"));
20
- const logger_1 = __importDefault(require("@autofleet/logger"));
21
20
  const node_cache_1 = __importDefault(require("node-cache"));
22
21
  const events_1 = __importDefault(require("events"));
23
22
  const util_1 = __importDefault(require("util"));
@@ -25,7 +24,6 @@ const moment_1 = __importDefault(require("moment"));
25
24
  const h3_js_1 = __importDefault(require("h3-js"));
26
25
  dotenv_1.default.config();
27
26
  const nextTick = util_1.default.promisify(process.nextTick);
28
- const logger = logger_1.default();
29
27
  const fiveMinutes = 60 * 5;
30
28
  const waitingToNetwork = 'waitingToNetwork';
31
29
  const findUrl = (serviceUrl) => serviceUrl
@@ -34,17 +32,6 @@ const findUrl = (serviceUrl) => serviceUrl
34
32
  class CannotGetNetworkValueError extends Error {
35
33
  }
36
34
  class SettingsManager {
37
- constructor({ serviceUrl, ttl = fiveMinutes, disableTestEnvCheck = false } = {}) {
38
- const localServiceUrl = findUrl(serviceUrl);
39
- this.NEVER_DEFAULT_VALUE = SettingsManager.NEVER_DEFAULT_VALUE;
40
- this.ttl = ttl;
41
- this.disableTestEnvCheck = disableTestEnvCheck;
42
- this.settingsCache = new node_cache_1.default();
43
- this.networkEvents = new events_1.default();
44
- this.network = new network_1.default({
45
- serviceUrl: localServiceUrl,
46
- });
47
- }
48
35
  static get NEVER_DEFAULT_VALUE() {
49
36
  return 'NEVER_DEFAULT_VALUE';
50
37
  }
@@ -55,7 +42,21 @@ class SettingsManager {
55
42
  }
56
43
  return returnValue;
57
44
  }
45
+ constructor({ serviceUrl, ttl = fiveMinutes, disableTestEnvCheck = false, logger, } = {}) {
46
+ const localServiceUrl = findUrl(serviceUrl);
47
+ this.NEVER_DEFAULT_VALUE = SettingsManager.NEVER_DEFAULT_VALUE;
48
+ this.ttl = ttl;
49
+ this.disableTestEnvCheck = disableTestEnvCheck;
50
+ this.settingsCache = new node_cache_1.default();
51
+ this.networkEvents = new events_1.default();
52
+ this.network = new network_1.default({
53
+ serviceUrl: localServiceUrl,
54
+ keepAlive: false,
55
+ });
56
+ this.logger = logger;
57
+ }
58
58
  get(key, defaultValue, labels = [], { timeout = 5000, rejectOnFail = false } = {}) {
59
+ var _a;
59
60
  return __awaiter(this, void 0, void 0, function* () {
60
61
  if (typeof defaultValue === 'undefined') {
61
62
  throw new Error('Can\'t get a key without defaultValue');
@@ -91,7 +92,7 @@ class SettingsManager {
91
92
  networkValue = networkResponse.data.value;
92
93
  }
93
94
  catch (error) {
94
- logger.error('Cant get setting from network', { error, rejectOnFail, key });
95
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Cant get setting from network', { error, rejectOnFail, key });
95
96
  if (rejectOnFail) {
96
97
  const errorToThrow = new CannotGetNetworkValueError();
97
98
  this.networkEvents.emit(cacheKey, errorToThrow);
@@ -112,6 +113,7 @@ class SettingsManager {
112
113
  });
113
114
  }
114
115
  getMultiple(settingsToGet, labels, { timeout = 5000, rejectOnFail = false } = {}) {
116
+ var _a;
115
117
  return __awaiter(this, void 0, void 0, function* () {
116
118
  const settingsToReturn = new Map();
117
119
  const settingsToFetch = [];
@@ -144,7 +146,7 @@ class SettingsManager {
144
146
  });
145
147
  }
146
148
  catch (err) {
147
- logger.error('Cant get setting from network', { err });
149
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Cant get setting from network', { err });
148
150
  if (rejectOnFail) {
149
151
  throw new CannotGetNetworkValueError();
150
152
  }
@@ -178,7 +180,7 @@ class SettingsManager {
178
180
  getCacheKey(key, labels) {
179
181
  const newLabels = labels.map((l) => {
180
182
  if (l.time) {
181
- return Object.assign(Object.assign({}, l), { time: moment_1.default(l.time).startOf('hour').format(), day: moment_1.default(l.time).day() });
183
+ return Object.assign(Object.assign({}, l), { time: (0, moment_1.default)(l.time).startOf('hour').format(), day: (0, moment_1.default)(l.time).day() });
182
184
  }
183
185
  if (l.location && l.location.lat && l.location.lng) {
184
186
  const h3Index = h3_js_1.default.latLngToCell(l.location.lat, l.location.lng, 8);
@@ -13,6 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  const index_1 = __importDefault(require("./index"));
16
+ /* eslint-disable import/no-extraneous-dependencies */
16
17
  const nock = require('nock');
17
18
  process.env.NODE_ENV = 'node-common-test';
18
19
  const serviceUrl = 'localhost:8085';
@@ -157,7 +158,7 @@ describe('Settings', () => {
157
158
  expect(f())
158
159
  .rejects.toEqual(new Error('Cannot find value from network or cache, default value is set to never'));
159
160
  }));
160
- it('Throws an error if network error and no default value and success the next time', (done) => __awaiter(void 0, void 0, void 0, function* () {
161
+ it('Throws an error if network error and no default value and success the next time', (done) => {
161
162
  const settings = new index_1.default({
162
163
  serviceUrl: `http://${serviceUrl}/`,
163
164
  });
@@ -170,7 +171,7 @@ describe('Settings', () => {
170
171
  expect(m.isDone());
171
172
  done();
172
173
  }), 100);
173
- }));
174
+ });
174
175
  it('Values can be flushed', () => __awaiter(void 0, void 0, void 0, function* () {
175
176
  const m1 = mockSetting('key1', 'value1');
176
177
  const settings = new index_1.default({
package/package.json CHANGED
@@ -1,28 +1,23 @@
1
1
  {
2
2
  "name": "@autofleet/settings",
3
- "version": "1.4.4",
3
+ "version": "2.0.0-beta.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
7
  "start": "ts-node src/index.ts",
8
8
  "example": "ts-node src/example.ts",
9
9
  "build": "tsc",
10
- "prepublish": "npm run build",
11
10
  "linter": "./node_modules/.bin/eslint .",
12
11
  "test": "jest --forceExit",
13
12
  "coverage": "jest --coverage --forceExit --runInBand && rm -rf ./coverage",
14
13
  "dev": "nodemon"
15
14
  },
16
15
  "dependencies": {
17
- "@autofleet/logger": "^1.1.0",
18
- "@autofleet/network": "^1.4.2",
19
- "@types/jest": "^22.0.0",
20
- "bluebird": "^3.7.2",
16
+ "@autofleet/logger": "^4.0.6",
17
+ "@autofleet/network": "^1.5.1",
21
18
  "dotenv": "^8.2.0",
22
19
  "h3-js": "^4.1.0",
23
- "jest": "^22.4.4",
24
20
  "moment": "^2.29.1",
25
- "nock": "^10.0.2",
26
21
  "node-cache": "^5.1.2"
27
22
  },
28
23
  "devDependencies": {
@@ -30,9 +25,12 @@
30
25
  "eslint": "^7.13.0",
31
26
  "eslint-config-airbnb-typescript": "^12.0.0",
32
27
  "eslint-plugin-import": "^2.22.1",
33
- "ts-jest": "^25.4.0",
34
- "ts-node": "^8.6.2",
35
- "typescript": "^3.9.6"
28
+ "ts-jest": "^29.0.3",
29
+ "ts-node": "^10.9.1",
30
+ "typescript": "^4.7.4",
31
+ "jest": "^29.7.0",
32
+ "@types/jest": "^28.1.6",
33
+ "nock": "^10.0.2"
36
34
  },
37
35
  "author": "",
38
36
  "license": "ISC"
package/src/alltypes.d.ts CHANGED
@@ -1,2 +1 @@
1
1
  declare module '@autofleet/network';
2
- declare module '@autofleet/logger';
package/src/index.test.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import Settings from './index';
2
2
 
3
+ /* eslint-disable import/no-extraneous-dependencies */
3
4
  const nock = require('nock');
4
5
 
5
6
  process.env.NODE_ENV = 'node-common-test';
@@ -179,7 +180,7 @@ describe('Settings', () => {
179
180
  .rejects.toEqual(new Error('Cannot find value from network or cache, default value is set to never'));
180
181
  });
181
182
 
182
- it('Throws an error if network error and no default value and success the next time', async (done) => {
183
+ it('Throws an error if network error and no default value and success the next time', (done) => {
183
184
  const settings = new Settings({
184
185
  serviceUrl: `http://${serviceUrl}/`,
185
186
  });
package/src/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // eslint-disable-next-line max-classes-per-file
4
4
  import dotenv from 'dotenv';
5
5
  import Network from '@autofleet/network';
6
- import Logger from '@autofleet/logger';
6
+ import { LoggerInstanceManager } from '@autofleet/logger';
7
7
  import NodeCache from 'node-cache';
8
8
  import EventEmitter from 'events';
9
9
  import util from 'util';
@@ -13,7 +13,6 @@ import h3 from 'h3-js';
13
13
  dotenv.config();
14
14
 
15
15
  const nextTick = util.promisify(process.nextTick);
16
- const logger = Logger();
17
16
 
18
17
  const fiveMinutes = 60 * 5;
19
18
  const waitingToNetwork = 'waitingToNetwork';
@@ -26,6 +25,7 @@ interface SettingsClassOptions {
26
25
  serviceUrl?: string;
27
26
  ttl?: number;
28
27
  disableTestEnvCheck?: boolean;
28
+ logger?: LoggerInstanceManager;
29
29
  }
30
30
 
31
31
  type SettingValue = string | boolean | number | any[] | any;
@@ -62,6 +62,8 @@ class SettingsManager {
62
62
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
63
  network: any;
64
64
 
65
+ logger?: LoggerInstanceManager;
66
+
65
67
  NEVER_DEFAULT_VALUE: string;
66
68
 
67
69
  disableTestEnvCheck: boolean;
@@ -80,7 +82,12 @@ class SettingsManager {
80
82
  return returnValue;
81
83
  }
82
84
 
83
- constructor({ serviceUrl, ttl = fiveMinutes, disableTestEnvCheck = false }:SettingsClassOptions = {}) {
85
+ constructor({
86
+ serviceUrl,
87
+ ttl = fiveMinutes,
88
+ disableTestEnvCheck = false,
89
+ logger,
90
+ }: SettingsClassOptions = {}) {
84
91
  const localServiceUrl = findUrl(serviceUrl);
85
92
 
86
93
  this.NEVER_DEFAULT_VALUE = SettingsManager.NEVER_DEFAULT_VALUE;
@@ -90,7 +97,9 @@ class SettingsManager {
90
97
  this.networkEvents = new EventEmitter();
91
98
  this.network = new Network({
92
99
  serviceUrl: localServiceUrl,
100
+ keepAlive: false,
93
101
  });
102
+ this.logger = logger;
94
103
  }
95
104
 
96
105
  async get(
@@ -135,7 +144,7 @@ class SettingsManager {
135
144
  });
136
145
  networkValue = networkResponse.data.value;
137
146
  } catch (error) {
138
- logger.error('Cant get setting from network', { error, rejectOnFail, key });
147
+ this.logger?.error('Cant get setting from network', { error, rejectOnFail, key });
139
148
  if (rejectOnFail) {
140
149
  const errorToThrow = new CannotGetNetworkValueError();
141
150
  this.networkEvents.emit(cacheKey, errorToThrow);
@@ -196,7 +205,7 @@ class SettingsManager {
196
205
  settingsToReturn.set(key, values[index].value);
197
206
  });
198
207
  } catch (err) {
199
- logger.error('Cant get setting from network', { err });
208
+ this.logger?.error('Cant get setting from network', { err });
200
209
  if (rejectOnFail) {
201
210
  throw new CannotGetNetworkValueError();
202
211
  }