@mimik/configuration 5.0.10 → 5.0.12

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
@@ -161,8 +161,6 @@ When `mongodb` is used the following environment variables are used for the conf
161
161
  | MONGO_REPLICAT_SET | specifies the name of the replica set, if the mongod is a member of a replica set | | not mandatory
162
162
  | MONGO_WAIT_QUEUE_MULTIPLE | a number that the driver multiples the maxPoolSize value to, to provide the maximum number of threads allowed to wait for a connection to become available from the pool | | no mandatory
163
163
  | MONGO_WAIT_QUEUE_TIMEOUT | the maximum time in milliseconds that a thread can wait for a connection to become available | | not mandatory
164
- | MONGO_KEEP_ALIVE | pall th kep the connection with the database alive | true |
165
- | MONGO_KEEP_ALIVE_INITIAL_DELAY | is the number of milliseconds to wait before initiating keepAlive on the socket | 300000 | in milliseconds
166
164
  | MONGO_SOCKET_TIMEOUT | The time in milliseconds to attempt a send or receive on a socket before the attempt times out | 20000 | in milliseconds
167
165
  | MONGO_FAMILY | IP address family | 4 | 4 -> IPV4, 6 -> IPV6
168
166
  | MONGO_SERVER_SELECTION_TIMEOUT | the MongoDB driver will try to find a server to send any given operation to, and keep retrying for serverSelectionTimeoutMS milliseconds | 30000 | in milliseconds
package/index.js CHANGED
@@ -1,5 +1,11 @@
1
1
  /* eslint no-process-env: "off" */
2
- const _ = require('lodash');
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');
3
9
  const fs = require('fs');
4
10
  const ip = require('ip');
5
11
  const uuid = require('uuid');
@@ -56,8 +62,6 @@ const {
56
62
  DEFAULT_MONGO_MAX_POOL_SIZE,
57
63
  DEFAULT_MONGO_MIN_POOL_SIZE,
58
64
  DEFAULT_MONGO_MAX_IDLE_TIME,
59
- DEFAULT_MONGO_KEEP_ALIVE,
60
- DEFAULT_MONGO_KEEP_ALIVE_INITIAL_DELAY,
61
65
  DEFAULT_MONGO_SOCKET_TIMEOUT,
62
66
  DEFAULT_MONGO_FAMILY,
63
67
  DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
@@ -94,6 +98,8 @@ const {
94
98
  DEFAULT_INTERCEPT_ERROR,
95
99
  DEFAULT_BITBUCKET_USERNAME,
96
100
  DEFAULT_BITBUCKET_PASSWORD,
101
+ YES,
102
+ NO,
97
103
  } = require('./lib/common');
98
104
 
99
105
  let display = true;
@@ -108,8 +114,10 @@ const setupRedis = () => {
108
114
  const reconnectTries = parseInt(process.env.REDIS_RECONNECT_TRIES, 10) || DEFAULT_REDIS_RECONNECT_TRIES;
109
115
  const reconnectInterval = parseInt(process.env.REDIS_RECONNECT_INTERVAL, 10) || DEFAULT_REDIS_RECONNECT_INTERVAL;
110
116
  let url = REDIS_BASE_URL;
117
+ let noAuthUrl = url;
111
118
  if (username && password) url += `${username}:${password}@`;
112
119
  url += domain;
120
+ noAuthUrl += domain;
113
121
 
114
122
  const clusterConfig = {
115
123
  set: process.env.CACHE_CLUSTER_SET || SET_OFF,
@@ -125,6 +133,7 @@ const setupRedis = () => {
125
133
  validationCheck: parseInt(process.env.CACHE_VALIDATION_CHECK, 10) || DEFAULT_CACHE_VALIDATION_CHECK,
126
134
  reconnectOffset: parseInt(process.env.CACHE_RECONNECTION_OFFSET, 10) || DEFAULT_CACHE_RECONNECTION_OFFSET,
127
135
  url,
136
+ noAuthUrl,
128
137
  cluster: clusterConfig,
129
138
  options: {
130
139
  socket: {
@@ -142,7 +151,7 @@ const setupRedis = () => {
142
151
  }
143
152
  return undefined;
144
153
  },
145
- disableOfflineQueue: (process.env.REDIS_DISABLE_OFFLINE_QUEUE === 'yes') || DEFAULT_REDIS_DISABLE_OFFLINE_QUEUE,
154
+ disableOfflineQueue: (process.env.REDIS_DISABLE_OFFLINE_QUEUE === YES) || DEFAULT_REDIS_DISABLE_OFFLINE_QUEUE,
146
155
  },
147
156
  maxMemory: process.env.REDIS_REQUEST_MAX_MEMORY || DEFAULT_REDIS_REQUEST_MAX_MEMORY,
148
157
  maxMemoryPolicy: process.env.REDIS_REQUEST_MAX_MEMORY_POLICY || DEFAULT_REDIS_REQUEST_MAX_MEMORY_POLICY,
@@ -178,17 +187,17 @@ const setupDynamo = (dbOpts) => {
178
187
  },
179
188
  tableName: dbOpts.table,
180
189
  };
181
- if (!_.isNil(process.env.DYNAMODB_AWS_ACCESS_KEY_ID)) dbConfig.accessKeyId = process.env.DYNAMODB_AWS_ACCESS_KEY_ID;
182
- if (!_.isNil(process.env.DYNAMODB_AWS_SECRET_ACCESS_KEY)) dbConfig.secretAccessKey = process.env.DYNAMODB_AWS_SECRET_ACCESS_KEY;
190
+ if (!isNil(process.env.DYNAMODB_AWS_ACCESS_KEY_ID)) dbConfig.accessKeyId = process.env.DYNAMODB_AWS_ACCESS_KEY_ID;
191
+ if (!isNil(process.env.DYNAMODB_AWS_SECRET_ACCESS_KEY)) dbConfig.secretAccessKey = process.env.DYNAMODB_AWS_SECRET_ACCESS_KEY;
183
192
 
184
193
  if (process.env.DYNAMO_SCHEMA_THROUGHPUT === 'ON_DEMAND') {
185
194
  dbConfig.schemaThroughput = process.env.DYNAMO_SCHEMA_THROUGHPUT;
186
195
  delete dbConfig.throughput;
187
196
  }
188
- else if (!_.isNil(process.env.DYNAMO_SCHEMA_THROUGHPUT)) {
197
+ else if (!isNil(process.env.DYNAMO_SCHEMA_THROUGHPUT)) {
189
198
  const throughput = parseInt(process.env.DYNAMO_SCHEMA_THROUGHPUT, 10);
190
199
 
191
- if (_.isNil(throughput) || _.isNaN(throughput)) dbConfig.schemaThroughput = DEFAULT_DYNAMO_THROUGHPUT;
200
+ if (isNil(throughput) || isNaN(throughput)) dbConfig.schemaThroughput = DEFAULT_DYNAMO_THROUGHPUT;
192
201
  else dbConfig.schemaThroughput = throughput;
193
202
  }
194
203
  return dbConfig;
@@ -203,9 +212,9 @@ const setupMongo = (dbOpts) => {
203
212
  maxIdleTimeMS: parseInt(process.env.MONGO_MAX_IDLE_TIME, 10) || DEFAULT_MONGO_MAX_IDLE_TIME,
204
213
  };
205
214
  // string variables without default
206
- if (process.env.MONGO_SSL === 'yes') stringOptions.ssl = true; // default value of mongo driver is false
207
- if (process.env.MONGO_SSL_VALIDATE === 'no') stringOptions.sslValidate = false; // default value of mongo driver is true, if ssl is true
208
- if (process.env.MONGO_SSL_ALLOW_INVALID_HOSTNAMES === 'yes') stringOptions.allowInvalidHostnames = true;
215
+ if (process.env.MONGO_SSL === YES) stringOptions.ssl = true; // default value of mongo driver is false
216
+ if (process.env.MONGO_SSL_VALIDATE === NO) stringOptions.sslValidate = false; // default value of mongo driver is true, if ssl is true
217
+ if (process.env.MONGO_SSL_ALLOW_INVALID_HOSTNAMES === YES) stringOptions.allowInvalidHostnames = true;
209
218
  // 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
210
219
  if (process.env.MONGO_REPLICAT_SET) stringOptions.replicaSet = process.env.MONGO_REPLICAT_SET;
211
220
  if (process.env.MONGO_AUTH_DATABASE) stringOptions.authSource = process.env.MONGO_AUTH_DATABASE;
@@ -223,7 +232,7 @@ const setupMongo = (dbOpts) => {
223
232
  const user = process.env.DATABASE_USER || DEFAULT_DATABASE_USER;
224
233
  const password = process.env.DATABASE_PASSWORD || DEFAULT_DATABASE_PASSWORD;
225
234
  const qs = processStringOptions();
226
- let url = (process.env.MONGO_USE_SRV === 'yes') ? MONGO_BASE_URL_SRV : MONGO_BASE_URL;
235
+ let url = (process.env.MONGO_USE_SRV === YES) ? MONGO_BASE_URL_SRV : MONGO_BASE_URL;
227
236
  let noAuthUrl = url;
228
237
 
229
238
  if (user && password) url = `${url}${user}:${password}@`;
@@ -248,8 +257,6 @@ const setupMongo = (dbOpts) => {
248
257
  noAuthUrl,
249
258
  options: {
250
259
  family: parseInt(process.env.MONGO_FAMILY, 10) || DEFAULT_MONGO_FAMILY,
251
- keepAlive: process.env.MONGO_KEEP_ALIVE || DEFAULT_MONGO_KEEP_ALIVE,
252
- keepAliveInitialDelay: parseInt(process.env.MONGO_KEEP_ALIVE_INITIAL_DELAY, 10) || DEFAULT_MONGO_KEEP_ALIVE_INITIAL_DELAY,
253
260
  socketTimeoutMS: parseInt(process.env.MONGO_SOCKET_TIMEOUT, 10) || DEFAULT_MONGO_SOCKET_TIMEOUT,
254
261
  serverSelectionTimeoutMS: parseInt(process.env.MONGO_SERVER_SELECTION_TIMEOUT, 10) || DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
255
262
  heartbeatFrequencyMS: parseInt(process.env.MONGO_HEARTBEAT_FREQUENCY, 10) || DEFAULT_MONGO_HEARTBEAT_FREQUENCY,
@@ -261,7 +268,7 @@ const setupLocationProvider = () => {
261
268
  const url = process.env.LOCATION_PROVIDER;
262
269
 
263
270
  if (!url) return NO_PUBLIC_PROVIDER;
264
- if (_.includes(locParams, url)) return url;
271
+ if (includes(locParams, url)) return url;
265
272
  const locationProvider = { url };
266
273
 
267
274
  if (process.env.LOCATION_PROVIDER_KEY) locationProvider.key = process.env.LOCATION_PROVIDER_KEY;
@@ -294,8 +301,8 @@ const setupLog = () => {
294
301
  maxSize: parseInt(process.env.S3_AWS_MAX_SIZE, 10) || DEFAULT_S3_AWS_MAX_SIZE,
295
302
  maxEvents: parseInt(process.env.S3_AWS_MAX_EVENTS, 10) || DEFAULT_S3_AWS_MAX_EVENTS,
296
303
  };
297
- if (!_.isNil(process.env.S3_AWS_ACCESS_KEY_ID)) logInfo[AWS_S3].accessKeyId = process.env.S3_AWS_ACCESS_KEY_ID;
298
- if (!_.isNil(process.env.S3_AWS_SECRET_ACCESS_KEY)) logInfo[AWS_S3].secretAccessKey = process.env.S3_AWS_SECRET_ACCESS_KEY;
304
+ if (!isNil(process.env.S3_AWS_ACCESS_KEY_ID)) logInfo[AWS_S3].accessKeyId = process.env.S3_AWS_ACCESS_KEY_ID;
305
+ if (!isNil(process.env.S3_AWS_SECRET_ACCESS_KEY)) logInfo[AWS_S3].secretAccessKey = process.env.S3_AWS_SECRET_ACCESS_KEY;
299
306
  }
300
307
  return logInfo;
301
308
  };
@@ -304,13 +311,13 @@ const setupTopic = (topicOpts) => {
304
311
  const topicConfig = {
305
312
  region: process.env.SNS_AWS_REGION || DEFAULT_AWS_REGION,
306
313
  name: topicOpts.name,
307
- isFifoTopic: process.env.SET_SNS_TOPIC_FIFO === 'yes',
314
+ isFifoTopic: process.env.SET_SNS_TOPIC_FIFO === YES,
308
315
  contentBasedDeduplication: false,
309
316
  };
310
317
 
311
- if (topicConfig.isFifoTopic) topicConfig.contentBasedDeduplication = process.env.SET_SNS_CONTENT_DEDUPLICATION === 'yes';
312
- if (!_.isNil(process.env.SNS_AWS_ACCESS_KEY_ID)) topicConfig.accessKeyId = process.env.SNS_AWS_ACCESS_KEY_ID;
313
- if (!_.isNil(process.env.SNS_AWS_SECRET_ACCESS_KEY)) topicConfig.secretAccessKey = process.env.SNS_AWS_SECRET_ACCESS_KEY;
318
+ if (topicConfig.isFifoTopic) topicConfig.contentBasedDeduplication = process.env.SET_SNS_CONTENT_DEDUPLICATION === YES;
319
+ if (!isNil(process.env.SNS_AWS_ACCESS_KEY_ID)) topicConfig.accessKeyId = process.env.SNS_AWS_ACCESS_KEY_ID;
320
+ if (!isNil(process.env.SNS_AWS_SECRET_ACCESS_KEY)) topicConfig.secretAccessKey = process.env.SNS_AWS_SECRET_ACCESS_KEY;
314
321
 
315
322
  return topicConfig;
316
323
  };
@@ -328,8 +335,8 @@ const setupEncryption = (encryptionOpts) => {
328
335
  encryptionConfig.region = process.env.MASTER_KEY_AWS_REGION || DEFAULT_AWS_REGION;
329
336
  encryptionConfig.masterKeyARN = process.env.MASTER_KEY_ARN;
330
337
 
331
- if (!_.isNil(process.env.ENCRYPTION_ACCESS_KEY_ID)) encryptionConfig.aws.accessKeyId = process.env.ENCRYPTION_ACCESS_KEY_ID;
332
- if (!_.isNil(process.env.ENCRYPTION_SECRET_ACCESS_KEY)) encryptionConfig.aws.secretAccessKey = process.env.ENCRYPTION_SECRET_ACCESS_KEY;
338
+ if (!isNil(process.env.ENCRYPTION_ACCESS_KEY_ID)) encryptionConfig.aws.accessKeyId = process.env.ENCRYPTION_ACCESS_KEY_ID;
339
+ if (!isNil(process.env.ENCRYPTION_SECRET_ACCESS_KEY)) encryptionConfig.aws.secretAccessKey = process.env.ENCRYPTION_SECRET_ACCESS_KEY;
333
340
  }
334
341
  else encryptionConfig.localMasterKey = process.env.LOCAL_MASTER_KEY;
335
342
 
@@ -362,7 +369,7 @@ const checkConfig = (config) => {
362
369
  if (typeof node[prop] === 'object' && node[prop]) {
363
370
  traverseNodeSync(node[prop], `${path}.${prop}`);
364
371
  }
365
- else if (_.isUndefined(node[prop])) errors.push({ reason: 'missing', value: `${path}.${prop}` });
372
+ else if (isUndefined(node[prop])) errors.push({ reason: 'missing', value: `${path}.${prop}` });
366
373
  });
367
374
  }
368
375
 
@@ -392,7 +399,7 @@ const checkConfig = (config) => {
392
399
  * | NODE_ENV | environnment of the microservice |
393
400
  */
394
401
  const isProd = () => {
395
- if (_.isString(process.env.NODE_ENV)) return _.includes(PRODUCTIONS, process.env.NODE_ENV.toLowerCase());
402
+ if (isString(process.env.NODE_ENV)) return includes(PRODUCTIONS, process.env.NODE_ENV.toLowerCase());
396
403
  return false;
397
404
  };
398
405
 
@@ -412,7 +419,7 @@ const configuration = {
412
419
  customerCodeSep: process.env.CUSTOMER_CODE ? CUSTOMER_CODE_SEP : '',
413
420
  securitySet: process.env.SERVER_SECURITY_SET || DEFAULT_SERVER_SECURITY_SET,
414
421
  isMSTSet,
415
- port: process.env.SERVER_PORT,
422
+ port: parseInt(process.env.SERVER_PORT, 10),
416
423
  interceptError: process.env.INTERCEPT_ERROR || DEFAULT_INTERCEPT_ERROR,
417
424
  ip: {
418
425
  local: process.env.SERVER_LOCAL_IPV4,
@@ -437,7 +444,7 @@ const configuration = {
437
444
  key: process.env.OAUTH_GENERIC_KEY || NO_GENERIC,
438
445
  audience: process.env.OAUTH_GENERIC_AUDIENCE || NO_GENERIC,
439
446
  },
440
- apiKeys: process.env.API_KEYS ? _.split(_.trim(process.env.API_KEYS), /\s*,\s*/) : [],
447
+ apiKeys: process.env.API_KEYS ? split(trim(process.env.API_KEYS), /\s*,\s*/) : [],
441
448
  },
442
449
  cluster: {
443
450
  management: process.env.CLUSTER_MANAGEMENT || DEFAULT_CLUSTER_MANAGEMENT,
@@ -624,8 +631,6 @@ configuration.locationProvider = setupLocationProvider();
624
631
  * | MONGO_REPLICAT_SET | specifies the name of the replica set, if the mongod is a member of a replica set | | not mandatory
625
632
  * | MONGO_WAIT_QUEUE_MULTIPLE | a number that the driver multiples the maxPoolSize value to, to provide the maximum number of threads allowed to wait for a connection to become available from the pool | | no mandatory
626
633
  * | MONGO_WAIT_QUEUE_TIMEOUT | the maximum time in milliseconds that a thread can wait for a connection to become available | | not mandatory
627
- * | MONGO_KEEP_ALIVE | pall th kep the connection with the database alive | true |
628
- * | MONGO_KEEP_ALIVE_INITIAL_DELAY | is the number of milliseconds to wait before initiating keepAlive on the socket | 300000 | in milliseconds
629
634
  * | MONGO_SOCKET_TIMEOUT | The time in milliseconds to attempt a send or receive on a socket before the attempt times out | 20000 | in milliseconds
630
635
  * | MONGO_FAMILY | IP address family | 4 | 4 -> IPV4, 6 -> IPV6
631
636
  * | MONGO_SERVER_SELECTION_TIMEOUT | the MongoDB driver will try to find a server to send any given operation to, and keep retrying for serverSelectionTimeoutMS milliseconds | 30000 | in milliseconds
package/lib/common.js CHANGED
@@ -1,3 +1,7 @@
1
+ const YES = 'yes';
2
+ const NO = 'no';
3
+ const LOCAL = 'local';
4
+
1
5
  const SUMOLOGIC = 'sumologic';
2
6
  const AWS_S3 = 'awsS3';
3
7
  const ALL = 'all';
@@ -15,7 +19,7 @@ const SWAGGER_SEP = '_';
15
19
  const CUSTOMER_CODE_SEP = '__';
16
20
  const PRODUCTIONS = ['prod', 'production'];
17
21
 
18
- const DEFAULT_ENV = 'local';
22
+ const DEFAULT_ENV = LOCAL;
19
23
  const DEFAULT_LOCATION_PROVIDER = NO_PUBLIC_PROVIDER;
20
24
  const DEFAULT_CLOUD_PROVIDER = 'noCloud';
21
25
  const DEFAULT_CUSTOMER_CODE = '';
@@ -46,8 +50,6 @@ const DEFAULT_DYNAMO_THROUGHPUT = 1;
46
50
  const DEFAULT_MONGO_MAX_POOL_SIZE = 10;
47
51
  const DEFAULT_MONGO_MIN_POOL_SIZE = 0;
48
52
  const DEFAULT_MONGO_MAX_IDLE_TIME = 30000; // in ms
49
- const DEFAULT_MONGO_KEEP_ALIVE = true;
50
- const DEFAULT_MONGO_KEEP_ALIVE_INITIAL_DELAY = 300000; // in ms
51
53
  const DEFAULT_MONGO_SOCKET_TIMEOUT = 20000; // in ms
52
54
  const DEFAULT_MONGO_FAMILY = 4; // 4 -> ipv4, 6 -> ipv6
53
55
  const DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT = 30000; // in ms
@@ -61,12 +63,12 @@ const DEFAULT_DATABASE_RECONNECTION_OFFSET = 5; // in seconds
61
63
  const DEFAULT_DATABASE_VALIDATION_CHECK = 1000; // in ms
62
64
 
63
65
  const DEFAULT_ENCRYPTION_SET = SET_OFF;
64
- const DEFAULT_KMS_PROVIDER = 'local';
66
+ const DEFAULT_KMS_PROVIDER = LOCAL;
65
67
 
66
68
  const DEFAULT_LOG_LEVEL = 'debug';
67
69
  const DEFAULT_FILTER_FILE = NOT_SET;
68
70
  const DEFAULT_EXIT_DELAY = 2000; // in ms
69
- const DEFAULT_NO_STACK = 'yes';
71
+ const DEFAULT_NO_STACK = YES;
70
72
 
71
73
  const DEFAULT_USER_DEFINITIONS_FILE = NOT_SET;
72
74
 
@@ -102,6 +104,8 @@ module.exports = {
102
104
  ALL,
103
105
  SET_ON,
104
106
  SET_OFF,
107
+ YES,
108
+ NO,
105
109
  CUSTOMER_CODE_SEP,
106
110
  NO_PUBLIC_PROVIDER,
107
111
  NO_GENERIC,
@@ -138,8 +142,6 @@ module.exports = {
138
142
  DEFAULT_MONGO_MAX_POOL_SIZE,
139
143
  DEFAULT_MONGO_MIN_POOL_SIZE,
140
144
  DEFAULT_MONGO_MAX_IDLE_TIME,
141
- DEFAULT_MONGO_KEEP_ALIVE,
142
- DEFAULT_MONGO_KEEP_ALIVE_INITIAL_DELAY,
143
145
  DEFAULT_MONGO_SOCKET_TIMEOUT,
144
146
  DEFAULT_MONGO_FAMILY,
145
147
  DEFAULT_MONGO_SERVER_SELECTION_TIMEOUT,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mimik/configuration",
3
- "version": "5.0.10",
3
+ "version": "5.0.12",
4
4
  "description": "Common configuration for mimik services",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -9,8 +9,7 @@
9
9
  "test": "echo \"Error: no test specified\" && exit 0",
10
10
  "test-ci": "echo \"Error: no test specified\" && exit 0",
11
11
  "prepublishOnly": "npm run docs && npm run lint && npm run test-ci",
12
- "commit-ready": "npm run docs && npm run lint && npm run test-ci",
13
- "prepare": "husky install"
12
+ "commit-ready": "npm run docs && npm run lint && npm run test-ci"
14
13
  },
15
14
  "husky": {
16
15
  "hooks": {
@@ -33,20 +32,26 @@
33
32
  "@mimik/request-helper": "^1.7.10",
34
33
  "@mimik/sumologic-winston-logger": "^1.6.20",
35
34
  "@mimik/user-filters": "^1.3.7",
36
- "ip": "2.0.0",
37
- "lodash": "4.17.21",
35
+ "ip": "2.0.1",
36
+ "lodash.includes": "4.3.0",
37
+ "lodash.isnan": "3.0.2",
38
+ "lodash.isnil": "4.0.0",
39
+ "lodash.isstring": "4.0.1",
40
+ "lodash.isundefined": "3.0.1",
41
+ "lodash.split": "4.4.2",
42
+ "lodash.trim": "4.5.1",
38
43
  "uuid": "9.0.1"
39
44
  },
40
45
  "devDependencies": {
41
46
  "@mimik/eslint-plugin-dependencies": "^2.4.6",
42
47
  "@mimik/eslint-plugin-document-env": "^1.0.6",
43
- "eslint": "8.56.0",
48
+ "eslint": "8.57.0",
44
49
  "eslint-config-airbnb": "19.0.4",
45
50
  "eslint-plugin-import": "2.29.1",
46
51
  "eslint-plugin-jsx-a11y": "6.8.0",
47
- "eslint-plugin-react": "7.33.2",
52
+ "eslint-plugin-react": "7.34.0",
48
53
  "eslint-plugin-react-hooks": "4.6.0",
49
- "husky": "8.0.3",
50
- "jsdoc-to-markdown": "8.0.0"
54
+ "husky": "9.0.11",
55
+ "jsdoc-to-markdown": "8.0.1"
51
56
  }
52
57
  }