@autofleet/settings 1.4.5 → 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,10 +1,12 @@
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
11
  type SettingValue = string | boolean | number | any[] | any;
10
12
  interface Location {
@@ -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 = (0, logger_1.default)();
29
27
  const fiveMinutes = 60 * 5;
30
28
  const waitingToNetwork = 'waitingToNetwork';
31
29
  const findUrl = (serviceUrl) => serviceUrl
@@ -44,7 +42,7 @@ class SettingsManager {
44
42
  }
45
43
  return returnValue;
46
44
  }
47
- constructor({ serviceUrl, ttl = fiveMinutes, disableTestEnvCheck = false } = {}) {
45
+ constructor({ serviceUrl, ttl = fiveMinutes, disableTestEnvCheck = false, logger, } = {}) {
48
46
  const localServiceUrl = findUrl(serviceUrl);
49
47
  this.NEVER_DEFAULT_VALUE = SettingsManager.NEVER_DEFAULT_VALUE;
50
48
  this.ttl = ttl;
@@ -53,9 +51,12 @@ class SettingsManager {
53
51
  this.networkEvents = new events_1.default();
54
52
  this.network = new network_1.default({
55
53
  serviceUrl: localServiceUrl,
54
+ keepAlive: false,
56
55
  });
56
+ this.logger = logger;
57
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
  }
@@ -12,21 +12,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- /* eslint-disable import/no-extraneous-dependencies */
16
- const nock_1 = __importDefault(require("nock"));
17
15
  const index_1 = __importDefault(require("./index"));
16
+ /* eslint-disable import/no-extraneous-dependencies */
17
+ const nock = require('nock');
18
18
  process.env.NODE_ENV = 'node-common-test';
19
19
  const serviceUrl = 'localhost:8085';
20
20
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
21
  const mockSetting = (key, value, labels = undefined, response = 200) => {
22
- const n = (0, nock_1.default)(`http://${serviceUrl}`).get(`/api/v1/settings/get-setting/${key}`);
23
- if (labels) {
24
- n.query({ labels: labels.map((label) => JSON.stringify(label)) });
25
- }
22
+ const n = nock(`http://${serviceUrl}`)
23
+ .get(`/api/v1/settings/get-setting/${key}`)
24
+ .query(labels ? { labels: labels.map((label) => JSON.stringify(label)) } : undefined);
26
25
  return n.reply(response, { value });
27
26
  };
28
27
  const mockMultipleSettings = (keys, values, response = 200) => {
29
- const n = (0, nock_1.default)(`http://${serviceUrl}`)
28
+ const n = nock(`http://${serviceUrl}`)
30
29
  .post('/api/v1/settings/get-settings/_multiple', {
31
30
  keys,
32
31
  labels: [],
package/package.json CHANGED
@@ -1,41 +1,36 @@
1
1
  {
2
2
  "name": "@autofleet/settings",
3
- "version": "1.4.5",
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
- "peerDependencies": {
17
- "@autofleet/logger": "*"
18
- },
19
15
  "dependencies": {
20
- "@autofleet/network": "^1.4.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
20
  "moment": "^2.29.1",
24
21
  "node-cache": "^5.1.2"
25
22
  },
26
23
  "devDependencies": {
27
- "@autofleet/logger": "^4.0.6",
28
- "@types/jest": "^29.5.12",
29
- "@types/nock": "^10.0.3",
30
24
  "@typescript-eslint/eslint-plugin": "^4.8.1",
31
25
  "eslint": "^7.13.0",
32
26
  "eslint-config-airbnb-typescript": "^12.0.0",
33
27
  "eslint-plugin-import": "^2.22.1",
28
+ "ts-jest": "^29.0.3",
29
+ "ts-node": "^10.9.1",
30
+ "typescript": "^4.7.4",
34
31
  "jest": "^29.7.0",
35
- "nock": "^10.0.2",
36
- "ts-jest": "^29.2.3",
37
- "ts-node": "^8.6.2",
38
- "typescript": "^4.9.5"
32
+ "@types/jest": "^28.1.6",
33
+ "nock": "^10.0.2"
39
34
  },
40
35
  "author": "",
41
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,17 +1,17 @@
1
- /* eslint-disable import/no-extraneous-dependencies */
2
- import nock from 'nock';
3
1
  import Settings from './index';
4
2
 
3
+ /* eslint-disable import/no-extraneous-dependencies */
4
+ const nock = require('nock');
5
+
5
6
  process.env.NODE_ENV = 'node-common-test';
6
7
 
7
8
  const serviceUrl = 'localhost:8085';
8
9
 
9
10
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
11
  const mockSetting = (key: string, value: string | boolean | number | never, labels: any = undefined, response = 200) => {
11
- const n = nock(`http://${serviceUrl}`).get(`/api/v1/settings/get-setting/${key}`);
12
- if (labels) {
13
- n.query({ labels: labels.map((label: any) => JSON.stringify(label)) });
14
- }
12
+ const n = nock(`http://${serviceUrl}`)
13
+ .get(`/api/v1/settings/get-setting/${key}`)
14
+ .query(labels ? { labels: labels.map((label: any) => JSON.stringify(label)) } : undefined);
15
15
 
16
16
  return n.reply(response, { value });
17
17
  };
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
  }
package/tsconfig.json CHANGED
@@ -5,7 +5,6 @@
5
5
  "declaration": true,
6
6
  "outDir": "./dist",
7
7
  "strict": true,
8
- "esModuleInterop": true,
9
- "skipLibCheck": true,
8
+ "esModuleInterop": true
10
9
  }
11
10
  }