@mimik/configuration 5.0.13 → 6.0.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/README.md +1 -1
- package/eslint.config.js +63 -0
- package/index.js +194 -185
- package/lib/common.js +62 -62
- package/manual-test/test-config.js +47 -0
- package/manual-test/testEnv.js +21 -0
- package/package.json +15 -17
- package/.eslintrc +0 -43
package/README.md
CHANGED
package/eslint.config.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import importPlugin from 'eslint-plugin-import';
|
|
2
|
+
import js from '@eslint/js';
|
|
3
|
+
import processDoc from '@mimik/eslint-plugin-document-env';
|
|
4
|
+
import stylistic from '@stylistic/eslint-plugin';
|
|
5
|
+
|
|
6
|
+
const MAX_LENGTH_LINE = 180;
|
|
7
|
+
const MAX_FUNCTION_PARAMETERS = 6;
|
|
8
|
+
const MAX_LINES_IN_FILES = 600;
|
|
9
|
+
const MAX_LINES_IN_FUNCTION = 150;
|
|
10
|
+
const MAX_STATEMENTS_IN_FUNCTION = 45;
|
|
11
|
+
const MIN_KEYS_IN_OBJECT = 10;
|
|
12
|
+
const MAX_COMPLEXITY = 30;
|
|
13
|
+
|
|
14
|
+
export default [
|
|
15
|
+
{
|
|
16
|
+
ignores: ['mochawesome-report/**', 'node_modules/**', 'dist/**'],
|
|
17
|
+
},
|
|
18
|
+
importPlugin.flatConfigs.recommended,
|
|
19
|
+
stylistic.configs['recommended-flat'],
|
|
20
|
+
js.configs.all,
|
|
21
|
+
{
|
|
22
|
+
plugins: {
|
|
23
|
+
processDoc,
|
|
24
|
+
},
|
|
25
|
+
languageOptions: {
|
|
26
|
+
ecmaVersion: 2022,
|
|
27
|
+
globals: {
|
|
28
|
+
console: 'readonly',
|
|
29
|
+
describe: 'readonly',
|
|
30
|
+
it: 'readonly',
|
|
31
|
+
require: 'readonly',
|
|
32
|
+
},
|
|
33
|
+
sourceType: 'module',
|
|
34
|
+
},
|
|
35
|
+
rules: {
|
|
36
|
+
'@stylistic/brace-style': ['warn', 'stroustrup', { allowSingleLine: true }],
|
|
37
|
+
'@stylistic/line-comment-position': ['off'],
|
|
38
|
+
'@stylistic/semi': ['error', 'always'],
|
|
39
|
+
'capitalized-comments': ['off'],
|
|
40
|
+
'complexity': ['error', MAX_COMPLEXITY],
|
|
41
|
+
'curly': ['off'],
|
|
42
|
+
'id-length': ['error', { exceptions: ['x', 'y', 'z', 'i', 'j', 'k'] }],
|
|
43
|
+
'import/no-extraneous-dependencies': ['error', { devDependencies: true }],
|
|
44
|
+
'import/no-unresolved': ['error', { amd: true, caseSensitiveStrict: true, commonjs: true }],
|
|
45
|
+
'init-declarations': ['off'],
|
|
46
|
+
'linebreak-style': ['off'],
|
|
47
|
+
'max-len': ['warn', MAX_LENGTH_LINE, { ignoreComments: true }],
|
|
48
|
+
'max-lines': ['warn', { max: MAX_LINES_IN_FILES, skipComments: true }],
|
|
49
|
+
'max-lines-per-function': ['warn', { max: MAX_LINES_IN_FUNCTION, skipComments: true }],
|
|
50
|
+
'max-params': ['error', MAX_FUNCTION_PARAMETERS],
|
|
51
|
+
'max-statements': ['warn', MAX_STATEMENTS_IN_FUNCTION],
|
|
52
|
+
'no-confusing-arrow': ['off'], // arrow isnt confusing
|
|
53
|
+
'no-inline-comments': ['off'],
|
|
54
|
+
'no-process-env': ['error'],
|
|
55
|
+
'no-ternary': ['off'],
|
|
56
|
+
'no-undefined': ['off'],
|
|
57
|
+
'one-var': ['error', 'never'],
|
|
58
|
+
'processDoc/validate-document-env': ['error'],
|
|
59
|
+
'quotes': ['warn', 'single'],
|
|
60
|
+
'sort-keys': ['error', 'asc', { caseSensitive: true, minKeys: MIN_KEYS_IN_OBJECT, natural: false }],
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
];
|
package/index.js
CHANGED
|
@@ -1,107 +1,113 @@
|
|
|
1
1
|
/* eslint no-process-env: "off" */
|
|
2
|
-
|
|
3
|
-
const isNaN = require('lodash.isnan');
|
|
4
|
-
const isNil = require('lodash.isnil');
|
|
5
|
-
const isString = require('lodash.isstring');
|
|
6
|
-
const isUndefined = require('lodash.isundefined');
|
|
7
|
-
const split = require('lodash.split');
|
|
8
|
-
const trim = require('lodash.trim');
|
|
9
|
-
const fs = require('fs');
|
|
10
|
-
const ip = require('ip');
|
|
11
|
-
const uuid = require('uuid');
|
|
12
|
-
const querystring = require('querystring');
|
|
13
|
-
|
|
14
|
-
const logger = require('@mimik/sumologic-winston-logger');
|
|
15
|
-
const { getCorrelationId } = require('@mimik/request-helper');
|
|
16
|
-
const { userDefinitions } = require('@mimik/user-filters');
|
|
17
|
-
/**
|
|
18
|
-
* @module configuration
|
|
19
|
-
* @example
|
|
20
|
-
* const config = require('@mimik/configuration');
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
const {
|
|
24
|
-
SUMOLOGIC,
|
|
25
|
-
AWS_S3,
|
|
2
|
+
import {
|
|
26
3
|
ALL,
|
|
27
|
-
|
|
28
|
-
SET_OFF,
|
|
29
|
-
NO_PUBLIC_PROVIDER,
|
|
30
|
-
NO_GENERIC,
|
|
31
|
-
ENV_VARIABLE,
|
|
32
|
-
REDIS_BASE_URL,
|
|
33
|
-
MONGO_BASE_URL,
|
|
34
|
-
MONGO_BASE_URL_SRV,
|
|
35
|
-
SWAGGER_EXT,
|
|
36
|
-
SWAGGER_SEP,
|
|
4
|
+
AWS_S3,
|
|
37
5
|
CUSTOMER_CODE_SEP,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
6
|
+
DEFAULT_ADMIN_EXTERNAL_ID,
|
|
7
|
+
DEFAULT_AWS_LOCAL_PROPERTIES,
|
|
8
|
+
DEFAULT_AWS_REGION,
|
|
9
|
+
DEFAULT_BITBUCKET_PASSWORD,
|
|
10
|
+
DEFAULT_BITBUCKET_USERNAME,
|
|
11
|
+
DEFAULT_CACHE_API_ID_TTL,
|
|
12
|
+
DEFAULT_CACHE_API_OPTION_TTL,
|
|
44
13
|
DEFAULT_CACHE_CONNECTION_TIMEOUT,
|
|
14
|
+
DEFAULT_CACHE_IP,
|
|
45
15
|
DEFAULT_CACHE_RECONNECTION_OFFSET,
|
|
46
|
-
DEFAULT_CACHE_VALIDATION_CHECK,
|
|
47
16
|
DEFAULT_CACHE_REQUEST_TTL,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
DEFAULT_REDIS_SOCKET_KEEPALIVE,
|
|
55
|
-
DEFAULT_REDIS_DISABLE_OFFLINE_QUEUE,
|
|
56
|
-
DEFAULT_AWS_REGION,
|
|
57
|
-
DEFAULT_AWS_LOCAL_PROPERTIES,
|
|
58
|
-
DEFAULT_DYNAMODB_LOCAL_URL,
|
|
59
|
-
DEFAULT_DYNAMO_THROUGHPUT_READ,
|
|
60
|
-
DEFAULT_DYNAMO_THROUGHPUT_WRITE,
|
|
61
|
-
DEFAULT_DYNAMO_THROUGHPUT,
|
|
62
|
-
DEFAULT_MONGO_MAX_POOL_SIZE,
|
|
63
|
-
DEFAULT_MONGO_MIN_POOL_SIZE,
|
|
64
|
-
DEFAULT_MONGO_MAX_IDLE_TIME,
|
|
65
|
-
DEFAULT_MONGO_SOCKET_TIMEOUT,
|
|
66
|
-
DEFAULT_MONGO_FAMILY,
|
|
67
|
-
DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
|
|
68
|
-
DEFAULT_MONGO_HEARTBEAT_FREQUENCY,
|
|
17
|
+
DEFAULT_CACHE_SET,
|
|
18
|
+
DEFAULT_CACHE_VALIDATION_CHECK,
|
|
19
|
+
DEFAULT_CLOUD_PROVIDER,
|
|
20
|
+
DEFAULT_CLUSTER_MANAGEMENT,
|
|
21
|
+
DEFAULT_CUSTOMER_CODE,
|
|
22
|
+
DEFAULT_DATABASE_CONNECTION_TIMEOUT,
|
|
69
23
|
DEFAULT_DATABASE_IP,
|
|
70
|
-
DEFAULT_DATABASE_USER,
|
|
71
24
|
DEFAULT_DATABASE_PASSWORD,
|
|
72
|
-
DEFAULT_DATABASE_CONNECTION_TIMEOUT,
|
|
73
25
|
DEFAULT_DATABASE_RECONNECTION_OFFSET,
|
|
26
|
+
DEFAULT_DATABASE_USER,
|
|
74
27
|
DEFAULT_DATABASE_VALIDATION_CHECK,
|
|
28
|
+
DEFAULT_DYNAMODB_LOCAL_URL,
|
|
29
|
+
DEFAULT_DYNAMO_THROUGHPUT,
|
|
30
|
+
DEFAULT_DYNAMO_THROUGHPUT_READ,
|
|
31
|
+
DEFAULT_DYNAMO_THROUGHPUT_WRITE,
|
|
75
32
|
DEFAULT_ENCRYPTION_SET,
|
|
33
|
+
DEFAULT_ENV,
|
|
34
|
+
DEFAULT_EXIT_DELAY,
|
|
35
|
+
DEFAULT_FILTER_FILE,
|
|
36
|
+
DEFAULT_INTERCEPT_ERROR,
|
|
76
37
|
DEFAULT_KMS_PROVIDER,
|
|
38
|
+
DEFAULT_LOCATION_PROVIDER,
|
|
77
39
|
DEFAULT_LOG_LEVEL,
|
|
78
|
-
|
|
79
|
-
|
|
40
|
+
DEFAULT_MONGO_FAMILY,
|
|
41
|
+
DEFAULT_MONGO_HEARTBEAT_FREQUENCY,
|
|
42
|
+
DEFAULT_MONGO_MAX_IDLE_TIME,
|
|
43
|
+
DEFAULT_MONGO_MAX_POOL_SIZE,
|
|
44
|
+
DEFAULT_MONGO_MIN_POOL_SIZE,
|
|
45
|
+
DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
|
|
46
|
+
DEFAULT_MONGO_SOCKET_TIMEOUT,
|
|
80
47
|
DEFAULT_NO_STACK,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
DEFAULT_CACHE_SET,
|
|
88
|
-
DEFAULT_TOPIC_SET,
|
|
89
|
-
DEFAULT_REGISTRATION_SET,
|
|
90
|
-
DEFAULT_REGISTRATION_RETRY,
|
|
48
|
+
DEFAULT_REDIS_DISABLE_OFFLINE_QUEUE,
|
|
49
|
+
DEFAULT_REDIS_RECONNECT_INTERVAL,
|
|
50
|
+
DEFAULT_REDIS_RECONNECT_TRIES,
|
|
51
|
+
DEFAULT_REDIS_REQUEST_MAX_MEMORY,
|
|
52
|
+
DEFAULT_REDIS_REQUEST_MAX_MEMORY_POLICY,
|
|
53
|
+
DEFAULT_REDIS_SOCKET_KEEPALIVE,
|
|
91
54
|
DEFAULT_REGISTRATION_AFTER_POSTOPS_SET,
|
|
55
|
+
DEFAULT_REGISTRATION_RETRY,
|
|
56
|
+
DEFAULT_REGISTRATION_SET,
|
|
92
57
|
DEFAULT_REQUEST_TIMEOUT,
|
|
93
|
-
|
|
58
|
+
DEFAULT_S3_AWS_MAX_EVENTS,
|
|
59
|
+
DEFAULT_S3_AWS_MAX_SIZE,
|
|
60
|
+
DEFAULT_S3_AWS_TIMEOUT,
|
|
94
61
|
DEFAULT_SERVER_PUBLIC_DOMAIN_NAME,
|
|
95
|
-
|
|
62
|
+
DEFAULT_SERVER_PUBLIC_PROTOCOL,
|
|
63
|
+
DEFAULT_SERVER_SECURITY_SET,
|
|
96
64
|
DEFAULT_SWAGGER_DIR,
|
|
97
65
|
DEFAULT_SWAGGER_FILE_PROVIDER,
|
|
66
|
+
DEFAULT_TOPIC_SET,
|
|
67
|
+
DEFAULT_USER_DEFINITIONS_FILE,
|
|
68
|
+
ENV_VARIABLE,
|
|
69
|
+
MONGO_BASE_URL,
|
|
70
|
+
MONGO_BASE_URL_SRV,
|
|
71
|
+
NO,
|
|
72
|
+
NO_GENERIC,
|
|
73
|
+
NO_PUBLIC_PROVIDER,
|
|
74
|
+
PRODUCTIONS,
|
|
75
|
+
REDIS_BASE_URL,
|
|
76
|
+
SET_OFF,
|
|
77
|
+
SET_ON,
|
|
78
|
+
SUMOLOGIC,
|
|
98
79
|
SUPPORTED_SWAGGER_FILE_PROVIDERS,
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
DEFAULT_BITBUCKET_PASSWORD,
|
|
80
|
+
SWAGGER_EXT,
|
|
81
|
+
SWAGGER_SEP,
|
|
102
82
|
YES,
|
|
103
|
-
|
|
104
|
-
|
|
83
|
+
} from './lib/common.js';
|
|
84
|
+
import fs from 'fs';
|
|
85
|
+
import { getCorrelationId } from '@mimik/request-helper';
|
|
86
|
+
import includes from 'lodash.includes';
|
|
87
|
+
import ip from 'ip';
|
|
88
|
+
import isNaN from 'lodash.isnan';
|
|
89
|
+
import isNil from 'lodash.isnil';
|
|
90
|
+
import isString from 'lodash.isstring';
|
|
91
|
+
import isUndefined from 'lodash.isundefined';
|
|
92
|
+
import logger from '@mimik/sumologic-winston-logger';
|
|
93
|
+
import process from 'process';
|
|
94
|
+
import querystring from 'querystring';
|
|
95
|
+
import split from 'lodash.split';
|
|
96
|
+
import trim from 'lodash.trim';
|
|
97
|
+
import { userDefinitions } from '@mimik/user-filters';
|
|
98
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
99
|
+
|
|
100
|
+
const DECIMAL = 10;
|
|
101
|
+
const AT_LEAST_ONE = 0;
|
|
102
|
+
const SOME_KEYS = 0;
|
|
103
|
+
const SOME_ERRORS = 0;
|
|
104
|
+
const NO_KEY = 0;
|
|
105
|
+
const ISSUE_EXIT = 1;
|
|
106
|
+
/**
|
|
107
|
+
* @module configuration
|
|
108
|
+
* @example
|
|
109
|
+
* import config from '@mimik/configuration';
|
|
110
|
+
*/
|
|
105
111
|
|
|
106
112
|
let display = true;
|
|
107
113
|
const locParams = [NO_PUBLIC_PROVIDER, ENV_VARIABLE];
|
|
@@ -112,8 +118,8 @@ const setupRedis = () => {
|
|
|
112
118
|
const domain = process.env.CACHE_IP || DEFAULT_CACHE_IP;
|
|
113
119
|
const username = process.env.CACHE_USER;
|
|
114
120
|
const password = process.env.CACHE_PASSWORD;
|
|
115
|
-
const reconnectTries = parseInt(process.env.REDIS_RECONNECT_TRIES,
|
|
116
|
-
const reconnectInterval = parseInt(process.env.REDIS_RECONNECT_INTERVAL,
|
|
121
|
+
const reconnectTries = parseInt(process.env.REDIS_RECONNECT_TRIES, DECIMAL) || DEFAULT_REDIS_RECONNECT_TRIES;
|
|
122
|
+
const reconnectInterval = parseInt(process.env.REDIS_RECONNECT_INTERVAL, DECIMAL) || DEFAULT_REDIS_RECONNECT_INTERVAL;
|
|
117
123
|
let url = REDIS_BASE_URL;
|
|
118
124
|
let noAuthUrl = url;
|
|
119
125
|
if (username && password) url += `${username}:${password}@`;
|
|
@@ -127,26 +133,25 @@ const setupRedis = () => {
|
|
|
127
133
|
};
|
|
128
134
|
|
|
129
135
|
return {
|
|
136
|
+
api: {
|
|
137
|
+
idTTL: parseInt(process.env.CACHE_API_ID_TTL, DECIMAL) || DEFAULT_CACHE_API_ID_TTL,
|
|
138
|
+
optionTTL: parseInt(process.env.CACHE_API_OPTION_TTL, DECIMAL) || DEFAULT_CACHE_API_OPTION_TTL,
|
|
139
|
+
},
|
|
140
|
+
cluster: clusterConfig,
|
|
141
|
+
connectTimeout: parseInt(process.env.CACHE_CONNECTION_TIMEOUT, DECIMAL) || DEFAULT_CACHE_CONNECTION_TIMEOUT,
|
|
130
142
|
domain,
|
|
131
|
-
username,
|
|
132
|
-
password,
|
|
133
|
-
connectTimeout: parseInt(process.env.CACHE_CONNECTION_TIMEOUT, 10) || DEFAULT_CACHE_CONNECTION_TIMEOUT,
|
|
134
|
-
validationCheck: parseInt(process.env.CACHE_VALIDATION_CHECK, 10) || DEFAULT_CACHE_VALIDATION_CHECK,
|
|
135
|
-
reconnectOffset: parseInt(process.env.CACHE_RECONNECTION_OFFSET, 10) || DEFAULT_CACHE_RECONNECTION_OFFSET,
|
|
136
|
-
url,
|
|
137
143
|
noAuthUrl,
|
|
138
|
-
cluster: clusterConfig,
|
|
139
144
|
options: {
|
|
140
145
|
socket: {
|
|
141
146
|
keepAlive: process.env.REDIS_SOCKET_KEEPALIVE || DEFAULT_REDIS_SOCKET_KEEPALIVE,
|
|
142
|
-
reconnectStrategy: function
|
|
143
|
-
if (opts.timesConnected >
|
|
147
|
+
reconnectStrategy: function reconnectStrategy(opts) {
|
|
148
|
+
if (opts.timesConnected > AT_LEAST_ONE && opts.attempt < reconnectTries) {
|
|
144
149
|
return reconnectInterval;
|
|
145
150
|
}
|
|
146
151
|
if (opts.error && opts.error.code === 'ECONNREFUSED') {
|
|
147
152
|
if (display) {
|
|
148
153
|
logger.error('Fatal error: Could not connect to cache', { type: 'redis', error: opts.error.code }, `redis-cache-start@0/${new Date().toISOString()}`);
|
|
149
|
-
logger.flushAndExit(
|
|
154
|
+
logger.flushAndExit(ISSUE_EXIT);
|
|
150
155
|
}
|
|
151
156
|
display = false;
|
|
152
157
|
}
|
|
@@ -157,34 +162,35 @@ const setupRedis = () => {
|
|
|
157
162
|
maxMemory: process.env.REDIS_REQUEST_MAX_MEMORY || DEFAULT_REDIS_REQUEST_MAX_MEMORY,
|
|
158
163
|
maxMemoryPolicy: process.env.REDIS_REQUEST_MAX_MEMORY_POLICY || DEFAULT_REDIS_REQUEST_MAX_MEMORY_POLICY,
|
|
159
164
|
},
|
|
165
|
+
password,
|
|
166
|
+
reconnectOffset: parseInt(process.env.CACHE_RECONNECTION_OFFSET, DECIMAL) || DEFAULT_CACHE_RECONNECTION_OFFSET,
|
|
167
|
+
request: {
|
|
168
|
+
TTL: parseInt(process.env.CACHE_REQUEST_TTL, DECIMAL) || DEFAULT_CACHE_REQUEST_TTL,
|
|
169
|
+
},
|
|
160
170
|
retryStrategyOptions: {
|
|
161
171
|
reconnectTries,
|
|
162
172
|
reconnectInterval,
|
|
163
173
|
},
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
api: {
|
|
168
|
-
idTTL: parseInt(process.env.CACHE_API_ID_TTL, 10) || DEFAULT_CACHE_API_ID_TTL,
|
|
169
|
-
optionTTL: parseInt(process.env.CACHE_API_OPTION_TTL, 10) || DEFAULT_CACHE_API_OPTION_TTL,
|
|
170
|
-
},
|
|
174
|
+
url,
|
|
175
|
+
username,
|
|
176
|
+
validationCheck: parseInt(process.env.CACHE_VALIDATION_CHECK, DECIMAL) || DEFAULT_CACHE_VALIDATION_CHECK,
|
|
171
177
|
};
|
|
172
178
|
};
|
|
173
179
|
|
|
174
180
|
const setupDynamo = (dbOpts) => {
|
|
175
181
|
const dbConfig = {
|
|
176
|
-
connectTimeout: parseInt(process.env.DATABASE_CONNECTION_TIMEOUT,
|
|
177
|
-
validationCheck: parseInt(process.env.DATABASE_VALIDATION_CHECK,
|
|
178
|
-
reconnectOffset: parseInt(process.env.DATABASE_RECONNECTION_OFFSET,
|
|
182
|
+
connectTimeout: parseInt(process.env.DATABASE_CONNECTION_TIMEOUT, DECIMAL) || DEFAULT_DATABASE_CONNECTION_TIMEOUT,
|
|
183
|
+
validationCheck: parseInt(process.env.DATABASE_VALIDATION_CHECK, DECIMAL) || DEFAULT_DATABASE_VALIDATION_CHECK,
|
|
184
|
+
reconnectOffset: parseInt(process.env.DATABASE_RECONNECTION_OFFSET, DECIMAL) || DEFAULT_DATABASE_RECONNECTION_OFFSET,
|
|
179
185
|
region: process.env.DYNAMODB_AWS_REGION || DEFAULT_AWS_REGION,
|
|
180
186
|
url: process.env.DYNAMODB_LOCAL_URL || DEFAULT_DYNAMODB_LOCAL_URL,
|
|
181
187
|
throughput: {
|
|
182
|
-
read: parseInt(process.env.DYNAMO_THROUGHPUT_READ,
|
|
183
|
-
write: parseInt(process.env.DYNAMO_THROUGHPUT_WRITE,
|
|
188
|
+
read: parseInt(process.env.DYNAMO_THROUGHPUT_READ, DECIMAL) || DEFAULT_DYNAMO_THROUGHPUT_READ,
|
|
189
|
+
write: parseInt(process.env.DYNAMO_THROUGHPUT_WRITE, DECIMAL) || DEFAULT_DYNAMO_THROUGHPUT_WRITE,
|
|
184
190
|
},
|
|
185
191
|
schemaThroughput: {
|
|
186
|
-
read: parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT_READ,
|
|
187
|
-
write: parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT_WRITE,
|
|
192
|
+
read: parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT_READ, DECIMAL) || DEFAULT_DYNAMO_THROUGHPUT_READ,
|
|
193
|
+
write: parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT_WRITE, DECIMAL) || DEFAULT_DYNAMO_THROUGHPUT_WRITE,
|
|
188
194
|
},
|
|
189
195
|
tableName: dbOpts.table,
|
|
190
196
|
};
|
|
@@ -196,7 +202,7 @@ const setupDynamo = (dbOpts) => {
|
|
|
196
202
|
delete dbConfig.throughput;
|
|
197
203
|
}
|
|
198
204
|
else if (!isNil(process.env.DYNAMO_SCHEMA_THROUGHPUT)) {
|
|
199
|
-
const throughput = parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT,
|
|
205
|
+
const throughput = parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT, DECIMAL);
|
|
200
206
|
|
|
201
207
|
if (isNil(throughput) || isNaN(throughput)) dbConfig.schemaThroughput = DEFAULT_DYNAMO_THROUGHPUT;
|
|
202
208
|
else dbConfig.schemaThroughput = throughput;
|
|
@@ -208,9 +214,9 @@ const setupMongo = (dbOpts) => {
|
|
|
208
214
|
const processStringOptions = () => {
|
|
209
215
|
// default string variables
|
|
210
216
|
const stringOptions = {
|
|
211
|
-
maxPoolSize: parseInt(process.env.MONGO_MAX_POOL_SIZE,
|
|
212
|
-
minPoolSize: parseInt(process.env.MONGO_MIN_POOL_SIZE,
|
|
213
|
-
maxIdleTimeMS: parseInt(process.env.MONGO_MAX_IDLE_TIME,
|
|
217
|
+
maxPoolSize: parseInt(process.env.MONGO_MAX_POOL_SIZE, DECIMAL) || DEFAULT_MONGO_MAX_POOL_SIZE,
|
|
218
|
+
minPoolSize: parseInt(process.env.MONGO_MIN_POOL_SIZE, DECIMAL) || DEFAULT_MONGO_MIN_POOL_SIZE,
|
|
219
|
+
maxIdleTimeMS: parseInt(process.env.MONGO_MAX_IDLE_TIME, DECIMAL) || DEFAULT_MONGO_MAX_IDLE_TIME,
|
|
214
220
|
};
|
|
215
221
|
// string variables without default
|
|
216
222
|
if (process.env.MONGO_SSL === YES) stringOptions.ssl = true; // default value of mongo driver is false
|
|
@@ -219,10 +225,11 @@ const setupMongo = (dbOpts) => {
|
|
|
219
225
|
// if (process.env.MONGO_SSL_CA) stringOptions.sslCA = process.env.MONGO_SSL_CA; // commented out for now as we're not using a pem file at the moment
|
|
220
226
|
if (process.env.MONGO_REPLICAT_SET) stringOptions.replicaSet = process.env.MONGO_REPLICAT_SET;
|
|
221
227
|
if (process.env.MONGO_AUTH_DATABASE) stringOptions.authSource = process.env.MONGO_AUTH_DATABASE;
|
|
228
|
+
// eslint-disable-next-line id-length
|
|
222
229
|
if (process.env.MONGO_WRITE_CONCERN) stringOptions.w = process.env.MONGO_WRITE_CONCERN;
|
|
223
230
|
if (process.env.MONGO_RETRY_WRITES) stringOptions.retryWrites = process.env.MONGO_RETRY_WRITES;
|
|
224
|
-
if (process.env.MONGO_WAIT_QUEUE_MULTIPLE) stringOptions.waitQueueMultiple = parseInt(process.env.MONGO_WAIT_QUEUE_MULTIPLE,
|
|
225
|
-
if (process.env.MONGO_WAIT_QUEUE_TIMEOUT) stringOptions.waitQueueTimeoutMS = parseInt(process.env.MONGO_WAIT_QUEUE_TIMEOUT,
|
|
231
|
+
if (process.env.MONGO_WAIT_QUEUE_MULTIPLE) stringOptions.waitQueueMultiple = parseInt(process.env.MONGO_WAIT_QUEUE_MULTIPLE, DECIMAL);
|
|
232
|
+
if (process.env.MONGO_WAIT_QUEUE_TIMEOUT) stringOptions.waitQueueTimeoutMS = parseInt(process.env.MONGO_WAIT_QUEUE_TIMEOUT, DECIMAL); // in ms
|
|
226
233
|
return stringOptions ? querystring.stringify(stringOptions) : null;
|
|
227
234
|
};
|
|
228
235
|
const database = process.env.DATABASE_NAME;
|
|
@@ -244,24 +251,24 @@ const setupMongo = (dbOpts) => {
|
|
|
244
251
|
noAuthUrl = `${noAuthUrl}?${qs}`;
|
|
245
252
|
}
|
|
246
253
|
return {
|
|
247
|
-
|
|
254
|
+
connectTimeout: parseInt(process.env.DATABASE_CONNECTION_TIMEOUT, DECIMAL) || DEFAULT_DATABASE_CONNECTION_TIMEOUT,
|
|
248
255
|
database,
|
|
249
|
-
|
|
256
|
+
domain,
|
|
257
|
+
noAuthUrl,
|
|
258
|
+
options: {
|
|
259
|
+
family: parseInt(process.env.MONGO_FAMILY, DECIMAL) || DEFAULT_MONGO_FAMILY,
|
|
260
|
+
socketTimeoutMS: parseInt(process.env.MONGO_SOCKET_TIMEOUT, DECIMAL) || DEFAULT_MONGO_SOCKET_TIMEOUT,
|
|
261
|
+
serverSelectionTimeoutMS: parseInt(process.env.MONGO_SERVER_SELECTION_TIMEOUT, DECIMAL) || DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
|
|
262
|
+
heartbeatFrequencyMS: parseInt(process.env.MONGO_HEARTBEAT_FREQUENCY, DECIMAL) || DEFAULT_MONGO_HEARTBEAT_FREQUENCY,
|
|
263
|
+
},
|
|
250
264
|
password,
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
reconnectOffset: parseInt(process.env.DATABASE_RECONNECTION_OFFSET, 10) || DEFAULT_DATABASE_RECONNECTION_OFFSET,
|
|
254
|
-
replicat: !!process.env.MONGO_REPLICAT_SET,
|
|
265
|
+
reconnectOffset: parseInt(process.env.DATABASE_RECONNECTION_OFFSET, DECIMAL) || DEFAULT_DATABASE_RECONNECTION_OFFSET,
|
|
266
|
+
replicat: Boolean(process.env.MONGO_REPLICAT_SET),
|
|
255
267
|
stringOptions: qs,
|
|
256
268
|
table: dbOpts.table,
|
|
257
269
|
url,
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
family: parseInt(process.env.MONGO_FAMILY, 10) || DEFAULT_MONGO_FAMILY,
|
|
261
|
-
socketTimeoutMS: parseInt(process.env.MONGO_SOCKET_TIMEOUT, 10) || DEFAULT_MONGO_SOCKET_TIMEOUT,
|
|
262
|
-
serverSelectionTimeoutMS: parseInt(process.env.MONGO_SERVER_SELECTION_TIMEOUT, 10) || DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
|
|
263
|
-
heartbeatFrequencyMS: parseInt(process.env.MONGO_HEARTBEAT_FREQUENCY, 10) || DEFAULT_MONGO_HEARTBEAT_FREQUENCY,
|
|
264
|
-
},
|
|
270
|
+
user,
|
|
271
|
+
validationCheck: parseInt(process.env.DATABASE_VALIDATION_CHECK, DECIMAL) || DEFAULT_DATABASE_VALIDATION_CHECK,
|
|
265
272
|
};
|
|
266
273
|
};
|
|
267
274
|
|
|
@@ -284,7 +291,7 @@ const setupLog = () => {
|
|
|
284
291
|
log: process.env.LOG_LEVEL || DEFAULT_LOG_LEVEL,
|
|
285
292
|
},
|
|
286
293
|
filterFile: process.env.FILTER_FILE || DEFAULT_FILTER_FILE,
|
|
287
|
-
exitDelay: parseInt(process.env.EXIT_DELAY,
|
|
294
|
+
exitDelay: parseInt(process.env.EXIT_DELAY, DECIMAL) || DEFAULT_EXIT_DELAY,
|
|
288
295
|
noStack: process.env.NO_STACK || DEFAULT_NO_STACK,
|
|
289
296
|
};
|
|
290
297
|
|
|
@@ -298,9 +305,9 @@ const setupLog = () => {
|
|
|
298
305
|
logInfo[AWS_S3] = {
|
|
299
306
|
region: process.env.S3_AWS_REGION,
|
|
300
307
|
bucketname: process.env.S3_AWS_BUCKET_NAME,
|
|
301
|
-
timeout: parseInt(process.env.S3_AWS_TIMEOUT,
|
|
302
|
-
maxSize: parseInt(process.env.S3_AWS_MAX_SIZE,
|
|
303
|
-
maxEvents: parseInt(process.env.S3_AWS_MAX_EVENTS,
|
|
308
|
+
timeout: parseInt(process.env.S3_AWS_TIMEOUT, DECIMAL) || DEFAULT_S3_AWS_TIMEOUT,
|
|
309
|
+
maxSize: parseInt(process.env.S3_AWS_MAX_SIZE, DECIMAL) || DEFAULT_S3_AWS_MAX_SIZE,
|
|
310
|
+
maxEvents: parseInt(process.env.S3_AWS_MAX_EVENTS, DECIMAL) || DEFAULT_S3_AWS_MAX_EVENTS,
|
|
304
311
|
};
|
|
305
312
|
if (!isNil(process.env.S3_AWS_ACCESS_KEY_ID)) logInfo[AWS_S3].accessKeyId = process.env.S3_AWS_ACCESS_KEY_ID;
|
|
306
313
|
if (!isNil(process.env.S3_AWS_SECRET_ACCESS_KEY)) logInfo[AWS_S3].secretAccessKey = process.env.S3_AWS_SECRET_ACCESS_KEY;
|
|
@@ -341,7 +348,7 @@ const setupEncryption = (encryptionOpts) => {
|
|
|
341
348
|
}
|
|
342
349
|
else encryptionConfig.localMasterKey = process.env.LOCAL_MASTER_KEY;
|
|
343
350
|
|
|
344
|
-
if (Object.keys(encryptionOpts.keys).length >
|
|
351
|
+
if (Object.keys(encryptionOpts.keys).length > SOME_KEYS) encryptionConfig.keys = encryptionOpts.keys;
|
|
345
352
|
|
|
346
353
|
return encryptionConfig;
|
|
347
354
|
};
|
|
@@ -350,7 +357,9 @@ const setupUserDefinitions = (definitions) => {
|
|
|
350
357
|
const userDefinitionsFile = definitions.file;
|
|
351
358
|
let customDefinitions = {};
|
|
352
359
|
if (userDefinitionsFile && userDefinitionsFile !== DEFAULT_USER_DEFINITIONS_FILE) {
|
|
353
|
-
try {
|
|
360
|
+
try {
|
|
361
|
+
customDefinitions = JSON.parse(fs.readFileSync(userDefinitionsFile).toString());
|
|
362
|
+
}
|
|
354
363
|
catch (err) {
|
|
355
364
|
throw new Error(`Invalid file for user definitions: ${userDefinitionsFile}, error: ${err.message}`);
|
|
356
365
|
}
|
|
@@ -365,20 +374,20 @@ const setupUserDefinitions = (definitions) => {
|
|
|
365
374
|
const checkConfig = (config) => {
|
|
366
375
|
const errors = [];
|
|
367
376
|
|
|
368
|
-
|
|
377
|
+
const traverseNodeSync = (node, path) => {
|
|
369
378
|
Object.keys(node).forEach((prop) => {
|
|
370
379
|
if (typeof node[prop] === 'object' && node[prop]) {
|
|
371
380
|
traverseNodeSync(node[prop], `${path}.${prop}`);
|
|
372
381
|
}
|
|
373
382
|
else if (isUndefined(node[prop])) errors.push({ reason: 'missing', value: `${path}.${prop}` });
|
|
374
383
|
});
|
|
375
|
-
}
|
|
384
|
+
};
|
|
376
385
|
|
|
377
386
|
traverseNodeSync(config, 'configuration');
|
|
378
387
|
// dependency errors
|
|
379
|
-
if (!isMSTSet && config.security.apiKeys.length ===
|
|
388
|
+
if (!isMSTSet && config.security.apiKeys.length === NO_KEY) errors.push({ reason: 'invalid', value: 'config.security.apiKeys', cause: 'isMSTSet' });
|
|
380
389
|
|
|
381
|
-
if (errors.length >
|
|
390
|
+
if (errors.length > SOME_ERRORS) {
|
|
382
391
|
const error = new Error('Errors in configuration');
|
|
383
392
|
|
|
384
393
|
logger.error(error, { errors }, correlationIdStart);
|
|
@@ -406,30 +415,35 @@ const isProd = () => {
|
|
|
406
415
|
|
|
407
416
|
process.env.SERVER_LOCAL_IPV4 = ip.address();
|
|
408
417
|
process.env.AWS_LOCAL_PROPERTIES = DEFAULT_AWS_LOCAL_PROPERTIES;
|
|
409
|
-
process.env.CONSOLE_LEVEL
|
|
410
|
-
process.env.LOG_LEVEL
|
|
411
|
-
process.env.SERVER_ID
|
|
418
|
+
process.env.CONSOLE_LEVEL ||= DEFAULT_LOG_LEVEL;
|
|
419
|
+
process.env.LOG_LEVEL ||= DEFAULT_LOG_LEVEL;
|
|
420
|
+
process.env.SERVER_ID ||= uuidv4();
|
|
412
421
|
|
|
413
422
|
const configuration = {
|
|
414
|
-
|
|
415
|
-
|
|
423
|
+
cache: {
|
|
424
|
+
set: process.env.CACHE_SET || DEFAULT_CACHE_SET,
|
|
425
|
+
},
|
|
416
426
|
cloudProvider: process.env.CLOUD_PROVIDER || DEFAULT_CLOUD_PROVIDER,
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
ip: {
|
|
426
|
-
local: process.env.SERVER_LOCAL_IPV4,
|
|
427
|
-
},
|
|
428
|
-
public: {
|
|
429
|
-
protocol: process.env.SERVER_PUBLIC_PROTOCOL || DEFAULT_SERVER_PUBLIC_PROTOCOL,
|
|
430
|
-
domainName: process.env.SERVER_PUBLIC_DOMAIN_NAME || DEFAULT_SERVER_PUBLIC_DOMAIN_NAME,
|
|
427
|
+
cluster: {
|
|
428
|
+
management: process.env.CLUSTER_MANAGEMENT || DEFAULT_CLUSTER_MANAGEMENT,
|
|
429
|
+
timeout: parseInt(process.env.REQUEST_TIMEOUT, DECIMAL) || DEFAULT_REQUEST_TIMEOUT,
|
|
430
|
+
},
|
|
431
|
+
dependencies: {
|
|
432
|
+
mIT: {
|
|
433
|
+
url: process.env.MIT_URL,
|
|
434
|
+
audience: process.env.MIT_AUDIENCE,
|
|
431
435
|
},
|
|
432
436
|
},
|
|
437
|
+
encryption: {
|
|
438
|
+
set: process.env.ENCRYPTION_SET || DEFAULT_ENCRYPTION_SET,
|
|
439
|
+
},
|
|
440
|
+
locationProvider: process.env.LOCATION_PROVIDER || DEFAULT_LOCATION_PROVIDER,
|
|
441
|
+
nodeEnvironment: process.env.NODE_ENV || DEFAULT_ENV,
|
|
442
|
+
registration: {
|
|
443
|
+
set: process.env.REGISTRATION_SET || DEFAULT_REGISTRATION_SET,
|
|
444
|
+
retry: parseInt(process.env.REGISTRATION_RETRY, DECIMAL) || DEFAULT_REGISTRATION_RETRY,
|
|
445
|
+
afterPostOpsSet: process.env.REGISTRATION_AFTER_POSTOPS_SET || DEFAULT_REGISTRATION_AFTER_POSTOPS_SET,
|
|
446
|
+
},
|
|
433
447
|
security: {
|
|
434
448
|
admin: {
|
|
435
449
|
externalId: process.env.ADMIN_EXTERNAL_ID || DEFAULT_ADMIN_EXTERNAL_ID,
|
|
@@ -445,34 +459,29 @@ const configuration = {
|
|
|
445
459
|
key: process.env.OAUTH_GENERIC_KEY || NO_GENERIC,
|
|
446
460
|
audience: process.env.OAUTH_GENERIC_AUDIENCE || NO_GENERIC,
|
|
447
461
|
},
|
|
448
|
-
apiKeys: process.env.API_KEYS ? split(trim(process.env.API_KEYS), /\s*,\s*/) : [],
|
|
449
|
-
},
|
|
450
|
-
cluster: {
|
|
451
|
-
management: process.env.CLUSTER_MANAGEMENT || DEFAULT_CLUSTER_MANAGEMENT,
|
|
452
|
-
timeout: parseInt(process.env.REQUEST_TIMEOUT, 10) || DEFAULT_REQUEST_TIMEOUT,
|
|
453
|
-
},
|
|
454
|
-
cache: {
|
|
455
|
-
set: process.env.CACHE_SET || DEFAULT_CACHE_SET,
|
|
462
|
+
apiKeys: process.env.API_KEYS ? split(trim(process.env.API_KEYS), /\s*,\s*/u) : [],
|
|
456
463
|
},
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
464
|
+
serverSettings: {
|
|
465
|
+
id: process.env.SERVER_ID,
|
|
466
|
+
customerCode: process.env.CUSTOMER_CODE || DEFAULT_CUSTOMER_CODE,
|
|
467
|
+
customerCodeSep: process.env.CUSTOMER_CODE ? CUSTOMER_CODE_SEP : '',
|
|
468
|
+
securitySet: process.env.SERVER_SECURITY_SET || DEFAULT_SERVER_SECURITY_SET,
|
|
469
|
+
isMSTSet,
|
|
470
|
+
port: parseInt(process.env.SERVER_PORT, DECIMAL),
|
|
471
|
+
interceptError: process.env.INTERCEPT_ERROR || DEFAULT_INTERCEPT_ERROR,
|
|
472
|
+
ip: {
|
|
473
|
+
local: process.env.SERVER_LOCAL_IPV4,
|
|
474
|
+
},
|
|
475
|
+
public: {
|
|
476
|
+
protocol: process.env.SERVER_PUBLIC_PROTOCOL || DEFAULT_SERVER_PUBLIC_PROTOCOL,
|
|
477
|
+
domainName: process.env.SERVER_PUBLIC_DOMAIN_NAME || DEFAULT_SERVER_PUBLIC_DOMAIN_NAME,
|
|
478
|
+
},
|
|
462
479
|
},
|
|
463
480
|
topic: {
|
|
464
481
|
set: process.env.TOPIC_SET || DEFAULT_TOPIC_SET,
|
|
465
482
|
},
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
url: process.env.MIT_URL,
|
|
469
|
-
audience: process.env.MIT_AUDIENCE,
|
|
470
|
-
},
|
|
471
|
-
},
|
|
472
|
-
registration: {
|
|
473
|
-
set: process.env.REGISTRATION_SET || DEFAULT_REGISTRATION_SET,
|
|
474
|
-
retry: parseInt(process.env.REGISTRATION_RETRY, 10) || DEFAULT_REGISTRATION_RETRY,
|
|
475
|
-
afterPostOpsSet: process.env.REGISTRATION_AFTER_POSTOPS_SET || DEFAULT_REGISTRATION_AFTER_POSTOPS_SET,
|
|
483
|
+
userDefinitions: {
|
|
484
|
+
file: process.env.USER_DEFINITIONS_FILE || DEFAULT_USER_DEFINITIONS_FILE,
|
|
476
485
|
},
|
|
477
486
|
};
|
|
478
487
|
|
|
@@ -781,21 +790,21 @@ const setConfig = (pack, options) => {
|
|
|
781
790
|
}
|
|
782
791
|
if (options.security) {
|
|
783
792
|
Object.keys(options.security).forEach((securityItem) => {
|
|
784
|
-
if (
|
|
785
|
-
configuration.security[securityItem] = options.security[securityItem];
|
|
786
|
-
}
|
|
787
|
-
else {
|
|
793
|
+
if (configuration.security[securityItem]) {
|
|
788
794
|
Object.keys(options.security[securityItem]).forEach((subSecurityItem) => {
|
|
789
795
|
configuration.security[securityItem][subSecurityItem] = options.security[securityItem][subSecurityItem];
|
|
790
796
|
});
|
|
791
797
|
}
|
|
798
|
+
else {
|
|
799
|
+
configuration.security[securityItem] = options.security[securityItem];
|
|
800
|
+
}
|
|
792
801
|
});
|
|
793
802
|
}
|
|
794
803
|
checkConfig(configuration);
|
|
795
804
|
return configuration;
|
|
796
805
|
};
|
|
797
806
|
|
|
798
|
-
|
|
807
|
+
export {
|
|
799
808
|
setConfig,
|
|
800
809
|
isProd,
|
|
801
810
|
};
|
package/lib/common.js
CHANGED
|
@@ -99,85 +99,85 @@ const SUPPORTED_SWAGGER_FILE_PROVIDERS = [DEFAULT_SWAGGER_FILE_PROVIDER, 'swagge
|
|
|
99
99
|
const DEFAULT_BITBUCKET_USERNAME = ' ';
|
|
100
100
|
const DEFAULT_BITBUCKET_PASSWORD = ' ';
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
SUMOLOGIC,
|
|
104
|
-
AWS_S3,
|
|
102
|
+
export {
|
|
105
103
|
ALL,
|
|
106
|
-
|
|
107
|
-
SET_OFF,
|
|
108
|
-
YES,
|
|
109
|
-
NO,
|
|
104
|
+
AWS_S3,
|
|
110
105
|
CUSTOMER_CODE_SEP,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
SWAGGER_EXT,
|
|
119
|
-
SWAGGER_SEP,
|
|
120
|
-
PRODUCTIONS,
|
|
121
|
-
DEFAULT_ENV,
|
|
122
|
-
DEFAULT_LOCATION_PROVIDER,
|
|
123
|
-
DEFAULT_CLOUD_PROVIDER,
|
|
124
|
-
DEFAULT_CACHE_IP,
|
|
106
|
+
DEFAULT_ADMIN_EXTERNAL_ID,
|
|
107
|
+
DEFAULT_AWS_LOCAL_PROPERTIES,
|
|
108
|
+
DEFAULT_AWS_REGION,
|
|
109
|
+
DEFAULT_BITBUCKET_PASSWORD,
|
|
110
|
+
DEFAULT_BITBUCKET_USERNAME,
|
|
111
|
+
DEFAULT_CACHE_API_ID_TTL,
|
|
112
|
+
DEFAULT_CACHE_API_OPTION_TTL,
|
|
125
113
|
DEFAULT_CACHE_CONNECTION_TIMEOUT,
|
|
114
|
+
DEFAULT_CACHE_IP,
|
|
126
115
|
DEFAULT_CACHE_RECONNECTION_OFFSET,
|
|
127
|
-
DEFAULT_CACHE_VALIDATION_CHECK,
|
|
128
116
|
DEFAULT_CACHE_REQUEST_TTL,
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
DEFAULT_REDIS_SOCKET_KEEPALIVE,
|
|
136
|
-
DEFAULT_REDIS_DISABLE_OFFLINE_QUEUE,
|
|
137
|
-
DEFAULT_AWS_REGION,
|
|
138
|
-
DEFAULT_AWS_LOCAL_PROPERTIES,
|
|
139
|
-
DEFAULT_DYNAMODB_LOCAL_URL,
|
|
140
|
-
DEFAULT_DYNAMO_THROUGHPUT_READ,
|
|
141
|
-
DEFAULT_DYNAMO_THROUGHPUT_WRITE,
|
|
142
|
-
DEFAULT_DYNAMO_THROUGHPUT,
|
|
143
|
-
DEFAULT_MONGO_MAX_POOL_SIZE,
|
|
144
|
-
DEFAULT_MONGO_MIN_POOL_SIZE,
|
|
145
|
-
DEFAULT_MONGO_MAX_IDLE_TIME,
|
|
146
|
-
DEFAULT_MONGO_SOCKET_TIMEOUT,
|
|
147
|
-
DEFAULT_MONGO_FAMILY,
|
|
148
|
-
DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
|
|
149
|
-
DEFAULT_MONGO_HEARTBEAT_FREQUENCY,
|
|
117
|
+
DEFAULT_CACHE_SET,
|
|
118
|
+
DEFAULT_CACHE_VALIDATION_CHECK,
|
|
119
|
+
DEFAULT_CLOUD_PROVIDER,
|
|
120
|
+
DEFAULT_CLUSTER_MANAGEMENT,
|
|
121
|
+
DEFAULT_CUSTOMER_CODE,
|
|
122
|
+
DEFAULT_DATABASE_CONNECTION_TIMEOUT,
|
|
150
123
|
DEFAULT_DATABASE_IP,
|
|
151
|
-
DEFAULT_DATABASE_USER,
|
|
152
124
|
DEFAULT_DATABASE_PASSWORD,
|
|
153
|
-
DEFAULT_DATABASE_CONNECTION_TIMEOUT,
|
|
154
125
|
DEFAULT_DATABASE_RECONNECTION_OFFSET,
|
|
126
|
+
DEFAULT_DATABASE_USER,
|
|
155
127
|
DEFAULT_DATABASE_VALIDATION_CHECK,
|
|
128
|
+
DEFAULT_DYNAMODB_LOCAL_URL,
|
|
129
|
+
DEFAULT_DYNAMO_THROUGHPUT,
|
|
130
|
+
DEFAULT_DYNAMO_THROUGHPUT_READ,
|
|
131
|
+
DEFAULT_DYNAMO_THROUGHPUT_WRITE,
|
|
156
132
|
DEFAULT_ENCRYPTION_SET,
|
|
133
|
+
DEFAULT_ENV,
|
|
134
|
+
DEFAULT_EXIT_DELAY,
|
|
135
|
+
DEFAULT_FILTER_FILE,
|
|
136
|
+
DEFAULT_INTERCEPT_ERROR,
|
|
157
137
|
DEFAULT_KMS_PROVIDER,
|
|
138
|
+
DEFAULT_LOCATION_PROVIDER,
|
|
158
139
|
DEFAULT_LOG_LEVEL,
|
|
159
|
-
|
|
160
|
-
|
|
140
|
+
DEFAULT_MONGO_FAMILY,
|
|
141
|
+
DEFAULT_MONGO_HEARTBEAT_FREQUENCY,
|
|
142
|
+
DEFAULT_MONGO_MAX_IDLE_TIME,
|
|
143
|
+
DEFAULT_MONGO_MAX_POOL_SIZE,
|
|
144
|
+
DEFAULT_MONGO_MIN_POOL_SIZE,
|
|
145
|
+
DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
|
|
146
|
+
DEFAULT_MONGO_SOCKET_TIMEOUT,
|
|
161
147
|
DEFAULT_NO_STACK,
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
DEFAULT_CACHE_SET,
|
|
169
|
-
DEFAULT_TOPIC_SET,
|
|
170
|
-
DEFAULT_REGISTRATION_SET,
|
|
171
|
-
DEFAULT_REGISTRATION_RETRY,
|
|
148
|
+
DEFAULT_REDIS_DISABLE_OFFLINE_QUEUE,
|
|
149
|
+
DEFAULT_REDIS_RECONNECT_INTERVAL,
|
|
150
|
+
DEFAULT_REDIS_RECONNECT_TRIES,
|
|
151
|
+
DEFAULT_REDIS_REQUEST_MAX_MEMORY,
|
|
152
|
+
DEFAULT_REDIS_REQUEST_MAX_MEMORY_POLICY,
|
|
153
|
+
DEFAULT_REDIS_SOCKET_KEEPALIVE,
|
|
172
154
|
DEFAULT_REGISTRATION_AFTER_POSTOPS_SET,
|
|
155
|
+
DEFAULT_REGISTRATION_RETRY,
|
|
156
|
+
DEFAULT_REGISTRATION_SET,
|
|
173
157
|
DEFAULT_REQUEST_TIMEOUT,
|
|
174
|
-
|
|
158
|
+
DEFAULT_S3_AWS_MAX_EVENTS,
|
|
159
|
+
DEFAULT_S3_AWS_MAX_SIZE,
|
|
160
|
+
DEFAULT_S3_AWS_TIMEOUT,
|
|
175
161
|
DEFAULT_SERVER_PUBLIC_DOMAIN_NAME,
|
|
176
|
-
|
|
162
|
+
DEFAULT_SERVER_PUBLIC_PROTOCOL,
|
|
163
|
+
DEFAULT_SERVER_SECURITY_SET,
|
|
177
164
|
DEFAULT_SWAGGER_DIR,
|
|
178
165
|
DEFAULT_SWAGGER_FILE_PROVIDER,
|
|
166
|
+
DEFAULT_TOPIC_SET,
|
|
167
|
+
DEFAULT_USER_DEFINITIONS_FILE,
|
|
168
|
+
ENV_VARIABLE,
|
|
169
|
+
MONGO_BASE_URL,
|
|
170
|
+
MONGO_BASE_URL_SRV,
|
|
171
|
+
NO,
|
|
172
|
+
NO_GENERIC,
|
|
173
|
+
NO_PUBLIC_PROVIDER,
|
|
174
|
+
PRODUCTIONS,
|
|
175
|
+
REDIS_BASE_URL,
|
|
176
|
+
SET_OFF,
|
|
177
|
+
SET_ON,
|
|
178
|
+
SUMOLOGIC,
|
|
179
179
|
SUPPORTED_SWAGGER_FILE_PROVIDERS,
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
180
|
+
SWAGGER_EXT,
|
|
181
|
+
SWAGGER_SEP,
|
|
182
|
+
YES,
|
|
183
183
|
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import './testEnv.js';
|
|
3
|
+
import { setConfig } from '../index.js';
|
|
4
|
+
|
|
5
|
+
const pack = {
|
|
6
|
+
swaggerFile: {
|
|
7
|
+
version: '2.0.6',
|
|
8
|
+
account: 'mimiktech',
|
|
9
|
+
name: 'swagger-mds',
|
|
10
|
+
},
|
|
11
|
+
mimik: {
|
|
12
|
+
type: 'test-pack-type',
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
const config = {
|
|
16
|
+
database: {
|
|
17
|
+
type: 'mongodb',
|
|
18
|
+
table: {
|
|
19
|
+
itResource: 'itResource',
|
|
20
|
+
lease: 'lease',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
dependencies: {
|
|
24
|
+
'mIT': {
|
|
25
|
+
audience: 'test-audience',
|
|
26
|
+
url: 'test-url',
|
|
27
|
+
},
|
|
28
|
+
'test-pack-type': {
|
|
29
|
+
audience: 'test=pack-type-audience',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
security: {
|
|
33
|
+
server: {
|
|
34
|
+
id: 'test-id',
|
|
35
|
+
secret: 'test-secret',
|
|
36
|
+
accessKey: 'test-access-key',
|
|
37
|
+
audience: 'test-scurity-audience',
|
|
38
|
+
issuer: 'test-issuer',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
serverSettings: {
|
|
42
|
+
type: 'test-type',
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const configuration = setConfig(pack, config);
|
|
47
|
+
console.log(configuration);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/* eslint no-process-env: "off" */
|
|
2
|
+
import process from 'process';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* Test configuration Configuration.
|
|
7
|
+
*
|
|
8
|
+
* @description The following environment variables are needed to configure configuration:
|
|
9
|
+
*
|
|
10
|
+
* | Env variable name | Description | Default | Comments |
|
|
11
|
+
* | ----------------- | ----------- | ------- | -------- |
|
|
12
|
+
* | DATABASE_NAME | name of the database to use for mongodb
|
|
13
|
+
* | MONGO_REPLICAT_SET | test for Boolean()
|
|
14
|
+
* | SUMO_LOGIC_ENDPOINT | dummy endpoint for sumologic
|
|
15
|
+
* | SUMO_LOGIC_COLLECTOR_CODE | dummy collector code for sumologic
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
process.env.DATABASE_NAME = 'test-database-name';
|
|
19
|
+
process.env.MONGO_REPLICAT_SET = 'test-mongo-replicat-set';
|
|
20
|
+
process.env.SUMO_LOGIC_ENDPOINT = 'test-logIngo-sumologic-endpoint';
|
|
21
|
+
process.env.SUMO_LOGIC_COLLECTOR_CODE = 'test-logInfo-sumologic-code';
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mimik/configuration",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.1",
|
|
4
4
|
"description": "Common configuration for mimik services",
|
|
5
|
-
"main": "index.js",
|
|
5
|
+
"main": "./index.js",
|
|
6
|
+
"type": "module",
|
|
6
7
|
"scripts": {
|
|
7
|
-
"lint": "eslint --
|
|
8
|
+
"lint": "eslint . --no-error-on-unmatched-pattern",
|
|
8
9
|
"docs": "jsdoc2md index.js > README.md",
|
|
9
10
|
"test": "echo \"Error: no test specified\" && exit 0",
|
|
10
11
|
"test-ci": "echo \"Error: no test specified\" && exit 0",
|
|
@@ -29,9 +30,9 @@
|
|
|
29
30
|
"url": "https://bitbucket.org/mimiktech/configuration"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
32
|
-
"@mimik/request-helper": "^
|
|
33
|
-
"@mimik/sumologic-winston-logger": "^
|
|
34
|
-
"@mimik/user-filters": "^
|
|
33
|
+
"@mimik/request-helper": "^2.0.1",
|
|
34
|
+
"@mimik/sumologic-winston-logger": "^2.0.2",
|
|
35
|
+
"@mimik/user-filters": "^2.0.1",
|
|
35
36
|
"ip": "2.0.1",
|
|
36
37
|
"lodash.includes": "4.3.0",
|
|
37
38
|
"lodash.isnan": "3.0.2",
|
|
@@ -40,18 +41,15 @@
|
|
|
40
41
|
"lodash.isundefined": "3.0.1",
|
|
41
42
|
"lodash.split": "4.4.2",
|
|
42
43
|
"lodash.trim": "4.5.1",
|
|
43
|
-
"uuid": "
|
|
44
|
+
"uuid": "11.1.0"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
|
-
"@
|
|
47
|
-
"@mimik/eslint-plugin-document-env": "^
|
|
48
|
-
"eslint": "
|
|
49
|
-
"eslint
|
|
50
|
-
"eslint-plugin-import": "2.
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"eslint-plugin-react-hooks": "4.6.2",
|
|
54
|
-
"husky": "9.0.11",
|
|
55
|
-
"jsdoc-to-markdown": "8.0.1"
|
|
47
|
+
"@eslint/js": "9.23.0",
|
|
48
|
+
"@mimik/eslint-plugin-document-env": "^2.0.5",
|
|
49
|
+
"@stylistic/eslint-plugin": "4.2.0",
|
|
50
|
+
"eslint": "9.23.0",
|
|
51
|
+
"eslint-plugin-import": "2.31.0",
|
|
52
|
+
"husky": "9.1.7",
|
|
53
|
+
"jsdoc-to-markdown": "9.1.1"
|
|
56
54
|
}
|
|
57
55
|
}
|
package/.eslintrc
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"plugins": [
|
|
3
|
-
"@mimik/document-env",
|
|
4
|
-
"@mimik/dependencies"
|
|
5
|
-
],
|
|
6
|
-
"env": {
|
|
7
|
-
"node": true
|
|
8
|
-
},
|
|
9
|
-
"parserOptions": {
|
|
10
|
-
"ecmaVersion": 2020
|
|
11
|
-
},
|
|
12
|
-
"extends": "airbnb",
|
|
13
|
-
"rules": {
|
|
14
|
-
"import/no-extraneous-dependencies": ["error", {"devDependencies": true}],
|
|
15
|
-
"import/no-unresolved": ["error", { "amd": true, "commonjs": true, "caseSensitiveStrict": true }],
|
|
16
|
-
"brace-style": [1, "stroustrup", {"allowSingleLine": true}],
|
|
17
|
-
"no-confusing-arrow": [0], // arrow isnt confusing
|
|
18
|
-
"max-len": [1, 180, { "ignoreComments": true }],
|
|
19
|
-
"linebreak-style": 0,
|
|
20
|
-
"quotes": [1, "single"],
|
|
21
|
-
"semi": [1, "always"],
|
|
22
|
-
"no-process-env": ["error"],
|
|
23
|
-
"@mimik/document-env/validate-document-env": 2,
|
|
24
|
-
"@mimik/dependencies/case-sensitive": 2,
|
|
25
|
-
"@mimik/dependencies/no-cycles": 2,
|
|
26
|
-
"@mimik/dependencies/require-json-ext": 2
|
|
27
|
-
},
|
|
28
|
-
"settings":{
|
|
29
|
-
"react": {
|
|
30
|
-
"version": "detect"
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"globals": {
|
|
34
|
-
"module": true,
|
|
35
|
-
"require": true,
|
|
36
|
-
"const": false,
|
|
37
|
-
"it": false,
|
|
38
|
-
"describe": false,
|
|
39
|
-
"before": true,
|
|
40
|
-
"after": true,
|
|
41
|
-
"JSON": true
|
|
42
|
-
}
|
|
43
|
-
}
|