–ƒ–Hozifaelgharbawy commited on
Commit
d50360d
·
1 Parent(s): 88bc2f5
.env.example ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ PORT =
2
+
3
+ LOCAL_DB_CONNECTION_STRING =
4
+ DEV_DB_CONNECTION_STRING =
5
+
6
+ CURRENT_ENV = local
7
+ # CURRENT_ENV = development
.gitignore CHANGED
@@ -1,2 +1,3 @@
1
  node_modules/
2
  dist/
 
 
1
  node_modules/
2
  dist/
3
+ .env
package-lock.json CHANGED
@@ -8,6 +8,16 @@
8
  "name": "modrab-backend",
9
  "version": "1.0.0",
10
  "license": "ISC",
 
 
 
 
 
 
 
 
 
 
11
  "devDependencies": {
12
  "nodemon": "^3.0.2",
13
  "ts-node": "^10.9.2",
@@ -51,6 +61,47 @@
51
  "@jridgewell/sourcemap-codec": "^1.4.10"
52
  }
53
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  "node_modules/@tsconfig/node10": {
55
  "version": "1.0.9",
56
  "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
@@ -79,17 +130,40 @@
79
  "version": "20.10.4",
80
  "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
81
  "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==",
82
- "dev": true,
83
- "peer": true,
84
  "dependencies": {
85
  "undici-types": "~5.26.4"
86
  }
87
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  "node_modules/abbrev": {
89
  "version": "1.1.1",
90
  "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
91
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
92
- "dev": true
 
 
 
 
 
 
 
 
 
 
 
93
  },
94
  "node_modules/acorn": {
95
  "version": "8.11.2",
@@ -112,6 +186,25 @@
112
  "node": ">=0.4.0"
113
  }
114
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
  "node_modules/anymatch": {
116
  "version": "3.1.3",
117
  "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@@ -125,17 +218,51 @@
125
  "node": ">= 8"
126
  }
127
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  "node_modules/arg": {
129
  "version": "4.1.3",
130
  "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
131
  "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
132
  "dev": true
133
  },
 
 
 
 
 
134
  "node_modules/balanced-match": {
135
  "version": "1.0.2",
136
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
137
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
138
- "dev": true
 
 
 
 
 
 
 
 
 
 
 
 
139
  },
140
  "node_modules/binary-extensions": {
141
  "version": "2.2.0",
@@ -146,11 +273,46 @@
146
  "node": ">=8"
147
  }
148
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  "node_modules/brace-expansion": {
150
  "version": "1.1.11",
151
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
152
  "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
153
- "dev": true,
154
  "dependencies": {
155
  "balanced-match": "^1.0.0",
156
  "concat-map": "0.0.1"
@@ -168,6 +330,35 @@
168
  "node": ">=8"
169
  }
170
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  "node_modules/chokidar": {
172
  "version": "3.5.3",
173
  "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -195,11 +386,75 @@
195
  "fsevents": "~2.3.2"
196
  }
197
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  "node_modules/concat-map": {
199
  "version": "0.0.1",
200
  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
201
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
202
- "dev": true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
  },
204
  "node_modules/create-require": {
205
  "version": "1.1.1",
@@ -211,7 +466,6 @@
211
  "version": "4.3.4",
212
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
213
  "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
214
- "dev": true,
215
  "dependencies": {
216
  "ms": "2.1.2"
217
  },
@@ -224,6 +478,49 @@
224
  }
225
  }
226
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  "node_modules/diff": {
228
  "version": "4.0.2",
229
  "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
@@ -233,6 +530,139 @@
233
  "node": ">=0.3.1"
234
  }
235
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  "node_modules/fill-range": {
237
  "version": "7.0.1",
238
  "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -245,6 +675,79 @@
245
  "node": ">=8"
246
  }
247
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  "node_modules/fsevents": {
249
  "version": "2.3.3",
250
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -259,6 +762,66 @@
259
  "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
260
  }
261
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
262
  "node_modules/glob-parent": {
263
  "version": "5.1.2",
264
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -271,6 +834,17 @@
271
  "node": ">= 6"
272
  }
273
  },
 
 
 
 
 
 
 
 
 
 
 
274
  "node_modules/has-flag": {
275
  "version": "3.0.0",
276
  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -280,35 +854,157 @@
280
  "node": ">=4"
281
  }
282
  },
283
- "node_modules/ignore-by-default": {
284
  "version": "1.0.1",
285
- "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
286
- "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
287
- "dev": true
288
- },
289
- "node_modules/is-binary-path": {
290
- "version": "2.1.0",
291
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
292
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
293
- "dev": true,
294
  "dependencies": {
295
- "binary-extensions": "^2.0.0"
296
  },
297
- "engines": {
298
- "node": ">=8"
299
  }
300
  },
301
- "node_modules/is-extglob": {
302
- "version": "2.1.1",
303
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
304
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
305
- "dev": true,
306
  "engines": {
307
- "node": ">=0.10.0"
 
 
 
308
  }
309
  },
310
- "node_modules/is-glob": {
311
- "version": "4.0.3",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
312
  "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
313
  "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
314
  "dev": true,
@@ -328,11 +1024,18 @@
328
  "node": ">=0.12.0"
329
  }
330
  },
 
 
 
 
 
 
 
 
331
  "node_modules/lru-cache": {
332
  "version": "6.0.0",
333
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
334
  "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
335
- "dev": true,
336
  "dependencies": {
337
  "yallist": "^4.0.0"
338
  },
@@ -340,17 +1043,94 @@
340
  "node": ">=10"
341
  }
342
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  "node_modules/make-error": {
344
  "version": "1.3.6",
345
  "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
346
  "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
347
  "dev": true
348
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  "node_modules/minimatch": {
350
  "version": "3.1.2",
351
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
352
  "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
353
- "dev": true,
354
  "dependencies": {
355
  "brace-expansion": "^1.1.7"
356
  },
@@ -358,11 +1138,202 @@
358
  "node": "*"
359
  }
360
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
361
  "node_modules/ms": {
362
  "version": "2.1.2",
363
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
364
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
365
- "dev": true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  },
367
  "node_modules/nodemon": {
368
  "version": "3.0.2",
@@ -416,6 +1387,82 @@
416
  "node": ">=0.10.0"
417
  }
418
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
419
  "node_modules/picomatch": {
420
  "version": "2.3.1",
421
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
@@ -428,12 +1475,89 @@
428
  "url": "https://github.com/sponsors/jonschlinkert"
429
  }
430
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
431
  "node_modules/pstree.remy": {
432
  "version": "1.1.8",
433
  "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
434
  "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
435
  "dev": true
436
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
437
  "node_modules/readdirp": {
438
  "version": "3.6.0",
439
  "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -446,11 +1570,48 @@
446
  "node": ">=8.10.0"
447
  }
448
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
449
  "node_modules/semver": {
450
  "version": "7.5.4",
451
  "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
452
  "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
453
- "dev": true,
454
  "dependencies": {
455
  "lru-cache": "^6.0.0"
456
  },
@@ -461,6 +1622,108 @@
461
  "node": ">=10"
462
  }
463
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
464
  "node_modules/simple-update-notifier": {
465
  "version": "2.0.0",
466
  "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
@@ -473,6 +1736,54 @@
473
  "node": ">=10"
474
  }
475
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
476
  "node_modules/supports-color": {
477
  "version": "5.5.0",
478
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -485,6 +1796,22 @@
485
  "node": ">=4"
486
  }
487
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
488
  "node_modules/to-regex-range": {
489
  "version": "5.0.1",
490
  "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -497,6 +1824,14 @@
497
  "node": ">=8.0"
498
  }
499
  },
 
 
 
 
 
 
 
 
500
  "node_modules/touch": {
501
  "version": "3.1.0",
502
  "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
@@ -509,6 +1844,17 @@
509
  "nodetouch": "bin/nodetouch.js"
510
  }
511
  },
 
 
 
 
 
 
 
 
 
 
 
512
  "node_modules/ts-node": {
513
  "version": "10.9.2",
514
  "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
@@ -552,6 +1898,18 @@
552
  }
553
  }
554
  },
 
 
 
 
 
 
 
 
 
 
 
 
555
  "node_modules/typescript": {
556
  "version": "5.3.3",
557
  "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
@@ -574,9 +1932,41 @@
574
  "node_modules/undici-types": {
575
  "version": "5.26.5",
576
  "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
577
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
578
- "dev": true,
579
- "peer": true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
580
  },
581
  "node_modules/v8-compile-cache-lib": {
582
  "version": "3.0.1",
@@ -584,11 +1974,51 @@
584
  "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
585
  "dev": true
586
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
587
  "node_modules/yallist": {
588
  "version": "4.0.0",
589
  "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
590
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
591
- "dev": true
592
  },
593
  "node_modules/yn": {
594
  "version": "3.1.1",
 
8
  "name": "modrab-backend",
9
  "version": "1.0.0",
10
  "license": "ISC",
11
+ "dependencies": {
12
+ "bcrypt": "^5.1.1",
13
+ "body-parser": "^1.20.2",
14
+ "cors": "^2.8.5",
15
+ "dotenv": "^16.3.1",
16
+ "express": "^4.18.2",
17
+ "http": "^0.0.1-security",
18
+ "mongoose": "^8.0.3",
19
+ "path": "^0.12.7"
20
+ },
21
  "devDependencies": {
22
  "nodemon": "^3.0.2",
23
  "ts-node": "^10.9.2",
 
61
  "@jridgewell/sourcemap-codec": "^1.4.10"
62
  }
63
  },
64
+ "node_modules/@mapbox/node-pre-gyp": {
65
+ "version": "1.0.11",
66
+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz",
67
+ "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==",
68
+ "dependencies": {
69
+ "detect-libc": "^2.0.0",
70
+ "https-proxy-agent": "^5.0.0",
71
+ "make-dir": "^3.1.0",
72
+ "node-fetch": "^2.6.7",
73
+ "nopt": "^5.0.0",
74
+ "npmlog": "^5.0.1",
75
+ "rimraf": "^3.0.2",
76
+ "semver": "^7.3.5",
77
+ "tar": "^6.1.11"
78
+ },
79
+ "bin": {
80
+ "node-pre-gyp": "bin/node-pre-gyp"
81
+ }
82
+ },
83
+ "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": {
84
+ "version": "5.0.0",
85
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
86
+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
87
+ "dependencies": {
88
+ "abbrev": "1"
89
+ },
90
+ "bin": {
91
+ "nopt": "bin/nopt.js"
92
+ },
93
+ "engines": {
94
+ "node": ">=6"
95
+ }
96
+ },
97
+ "node_modules/@mongodb-js/saslprep": {
98
+ "version": "1.1.1",
99
+ "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz",
100
+ "integrity": "sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==",
101
+ "dependencies": {
102
+ "sparse-bitfield": "^3.0.3"
103
+ }
104
+ },
105
  "node_modules/@tsconfig/node10": {
106
  "version": "1.0.9",
107
  "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
 
130
  "version": "20.10.4",
131
  "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz",
132
  "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==",
 
 
133
  "dependencies": {
134
  "undici-types": "~5.26.4"
135
  }
136
  },
137
+ "node_modules/@types/webidl-conversions": {
138
+ "version": "7.0.3",
139
+ "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz",
140
+ "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA=="
141
+ },
142
+ "node_modules/@types/whatwg-url": {
143
+ "version": "8.2.2",
144
+ "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz",
145
+ "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==",
146
+ "dependencies": {
147
+ "@types/node": "*",
148
+ "@types/webidl-conversions": "*"
149
+ }
150
+ },
151
  "node_modules/abbrev": {
152
  "version": "1.1.1",
153
  "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
154
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
155
+ },
156
+ "node_modules/accepts": {
157
+ "version": "1.3.8",
158
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
159
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
160
+ "dependencies": {
161
+ "mime-types": "~2.1.34",
162
+ "negotiator": "0.6.3"
163
+ },
164
+ "engines": {
165
+ "node": ">= 0.6"
166
+ }
167
  },
168
  "node_modules/acorn": {
169
  "version": "8.11.2",
 
186
  "node": ">=0.4.0"
187
  }
188
  },
189
+ "node_modules/agent-base": {
190
+ "version": "6.0.2",
191
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
192
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
193
+ "dependencies": {
194
+ "debug": "4"
195
+ },
196
+ "engines": {
197
+ "node": ">= 6.0.0"
198
+ }
199
+ },
200
+ "node_modules/ansi-regex": {
201
+ "version": "5.0.1",
202
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
203
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
204
+ "engines": {
205
+ "node": ">=8"
206
+ }
207
+ },
208
  "node_modules/anymatch": {
209
  "version": "3.1.3",
210
  "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
 
218
  "node": ">= 8"
219
  }
220
  },
221
+ "node_modules/aproba": {
222
+ "version": "2.0.0",
223
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
224
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
225
+ },
226
+ "node_modules/are-we-there-yet": {
227
+ "version": "2.0.0",
228
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
229
+ "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
230
+ "dependencies": {
231
+ "delegates": "^1.0.0",
232
+ "readable-stream": "^3.6.0"
233
+ },
234
+ "engines": {
235
+ "node": ">=10"
236
+ }
237
+ },
238
  "node_modules/arg": {
239
  "version": "4.1.3",
240
  "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
241
  "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
242
  "dev": true
243
  },
244
+ "node_modules/array-flatten": {
245
+ "version": "1.1.1",
246
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
247
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
248
+ },
249
  "node_modules/balanced-match": {
250
  "version": "1.0.2",
251
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
252
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
253
+ },
254
+ "node_modules/bcrypt": {
255
+ "version": "5.1.1",
256
+ "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.1.tgz",
257
+ "integrity": "sha512-AGBHOG5hPYZ5Xl9KXzU5iKq9516yEmvCKDg3ecP5kX2aB6UqTeXZxk2ELnDgDm6BQSMlLt9rDB4LoSMx0rYwww==",
258
+ "hasInstallScript": true,
259
+ "dependencies": {
260
+ "@mapbox/node-pre-gyp": "^1.0.11",
261
+ "node-addon-api": "^5.0.0"
262
+ },
263
+ "engines": {
264
+ "node": ">= 10.0.0"
265
+ }
266
  },
267
  "node_modules/binary-extensions": {
268
  "version": "2.2.0",
 
273
  "node": ">=8"
274
  }
275
  },
276
+ "node_modules/body-parser": {
277
+ "version": "1.20.2",
278
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
279
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
280
+ "dependencies": {
281
+ "bytes": "3.1.2",
282
+ "content-type": "~1.0.5",
283
+ "debug": "2.6.9",
284
+ "depd": "2.0.0",
285
+ "destroy": "1.2.0",
286
+ "http-errors": "2.0.0",
287
+ "iconv-lite": "0.4.24",
288
+ "on-finished": "2.4.1",
289
+ "qs": "6.11.0",
290
+ "raw-body": "2.5.2",
291
+ "type-is": "~1.6.18",
292
+ "unpipe": "1.0.0"
293
+ },
294
+ "engines": {
295
+ "node": ">= 0.8",
296
+ "npm": "1.2.8000 || >= 1.4.16"
297
+ }
298
+ },
299
+ "node_modules/body-parser/node_modules/debug": {
300
+ "version": "2.6.9",
301
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
302
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
303
+ "dependencies": {
304
+ "ms": "2.0.0"
305
+ }
306
+ },
307
+ "node_modules/body-parser/node_modules/ms": {
308
+ "version": "2.0.0",
309
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
310
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
311
+ },
312
  "node_modules/brace-expansion": {
313
  "version": "1.1.11",
314
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
315
  "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
 
316
  "dependencies": {
317
  "balanced-match": "^1.0.0",
318
  "concat-map": "0.0.1"
 
330
  "node": ">=8"
331
  }
332
  },
333
+ "node_modules/bson": {
334
+ "version": "6.2.0",
335
+ "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz",
336
+ "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==",
337
+ "engines": {
338
+ "node": ">=16.20.1"
339
+ }
340
+ },
341
+ "node_modules/bytes": {
342
+ "version": "3.1.2",
343
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
344
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
345
+ "engines": {
346
+ "node": ">= 0.8"
347
+ }
348
+ },
349
+ "node_modules/call-bind": {
350
+ "version": "1.0.5",
351
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
352
+ "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
353
+ "dependencies": {
354
+ "function-bind": "^1.1.2",
355
+ "get-intrinsic": "^1.2.1",
356
+ "set-function-length": "^1.1.1"
357
+ },
358
+ "funding": {
359
+ "url": "https://github.com/sponsors/ljharb"
360
+ }
361
+ },
362
  "node_modules/chokidar": {
363
  "version": "3.5.3",
364
  "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
 
386
  "fsevents": "~2.3.2"
387
  }
388
  },
389
+ "node_modules/chownr": {
390
+ "version": "2.0.0",
391
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
392
+ "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
393
+ "engines": {
394
+ "node": ">=10"
395
+ }
396
+ },
397
+ "node_modules/color-support": {
398
+ "version": "1.1.3",
399
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
400
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
401
+ "bin": {
402
+ "color-support": "bin.js"
403
+ }
404
+ },
405
  "node_modules/concat-map": {
406
  "version": "0.0.1",
407
  "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
408
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
409
+ },
410
+ "node_modules/console-control-strings": {
411
+ "version": "1.1.0",
412
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
413
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
414
+ },
415
+ "node_modules/content-disposition": {
416
+ "version": "0.5.4",
417
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
418
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
419
+ "dependencies": {
420
+ "safe-buffer": "5.2.1"
421
+ },
422
+ "engines": {
423
+ "node": ">= 0.6"
424
+ }
425
+ },
426
+ "node_modules/content-type": {
427
+ "version": "1.0.5",
428
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
429
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
430
+ "engines": {
431
+ "node": ">= 0.6"
432
+ }
433
+ },
434
+ "node_modules/cookie": {
435
+ "version": "0.5.0",
436
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
437
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
438
+ "engines": {
439
+ "node": ">= 0.6"
440
+ }
441
+ },
442
+ "node_modules/cookie-signature": {
443
+ "version": "1.0.6",
444
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
445
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
446
+ },
447
+ "node_modules/cors": {
448
+ "version": "2.8.5",
449
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
450
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
451
+ "dependencies": {
452
+ "object-assign": "^4",
453
+ "vary": "^1"
454
+ },
455
+ "engines": {
456
+ "node": ">= 0.10"
457
+ }
458
  },
459
  "node_modules/create-require": {
460
  "version": "1.1.1",
 
466
  "version": "4.3.4",
467
  "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
468
  "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
 
469
  "dependencies": {
470
  "ms": "2.1.2"
471
  },
 
478
  }
479
  }
480
  },
481
+ "node_modules/define-data-property": {
482
+ "version": "1.1.1",
483
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
484
+ "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
485
+ "dependencies": {
486
+ "get-intrinsic": "^1.2.1",
487
+ "gopd": "^1.0.1",
488
+ "has-property-descriptors": "^1.0.0"
489
+ },
490
+ "engines": {
491
+ "node": ">= 0.4"
492
+ }
493
+ },
494
+ "node_modules/delegates": {
495
+ "version": "1.0.0",
496
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
497
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
498
+ },
499
+ "node_modules/depd": {
500
+ "version": "2.0.0",
501
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
502
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
503
+ "engines": {
504
+ "node": ">= 0.8"
505
+ }
506
+ },
507
+ "node_modules/destroy": {
508
+ "version": "1.2.0",
509
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
510
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
511
+ "engines": {
512
+ "node": ">= 0.8",
513
+ "npm": "1.2.8000 || >= 1.4.16"
514
+ }
515
+ },
516
+ "node_modules/detect-libc": {
517
+ "version": "2.0.2",
518
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz",
519
+ "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==",
520
+ "engines": {
521
+ "node": ">=8"
522
+ }
523
+ },
524
  "node_modules/diff": {
525
  "version": "4.0.2",
526
  "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
 
530
  "node": ">=0.3.1"
531
  }
532
  },
533
+ "node_modules/dotenv": {
534
+ "version": "16.3.1",
535
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
536
+ "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
537
+ "engines": {
538
+ "node": ">=12"
539
+ },
540
+ "funding": {
541
+ "url": "https://github.com/motdotla/dotenv?sponsor=1"
542
+ }
543
+ },
544
+ "node_modules/ee-first": {
545
+ "version": "1.1.1",
546
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
547
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
548
+ },
549
+ "node_modules/emoji-regex": {
550
+ "version": "8.0.0",
551
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
552
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
553
+ },
554
+ "node_modules/encodeurl": {
555
+ "version": "1.0.2",
556
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
557
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
558
+ "engines": {
559
+ "node": ">= 0.8"
560
+ }
561
+ },
562
+ "node_modules/escape-html": {
563
+ "version": "1.0.3",
564
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
565
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
566
+ },
567
+ "node_modules/etag": {
568
+ "version": "1.8.1",
569
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
570
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
571
+ "engines": {
572
+ "node": ">= 0.6"
573
+ }
574
+ },
575
+ "node_modules/express": {
576
+ "version": "4.18.2",
577
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
578
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
579
+ "dependencies": {
580
+ "accepts": "~1.3.8",
581
+ "array-flatten": "1.1.1",
582
+ "body-parser": "1.20.1",
583
+ "content-disposition": "0.5.4",
584
+ "content-type": "~1.0.4",
585
+ "cookie": "0.5.0",
586
+ "cookie-signature": "1.0.6",
587
+ "debug": "2.6.9",
588
+ "depd": "2.0.0",
589
+ "encodeurl": "~1.0.2",
590
+ "escape-html": "~1.0.3",
591
+ "etag": "~1.8.1",
592
+ "finalhandler": "1.2.0",
593
+ "fresh": "0.5.2",
594
+ "http-errors": "2.0.0",
595
+ "merge-descriptors": "1.0.1",
596
+ "methods": "~1.1.2",
597
+ "on-finished": "2.4.1",
598
+ "parseurl": "~1.3.3",
599
+ "path-to-regexp": "0.1.7",
600
+ "proxy-addr": "~2.0.7",
601
+ "qs": "6.11.0",
602
+ "range-parser": "~1.2.1",
603
+ "safe-buffer": "5.2.1",
604
+ "send": "0.18.0",
605
+ "serve-static": "1.15.0",
606
+ "setprototypeof": "1.2.0",
607
+ "statuses": "2.0.1",
608
+ "type-is": "~1.6.18",
609
+ "utils-merge": "1.0.1",
610
+ "vary": "~1.1.2"
611
+ },
612
+ "engines": {
613
+ "node": ">= 0.10.0"
614
+ }
615
+ },
616
+ "node_modules/express/node_modules/body-parser": {
617
+ "version": "1.20.1",
618
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
619
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
620
+ "dependencies": {
621
+ "bytes": "3.1.2",
622
+ "content-type": "~1.0.4",
623
+ "debug": "2.6.9",
624
+ "depd": "2.0.0",
625
+ "destroy": "1.2.0",
626
+ "http-errors": "2.0.0",
627
+ "iconv-lite": "0.4.24",
628
+ "on-finished": "2.4.1",
629
+ "qs": "6.11.0",
630
+ "raw-body": "2.5.1",
631
+ "type-is": "~1.6.18",
632
+ "unpipe": "1.0.0"
633
+ },
634
+ "engines": {
635
+ "node": ">= 0.8",
636
+ "npm": "1.2.8000 || >= 1.4.16"
637
+ }
638
+ },
639
+ "node_modules/express/node_modules/debug": {
640
+ "version": "2.6.9",
641
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
642
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
643
+ "dependencies": {
644
+ "ms": "2.0.0"
645
+ }
646
+ },
647
+ "node_modules/express/node_modules/ms": {
648
+ "version": "2.0.0",
649
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
650
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
651
+ },
652
+ "node_modules/express/node_modules/raw-body": {
653
+ "version": "2.5.1",
654
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
655
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
656
+ "dependencies": {
657
+ "bytes": "3.1.2",
658
+ "http-errors": "2.0.0",
659
+ "iconv-lite": "0.4.24",
660
+ "unpipe": "1.0.0"
661
+ },
662
+ "engines": {
663
+ "node": ">= 0.8"
664
+ }
665
+ },
666
  "node_modules/fill-range": {
667
  "version": "7.0.1",
668
  "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
 
675
  "node": ">=8"
676
  }
677
  },
678
+ "node_modules/finalhandler": {
679
+ "version": "1.2.0",
680
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
681
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
682
+ "dependencies": {
683
+ "debug": "2.6.9",
684
+ "encodeurl": "~1.0.2",
685
+ "escape-html": "~1.0.3",
686
+ "on-finished": "2.4.1",
687
+ "parseurl": "~1.3.3",
688
+ "statuses": "2.0.1",
689
+ "unpipe": "~1.0.0"
690
+ },
691
+ "engines": {
692
+ "node": ">= 0.8"
693
+ }
694
+ },
695
+ "node_modules/finalhandler/node_modules/debug": {
696
+ "version": "2.6.9",
697
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
698
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
699
+ "dependencies": {
700
+ "ms": "2.0.0"
701
+ }
702
+ },
703
+ "node_modules/finalhandler/node_modules/ms": {
704
+ "version": "2.0.0",
705
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
706
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
707
+ },
708
+ "node_modules/forwarded": {
709
+ "version": "0.2.0",
710
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
711
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
712
+ "engines": {
713
+ "node": ">= 0.6"
714
+ }
715
+ },
716
+ "node_modules/fresh": {
717
+ "version": "0.5.2",
718
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
719
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
720
+ "engines": {
721
+ "node": ">= 0.6"
722
+ }
723
+ },
724
+ "node_modules/fs-minipass": {
725
+ "version": "2.1.0",
726
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
727
+ "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
728
+ "dependencies": {
729
+ "minipass": "^3.0.0"
730
+ },
731
+ "engines": {
732
+ "node": ">= 8"
733
+ }
734
+ },
735
+ "node_modules/fs-minipass/node_modules/minipass": {
736
+ "version": "3.3.6",
737
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
738
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
739
+ "dependencies": {
740
+ "yallist": "^4.0.0"
741
+ },
742
+ "engines": {
743
+ "node": ">=8"
744
+ }
745
+ },
746
+ "node_modules/fs.realpath": {
747
+ "version": "1.0.0",
748
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
749
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
750
+ },
751
  "node_modules/fsevents": {
752
  "version": "2.3.3",
753
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
 
762
  "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
763
  }
764
  },
765
+ "node_modules/function-bind": {
766
+ "version": "1.1.2",
767
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
768
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
769
+ "funding": {
770
+ "url": "https://github.com/sponsors/ljharb"
771
+ }
772
+ },
773
+ "node_modules/gauge": {
774
+ "version": "3.0.2",
775
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
776
+ "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
777
+ "dependencies": {
778
+ "aproba": "^1.0.3 || ^2.0.0",
779
+ "color-support": "^1.1.2",
780
+ "console-control-strings": "^1.0.0",
781
+ "has-unicode": "^2.0.1",
782
+ "object-assign": "^4.1.1",
783
+ "signal-exit": "^3.0.0",
784
+ "string-width": "^4.2.3",
785
+ "strip-ansi": "^6.0.1",
786
+ "wide-align": "^1.1.2"
787
+ },
788
+ "engines": {
789
+ "node": ">=10"
790
+ }
791
+ },
792
+ "node_modules/get-intrinsic": {
793
+ "version": "1.2.2",
794
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
795
+ "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
796
+ "dependencies": {
797
+ "function-bind": "^1.1.2",
798
+ "has-proto": "^1.0.1",
799
+ "has-symbols": "^1.0.3",
800
+ "hasown": "^2.0.0"
801
+ },
802
+ "funding": {
803
+ "url": "https://github.com/sponsors/ljharb"
804
+ }
805
+ },
806
+ "node_modules/glob": {
807
+ "version": "7.2.3",
808
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
809
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
810
+ "dependencies": {
811
+ "fs.realpath": "^1.0.0",
812
+ "inflight": "^1.0.4",
813
+ "inherits": "2",
814
+ "minimatch": "^3.1.1",
815
+ "once": "^1.3.0",
816
+ "path-is-absolute": "^1.0.0"
817
+ },
818
+ "engines": {
819
+ "node": "*"
820
+ },
821
+ "funding": {
822
+ "url": "https://github.com/sponsors/isaacs"
823
+ }
824
+ },
825
  "node_modules/glob-parent": {
826
  "version": "5.1.2",
827
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
 
834
  "node": ">= 6"
835
  }
836
  },
837
+ "node_modules/gopd": {
838
+ "version": "1.0.1",
839
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
840
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
841
+ "dependencies": {
842
+ "get-intrinsic": "^1.1.3"
843
+ },
844
+ "funding": {
845
+ "url": "https://github.com/sponsors/ljharb"
846
+ }
847
+ },
848
  "node_modules/has-flag": {
849
  "version": "3.0.0",
850
  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
 
854
  "node": ">=4"
855
  }
856
  },
857
+ "node_modules/has-property-descriptors": {
858
  "version": "1.0.1",
859
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
860
+ "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
 
 
 
 
 
 
 
861
  "dependencies": {
862
+ "get-intrinsic": "^1.2.2"
863
  },
864
+ "funding": {
865
+ "url": "https://github.com/sponsors/ljharb"
866
  }
867
  },
868
+ "node_modules/has-proto": {
869
+ "version": "1.0.1",
870
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
871
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
 
872
  "engines": {
873
+ "node": ">= 0.4"
874
+ },
875
+ "funding": {
876
+ "url": "https://github.com/sponsors/ljharb"
877
  }
878
  },
879
+ "node_modules/has-symbols": {
880
+ "version": "1.0.3",
881
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
882
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
883
+ "engines": {
884
+ "node": ">= 0.4"
885
+ },
886
+ "funding": {
887
+ "url": "https://github.com/sponsors/ljharb"
888
+ }
889
+ },
890
+ "node_modules/has-unicode": {
891
+ "version": "2.0.1",
892
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
893
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
894
+ },
895
+ "node_modules/hasown": {
896
+ "version": "2.0.0",
897
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
898
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
899
+ "dependencies": {
900
+ "function-bind": "^1.1.2"
901
+ },
902
+ "engines": {
903
+ "node": ">= 0.4"
904
+ }
905
+ },
906
+ "node_modules/http": {
907
+ "version": "0.0.1-security",
908
+ "resolved": "https://registry.npmjs.org/http/-/http-0.0.1-security.tgz",
909
+ "integrity": "sha512-RnDvP10Ty9FxqOtPZuxtebw1j4L/WiqNMDtuc1YMH1XQm5TgDRaR1G9u8upL6KD1bXHSp9eSXo/ED+8Q7FAr+g=="
910
+ },
911
+ "node_modules/http-errors": {
912
+ "version": "2.0.0",
913
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
914
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
915
+ "dependencies": {
916
+ "depd": "2.0.0",
917
+ "inherits": "2.0.4",
918
+ "setprototypeof": "1.2.0",
919
+ "statuses": "2.0.1",
920
+ "toidentifier": "1.0.1"
921
+ },
922
+ "engines": {
923
+ "node": ">= 0.8"
924
+ }
925
+ },
926
+ "node_modules/https-proxy-agent": {
927
+ "version": "5.0.1",
928
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
929
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
930
+ "dependencies": {
931
+ "agent-base": "6",
932
+ "debug": "4"
933
+ },
934
+ "engines": {
935
+ "node": ">= 6"
936
+ }
937
+ },
938
+ "node_modules/iconv-lite": {
939
+ "version": "0.4.24",
940
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
941
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
942
+ "dependencies": {
943
+ "safer-buffer": ">= 2.1.2 < 3"
944
+ },
945
+ "engines": {
946
+ "node": ">=0.10.0"
947
+ }
948
+ },
949
+ "node_modules/ignore-by-default": {
950
+ "version": "1.0.1",
951
+ "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
952
+ "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==",
953
+ "dev": true
954
+ },
955
+ "node_modules/inflight": {
956
+ "version": "1.0.6",
957
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
958
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
959
+ "dependencies": {
960
+ "once": "^1.3.0",
961
+ "wrappy": "1"
962
+ }
963
+ },
964
+ "node_modules/inherits": {
965
+ "version": "2.0.4",
966
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
967
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
968
+ },
969
+ "node_modules/ipaddr.js": {
970
+ "version": "1.9.1",
971
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
972
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
973
+ "engines": {
974
+ "node": ">= 0.10"
975
+ }
976
+ },
977
+ "node_modules/is-binary-path": {
978
+ "version": "2.1.0",
979
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
980
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
981
+ "dev": true,
982
+ "dependencies": {
983
+ "binary-extensions": "^2.0.0"
984
+ },
985
+ "engines": {
986
+ "node": ">=8"
987
+ }
988
+ },
989
+ "node_modules/is-extglob": {
990
+ "version": "2.1.1",
991
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
992
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
993
+ "dev": true,
994
+ "engines": {
995
+ "node": ">=0.10.0"
996
+ }
997
+ },
998
+ "node_modules/is-fullwidth-code-point": {
999
+ "version": "3.0.0",
1000
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1001
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1002
+ "engines": {
1003
+ "node": ">=8"
1004
+ }
1005
+ },
1006
+ "node_modules/is-glob": {
1007
+ "version": "4.0.3",
1008
  "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1009
  "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1010
  "dev": true,
 
1024
  "node": ">=0.12.0"
1025
  }
1026
  },
1027
+ "node_modules/kareem": {
1028
+ "version": "2.5.1",
1029
+ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz",
1030
+ "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==",
1031
+ "engines": {
1032
+ "node": ">=12.0.0"
1033
+ }
1034
+ },
1035
  "node_modules/lru-cache": {
1036
  "version": "6.0.0",
1037
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1038
  "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
 
1039
  "dependencies": {
1040
  "yallist": "^4.0.0"
1041
  },
 
1043
  "node": ">=10"
1044
  }
1045
  },
1046
+ "node_modules/make-dir": {
1047
+ "version": "3.1.0",
1048
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
1049
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
1050
+ "dependencies": {
1051
+ "semver": "^6.0.0"
1052
+ },
1053
+ "engines": {
1054
+ "node": ">=8"
1055
+ },
1056
+ "funding": {
1057
+ "url": "https://github.com/sponsors/sindresorhus"
1058
+ }
1059
+ },
1060
+ "node_modules/make-dir/node_modules/semver": {
1061
+ "version": "6.3.1",
1062
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
1063
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
1064
+ "bin": {
1065
+ "semver": "bin/semver.js"
1066
+ }
1067
+ },
1068
  "node_modules/make-error": {
1069
  "version": "1.3.6",
1070
  "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
1071
  "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
1072
  "dev": true
1073
  },
1074
+ "node_modules/media-typer": {
1075
+ "version": "0.3.0",
1076
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1077
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
1078
+ "engines": {
1079
+ "node": ">= 0.6"
1080
+ }
1081
+ },
1082
+ "node_modules/memory-pager": {
1083
+ "version": "1.5.0",
1084
+ "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
1085
+ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
1086
+ },
1087
+ "node_modules/merge-descriptors": {
1088
+ "version": "1.0.1",
1089
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1090
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
1091
+ },
1092
+ "node_modules/methods": {
1093
+ "version": "1.1.2",
1094
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1095
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
1096
+ "engines": {
1097
+ "node": ">= 0.6"
1098
+ }
1099
+ },
1100
+ "node_modules/mime": {
1101
+ "version": "1.6.0",
1102
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1103
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
1104
+ "bin": {
1105
+ "mime": "cli.js"
1106
+ },
1107
+ "engines": {
1108
+ "node": ">=4"
1109
+ }
1110
+ },
1111
+ "node_modules/mime-db": {
1112
+ "version": "1.52.0",
1113
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1114
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
1115
+ "engines": {
1116
+ "node": ">= 0.6"
1117
+ }
1118
+ },
1119
+ "node_modules/mime-types": {
1120
+ "version": "2.1.35",
1121
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1122
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1123
+ "dependencies": {
1124
+ "mime-db": "1.52.0"
1125
+ },
1126
+ "engines": {
1127
+ "node": ">= 0.6"
1128
+ }
1129
+ },
1130
  "node_modules/minimatch": {
1131
  "version": "3.1.2",
1132
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1133
  "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
 
1134
  "dependencies": {
1135
  "brace-expansion": "^1.1.7"
1136
  },
 
1138
  "node": "*"
1139
  }
1140
  },
1141
+ "node_modules/minipass": {
1142
+ "version": "5.0.0",
1143
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
1144
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
1145
+ "engines": {
1146
+ "node": ">=8"
1147
+ }
1148
+ },
1149
+ "node_modules/minizlib": {
1150
+ "version": "2.1.2",
1151
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
1152
+ "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
1153
+ "dependencies": {
1154
+ "minipass": "^3.0.0",
1155
+ "yallist": "^4.0.0"
1156
+ },
1157
+ "engines": {
1158
+ "node": ">= 8"
1159
+ }
1160
+ },
1161
+ "node_modules/minizlib/node_modules/minipass": {
1162
+ "version": "3.3.6",
1163
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
1164
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
1165
+ "dependencies": {
1166
+ "yallist": "^4.0.0"
1167
+ },
1168
+ "engines": {
1169
+ "node": ">=8"
1170
+ }
1171
+ },
1172
+ "node_modules/mkdirp": {
1173
+ "version": "1.0.4",
1174
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
1175
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
1176
+ "bin": {
1177
+ "mkdirp": "bin/cmd.js"
1178
+ },
1179
+ "engines": {
1180
+ "node": ">=10"
1181
+ }
1182
+ },
1183
+ "node_modules/mongodb": {
1184
+ "version": "6.2.0",
1185
+ "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz",
1186
+ "integrity": "sha512-d7OSuGjGWDZ5usZPqfvb36laQ9CPhnWkAGHT61x5P95p/8nMVeH8asloMwW6GcYFeB0Vj4CB/1wOTDG2RA9BFA==",
1187
+ "dependencies": {
1188
+ "@mongodb-js/saslprep": "^1.1.0",
1189
+ "bson": "^6.2.0",
1190
+ "mongodb-connection-string-url": "^2.6.0"
1191
+ },
1192
+ "engines": {
1193
+ "node": ">=16.20.1"
1194
+ },
1195
+ "peerDependencies": {
1196
+ "@aws-sdk/credential-providers": "^3.188.0",
1197
+ "@mongodb-js/zstd": "^1.1.0",
1198
+ "gcp-metadata": "^5.2.0",
1199
+ "kerberos": "^2.0.1",
1200
+ "mongodb-client-encryption": ">=6.0.0 <7",
1201
+ "snappy": "^7.2.2",
1202
+ "socks": "^2.7.1"
1203
+ },
1204
+ "peerDependenciesMeta": {
1205
+ "@aws-sdk/credential-providers": {
1206
+ "optional": true
1207
+ },
1208
+ "@mongodb-js/zstd": {
1209
+ "optional": true
1210
+ },
1211
+ "gcp-metadata": {
1212
+ "optional": true
1213
+ },
1214
+ "kerberos": {
1215
+ "optional": true
1216
+ },
1217
+ "mongodb-client-encryption": {
1218
+ "optional": true
1219
+ },
1220
+ "snappy": {
1221
+ "optional": true
1222
+ },
1223
+ "socks": {
1224
+ "optional": true
1225
+ }
1226
+ }
1227
+ },
1228
+ "node_modules/mongodb-connection-string-url": {
1229
+ "version": "2.6.0",
1230
+ "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz",
1231
+ "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==",
1232
+ "dependencies": {
1233
+ "@types/whatwg-url": "^8.2.1",
1234
+ "whatwg-url": "^11.0.0"
1235
+ }
1236
+ },
1237
+ "node_modules/mongoose": {
1238
+ "version": "8.0.3",
1239
+ "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.0.3.tgz",
1240
+ "integrity": "sha512-LJRT0yP4TW14HT4r2RkxqyvoTylMSzWpl5QOeVHTnRggCLQSpkoBdgbUtORFq/mSL2o9cLCPJz+6uzFj25qbHw==",
1241
+ "dependencies": {
1242
+ "bson": "^6.2.0",
1243
+ "kareem": "2.5.1",
1244
+ "mongodb": "6.2.0",
1245
+ "mpath": "0.9.0",
1246
+ "mquery": "5.0.0",
1247
+ "ms": "2.1.3",
1248
+ "sift": "16.0.1"
1249
+ },
1250
+ "engines": {
1251
+ "node": ">=16.20.1"
1252
+ },
1253
+ "funding": {
1254
+ "type": "opencollective",
1255
+ "url": "https://opencollective.com/mongoose"
1256
+ }
1257
+ },
1258
+ "node_modules/mongoose/node_modules/ms": {
1259
+ "version": "2.1.3",
1260
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1261
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1262
+ },
1263
+ "node_modules/mpath": {
1264
+ "version": "0.9.0",
1265
+ "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
1266
+ "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
1267
+ "engines": {
1268
+ "node": ">=4.0.0"
1269
+ }
1270
+ },
1271
+ "node_modules/mquery": {
1272
+ "version": "5.0.0",
1273
+ "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz",
1274
+ "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==",
1275
+ "dependencies": {
1276
+ "debug": "4.x"
1277
+ },
1278
+ "engines": {
1279
+ "node": ">=14.0.0"
1280
+ }
1281
+ },
1282
  "node_modules/ms": {
1283
  "version": "2.1.2",
1284
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1285
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1286
+ },
1287
+ "node_modules/negotiator": {
1288
+ "version": "0.6.3",
1289
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1290
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
1291
+ "engines": {
1292
+ "node": ">= 0.6"
1293
+ }
1294
+ },
1295
+ "node_modules/node-addon-api": {
1296
+ "version": "5.1.0",
1297
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
1298
+ "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA=="
1299
+ },
1300
+ "node_modules/node-fetch": {
1301
+ "version": "2.7.0",
1302
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
1303
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
1304
+ "dependencies": {
1305
+ "whatwg-url": "^5.0.0"
1306
+ },
1307
+ "engines": {
1308
+ "node": "4.x || >=6.0.0"
1309
+ },
1310
+ "peerDependencies": {
1311
+ "encoding": "^0.1.0"
1312
+ },
1313
+ "peerDependenciesMeta": {
1314
+ "encoding": {
1315
+ "optional": true
1316
+ }
1317
+ }
1318
+ },
1319
+ "node_modules/node-fetch/node_modules/tr46": {
1320
+ "version": "0.0.3",
1321
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
1322
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
1323
+ },
1324
+ "node_modules/node-fetch/node_modules/webidl-conversions": {
1325
+ "version": "3.0.1",
1326
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
1327
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
1328
+ },
1329
+ "node_modules/node-fetch/node_modules/whatwg-url": {
1330
+ "version": "5.0.0",
1331
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
1332
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
1333
+ "dependencies": {
1334
+ "tr46": "~0.0.3",
1335
+ "webidl-conversions": "^3.0.0"
1336
+ }
1337
  },
1338
  "node_modules/nodemon": {
1339
  "version": "3.0.2",
 
1387
  "node": ">=0.10.0"
1388
  }
1389
  },
1390
+ "node_modules/npmlog": {
1391
+ "version": "5.0.1",
1392
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
1393
+ "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
1394
+ "dependencies": {
1395
+ "are-we-there-yet": "^2.0.0",
1396
+ "console-control-strings": "^1.1.0",
1397
+ "gauge": "^3.0.0",
1398
+ "set-blocking": "^2.0.0"
1399
+ }
1400
+ },
1401
+ "node_modules/object-assign": {
1402
+ "version": "4.1.1",
1403
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1404
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1405
+ "engines": {
1406
+ "node": ">=0.10.0"
1407
+ }
1408
+ },
1409
+ "node_modules/object-inspect": {
1410
+ "version": "1.13.1",
1411
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
1412
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
1413
+ "funding": {
1414
+ "url": "https://github.com/sponsors/ljharb"
1415
+ }
1416
+ },
1417
+ "node_modules/on-finished": {
1418
+ "version": "2.4.1",
1419
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1420
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1421
+ "dependencies": {
1422
+ "ee-first": "1.1.1"
1423
+ },
1424
+ "engines": {
1425
+ "node": ">= 0.8"
1426
+ }
1427
+ },
1428
+ "node_modules/once": {
1429
+ "version": "1.4.0",
1430
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1431
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1432
+ "dependencies": {
1433
+ "wrappy": "1"
1434
+ }
1435
+ },
1436
+ "node_modules/parseurl": {
1437
+ "version": "1.3.3",
1438
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1439
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
1440
+ "engines": {
1441
+ "node": ">= 0.8"
1442
+ }
1443
+ },
1444
+ "node_modules/path": {
1445
+ "version": "0.12.7",
1446
+ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
1447
+ "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
1448
+ "dependencies": {
1449
+ "process": "^0.11.1",
1450
+ "util": "^0.10.3"
1451
+ }
1452
+ },
1453
+ "node_modules/path-is-absolute": {
1454
+ "version": "1.0.1",
1455
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1456
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1457
+ "engines": {
1458
+ "node": ">=0.10.0"
1459
+ }
1460
+ },
1461
+ "node_modules/path-to-regexp": {
1462
+ "version": "0.1.7",
1463
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1464
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
1465
+ },
1466
  "node_modules/picomatch": {
1467
  "version": "2.3.1",
1468
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
 
1475
  "url": "https://github.com/sponsors/jonschlinkert"
1476
  }
1477
  },
1478
+ "node_modules/process": {
1479
+ "version": "0.11.10",
1480
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
1481
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
1482
+ "engines": {
1483
+ "node": ">= 0.6.0"
1484
+ }
1485
+ },
1486
+ "node_modules/proxy-addr": {
1487
+ "version": "2.0.7",
1488
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1489
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1490
+ "dependencies": {
1491
+ "forwarded": "0.2.0",
1492
+ "ipaddr.js": "1.9.1"
1493
+ },
1494
+ "engines": {
1495
+ "node": ">= 0.10"
1496
+ }
1497
+ },
1498
  "node_modules/pstree.remy": {
1499
  "version": "1.1.8",
1500
  "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
1501
  "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==",
1502
  "dev": true
1503
  },
1504
+ "node_modules/punycode": {
1505
+ "version": "2.3.1",
1506
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
1507
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
1508
+ "engines": {
1509
+ "node": ">=6"
1510
+ }
1511
+ },
1512
+ "node_modules/qs": {
1513
+ "version": "6.11.0",
1514
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
1515
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
1516
+ "dependencies": {
1517
+ "side-channel": "^1.0.4"
1518
+ },
1519
+ "engines": {
1520
+ "node": ">=0.6"
1521
+ },
1522
+ "funding": {
1523
+ "url": "https://github.com/sponsors/ljharb"
1524
+ }
1525
+ },
1526
+ "node_modules/range-parser": {
1527
+ "version": "1.2.1",
1528
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1529
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
1530
+ "engines": {
1531
+ "node": ">= 0.6"
1532
+ }
1533
+ },
1534
+ "node_modules/raw-body": {
1535
+ "version": "2.5.2",
1536
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
1537
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
1538
+ "dependencies": {
1539
+ "bytes": "3.1.2",
1540
+ "http-errors": "2.0.0",
1541
+ "iconv-lite": "0.4.24",
1542
+ "unpipe": "1.0.0"
1543
+ },
1544
+ "engines": {
1545
+ "node": ">= 0.8"
1546
+ }
1547
+ },
1548
+ "node_modules/readable-stream": {
1549
+ "version": "3.6.2",
1550
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
1551
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
1552
+ "dependencies": {
1553
+ "inherits": "^2.0.3",
1554
+ "string_decoder": "^1.1.1",
1555
+ "util-deprecate": "^1.0.1"
1556
+ },
1557
+ "engines": {
1558
+ "node": ">= 6"
1559
+ }
1560
+ },
1561
  "node_modules/readdirp": {
1562
  "version": "3.6.0",
1563
  "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
 
1570
  "node": ">=8.10.0"
1571
  }
1572
  },
1573
+ "node_modules/rimraf": {
1574
+ "version": "3.0.2",
1575
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1576
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1577
+ "dependencies": {
1578
+ "glob": "^7.1.3"
1579
+ },
1580
+ "bin": {
1581
+ "rimraf": "bin.js"
1582
+ },
1583
+ "funding": {
1584
+ "url": "https://github.com/sponsors/isaacs"
1585
+ }
1586
+ },
1587
+ "node_modules/safe-buffer": {
1588
+ "version": "5.2.1",
1589
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1590
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1591
+ "funding": [
1592
+ {
1593
+ "type": "github",
1594
+ "url": "https://github.com/sponsors/feross"
1595
+ },
1596
+ {
1597
+ "type": "patreon",
1598
+ "url": "https://www.patreon.com/feross"
1599
+ },
1600
+ {
1601
+ "type": "consulting",
1602
+ "url": "https://feross.org/support"
1603
+ }
1604
+ ]
1605
+ },
1606
+ "node_modules/safer-buffer": {
1607
+ "version": "2.1.2",
1608
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1609
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1610
+ },
1611
  "node_modules/semver": {
1612
  "version": "7.5.4",
1613
  "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
1614
  "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
 
1615
  "dependencies": {
1616
  "lru-cache": "^6.0.0"
1617
  },
 
1622
  "node": ">=10"
1623
  }
1624
  },
1625
+ "node_modules/send": {
1626
+ "version": "0.18.0",
1627
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1628
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1629
+ "dependencies": {
1630
+ "debug": "2.6.9",
1631
+ "depd": "2.0.0",
1632
+ "destroy": "1.2.0",
1633
+ "encodeurl": "~1.0.2",
1634
+ "escape-html": "~1.0.3",
1635
+ "etag": "~1.8.1",
1636
+ "fresh": "0.5.2",
1637
+ "http-errors": "2.0.0",
1638
+ "mime": "1.6.0",
1639
+ "ms": "2.1.3",
1640
+ "on-finished": "2.4.1",
1641
+ "range-parser": "~1.2.1",
1642
+ "statuses": "2.0.1"
1643
+ },
1644
+ "engines": {
1645
+ "node": ">= 0.8.0"
1646
+ }
1647
+ },
1648
+ "node_modules/send/node_modules/debug": {
1649
+ "version": "2.6.9",
1650
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1651
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1652
+ "dependencies": {
1653
+ "ms": "2.0.0"
1654
+ }
1655
+ },
1656
+ "node_modules/send/node_modules/debug/node_modules/ms": {
1657
+ "version": "2.0.0",
1658
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1659
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1660
+ },
1661
+ "node_modules/send/node_modules/ms": {
1662
+ "version": "2.1.3",
1663
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1664
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1665
+ },
1666
+ "node_modules/serve-static": {
1667
+ "version": "1.15.0",
1668
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1669
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1670
+ "dependencies": {
1671
+ "encodeurl": "~1.0.2",
1672
+ "escape-html": "~1.0.3",
1673
+ "parseurl": "~1.3.3",
1674
+ "send": "0.18.0"
1675
+ },
1676
+ "engines": {
1677
+ "node": ">= 0.8.0"
1678
+ }
1679
+ },
1680
+ "node_modules/set-blocking": {
1681
+ "version": "2.0.0",
1682
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
1683
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
1684
+ },
1685
+ "node_modules/set-function-length": {
1686
+ "version": "1.1.1",
1687
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
1688
+ "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
1689
+ "dependencies": {
1690
+ "define-data-property": "^1.1.1",
1691
+ "get-intrinsic": "^1.2.1",
1692
+ "gopd": "^1.0.1",
1693
+ "has-property-descriptors": "^1.0.0"
1694
+ },
1695
+ "engines": {
1696
+ "node": ">= 0.4"
1697
+ }
1698
+ },
1699
+ "node_modules/setprototypeof": {
1700
+ "version": "1.2.0",
1701
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1702
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1703
+ },
1704
+ "node_modules/side-channel": {
1705
+ "version": "1.0.4",
1706
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1707
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1708
+ "dependencies": {
1709
+ "call-bind": "^1.0.0",
1710
+ "get-intrinsic": "^1.0.2",
1711
+ "object-inspect": "^1.9.0"
1712
+ },
1713
+ "funding": {
1714
+ "url": "https://github.com/sponsors/ljharb"
1715
+ }
1716
+ },
1717
+ "node_modules/sift": {
1718
+ "version": "16.0.1",
1719
+ "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz",
1720
+ "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ=="
1721
+ },
1722
+ "node_modules/signal-exit": {
1723
+ "version": "3.0.7",
1724
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1725
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
1726
+ },
1727
  "node_modules/simple-update-notifier": {
1728
  "version": "2.0.0",
1729
  "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
 
1736
  "node": ">=10"
1737
  }
1738
  },
1739
+ "node_modules/sparse-bitfield": {
1740
+ "version": "3.0.3",
1741
+ "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1742
+ "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==",
1743
+ "dependencies": {
1744
+ "memory-pager": "^1.0.2"
1745
+ }
1746
+ },
1747
+ "node_modules/statuses": {
1748
+ "version": "2.0.1",
1749
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1750
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
1751
+ "engines": {
1752
+ "node": ">= 0.8"
1753
+ }
1754
+ },
1755
+ "node_modules/string_decoder": {
1756
+ "version": "1.3.0",
1757
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
1758
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
1759
+ "dependencies": {
1760
+ "safe-buffer": "~5.2.0"
1761
+ }
1762
+ },
1763
+ "node_modules/string-width": {
1764
+ "version": "4.2.3",
1765
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1766
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1767
+ "dependencies": {
1768
+ "emoji-regex": "^8.0.0",
1769
+ "is-fullwidth-code-point": "^3.0.0",
1770
+ "strip-ansi": "^6.0.1"
1771
+ },
1772
+ "engines": {
1773
+ "node": ">=8"
1774
+ }
1775
+ },
1776
+ "node_modules/strip-ansi": {
1777
+ "version": "6.0.1",
1778
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1779
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1780
+ "dependencies": {
1781
+ "ansi-regex": "^5.0.1"
1782
+ },
1783
+ "engines": {
1784
+ "node": ">=8"
1785
+ }
1786
+ },
1787
  "node_modules/supports-color": {
1788
  "version": "5.5.0",
1789
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
 
1796
  "node": ">=4"
1797
  }
1798
  },
1799
+ "node_modules/tar": {
1800
+ "version": "6.2.0",
1801
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
1802
+ "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
1803
+ "dependencies": {
1804
+ "chownr": "^2.0.0",
1805
+ "fs-minipass": "^2.0.0",
1806
+ "minipass": "^5.0.0",
1807
+ "minizlib": "^2.1.1",
1808
+ "mkdirp": "^1.0.3",
1809
+ "yallist": "^4.0.0"
1810
+ },
1811
+ "engines": {
1812
+ "node": ">=10"
1813
+ }
1814
+ },
1815
  "node_modules/to-regex-range": {
1816
  "version": "5.0.1",
1817
  "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
 
1824
  "node": ">=8.0"
1825
  }
1826
  },
1827
+ "node_modules/toidentifier": {
1828
+ "version": "1.0.1",
1829
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1830
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
1831
+ "engines": {
1832
+ "node": ">=0.6"
1833
+ }
1834
+ },
1835
  "node_modules/touch": {
1836
  "version": "3.1.0",
1837
  "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz",
 
1844
  "nodetouch": "bin/nodetouch.js"
1845
  }
1846
  },
1847
+ "node_modules/tr46": {
1848
+ "version": "3.0.0",
1849
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
1850
+ "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
1851
+ "dependencies": {
1852
+ "punycode": "^2.1.1"
1853
+ },
1854
+ "engines": {
1855
+ "node": ">=12"
1856
+ }
1857
+ },
1858
  "node_modules/ts-node": {
1859
  "version": "10.9.2",
1860
  "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
 
1898
  }
1899
  }
1900
  },
1901
+ "node_modules/type-is": {
1902
+ "version": "1.6.18",
1903
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1904
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1905
+ "dependencies": {
1906
+ "media-typer": "0.3.0",
1907
+ "mime-types": "~2.1.24"
1908
+ },
1909
+ "engines": {
1910
+ "node": ">= 0.6"
1911
+ }
1912
+ },
1913
  "node_modules/typescript": {
1914
  "version": "5.3.3",
1915
  "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
 
1932
  "node_modules/undici-types": {
1933
  "version": "5.26.5",
1934
  "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
1935
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
1936
+ },
1937
+ "node_modules/unpipe": {
1938
+ "version": "1.0.0",
1939
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1940
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
1941
+ "engines": {
1942
+ "node": ">= 0.8"
1943
+ }
1944
+ },
1945
+ "node_modules/util": {
1946
+ "version": "0.10.4",
1947
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
1948
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
1949
+ "dependencies": {
1950
+ "inherits": "2.0.3"
1951
+ }
1952
+ },
1953
+ "node_modules/util-deprecate": {
1954
+ "version": "1.0.2",
1955
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1956
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
1957
+ },
1958
+ "node_modules/util/node_modules/inherits": {
1959
+ "version": "2.0.3",
1960
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1961
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
1962
+ },
1963
+ "node_modules/utils-merge": {
1964
+ "version": "1.0.1",
1965
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1966
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
1967
+ "engines": {
1968
+ "node": ">= 0.4.0"
1969
+ }
1970
  },
1971
  "node_modules/v8-compile-cache-lib": {
1972
  "version": "3.0.1",
 
1974
  "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
1975
  "dev": true
1976
  },
1977
+ "node_modules/vary": {
1978
+ "version": "1.1.2",
1979
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1980
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
1981
+ "engines": {
1982
+ "node": ">= 0.8"
1983
+ }
1984
+ },
1985
+ "node_modules/webidl-conversions": {
1986
+ "version": "7.0.0",
1987
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
1988
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
1989
+ "engines": {
1990
+ "node": ">=12"
1991
+ }
1992
+ },
1993
+ "node_modules/whatwg-url": {
1994
+ "version": "11.0.0",
1995
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
1996
+ "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
1997
+ "dependencies": {
1998
+ "tr46": "^3.0.0",
1999
+ "webidl-conversions": "^7.0.0"
2000
+ },
2001
+ "engines": {
2002
+ "node": ">=12"
2003
+ }
2004
+ },
2005
+ "node_modules/wide-align": {
2006
+ "version": "1.1.5",
2007
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
2008
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
2009
+ "dependencies": {
2010
+ "string-width": "^1.0.2 || 2 || 3 || 4"
2011
+ }
2012
+ },
2013
+ "node_modules/wrappy": {
2014
+ "version": "1.0.2",
2015
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2016
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
2017
+ },
2018
  "node_modules/yallist": {
2019
  "version": "4.0.0",
2020
  "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
2021
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
 
2022
  },
2023
  "node_modules/yn": {
2024
  "version": "3.1.1",
package.json CHANGED
@@ -15,5 +15,15 @@
15
  "nodemon": "^3.0.2",
16
  "ts-node": "^10.9.2",
17
  "typescript": "^5.3.3"
 
 
 
 
 
 
 
 
 
 
18
  }
19
  }
 
15
  "nodemon": "^3.0.2",
16
  "ts-node": "^10.9.2",
17
  "typescript": "^5.3.3"
18
+ },
19
+ "dependencies": {
20
+ "bcrypt": "^5.1.1",
21
+ "body-parser": "^1.20.2",
22
+ "cors": "^2.8.5",
23
+ "dotenv": "^16.3.1",
24
+ "express": "^4.18.2",
25
+ "http": "^0.0.1-security",
26
+ "mongoose": "^8.0.3",
27
+ "path": "^0.12.7"
28
  }
29
  }
src/configs/app.ts ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import dotenv from "dotenv";
2
+ dotenv.config();
3
+ import express from "express";
4
+ import bodyParser from "body-parser";
5
+ import cors from "cors";
6
+ import path from 'path';
7
+ import { connection as databaseConnection } from "./database";
8
+
9
+ databaseConnection();
10
+ export const app = express();
11
+ app.use(cors());
12
+ app.use(express.json());
13
+ app.use(bodyParser.json());
14
+
15
+ app.use(bodyParser.urlencoded({ extended: false }));
src/configs/database.ts ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import mongoose from 'mongoose';
2
+
3
+ const uriMap = {
4
+ local: process.env.LOCAL_DB_CONNECTION_STRING,
5
+ development: process.env.DEV_DB_CONNECTION_STRING,
6
+ };
7
+
8
+ console.log("CURRENT_ENV", process.env.CURRENT_ENV);
9
+ const selectedEnv = process.env.CURRENT_ENV || 'development';
10
+ let uri = uriMap[selectedEnv];
11
+ console.log(uri);
12
+
13
+ export const connection = async () => {
14
+ return mongoose.connect(uri)
15
+ .then(() => {
16
+ console.log(`Connected to MongoDB database successfully on ${selectedEnv} environment!`);
17
+ }).catch((err) => {
18
+ console.log("MongoDB Error: ", err);
19
+ })
20
+ }
src/index.ts CHANGED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import { app } from "./configs/app"
3
+ import http from 'http';
4
+
5
+ const server = http.createServer(app);
6
+
7
+
8
+ server.listen(process.env.PORT || 4000, () => {
9
+ console.log(`Server is up and runing on port ${process.env.PORT}!`)
10
+ })
11
+
12
+
src/modules/console/Admin/controllers/admin.controller.ts ADDED
File without changes
src/modules/console/Admin/models/admin.model.ts ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import mongoose from "mongoose";
2
+ import bcrypt from "bcrypt";
3
+ export const saltrounds = 5;
4
+ const { Schema } = mongoose;
5
+
6
+ const adminSchema = new Schema({
7
+ name: { type: String, required: true },
8
+ email: { type: String, required: true, unique: true, dropDups: true },
9
+ password: { type: String, required: true },
10
+ image: { type: Object, default: {} },
11
+ role: {
12
+ type: String,
13
+ enum: ["superAdmin", "admin"],
14
+ default: "admin"
15
+ },
16
+ gender: { type: String, required: true },
17
+ dob: { type: Date }
18
+ });
19
+
20
+ adminSchema.pre("save", async function (next) {
21
+ this.password = await bcrypt.hash(this.password, saltrounds);
22
+ next();
23
+ });
24
+
25
+ export const adminModel = mongoose.model("admins", adminSchema);
src/modules/console/Admin/services/admin.service.ts ADDED
@@ -0,0 +1,268 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import bcrypt from "bcrypt";
2
+ import {adminModel, saltrounds} from '../models/admin.model'
3
+
4
+
5
+ export class AdminService {
6
+ static async find(filterObject) {
7
+ try {
8
+ const resultObject = await adminModel.findOne(filterObject).lean();
9
+
10
+ if (!resultObject)
11
+ return {
12
+ success: false,
13
+ code: 404,
14
+ error: "No Matching Result Found.",
15
+ };
16
+
17
+ return {
18
+ success: true,
19
+ code: 200,
20
+ result: resultObject,
21
+ };
22
+ } catch (err) {
23
+ console.log(`err.message`, err.message);
24
+ return {
25
+ success: false,
26
+ code: 500,
27
+ error: "Unexpected Error Happened.",
28
+ };
29
+ }
30
+ }
31
+
32
+ static async get(filterObject) {
33
+ try {
34
+ const resultObject = await adminModel.findOne(filterObject).lean();
35
+ if (!resultObject)
36
+ return {
37
+ success: false,
38
+ code: 404,
39
+ error: "No Matching Result Found.",
40
+ };
41
+ return {
42
+ success: true,
43
+ code: 200,
44
+ result: resultObject,
45
+ };
46
+ } catch (err) {
47
+ console.log(`err.message`, err.message);
48
+ return {
49
+ success: false,
50
+ code: 500,
51
+ error: "Unexpected Error Happened.",
52
+ };
53
+ }
54
+ }
55
+
56
+ static async list(filterObject) {
57
+ try {
58
+ const resultArray = await adminModel
59
+ .find(filterObject)
60
+ .lean()
61
+ .select("-password");
62
+
63
+ if (!resultArray)
64
+ return {
65
+ success: false,
66
+ code: 404,
67
+ error: "No Matching Result Found.",
68
+ };
69
+ const count = await adminModel.countDocuments(filterObject);
70
+ return {
71
+ success: true,
72
+ code: 200,
73
+ result: resultArray,
74
+ count,
75
+ };
76
+ } catch (err) {
77
+ console.log(`err.message`, err.message);
78
+ return {
79
+ success: false,
80
+ code: 500,
81
+ error: "Unexpected Error Happened.",
82
+ };
83
+ }
84
+ }
85
+
86
+ static async create(formObject) {
87
+ try {
88
+ if (formObject.email) formObject.email = formObject.email.toLowerCase();
89
+ const resultObject = new adminModel(formObject);
90
+ await resultObject.save();
91
+
92
+ if (!resultObject)
93
+ return {
94
+ success: false,
95
+ code: 500,
96
+ error: "Unexpected Error Happened.",
97
+ };
98
+
99
+ return {
100
+ success: true,
101
+ code: 201,
102
+ result: resultObject,
103
+ };
104
+ } catch (err) {
105
+ console.log(`err.message`, err.message);
106
+ return {
107
+ success: false,
108
+ code: 500,
109
+ error: "Unexpected Error Happened.",
110
+ };
111
+ }
112
+ }
113
+
114
+ static async update(_id, formObject) {
115
+ try {
116
+ const existingObject = await this.find({ _id });
117
+ if (!existingObject.success)
118
+ return {
119
+ success: false,
120
+ code: 404,
121
+ error: "No Matching Result Found.",
122
+ };
123
+ if (formObject.email) {
124
+ formObject.email = formObject.email.toLowerCase();
125
+ const duplicate = await this.find({ email: formObject.email });
126
+ if (
127
+ duplicate.success &&
128
+ duplicate.result._id.toString() != existingObject.result._id.toString()
129
+ )
130
+ return {
131
+ success: false,
132
+ error: "This Email is taken by another user",
133
+ code: 409,
134
+ };
135
+ }
136
+
137
+ const resultObject = await adminModel.findByIdAndUpdate(
138
+ { _id },
139
+ formObject
140
+ );
141
+
142
+ if (!resultObject)
143
+ return {
144
+ success: false,
145
+ code: 500,
146
+ error: "Unexpected Error Happened.",
147
+ };
148
+
149
+ return {
150
+ success: true,
151
+ code: 200,
152
+ result: resultObject,
153
+ };
154
+ } catch (err) {
155
+ console.log(`err.message`, err.message);
156
+ return {
157
+ success: false,
158
+ code: 500,
159
+ error: "Unexpected Error Happened.",
160
+ };
161
+ }
162
+ }
163
+
164
+ static async remove(_id) {
165
+ try {
166
+ const resultObject = await adminModel.findByIdAndDelete({ _id });
167
+ if (!resultObject)
168
+ return {
169
+ success: false,
170
+ code: 404,
171
+ error: "No Matching Result Found.",
172
+ };
173
+
174
+ return {
175
+ success: true,
176
+ code: 200,
177
+ result: "Deleted Successfully.",
178
+ };
179
+ } catch (err) {
180
+ console.log(`err.message`, err.message);
181
+ return {
182
+ success: false,
183
+ code: 500,
184
+ error: "Unexpected Error Happened.",
185
+ };
186
+ }
187
+ }
188
+
189
+ static async comparePassword(emailString, passwordString) {
190
+ try {
191
+ emailString = emailString.toLowerCase();
192
+ const existingObject = await this.find({ email: emailString });
193
+
194
+ if (!existingObject.success)
195
+ return {
196
+ success: false,
197
+ code: 404,
198
+ error: "No Matching Result Found.",
199
+ };
200
+
201
+ const matchingPasswords = await bcrypt.compare(
202
+ passwordString,
203
+ existingObject.result.password
204
+ );
205
+ if (!matchingPasswords)
206
+ return {
207
+ success: false,
208
+ code: 409,
209
+ error: "Incorrect Password.",
210
+ };
211
+
212
+ return {
213
+ success: true,
214
+ result: existingObject.result,
215
+ code: 200,
216
+ };
217
+ } catch (err) {
218
+ console.log(`err.message`, err.message);
219
+ return {
220
+ success: false,
221
+ code: 500,
222
+ error: "Unexpected Error Happened.",
223
+ };
224
+ }
225
+ }
226
+
227
+ static async resetPassword(emailString, newPasswordString) {
228
+ try {
229
+ emailString = emailString.toLowerCase();
230
+ const existingObject = await this.find({ email: emailString });
231
+
232
+ if (!existingObject.success)
233
+ return {
234
+ success: false,
235
+ code: 404,
236
+ error: "No Matching Result Found.",
237
+ };
238
+
239
+ const hashedPassword = await bcrypt.hash(newPasswordString, saltrounds);
240
+ const resultObject = await adminModel.findOneAndUpdate(
241
+ { email: emailString },
242
+ { password: hashedPassword }
243
+ );
244
+
245
+ if (!resultObject)
246
+ return {
247
+ success: false,
248
+ code: 500,
249
+ error: "Unexpected Error Happened.",
250
+ };
251
+
252
+ return {
253
+ success: true,
254
+ code: 200,
255
+ };
256
+ } catch (err) {
257
+ console.log(`err.message`, err.message);
258
+ return {
259
+ success: false,
260
+ code: 500,
261
+ error: "Unexpected Error Happened.",
262
+ };
263
+ }
264
+ }
265
+ }
266
+
267
+
268
+