@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 +4 -1
- package/dist/index.js +7 -5
- package/dist/index.test.js +6 -7
- package/package.json +8 -13
- package/src/alltypes.d.ts +0 -1
- package/src/index.test.ts +6 -6
- package/src/index.ts +14 -5
- package/tsconfig.json +1 -2
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
|
}
|
package/dist/index.test.js
CHANGED
|
@@ -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 = (
|
|
23
|
-
|
|
24
|
-
|
|
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 = (
|
|
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": "
|
|
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/
|
|
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
|
-
"
|
|
36
|
-
"
|
|
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
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}`)
|
|
12
|
-
|
|
13
|
-
|
|
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
|
|
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({
|
|
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
|
|
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
|
|
208
|
+
this.logger?.error('Cant get setting from network', { err });
|
|
200
209
|
if (rejectOnFail) {
|
|
201
210
|
throw new CannotGetNetworkValueError();
|
|
202
211
|
}
|