@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 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)
@@ -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
- 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,
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
- DEFAULT_SERVER_PUBLIC_PROTOCOL,
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
- DEFAULT_ADMIN_EXTERNAL_ID,
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
- DEFAULT_INTERCEPT_ERROR,
100
- DEFAULT_BITBUCKET_USERNAME,
101
- DEFAULT_BITBUCKET_PASSWORD,
80
+ SWAGGER_EXT,
81
+ SWAGGER_SEP,
102
82
  YES,
103
- NO,
104
- } = 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
+ */
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, 10) || DEFAULT_REDIS_RECONNECT_TRIES;
116
- 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;
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 retryStrategy(opts) {
143
- if (opts.timesConnected > 0 && opts.attempt < reconnectTries) {
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(1);
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
- request: {
165
- TTL: parseInt(process.env.CACHE_REQUEST_TTL, 10) || DEFAULT_CACHE_REQUEST_TTL,
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, 10) || DEFAULT_DATABASE_CONNECTION_TIMEOUT,
177
- validationCheck: parseInt(process.env.DATABASE_VALIDATION_CHECK, 10) || DEFAULT_DATABASE_VALIDATION_CHECK,
178
- 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,
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, 10) || DEFAULT_DYNAMO_THROUGHPUT_READ,
183
- 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,
184
190
  },
185
191
  schemaThroughput: {
186
- read: parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT_READ, 10) || DEFAULT_DYNAMO_THROUGHPUT_READ,
187
- 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,
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, 10);
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, 10) || DEFAULT_MONGO_MAX_POOL_SIZE,
212
- minPoolSize: parseInt(process.env.MONGO_MIN_POOL_SIZE, 10) || DEFAULT_MONGO_MIN_POOL_SIZE,
213
- 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,
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, 10);
225
- 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
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
- domain,
254
+ connectTimeout: parseInt(process.env.DATABASE_CONNECTION_TIMEOUT, DECIMAL) || DEFAULT_DATABASE_CONNECTION_TIMEOUT,
248
255
  database,
249
- 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
+ },
250
264
  password,
251
- connectTimeout: parseInt(process.env.DATABASE_CONNECTION_TIMEOUT, 10) || DEFAULT_DATABASE_CONNECTION_TIMEOUT,
252
- validationCheck: parseInt(process.env.DATABASE_VALIDATION_CHECK, 10) || DEFAULT_DATABASE_VALIDATION_CHECK,
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
- noAuthUrl,
259
- options: {
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, 10) || DEFAULT_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, 10) || DEFAULT_S3_AWS_TIMEOUT,
302
- maxSize: parseInt(process.env.S3_AWS_MAX_SIZE, 10) || DEFAULT_S3_AWS_MAX_SIZE,
303
- 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,
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 > 0) encryptionConfig.keys = encryptionOpts.keys;
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 { customDefinitions = JSON.parse(fs.readFileSync(userDefinitionsFile).toString()); }
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
- function traverseNodeSync(node, path) {
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 === 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' });
380
389
 
381
- if (errors.length > 0) {
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 = process.env.CONSOLE_LEVEL || DEFAULT_LOG_LEVEL;
410
- process.env.LOG_LEVEL = process.env.LOG_LEVEL || DEFAULT_LOG_LEVEL;
411
- 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();
412
421
 
413
422
  const configuration = {
414
- nodeEnvironment: process.env.NODE_ENV || DEFAULT_ENV,
415
- locationProvider: process.env.LOCATION_PROVIDER || DEFAULT_LOCATION_PROVIDER,
423
+ cache: {
424
+ set: process.env.CACHE_SET || DEFAULT_CACHE_SET,
425
+ },
416
426
  cloudProvider: process.env.CLOUD_PROVIDER || DEFAULT_CLOUD_PROVIDER,
417
- serverSettings: {
418
- id: process.env.SERVER_ID,
419
- customerCode: process.env.CUSTOMER_CODE || DEFAULT_CUSTOMER_CODE,
420
- customerCodeSep: process.env.CUSTOMER_CODE ? CUSTOMER_CODE_SEP : '',
421
- securitySet: process.env.SERVER_SECURITY_SET || DEFAULT_SERVER_SECURITY_SET,
422
- isMSTSet,
423
- port: parseInt(process.env.SERVER_PORT, 10),
424
- interceptError: process.env.INTERCEPT_ERROR || DEFAULT_INTERCEPT_ERROR,
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
- encryption: {
458
- set: process.env.ENCRYPTION_SET || DEFAULT_ENCRYPTION_SET,
459
- },
460
- userDefinitions: {
461
- 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
+ },
462
479
  },
463
480
  topic: {
464
481
  set: process.env.TOPIC_SET || DEFAULT_TOPIC_SET,
465
482
  },
466
- dependencies: {
467
- mIT: {
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 (!configuration.security[securityItem]) {
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
- module.exports = {
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
- module.exports = {
103
- SUMOLOGIC,
104
- AWS_S3,
102
+ export {
105
103
  ALL,
106
- SET_ON,
107
- SET_OFF,
108
- YES,
109
- NO,
104
+ AWS_S3,
110
105
  CUSTOMER_CODE_SEP,
111
- NO_PUBLIC_PROVIDER,
112
- NO_GENERIC,
113
- ENV_VARIABLE,
114
- DEFAULT_CUSTOMER_CODE,
115
- REDIS_BASE_URL,
116
- MONGO_BASE_URL,
117
- MONGO_BASE_URL_SRV,
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
- DEFAULT_CACHE_API_ID_TTL,
130
- DEFAULT_CACHE_API_OPTION_TTL,
131
- DEFAULT_REDIS_RECONNECT_TRIES,
132
- DEFAULT_REDIS_RECONNECT_INTERVAL,
133
- DEFAULT_REDIS_REQUEST_MAX_MEMORY,
134
- DEFAULT_REDIS_REQUEST_MAX_MEMORY_POLICY,
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
- DEFAULT_FILTER_FILE,
160
- 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,
161
147
  DEFAULT_NO_STACK,
162
- DEFAULT_USER_DEFINITIONS_FILE,
163
- DEFAULT_S3_AWS_TIMEOUT,
164
- DEFAULT_S3_AWS_MAX_SIZE,
165
- DEFAULT_S3_AWS_MAX_EVENTS,
166
- DEFAULT_SERVER_SECURITY_SET,
167
- DEFAULT_CLUSTER_MANAGEMENT,
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
- DEFAULT_SERVER_PUBLIC_PROTOCOL,
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
- DEFAULT_ADMIN_EXTERNAL_ID,
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
- DEFAULT_INTERCEPT_ERROR,
181
- DEFAULT_BITBUCKET_USERNAME,
182
- DEFAULT_BITBUCKET_PASSWORD,
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": "5.0.13",
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 --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.21",
34
- "@mimik/user-filters": "^1.3.7",
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": "10.0.0"
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.2",
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
- }