@mimik/configuration 5.0.12 → 6.0.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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  ## configuration
4
4
  **Example**
5
5
  ```js
6
- const config = require('@mimik/configuration');
6
+ import config from '@mimik/configuration';
7
7
  ```
8
8
 
9
9
  * [configuration](#module_configuration)
@@ -98,6 +98,7 @@ The following environement variables are being used for the configuration:
98
98
  | MIT_AUDIENCE | audience of mIT | | dependencies.mIT.audience | [2]
99
99
  | REGISTRATION_SET | swicht to enable user of registration | on | registration.set | can be `on` or `off`
100
100
  | REGISTRATION_RETRY | retry time for registering to mIT | 3000 | registration.retry | in milliseconds
101
+ | REGISTRATION_AFTER_POSTOPS_SET | switch to set the registration of execution the postOps | off | registratiom.afterPostOpsSet | can be `on` or `off`
101
102
  | `$_URL`.toUpperCase() | cluster information | self | dependencies.`(SERVER_TYPE)`.url | should not be used
102
103
  | `${configuration.serverSettings.type}_AUDIENCE`.toUpperCase() | cluster information | | dependencies.`(SERVER_TYPE)`.audience | [2], but should not be used
103
104
 
@@ -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,106 +1,113 @@
1
1
  /* eslint no-process-env: "off" */
2
- const includes = require('lodash.includes');
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
- SET_ON,
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
- DEFAULT_ENV,
39
- PRODUCTIONS,
40
- DEFAULT_LOCATION_PROVIDER,
41
- DEFAULT_CLOUD_PROVIDER,
42
- DEFAULT_CUSTOMER_CODE,
43
- DEFAULT_CACHE_IP,
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
- DEFAULT_CACHE_API_ID_TTL,
49
- DEFAULT_CACHE_API_OPTION_TTL,
50
- DEFAULT_REDIS_RECONNECT_TRIES,
51
- DEFAULT_REDIS_RECONNECT_INTERVAL,
52
- DEFAULT_REDIS_REQUEST_MAX_MEMORY,
53
- DEFAULT_REDIS_REQUEST_MAX_MEMORY_POLICY,
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
- DEFAULT_FILTER_FILE,
79
- DEFAULT_EXIT_DELAY,
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
- DEFAULT_USER_DEFINITIONS_FILE,
82
- DEFAULT_S3_AWS_TIMEOUT,
83
- DEFAULT_S3_AWS_MAX_SIZE,
84
- DEFAULT_S3_AWS_MAX_EVENTS,
85
- DEFAULT_SERVER_SECURITY_SET,
86
- DEFAULT_CLUSTER_MANAGEMENT,
87
- DEFAULT_CACHE_SET,
88
- DEFAULT_TOPIC_SET,
89
- DEFAULT_REGISTRATION_SET,
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,
54
+ DEFAULT_REGISTRATION_AFTER_POSTOPS_SET,
90
55
  DEFAULT_REGISTRATION_RETRY,
56
+ DEFAULT_REGISTRATION_SET,
91
57
  DEFAULT_REQUEST_TIMEOUT,
92
- DEFAULT_SERVER_PUBLIC_PROTOCOL,
58
+ DEFAULT_S3_AWS_MAX_EVENTS,
59
+ DEFAULT_S3_AWS_MAX_SIZE,
60
+ DEFAULT_S3_AWS_TIMEOUT,
93
61
  DEFAULT_SERVER_PUBLIC_DOMAIN_NAME,
94
- DEFAULT_ADMIN_EXTERNAL_ID,
62
+ DEFAULT_SERVER_PUBLIC_PROTOCOL,
63
+ DEFAULT_SERVER_SECURITY_SET,
95
64
  DEFAULT_SWAGGER_DIR,
96
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,
97
79
  SUPPORTED_SWAGGER_FILE_PROVIDERS,
98
- DEFAULT_INTERCEPT_ERROR,
99
- DEFAULT_BITBUCKET_USERNAME,
100
- DEFAULT_BITBUCKET_PASSWORD,
80
+ SWAGGER_EXT,
81
+ SWAGGER_SEP,
101
82
  YES,
102
- NO,
103
- } = require('./lib/common');
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
+ */
104
111
 
105
112
  let display = true;
106
113
  const locParams = [NO_PUBLIC_PROVIDER, ENV_VARIABLE];
@@ -111,8 +118,8 @@ const setupRedis = () => {
111
118
  const domain = process.env.CACHE_IP || DEFAULT_CACHE_IP;
112
119
  const username = process.env.CACHE_USER;
113
120
  const password = process.env.CACHE_PASSWORD;
114
- const reconnectTries = parseInt(process.env.REDIS_RECONNECT_TRIES, 10) || DEFAULT_REDIS_RECONNECT_TRIES;
115
- const reconnectInterval = parseInt(process.env.REDIS_RECONNECT_INTERVAL, 10) || DEFAULT_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;
116
123
  let url = REDIS_BASE_URL;
117
124
  let noAuthUrl = url;
118
125
  if (username && password) url += `${username}:${password}@`;
@@ -126,26 +133,25 @@ const setupRedis = () => {
126
133
  };
127
134
 
128
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,
129
142
  domain,
130
- username,
131
- password,
132
- connectTimeout: parseInt(process.env.CACHE_CONNECTION_TIMEOUT, 10) || DEFAULT_CACHE_CONNECTION_TIMEOUT,
133
- validationCheck: parseInt(process.env.CACHE_VALIDATION_CHECK, 10) || DEFAULT_CACHE_VALIDATION_CHECK,
134
- reconnectOffset: parseInt(process.env.CACHE_RECONNECTION_OFFSET, 10) || DEFAULT_CACHE_RECONNECTION_OFFSET,
135
- url,
136
143
  noAuthUrl,
137
- cluster: clusterConfig,
138
144
  options: {
139
145
  socket: {
140
146
  keepAlive: process.env.REDIS_SOCKET_KEEPALIVE || DEFAULT_REDIS_SOCKET_KEEPALIVE,
141
- reconnectStrategy: function retryStrategy(opts) {
142
- if (opts.timesConnected > 0 && opts.attempt < reconnectTries) {
147
+ reconnectStrategy: function reconnectStrategy(opts) {
148
+ if (opts.timesConnected > AT_LEAST_ONE && opts.attempt < reconnectTries) {
143
149
  return reconnectInterval;
144
150
  }
145
151
  if (opts.error && opts.error.code === 'ECONNREFUSED') {
146
152
  if (display) {
147
153
  logger.error('Fatal error: Could not connect to cache', { type: 'redis', error: opts.error.code }, `redis-cache-start@0/${new Date().toISOString()}`);
148
- logger.flushAndExit(1);
154
+ logger.flushAndExit(ISSUE_EXIT);
149
155
  }
150
156
  display = false;
151
157
  }
@@ -156,34 +162,35 @@ const setupRedis = () => {
156
162
  maxMemory: process.env.REDIS_REQUEST_MAX_MEMORY || DEFAULT_REDIS_REQUEST_MAX_MEMORY,
157
163
  maxMemoryPolicy: process.env.REDIS_REQUEST_MAX_MEMORY_POLICY || DEFAULT_REDIS_REQUEST_MAX_MEMORY_POLICY,
158
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
+ },
159
170
  retryStrategyOptions: {
160
171
  reconnectTries,
161
172
  reconnectInterval,
162
173
  },
163
- request: {
164
- TTL: parseInt(process.env.CACHE_REQUEST_TTL, 10) || DEFAULT_CACHE_REQUEST_TTL,
165
- },
166
- api: {
167
- idTTL: parseInt(process.env.CACHE_API_ID_TTL, 10) || DEFAULT_CACHE_API_ID_TTL,
168
- optionTTL: parseInt(process.env.CACHE_API_OPTION_TTL, 10) || DEFAULT_CACHE_API_OPTION_TTL,
169
- },
174
+ url,
175
+ username,
176
+ validationCheck: parseInt(process.env.CACHE_VALIDATION_CHECK, DECIMAL) || DEFAULT_CACHE_VALIDATION_CHECK,
170
177
  };
171
178
  };
172
179
 
173
180
  const setupDynamo = (dbOpts) => {
174
181
  const dbConfig = {
175
- connectTimeout: parseInt(process.env.DATABASE_CONNECTION_TIMEOUT, 10) || DEFAULT_DATABASE_CONNECTION_TIMEOUT,
176
- validationCheck: parseInt(process.env.DATABASE_VALIDATION_CHECK, 10) || DEFAULT_DATABASE_VALIDATION_CHECK,
177
- reconnectOffset: parseInt(process.env.DATABASE_RECONNECTION_OFFSET, 10) || DEFAULT_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,
178
185
  region: process.env.DYNAMODB_AWS_REGION || DEFAULT_AWS_REGION,
179
186
  url: process.env.DYNAMODB_LOCAL_URL || DEFAULT_DYNAMODB_LOCAL_URL,
180
187
  throughput: {
181
- read: parseInt(process.env.DYNAMO_THROUGHPUT_READ, 10) || DEFAULT_DYNAMO_THROUGHPUT_READ,
182
- write: parseInt(process.env.DYNAMO_THROUGHPUT_WRITE, 10) || DEFAULT_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,
183
190
  },
184
191
  schemaThroughput: {
185
- read: parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT_READ, 10) || DEFAULT_DYNAMO_THROUGHPUT_READ,
186
- write: parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT_WRITE, 10) || DEFAULT_DYNAMO_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,
187
194
  },
188
195
  tableName: dbOpts.table,
189
196
  };
@@ -195,7 +202,7 @@ const setupDynamo = (dbOpts) => {
195
202
  delete dbConfig.throughput;
196
203
  }
197
204
  else if (!isNil(process.env.DYNAMO_SCHEMA_THROUGHPUT)) {
198
- const throughput = parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT, 10);
205
+ const throughput = parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT, DECIMAL);
199
206
 
200
207
  if (isNil(throughput) || isNaN(throughput)) dbConfig.schemaThroughput = DEFAULT_DYNAMO_THROUGHPUT;
201
208
  else dbConfig.schemaThroughput = throughput;
@@ -207,9 +214,9 @@ const setupMongo = (dbOpts) => {
207
214
  const processStringOptions = () => {
208
215
  // default string variables
209
216
  const stringOptions = {
210
- maxPoolSize: parseInt(process.env.MONGO_MAX_POOL_SIZE, 10) || DEFAULT_MONGO_MAX_POOL_SIZE,
211
- minPoolSize: parseInt(process.env.MONGO_MIN_POOL_SIZE, 10) || DEFAULT_MONGO_MIN_POOL_SIZE,
212
- maxIdleTimeMS: parseInt(process.env.MONGO_MAX_IDLE_TIME, 10) || DEFAULT_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,
213
220
  };
214
221
  // string variables without default
215
222
  if (process.env.MONGO_SSL === YES) stringOptions.ssl = true; // default value of mongo driver is false
@@ -218,10 +225,11 @@ const setupMongo = (dbOpts) => {
218
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
219
226
  if (process.env.MONGO_REPLICAT_SET) stringOptions.replicaSet = process.env.MONGO_REPLICAT_SET;
220
227
  if (process.env.MONGO_AUTH_DATABASE) stringOptions.authSource = process.env.MONGO_AUTH_DATABASE;
228
+ // eslint-disable-next-line id-length
221
229
  if (process.env.MONGO_WRITE_CONCERN) stringOptions.w = process.env.MONGO_WRITE_CONCERN;
222
230
  if (process.env.MONGO_RETRY_WRITES) stringOptions.retryWrites = process.env.MONGO_RETRY_WRITES;
223
- if (process.env.MONGO_WAIT_QUEUE_MULTIPLE) stringOptions.waitQueueMultiple = parseInt(process.env.MONGO_WAIT_QUEUE_MULTIPLE, 10);
224
- if (process.env.MONGO_WAIT_QUEUE_TIMEOUT) stringOptions.waitQueueTimeoutMS = parseInt(process.env.MONGO_WAIT_QUEUE_TIMEOUT, 10); // in ms
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
225
233
  return stringOptions ? querystring.stringify(stringOptions) : null;
226
234
  };
227
235
  const database = process.env.DATABASE_NAME;
@@ -243,24 +251,24 @@ const setupMongo = (dbOpts) => {
243
251
  noAuthUrl = `${noAuthUrl}?${qs}`;
244
252
  }
245
253
  return {
246
- domain,
254
+ connectTimeout: parseInt(process.env.DATABASE_CONNECTION_TIMEOUT, DECIMAL) || DEFAULT_DATABASE_CONNECTION_TIMEOUT,
247
255
  database,
248
- user,
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
+ },
249
264
  password,
250
- connectTimeout: parseInt(process.env.DATABASE_CONNECTION_TIMEOUT, 10) || DEFAULT_DATABASE_CONNECTION_TIMEOUT,
251
- validationCheck: parseInt(process.env.DATABASE_VALIDATION_CHECK, 10) || DEFAULT_DATABASE_VALIDATION_CHECK,
252
- reconnectOffset: parseInt(process.env.DATABASE_RECONNECTION_OFFSET, 10) || DEFAULT_DATABASE_RECONNECTION_OFFSET,
253
- 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),
254
267
  stringOptions: qs,
255
268
  table: dbOpts.table,
256
269
  url,
257
- noAuthUrl,
258
- options: {
259
- family: parseInt(process.env.MONGO_FAMILY, 10) || DEFAULT_MONGO_FAMILY,
260
- socketTimeoutMS: parseInt(process.env.MONGO_SOCKET_TIMEOUT, 10) || DEFAULT_MONGO_SOCKET_TIMEOUT,
261
- serverSelectionTimeoutMS: parseInt(process.env.MONGO_SERVER_SELECTION_TIMEOUT, 10) || DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
262
- heartbeatFrequencyMS: parseInt(process.env.MONGO_HEARTBEAT_FREQUENCY, 10) || DEFAULT_MONGO_HEARTBEAT_FREQUENCY,
263
- },
270
+ user,
271
+ validationCheck: parseInt(process.env.DATABASE_VALIDATION_CHECK, DECIMAL) || DEFAULT_DATABASE_VALIDATION_CHECK,
264
272
  };
265
273
  };
266
274
 
@@ -283,7 +291,7 @@ const setupLog = () => {
283
291
  log: process.env.LOG_LEVEL || DEFAULT_LOG_LEVEL,
284
292
  },
285
293
  filterFile: process.env.FILTER_FILE || DEFAULT_FILTER_FILE,
286
- exitDelay: parseInt(process.env.EXIT_DELAY, 10) || DEFAULT_EXIT_DELAY,
294
+ exitDelay: parseInt(process.env.EXIT_DELAY, DECIMAL) || DEFAULT_EXIT_DELAY,
287
295
  noStack: process.env.NO_STACK || DEFAULT_NO_STACK,
288
296
  };
289
297
 
@@ -297,9 +305,9 @@ const setupLog = () => {
297
305
  logInfo[AWS_S3] = {
298
306
  region: process.env.S3_AWS_REGION,
299
307
  bucketname: process.env.S3_AWS_BUCKET_NAME,
300
- timeout: parseInt(process.env.S3_AWS_TIMEOUT, 10) || DEFAULT_S3_AWS_TIMEOUT,
301
- maxSize: parseInt(process.env.S3_AWS_MAX_SIZE, 10) || DEFAULT_S3_AWS_MAX_SIZE,
302
- maxEvents: parseInt(process.env.S3_AWS_MAX_EVENTS, 10) || DEFAULT_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,
303
311
  };
304
312
  if (!isNil(process.env.S3_AWS_ACCESS_KEY_ID)) logInfo[AWS_S3].accessKeyId = process.env.S3_AWS_ACCESS_KEY_ID;
305
313
  if (!isNil(process.env.S3_AWS_SECRET_ACCESS_KEY)) logInfo[AWS_S3].secretAccessKey = process.env.S3_AWS_SECRET_ACCESS_KEY;
@@ -340,7 +348,7 @@ const setupEncryption = (encryptionOpts) => {
340
348
  }
341
349
  else encryptionConfig.localMasterKey = process.env.LOCAL_MASTER_KEY;
342
350
 
343
- if (Object.keys(encryptionOpts.keys).length > 0) encryptionConfig.keys = encryptionOpts.keys;
351
+ if (Object.keys(encryptionOpts.keys).length > SOME_KEYS) encryptionConfig.keys = encryptionOpts.keys;
344
352
 
345
353
  return encryptionConfig;
346
354
  };
@@ -349,7 +357,9 @@ const setupUserDefinitions = (definitions) => {
349
357
  const userDefinitionsFile = definitions.file;
350
358
  let customDefinitions = {};
351
359
  if (userDefinitionsFile && userDefinitionsFile !== DEFAULT_USER_DEFINITIONS_FILE) {
352
- try { customDefinitions = JSON.parse(fs.readFileSync(userDefinitionsFile).toString()); }
360
+ try {
361
+ customDefinitions = JSON.parse(fs.readFileSync(userDefinitionsFile).toString());
362
+ }
353
363
  catch (err) {
354
364
  throw new Error(`Invalid file for user definitions: ${userDefinitionsFile}, error: ${err.message}`);
355
365
  }
@@ -364,20 +374,20 @@ const setupUserDefinitions = (definitions) => {
364
374
  const checkConfig = (config) => {
365
375
  const errors = [];
366
376
 
367
- function traverseNodeSync(node, path) {
377
+ const traverseNodeSync = (node, path) => {
368
378
  Object.keys(node).forEach((prop) => {
369
379
  if (typeof node[prop] === 'object' && node[prop]) {
370
380
  traverseNodeSync(node[prop], `${path}.${prop}`);
371
381
  }
372
382
  else if (isUndefined(node[prop])) errors.push({ reason: 'missing', value: `${path}.${prop}` });
373
383
  });
374
- }
384
+ };
375
385
 
376
386
  traverseNodeSync(config, 'configuration');
377
387
  // dependency errors
378
- if (!isMSTSet && config.security.apiKeys.length === 0) errors.push({ reason: 'invalid', value: 'config.security.apiKeys', cause: 'isMSTSet' });
388
+ if (!isMSTSet && config.security.apiKeys.length === NO_KEY) errors.push({ reason: 'invalid', value: 'config.security.apiKeys', cause: 'isMSTSet' });
379
389
 
380
- if (errors.length > 0) {
390
+ if (errors.length > SOME_ERRORS) {
381
391
  const error = new Error('Errors in configuration');
382
392
 
383
393
  logger.error(error, { errors }, correlationIdStart);
@@ -405,30 +415,35 @@ const isProd = () => {
405
415
 
406
416
  process.env.SERVER_LOCAL_IPV4 = ip.address();
407
417
  process.env.AWS_LOCAL_PROPERTIES = DEFAULT_AWS_LOCAL_PROPERTIES;
408
- process.env.CONSOLE_LEVEL = process.env.CONSOLE_LEVEL || DEFAULT_LOG_LEVEL;
409
- process.env.LOG_LEVEL = process.env.LOG_LEVEL || DEFAULT_LOG_LEVEL;
410
- process.env.SERVER_ID = process.env.SERVER_ID || uuid.v4();
418
+ process.env.CONSOLE_LEVEL ||= DEFAULT_LOG_LEVEL;
419
+ process.env.LOG_LEVEL ||= DEFAULT_LOG_LEVEL;
420
+ process.env.SERVER_ID ||= uuidv4();
411
421
 
412
422
  const configuration = {
413
- nodeEnvironment: process.env.NODE_ENV || DEFAULT_ENV,
414
- locationProvider: process.env.LOCATION_PROVIDER || DEFAULT_LOCATION_PROVIDER,
423
+ cache: {
424
+ set: process.env.CACHE_SET || DEFAULT_CACHE_SET,
425
+ },
415
426
  cloudProvider: process.env.CLOUD_PROVIDER || DEFAULT_CLOUD_PROVIDER,
416
- serverSettings: {
417
- id: process.env.SERVER_ID,
418
- customerCode: process.env.CUSTOMER_CODE || DEFAULT_CUSTOMER_CODE,
419
- customerCodeSep: process.env.CUSTOMER_CODE ? CUSTOMER_CODE_SEP : '',
420
- securitySet: process.env.SERVER_SECURITY_SET || DEFAULT_SERVER_SECURITY_SET,
421
- isMSTSet,
422
- port: parseInt(process.env.SERVER_PORT, 10),
423
- interceptError: process.env.INTERCEPT_ERROR || DEFAULT_INTERCEPT_ERROR,
424
- ip: {
425
- local: process.env.SERVER_LOCAL_IPV4,
426
- },
427
- public: {
428
- protocol: process.env.SERVER_PUBLIC_PROTOCOL || DEFAULT_SERVER_PUBLIC_PROTOCOL,
429
- 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,
430
435
  },
431
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
+ },
432
447
  security: {
433
448
  admin: {
434
449
  externalId: process.env.ADMIN_EXTERNAL_ID || DEFAULT_ADMIN_EXTERNAL_ID,
@@ -444,33 +459,29 @@ const configuration = {
444
459
  key: process.env.OAUTH_GENERIC_KEY || NO_GENERIC,
445
460
  audience: process.env.OAUTH_GENERIC_AUDIENCE || NO_GENERIC,
446
461
  },
447
- apiKeys: process.env.API_KEYS ? split(trim(process.env.API_KEYS), /\s*,\s*/) : [],
448
- },
449
- cluster: {
450
- management: process.env.CLUSTER_MANAGEMENT || DEFAULT_CLUSTER_MANAGEMENT,
451
- timeout: parseInt(process.env.REQUEST_TIMEOUT, 10) || DEFAULT_REQUEST_TIMEOUT,
452
- },
453
- cache: {
454
- set: process.env.CACHE_SET || DEFAULT_CACHE_SET,
462
+ apiKeys: process.env.API_KEYS ? split(trim(process.env.API_KEYS), /\s*,\s*/u) : [],
455
463
  },
456
- encryption: {
457
- set: process.env.ENCRYPTION_SET || DEFAULT_ENCRYPTION_SET,
458
- },
459
- userDefinitions: {
460
- file: process.env.USER_DEFINITIONS_FILE || DEFAULT_USER_DEFINITIONS_FILE,
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
+ },
461
479
  },
462
480
  topic: {
463
481
  set: process.env.TOPIC_SET || DEFAULT_TOPIC_SET,
464
482
  },
465
- dependencies: {
466
- mIT: {
467
- url: process.env.MIT_URL,
468
- audience: process.env.MIT_AUDIENCE,
469
- },
470
- },
471
- registration: {
472
- set: process.env.REGISTRATION_SET || DEFAULT_REGISTRATION_SET,
473
- retry: parseInt(process.env.REGISTRATION_RETRY, 10) || DEFAULT_REGISTRATION_RETRY,
483
+ userDefinitions: {
484
+ file: process.env.USER_DEFINITIONS_FILE || DEFAULT_USER_DEFINITIONS_FILE,
474
485
  },
475
486
  };
476
487
 
@@ -568,6 +579,7 @@ configuration.locationProvider = setupLocationProvider();
568
579
  * | MIT_AUDIENCE | audience of mIT | | dependencies.mIT.audience | [2]
569
580
  * | REGISTRATION_SET | swicht to enable user of registration | on | registration.set | can be `on` or `off`
570
581
  * | REGISTRATION_RETRY | retry time for registering to mIT | 3000 | registration.retry | in milliseconds
582
+ * | REGISTRATION_AFTER_POSTOPS_SET | switch to set the registration of execution the postOps | off | registratiom.afterPostOpsSet | can be `on` or `off`
571
583
  * | `${configuration.serverSettings.type}_URL`.toUpperCase() | cluster information | self | dependencies.`(SERVER_TYPE)`.url | should not be used
572
584
  * | `${configuration.serverSettings.type}_AUDIENCE`.toUpperCase() | cluster information | | dependencies.`(SERVER_TYPE)`.audience | [2], but should not be used
573
585
  *
@@ -778,21 +790,21 @@ const setConfig = (pack, options) => {
778
790
  }
779
791
  if (options.security) {
780
792
  Object.keys(options.security).forEach((securityItem) => {
781
- if (!configuration.security[securityItem]) {
782
- configuration.security[securityItem] = options.security[securityItem];
783
- }
784
- else {
793
+ if (configuration.security[securityItem]) {
785
794
  Object.keys(options.security[securityItem]).forEach((subSecurityItem) => {
786
795
  configuration.security[securityItem][subSecurityItem] = options.security[securityItem][subSecurityItem];
787
796
  });
788
797
  }
798
+ else {
799
+ configuration.security[securityItem] = options.security[securityItem];
800
+ }
789
801
  });
790
802
  }
791
803
  checkConfig(configuration);
792
804
  return configuration;
793
805
  };
794
806
 
795
- module.exports = {
807
+ export {
796
808
  setConfig,
797
809
  isProd,
798
810
  };
package/lib/common.js CHANGED
@@ -81,6 +81,7 @@ const DEFAULT_CLUSTER_MANAGEMENT = SET_OFF;
81
81
  const DEFAULT_CACHE_SET = SET_OFF;
82
82
  const DEFAULT_TOPIC_SET = SET_OFF;
83
83
  const DEFAULT_REGISTRATION_SET = SET_ON;
84
+ const DEFAULT_REGISTRATION_AFTER_POSTOPS_SET = SET_OFF;
84
85
  const DEFAULT_INTERCEPT_ERROR = SET_ON;
85
86
 
86
87
  const DEFAULT_REGISTRATION_RETRY = 3000; // in ms
@@ -98,84 +99,85 @@ const SUPPORTED_SWAGGER_FILE_PROVIDERS = [DEFAULT_SWAGGER_FILE_PROVIDER, 'swagge
98
99
  const DEFAULT_BITBUCKET_USERNAME = ' ';
99
100
  const DEFAULT_BITBUCKET_PASSWORD = ' ';
100
101
 
101
- module.exports = {
102
- SUMOLOGIC,
103
- AWS_S3,
102
+ export {
104
103
  ALL,
105
- SET_ON,
106
- SET_OFF,
107
- YES,
108
- NO,
104
+ AWS_S3,
109
105
  CUSTOMER_CODE_SEP,
110
- NO_PUBLIC_PROVIDER,
111
- NO_GENERIC,
112
- ENV_VARIABLE,
113
- DEFAULT_CUSTOMER_CODE,
114
- REDIS_BASE_URL,
115
- MONGO_BASE_URL,
116
- MONGO_BASE_URL_SRV,
117
- SWAGGER_EXT,
118
- SWAGGER_SEP,
119
- PRODUCTIONS,
120
- DEFAULT_ENV,
121
- DEFAULT_LOCATION_PROVIDER,
122
- DEFAULT_CLOUD_PROVIDER,
123
- 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,
124
113
  DEFAULT_CACHE_CONNECTION_TIMEOUT,
114
+ DEFAULT_CACHE_IP,
125
115
  DEFAULT_CACHE_RECONNECTION_OFFSET,
126
- DEFAULT_CACHE_VALIDATION_CHECK,
127
116
  DEFAULT_CACHE_REQUEST_TTL,
128
- DEFAULT_CACHE_API_ID_TTL,
129
- DEFAULT_CACHE_API_OPTION_TTL,
130
- DEFAULT_REDIS_RECONNECT_TRIES,
131
- DEFAULT_REDIS_RECONNECT_INTERVAL,
132
- DEFAULT_REDIS_REQUEST_MAX_MEMORY,
133
- DEFAULT_REDIS_REQUEST_MAX_MEMORY_POLICY,
134
- DEFAULT_REDIS_SOCKET_KEEPALIVE,
135
- DEFAULT_REDIS_DISABLE_OFFLINE_QUEUE,
136
- DEFAULT_AWS_REGION,
137
- DEFAULT_AWS_LOCAL_PROPERTIES,
138
- DEFAULT_DYNAMODB_LOCAL_URL,
139
- DEFAULT_DYNAMO_THROUGHPUT_READ,
140
- DEFAULT_DYNAMO_THROUGHPUT_WRITE,
141
- DEFAULT_DYNAMO_THROUGHPUT,
142
- DEFAULT_MONGO_MAX_POOL_SIZE,
143
- DEFAULT_MONGO_MIN_POOL_SIZE,
144
- DEFAULT_MONGO_MAX_IDLE_TIME,
145
- DEFAULT_MONGO_SOCKET_TIMEOUT,
146
- DEFAULT_MONGO_FAMILY,
147
- DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
148
- 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,
149
123
  DEFAULT_DATABASE_IP,
150
- DEFAULT_DATABASE_USER,
151
124
  DEFAULT_DATABASE_PASSWORD,
152
- DEFAULT_DATABASE_CONNECTION_TIMEOUT,
153
125
  DEFAULT_DATABASE_RECONNECTION_OFFSET,
126
+ DEFAULT_DATABASE_USER,
154
127
  DEFAULT_DATABASE_VALIDATION_CHECK,
128
+ DEFAULT_DYNAMODB_LOCAL_URL,
129
+ DEFAULT_DYNAMO_THROUGHPUT,
130
+ DEFAULT_DYNAMO_THROUGHPUT_READ,
131
+ DEFAULT_DYNAMO_THROUGHPUT_WRITE,
155
132
  DEFAULT_ENCRYPTION_SET,
133
+ DEFAULT_ENV,
134
+ DEFAULT_EXIT_DELAY,
135
+ DEFAULT_FILTER_FILE,
136
+ DEFAULT_INTERCEPT_ERROR,
156
137
  DEFAULT_KMS_PROVIDER,
138
+ DEFAULT_LOCATION_PROVIDER,
157
139
  DEFAULT_LOG_LEVEL,
158
- DEFAULT_FILTER_FILE,
159
- DEFAULT_EXIT_DELAY,
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,
160
147
  DEFAULT_NO_STACK,
161
- DEFAULT_USER_DEFINITIONS_FILE,
162
- DEFAULT_S3_AWS_TIMEOUT,
163
- DEFAULT_S3_AWS_MAX_SIZE,
164
- DEFAULT_S3_AWS_MAX_EVENTS,
165
- DEFAULT_SERVER_SECURITY_SET,
166
- DEFAULT_CLUSTER_MANAGEMENT,
167
- DEFAULT_CACHE_SET,
168
- DEFAULT_TOPIC_SET,
169
- DEFAULT_REGISTRATION_SET,
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,
154
+ DEFAULT_REGISTRATION_AFTER_POSTOPS_SET,
170
155
  DEFAULT_REGISTRATION_RETRY,
156
+ DEFAULT_REGISTRATION_SET,
171
157
  DEFAULT_REQUEST_TIMEOUT,
172
- DEFAULT_SERVER_PUBLIC_PROTOCOL,
158
+ DEFAULT_S3_AWS_MAX_EVENTS,
159
+ DEFAULT_S3_AWS_MAX_SIZE,
160
+ DEFAULT_S3_AWS_TIMEOUT,
173
161
  DEFAULT_SERVER_PUBLIC_DOMAIN_NAME,
174
- DEFAULT_ADMIN_EXTERNAL_ID,
162
+ DEFAULT_SERVER_PUBLIC_PROTOCOL,
163
+ DEFAULT_SERVER_SECURITY_SET,
175
164
  DEFAULT_SWAGGER_DIR,
176
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,
177
179
  SUPPORTED_SWAGGER_FILE_PROVIDERS,
178
- DEFAULT_INTERCEPT_ERROR,
179
- DEFAULT_BITBUCKET_USERNAME,
180
- DEFAULT_BITBUCKET_PASSWORD,
180
+ SWAGGER_EXT,
181
+ SWAGGER_SEP,
182
+ YES,
181
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": "5.0.12",
3
+ "version": "6.0.0",
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 --ignore-path .gitignore .",
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": "^1.7.10",
33
- "@mimik/sumologic-winston-logger": "^1.6.20",
34
- "@mimik/user-filters": "^1.3.7",
33
+ "@mimik/request-helper": "^2.0.0",
34
+ "@mimik/sumologic-winston-logger": "^2.0.1",
35
+ "@mimik/user-filters": "^2.0.0",
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": "9.0.1"
44
+ "uuid": "11.1.0"
44
45
  },
45
46
  "devDependencies": {
46
- "@mimik/eslint-plugin-dependencies": "^2.4.6",
47
- "@mimik/eslint-plugin-document-env": "^1.0.6",
48
- "eslint": "8.57.0",
49
- "eslint-config-airbnb": "19.0.4",
50
- "eslint-plugin-import": "2.29.1",
51
- "eslint-plugin-jsx-a11y": "6.8.0",
52
- "eslint-plugin-react": "7.34.0",
53
- "eslint-plugin-react-hooks": "4.6.0",
54
- "husky": "9.0.11",
55
- "jsdoc-to-markdown": "8.0.1"
47
+ "@eslint/js": "9.22.0",
48
+ "@mimik/eslint-plugin-document-env": "^2.0.2",
49
+ "@stylistic/eslint-plugin": "4.2.0",
50
+ "eslint": "9.22.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
- }