Updated backend to use nodemon for development, removed minio integration and made other changes
This commit is contained in:
		| @@ -13,4 +13,4 @@ RUN npm install | |||||||
| COPY . /app | COPY . /app | ||||||
|  |  | ||||||
| # launch node server | # launch node server | ||||||
| ENTRYPOINT node server.js | ENTRYPOINT npm run start | ||||||
							
								
								
									
										640
									
								
								backend/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										640
									
								
								backend/package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -13,6 +13,9 @@ | |||||||
|         "express": "^4.17.2", |         "express": "^4.17.2", | ||||||
|         "minio": "^7.0.26", |         "minio": "^7.0.26", | ||||||
|         "mongodb": "^4.3.1" |         "mongodb": "^4.3.1" | ||||||
|  |       }, | ||||||
|  |       "devDependencies": { | ||||||
|  |         "nodemon": "^2.0.20" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/@types/node": { |     "node_modules/@types/node": { | ||||||
| @@ -40,6 +43,12 @@ | |||||||
|       "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", |       "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", | ||||||
|       "optional": true |       "optional": true | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/abbrev": { | ||||||
|  |       "version": "1.1.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | ||||||
|  |       "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "node_modules/accepts": { |     "node_modules/accepts": { | ||||||
|       "version": "1.3.7", |       "version": "1.3.7", | ||||||
|       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", |       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", | ||||||
| @@ -52,6 +61,19 @@ | |||||||
|         "node": ">= 0.6" |         "node": ">= 0.6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/anymatch": { | ||||||
|  |       "version": "3.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", | ||||||
|  |       "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "normalize-path": "^3.0.0", | ||||||
|  |         "picomatch": "^2.0.4" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">= 8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/array-flatten": { |     "node_modules/array-flatten": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | ||||||
| @@ -89,6 +111,12 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/balanced-match": { | ||||||
|  |       "version": "1.0.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||||
|  |       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "node_modules/base64-js": { |     "node_modules/base64-js": { | ||||||
|       "version": "1.5.1", |       "version": "1.5.1", | ||||||
|       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", |       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", | ||||||
| @@ -108,6 +136,15 @@ | |||||||
|         } |         } | ||||||
|       ] |       ] | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/binary-extensions": { | ||||||
|  |       "version": "2.2.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", | ||||||
|  |       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/block-stream2": { |     "node_modules/block-stream2": { | ||||||
|       "version": "2.1.0", |       "version": "2.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", |       "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", | ||||||
| @@ -141,6 +178,28 @@ | |||||||
|         "node": ">= 0.8" |         "node": ">= 0.8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/brace-expansion": { | ||||||
|  |       "version": "1.1.11", | ||||||
|  |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||||
|  |       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "balanced-match": "^1.0.0", | ||||||
|  |         "concat-map": "0.0.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/braces": { | ||||||
|  |       "version": "3.0.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", | ||||||
|  |       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "fill-range": "^7.0.1" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/brorand": { |     "node_modules/brorand": { | ||||||
|       "version": "1.1.0", |       "version": "1.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", | ||||||
| @@ -269,6 +328,33 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/chokidar": { | ||||||
|  |       "version": "3.5.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", | ||||||
|  |       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "funding": [ | ||||||
|  |         { | ||||||
|  |           "type": "individual", | ||||||
|  |           "url": "https://paulmillr.com/funding/" | ||||||
|  |         } | ||||||
|  |       ], | ||||||
|  |       "dependencies": { | ||||||
|  |         "anymatch": "~3.1.2", | ||||||
|  |         "braces": "~3.0.2", | ||||||
|  |         "glob-parent": "~5.1.2", | ||||||
|  |         "is-binary-path": "~2.1.0", | ||||||
|  |         "is-glob": "~4.0.1", | ||||||
|  |         "normalize-path": "~3.0.0", | ||||||
|  |         "readdirp": "~3.6.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">= 8.10.0" | ||||||
|  |       }, | ||||||
|  |       "optionalDependencies": { | ||||||
|  |         "fsevents": "~2.3.2" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/cipher-base": { |     "node_modules/cipher-base": { | ||||||
|       "version": "1.0.4", |       "version": "1.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", |       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", | ||||||
| @@ -278,6 +364,12 @@ | |||||||
|         "safe-buffer": "^5.0.1" |         "safe-buffer": "^5.0.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/concat-map": { | ||||||
|  |       "version": "0.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||||
|  |       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "node_modules/content-disposition": { |     "node_modules/content-disposition": { | ||||||
|       "version": "0.5.4", |       "version": "0.5.4", | ||||||
|       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", |       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", | ||||||
| @@ -609,6 +701,18 @@ | |||||||
|         "url": "https://paypal.me/naturalintelligence" |         "url": "https://paypal.me/naturalintelligence" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/fill-range": { | ||||||
|  |       "version": "7.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", | ||||||
|  |       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "to-regex-range": "^5.0.1" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/finalhandler": { |     "node_modules/finalhandler": { | ||||||
|       "version": "1.1.2", |       "version": "1.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", |       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", | ||||||
| @@ -647,6 +751,20 @@ | |||||||
|         "node": ">= 0.6" |         "node": ">= 0.6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/fsevents": { | ||||||
|  |       "version": "2.3.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", | ||||||
|  |       "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "hasInstallScript": true, | ||||||
|  |       "optional": true, | ||||||
|  |       "os": [ | ||||||
|  |         "darwin" | ||||||
|  |       ], | ||||||
|  |       "engines": { | ||||||
|  |         "node": "^8.16.0 || ^10.6.0 || >=11.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/function-bind": { |     "node_modules/function-bind": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", | ||||||
| @@ -680,6 +798,18 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/glob-parent": { | ||||||
|  |       "version": "5.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", | ||||||
|  |       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "is-glob": "^4.0.1" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">= 6" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/has": { |     "node_modules/has": { | ||||||
|       "version": "1.0.3", |       "version": "1.0.3", | ||||||
|       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", |       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", | ||||||
| @@ -699,6 +829,15 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/has-flag": { | ||||||
|  |       "version": "3.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | ||||||
|  |       "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=4" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/has-symbols": { |     "node_modules/has-symbols": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", | ||||||
| @@ -801,6 +940,12 @@ | |||||||
|         } |         } | ||||||
|       ] |       ] | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/ignore-by-default": { | ||||||
|  |       "version": "1.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", | ||||||
|  |       "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "node_modules/inherits": { |     "node_modules/inherits": { | ||||||
|       "version": "2.0.4", |       "version": "2.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", |       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||||||
| @@ -858,6 +1003,18 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/is-binary-path": { | ||||||
|  |       "version": "2.1.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", | ||||||
|  |       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "binary-extensions": "^2.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/is-boolean-object": { |     "node_modules/is-boolean-object": { | ||||||
|       "version": "1.1.2", |       "version": "1.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", |       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", | ||||||
| @@ -898,6 +1055,15 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/is-extglob": { | ||||||
|  |       "version": "2.1.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", | ||||||
|  |       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=0.10.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/is-generator-function": { |     "node_modules/is-generator-function": { | ||||||
|       "version": "1.0.10", |       "version": "1.0.10", | ||||||
|       "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", |       "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", | ||||||
| @@ -912,6 +1078,18 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/is-glob": { | ||||||
|  |       "version": "4.0.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", | ||||||
|  |       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "is-extglob": "^2.1.1" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=0.10.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/is-negative-zero": { |     "node_modules/is-negative-zero": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", |       "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", | ||||||
| @@ -923,6 +1101,15 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/is-number": { | ||||||
|  |       "version": "7.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", | ||||||
|  |       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", | ||||||
|  |       "dev": true, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=0.12.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/is-number-object": { |     "node_modules/is-number-object": { | ||||||
|       "version": "1.0.6", |       "version": "1.0.6", | ||||||
|       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", |       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", | ||||||
| @@ -1121,6 +1308,18 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", | ||||||
|       "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" |       "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/minimatch": { | ||||||
|  |       "version": "3.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", | ||||||
|  |       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "brace-expansion": "^1.1.7" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": "*" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/minimist": { |     "node_modules/minimist": { | ||||||
|       "version": "1.2.5", |       "version": "1.2.5", | ||||||
|       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", |       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", | ||||||
| @@ -1210,6 +1409,73 @@ | |||||||
|         "node": ">= 0.6" |         "node": ">= 0.6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/nodemon": { | ||||||
|  |       "version": "2.0.20", | ||||||
|  |       "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", | ||||||
|  |       "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "chokidar": "^3.5.2", | ||||||
|  |         "debug": "^3.2.7", | ||||||
|  |         "ignore-by-default": "^1.0.1", | ||||||
|  |         "minimatch": "^3.1.2", | ||||||
|  |         "pstree.remy": "^1.1.8", | ||||||
|  |         "semver": "^5.7.1", | ||||||
|  |         "simple-update-notifier": "^1.0.7", | ||||||
|  |         "supports-color": "^5.5.0", | ||||||
|  |         "touch": "^3.1.0", | ||||||
|  |         "undefsafe": "^2.0.5" | ||||||
|  |       }, | ||||||
|  |       "bin": { | ||||||
|  |         "nodemon": "bin/nodemon.js" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8.10.0" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "type": "opencollective", | ||||||
|  |         "url": "https://opencollective.com/nodemon" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/nodemon/node_modules/debug": { | ||||||
|  |       "version": "3.2.7", | ||||||
|  |       "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | ||||||
|  |       "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "ms": "^2.1.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/nodemon/node_modules/ms": { | ||||||
|  |       "version": "2.1.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||||||
|  |       "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|  |     "node_modules/nopt": { | ||||||
|  |       "version": "1.0.10", | ||||||
|  |       "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", | ||||||
|  |       "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "abbrev": "1" | ||||||
|  |       }, | ||||||
|  |       "bin": { | ||||||
|  |         "nopt": "bin/nopt.js" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": "*" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/normalize-path": { | ||||||
|  |       "version": "3.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", | ||||||
|  |       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=0.10.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/object-assign": { |     "node_modules/object-assign": { | ||||||
|       "version": "4.1.1", |       "version": "4.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", |       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", | ||||||
| @@ -1302,6 +1568,18 @@ | |||||||
|         "node": ">=0.12" |         "node": ">=0.12" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/picomatch": { | ||||||
|  |       "version": "2.3.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", | ||||||
|  |       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8.6" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "url": "https://github.com/sponsors/jonschlinkert" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/proxy-addr": { |     "node_modules/proxy-addr": { | ||||||
|       "version": "2.0.7", |       "version": "2.0.7", | ||||||
|       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", |       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | ||||||
| @@ -1314,6 +1592,12 @@ | |||||||
|         "node": ">= 0.10" |         "node": ">= 0.10" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/pstree.remy": { | ||||||
|  |       "version": "1.1.8", | ||||||
|  |       "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", | ||||||
|  |       "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "node_modules/public-encrypt": { |     "node_modules/public-encrypt": { | ||||||
|       "version": "4.0.3", |       "version": "4.0.3", | ||||||
|       "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", |       "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", | ||||||
| @@ -1412,6 +1696,18 @@ | |||||||
|         "node": ">= 6" |         "node": ">= 6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/readdirp": { | ||||||
|  |       "version": "3.6.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", | ||||||
|  |       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "picomatch": "^2.2.1" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8.10.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/ripemd160": { |     "node_modules/ripemd160": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", |       "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", | ||||||
| @@ -1462,6 +1758,15 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", |       "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", | ||||||
|       "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" |       "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/semver": { | ||||||
|  |       "version": "5.7.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", | ||||||
|  |       "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "bin": { | ||||||
|  |         "semver": "bin/semver" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/send": { |     "node_modules/send": { | ||||||
|       "version": "0.17.2", |       "version": "0.17.2", | ||||||
|       "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", |       "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", | ||||||
| @@ -1534,6 +1839,27 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/simple-update-notifier": { | ||||||
|  |       "version": "1.0.7", | ||||||
|  |       "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", | ||||||
|  |       "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "semver": "~7.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8.10.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "node_modules/simple-update-notifier/node_modules/semver": { | ||||||
|  |       "version": "7.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", | ||||||
|  |       "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", | ||||||
|  |       "dev": true, | ||||||
|  |       "bin": { | ||||||
|  |         "semver": "bin/semver.js" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/smart-buffer": { |     "node_modules/smart-buffer": { | ||||||
|       "version": "4.2.0", |       "version": "4.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", |       "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", | ||||||
| @@ -1610,6 +1936,18 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", |       "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", | ||||||
|       "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" |       "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/supports-color": { | ||||||
|  |       "version": "5.5.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||||||
|  |       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "has-flag": "^3.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=4" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/through2": { |     "node_modules/through2": { | ||||||
|       "version": "3.0.2", |       "version": "3.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", |       "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", | ||||||
| @@ -1619,6 +1957,18 @@ | |||||||
|         "readable-stream": "2 || 3" |         "readable-stream": "2 || 3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/to-regex-range": { | ||||||
|  |       "version": "5.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", | ||||||
|  |       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "is-number": "^7.0.0" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/toidentifier": { |     "node_modules/toidentifier": { | ||||||
|       "version": "1.0.1", |       "version": "1.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", | ||||||
| @@ -1627,6 +1977,18 @@ | |||||||
|         "node": ">=0.6" |         "node": ">=0.6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/touch": { | ||||||
|  |       "version": "3.1.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", | ||||||
|  |       "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "dependencies": { | ||||||
|  |         "nopt": "~1.0.10" | ||||||
|  |       }, | ||||||
|  |       "bin": { | ||||||
|  |         "nodetouch": "bin/nodetouch.js" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/tr46": { |     "node_modules/tr46": { | ||||||
|       "version": "3.0.0", |       "version": "3.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", | ||||||
| @@ -1664,6 +2026,12 @@ | |||||||
|         "url": "https://github.com/sponsors/ljharb" |         "url": "https://github.com/sponsors/ljharb" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/undefsafe": { | ||||||
|  |       "version": "2.0.5", | ||||||
|  |       "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", | ||||||
|  |       "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "node_modules/unpipe": { |     "node_modules/unpipe": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||||||
| @@ -1823,6 +2191,12 @@ | |||||||
|       "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", |       "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", | ||||||
|       "optional": true |       "optional": true | ||||||
|     }, |     }, | ||||||
|  |     "abbrev": { | ||||||
|  |       "version": "1.1.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | ||||||
|  |       "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "accepts": { |     "accepts": { | ||||||
|       "version": "1.3.7", |       "version": "1.3.7", | ||||||
|       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", |       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", | ||||||
| @@ -1832,6 +2206,16 @@ | |||||||
|         "negotiator": "0.6.2" |         "negotiator": "0.6.2" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "anymatch": { | ||||||
|  |       "version": "3.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", | ||||||
|  |       "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "normalize-path": "^3.0.0", | ||||||
|  |         "picomatch": "^2.0.4" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "array-flatten": { |     "array-flatten": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | ||||||
| @@ -1865,11 +2249,23 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", |       "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", | ||||||
|       "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" |       "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" | ||||||
|     }, |     }, | ||||||
|  |     "balanced-match": { | ||||||
|  |       "version": "1.0.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||||
|  |       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "base64-js": { |     "base64-js": { | ||||||
|       "version": "1.5.1", |       "version": "1.5.1", | ||||||
|       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", |       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", | ||||||
|       "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" |       "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" | ||||||
|     }, |     }, | ||||||
|  |     "binary-extensions": { | ||||||
|  |       "version": "2.2.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", | ||||||
|  |       "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "block-stream2": { |     "block-stream2": { | ||||||
|       "version": "2.1.0", |       "version": "2.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", |       "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", | ||||||
| @@ -1900,6 +2296,25 @@ | |||||||
|         "type-is": "~1.6.18" |         "type-is": "~1.6.18" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "brace-expansion": { | ||||||
|  |       "version": "1.1.11", | ||||||
|  |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||||
|  |       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "balanced-match": "^1.0.0", | ||||||
|  |         "concat-map": "0.0.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "braces": { | ||||||
|  |       "version": "3.0.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", | ||||||
|  |       "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "fill-range": "^7.0.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "brorand": { |     "brorand": { | ||||||
|       "version": "1.1.0", |       "version": "1.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", | ||||||
| @@ -2005,6 +2420,22 @@ | |||||||
|         "get-intrinsic": "^1.0.2" |         "get-intrinsic": "^1.0.2" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "chokidar": { | ||||||
|  |       "version": "3.5.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", | ||||||
|  |       "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "anymatch": "~3.1.2", | ||||||
|  |         "braces": "~3.0.2", | ||||||
|  |         "fsevents": "~2.3.2", | ||||||
|  |         "glob-parent": "~5.1.2", | ||||||
|  |         "is-binary-path": "~2.1.0", | ||||||
|  |         "is-glob": "~4.0.1", | ||||||
|  |         "normalize-path": "~3.0.0", | ||||||
|  |         "readdirp": "~3.6.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "cipher-base": { |     "cipher-base": { | ||||||
|       "version": "1.0.4", |       "version": "1.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", |       "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", | ||||||
| @@ -2014,6 +2445,12 @@ | |||||||
|         "safe-buffer": "^5.0.1" |         "safe-buffer": "^5.0.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "concat-map": { | ||||||
|  |       "version": "0.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||||
|  |       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "content-disposition": { |     "content-disposition": { | ||||||
|       "version": "0.5.4", |       "version": "0.5.4", | ||||||
|       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", |       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", | ||||||
| @@ -2299,6 +2736,15 @@ | |||||||
|         "strnum": "^1.0.4" |         "strnum": "^1.0.4" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "fill-range": { | ||||||
|  |       "version": "7.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", | ||||||
|  |       "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "to-regex-range": "^5.0.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "finalhandler": { |     "finalhandler": { | ||||||
|       "version": "1.1.2", |       "version": "1.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", |       "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", | ||||||
| @@ -2328,6 +2774,13 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", |       "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", | ||||||
|       "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" |       "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" | ||||||
|     }, |     }, | ||||||
|  |     "fsevents": { | ||||||
|  |       "version": "2.3.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", | ||||||
|  |       "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "optional": true | ||||||
|  |     }, | ||||||
|     "function-bind": { |     "function-bind": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", | ||||||
| @@ -2352,6 +2805,15 @@ | |||||||
|         "get-intrinsic": "^1.1.1" |         "get-intrinsic": "^1.1.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "glob-parent": { | ||||||
|  |       "version": "5.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", | ||||||
|  |       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "is-glob": "^4.0.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "has": { |     "has": { | ||||||
|       "version": "1.0.3", |       "version": "1.0.3", | ||||||
|       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", |       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", | ||||||
| @@ -2365,6 +2827,12 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", | ||||||
|       "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" |       "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" | ||||||
|     }, |     }, | ||||||
|  |     "has-flag": { | ||||||
|  |       "version": "3.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | ||||||
|  |       "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "has-symbols": { |     "has-symbols": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", | ||||||
| @@ -2432,6 +2900,12 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", |       "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", | ||||||
|       "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" |       "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" | ||||||
|     }, |     }, | ||||||
|  |     "ignore-by-default": { | ||||||
|  |       "version": "1.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", | ||||||
|  |       "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "inherits": { |     "inherits": { | ||||||
|       "version": "2.0.4", |       "version": "2.0.4", | ||||||
|       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", |       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", | ||||||
| @@ -2474,6 +2948,15 @@ | |||||||
|         "has-bigints": "^1.0.1" |         "has-bigints": "^1.0.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "is-binary-path": { | ||||||
|  |       "version": "2.1.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", | ||||||
|  |       "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "binary-extensions": "^2.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "is-boolean-object": { |     "is-boolean-object": { | ||||||
|       "version": "1.1.2", |       "version": "1.1.2", | ||||||
|       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", |       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", | ||||||
| @@ -2496,6 +2979,12 @@ | |||||||
|         "has-tostringtag": "^1.0.0" |         "has-tostringtag": "^1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "is-extglob": { | ||||||
|  |       "version": "2.1.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", | ||||||
|  |       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "is-generator-function": { |     "is-generator-function": { | ||||||
|       "version": "1.0.10", |       "version": "1.0.10", | ||||||
|       "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", |       "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", | ||||||
| @@ -2504,11 +2993,26 @@ | |||||||
|         "has-tostringtag": "^1.0.0" |         "has-tostringtag": "^1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "is-glob": { | ||||||
|  |       "version": "4.0.3", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", | ||||||
|  |       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "is-extglob": "^2.1.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "is-negative-zero": { |     "is-negative-zero": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", |       "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", | ||||||
|       "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" |       "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" | ||||||
|     }, |     }, | ||||||
|  |     "is-number": { | ||||||
|  |       "version": "7.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", | ||||||
|  |       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "is-number-object": { |     "is-number-object": { | ||||||
|       "version": "1.0.6", |       "version": "1.0.6", | ||||||
|       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", |       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", | ||||||
| @@ -2652,6 +3156,15 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", | ||||||
|       "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" |       "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" | ||||||
|     }, |     }, | ||||||
|  |     "minimatch": { | ||||||
|  |       "version": "3.1.2", | ||||||
|  |       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", | ||||||
|  |       "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "brace-expansion": "^1.1.7" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "minimist": { |     "minimist": { | ||||||
|       "version": "1.2.5", |       "version": "1.2.5", | ||||||
|       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", |       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", | ||||||
| @@ -2726,6 +3239,56 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", |       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", | ||||||
|       "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" |       "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" | ||||||
|     }, |     }, | ||||||
|  |     "nodemon": { | ||||||
|  |       "version": "2.0.20", | ||||||
|  |       "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", | ||||||
|  |       "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "chokidar": "^3.5.2", | ||||||
|  |         "debug": "^3.2.7", | ||||||
|  |         "ignore-by-default": "^1.0.1", | ||||||
|  |         "minimatch": "^3.1.2", | ||||||
|  |         "pstree.remy": "^1.1.8", | ||||||
|  |         "semver": "^5.7.1", | ||||||
|  |         "simple-update-notifier": "^1.0.7", | ||||||
|  |         "supports-color": "^5.5.0", | ||||||
|  |         "touch": "^3.1.0", | ||||||
|  |         "undefsafe": "^2.0.5" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "debug": { | ||||||
|  |           "version": "3.2.7", | ||||||
|  |           "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", | ||||||
|  |           "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", | ||||||
|  |           "dev": true, | ||||||
|  |           "requires": { | ||||||
|  |             "ms": "^2.1.1" | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |         "ms": { | ||||||
|  |           "version": "2.1.3", | ||||||
|  |           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||||||
|  |           "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||||||
|  |           "dev": true | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "nopt": { | ||||||
|  |       "version": "1.0.10", | ||||||
|  |       "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", | ||||||
|  |       "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "abbrev": "1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "normalize-path": { | ||||||
|  |       "version": "3.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", | ||||||
|  |       "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "object-assign": { |     "object-assign": { | ||||||
|       "version": "4.1.1", |       "version": "4.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", |       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", | ||||||
| @@ -2794,6 +3357,12 @@ | |||||||
|         "sha.js": "^2.4.8" |         "sha.js": "^2.4.8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "picomatch": { | ||||||
|  |       "version": "2.3.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", | ||||||
|  |       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "proxy-addr": { |     "proxy-addr": { | ||||||
|       "version": "2.0.7", |       "version": "2.0.7", | ||||||
|       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", |       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | ||||||
| @@ -2803,6 +3372,12 @@ | |||||||
|         "ipaddr.js": "1.9.1" |         "ipaddr.js": "1.9.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "pstree.remy": { | ||||||
|  |       "version": "1.1.8", | ||||||
|  |       "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", | ||||||
|  |       "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "public-encrypt": { |     "public-encrypt": { | ||||||
|       "version": "4.0.3", |       "version": "4.0.3", | ||||||
|       "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", |       "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", | ||||||
| @@ -2881,6 +3456,15 @@ | |||||||
|         "util-deprecate": "^1.0.1" |         "util-deprecate": "^1.0.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "readdirp": { | ||||||
|  |       "version": "3.6.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", | ||||||
|  |       "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "picomatch": "^2.2.1" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "ripemd160": { |     "ripemd160": { | ||||||
|       "version": "2.0.2", |       "version": "2.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", |       "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", | ||||||
| @@ -2914,6 +3498,12 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", |       "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", | ||||||
|       "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" |       "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" | ||||||
|     }, |     }, | ||||||
|  |     "semver": { | ||||||
|  |       "version": "5.7.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", | ||||||
|  |       "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "send": { |     "send": { | ||||||
|       "version": "0.17.2", |       "version": "0.17.2", | ||||||
|       "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", |       "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", | ||||||
| @@ -2976,6 +3566,23 @@ | |||||||
|         "object-inspect": "^1.9.0" |         "object-inspect": "^1.9.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "simple-update-notifier": { | ||||||
|  |       "version": "1.0.7", | ||||||
|  |       "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", | ||||||
|  |       "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "semver": "~7.0.0" | ||||||
|  |       }, | ||||||
|  |       "dependencies": { | ||||||
|  |         "semver": { | ||||||
|  |           "version": "7.0.0", | ||||||
|  |           "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", | ||||||
|  |           "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", | ||||||
|  |           "dev": true | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "smart-buffer": { |     "smart-buffer": { | ||||||
|       "version": "4.2.0", |       "version": "4.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", |       "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", | ||||||
| @@ -3035,6 +3642,15 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", |       "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", | ||||||
|       "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" |       "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" | ||||||
|     }, |     }, | ||||||
|  |     "supports-color": { | ||||||
|  |       "version": "5.5.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||||||
|  |       "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "has-flag": "^3.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "through2": { |     "through2": { | ||||||
|       "version": "3.0.2", |       "version": "3.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", |       "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", | ||||||
| @@ -3044,11 +3660,29 @@ | |||||||
|         "readable-stream": "2 || 3" |         "readable-stream": "2 || 3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "to-regex-range": { | ||||||
|  |       "version": "5.0.1", | ||||||
|  |       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", | ||||||
|  |       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "is-number": "^7.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "toidentifier": { |     "toidentifier": { | ||||||
|       "version": "1.0.1", |       "version": "1.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", | ||||||
|       "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" |       "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" | ||||||
|     }, |     }, | ||||||
|  |     "touch": { | ||||||
|  |       "version": "3.1.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", | ||||||
|  |       "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", | ||||||
|  |       "dev": true, | ||||||
|  |       "requires": { | ||||||
|  |         "nopt": "~1.0.10" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "tr46": { |     "tr46": { | ||||||
|       "version": "3.0.0", |       "version": "3.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", | ||||||
| @@ -3077,6 +3711,12 @@ | |||||||
|         "which-boxed-primitive": "^1.0.2" |         "which-boxed-primitive": "^1.0.2" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "undefsafe": { | ||||||
|  |       "version": "2.0.5", | ||||||
|  |       "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", | ||||||
|  |       "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", | ||||||
|  |       "dev": true | ||||||
|  |     }, | ||||||
|     "unpipe": { |     "unpipe": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
|   "main": "server.js", |   "main": "server.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "test": "echo \"Error: no test specified\" && exit 1", |     "test": "echo \"Error: no test specified\" && exit 1", | ||||||
|     "start": "node server.js", |     "start": "nodemon server.js -e ejs,js,css,html,jpg,png,scss", | ||||||
|     "build": "cd frontend && npm install && npm run build" |     "build": "cd frontend && npm install && npm run build" | ||||||
|   }, |   }, | ||||||
|   "keywords": [], |   "keywords": [], | ||||||
| @@ -16,5 +16,8 @@ | |||||||
|     "express": "^4.17.2", |     "express": "^4.17.2", | ||||||
|     "minio": "^7.0.26", |     "minio": "^7.0.26", | ||||||
|     "mongodb": "^4.3.1" |     "mongodb": "^4.3.1" | ||||||
|  |   }, | ||||||
|  |   "devDependencies": { | ||||||
|  |     "nodemon": "^2.0.20" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,21 +1,12 @@ | |||||||
| const { MongoClient } = require("mongodb"); | const { MongoClient } = require("mongodb"); | ||||||
| const express = require('express'); | const express = require('express'); | ||||||
| const minio = require('minio'); |  | ||||||
|  |  | ||||||
| /*============== VARIABLE DECLARATION ==============*/ | /*============== VARIABLE DECLARATION ==============*/ | ||||||
| // Mongo set-up variables | // Mongo set-up variables | ||||||
| const mongoCollection = process.env.MONGO_COLLECTION || 'eventlog'; | const mongoCollection = process.env.MONGO_COLLECTION || 'log'; | ||||||
| const mongoUri = process.env.MONGO_URI || 'mongodb://127.0.0.1:27017/default?replicaSet=rs0'; | const mongoUri = process.env.MONGODB_HOST || 'mongodb://127.0.0.1:27017/default?replicaSet=rs0'; | ||||||
|  |  | ||||||
| // Minio set-up variables | const historyNumber = parseInt(process.env.HISTORY_AMOUNT) || 50; | ||||||
| const minioAccessKey = process.env.MINIO_ACCESS_KEY || 'kspace-mugshot'; |  | ||||||
| const minioSecretKey = process.env.MINIO_SECRET_KEY || '2mSI6HdbJ8'; |  | ||||||
| const minioHostname = process.env.MINIO_HOSTNAME || '127.0.0.1'; |  | ||||||
| const minioPort = process.env.MINIO_PORT || 9000; |  | ||||||
| const minioScheme = process.env.MINIO_SCHEME || 'http'; |  | ||||||
| const minioBucket = process.env.MINIO_BUCKET || 'kspace-mugshot'; |  | ||||||
| console.info("Using bucket:", minioBucket); |  | ||||||
| const historyNumber = parseInt(process.env.HISTORY_AMOUNT) || 10; |  | ||||||
|  |  | ||||||
| // Stream set-up variables | // Stream set-up variables | ||||||
| let changeStream; | let changeStream; | ||||||
| @@ -38,63 +29,34 @@ async function run() { | |||||||
|  |  | ||||||
|   changeStream = collection.watch(pipeline, options); |   changeStream = collection.watch(pipeline, options); | ||||||
|   console.log("Started watching changes in database"); |   console.log("Started watching changes in database"); | ||||||
|   console.log("Minio hostname:", minioHostname); |  | ||||||
|   console.log("Minio port:", minioPort); |   const writeMessage = (response, blob) => { | ||||||
|   console.log("Minio protocol:", minioScheme); |     const message = `id: ${blob._id}\nevent: message\ndata: ${JSON.stringify(blob)}\n\n` | ||||||
|  |     response.write(message) | ||||||
|  |   } | ||||||
|  |  | ||||||
|   // Triggers on GET at /event route |   // Triggers on GET at /event route | ||||||
|   app.get('/events', async function (request, response) { |   app.get('/events', async function (request, response) { | ||||||
|     let minioClient = new minio.Client({ |  | ||||||
|       endPoint: minioHostname, |  | ||||||
|       port: parseInt(minioPort), |  | ||||||
|       useSSL: minioScheme == 'https', |  | ||||||
|       accessKey: minioAccessKey, |  | ||||||
|       secretKey: minioSecretKey |  | ||||||
|     }); |  | ||||||
|  |  | ||||||
|     async function wrapEvent(doc) { |       // Notify SSE to React | ||||||
|       let arr = []; |  | ||||||
|       let blob; |  | ||||||
|       if (doc && doc.screenshot_count) { |  | ||||||
|         for (let i = 1; i <= doc.screenshot_count ; i++) { |  | ||||||
|           arr.push({ |  | ||||||
|             url: await minioClient.presignedUrl('GET', minioBucket, |  | ||||||
|               `${doc.camera}/${doc._id}/${i}.jpg`, 60 * 60) |  | ||||||
|           }); |  | ||||||
|         } |  | ||||||
|       } else if (doc && doc.screenshots) { |  | ||||||
|         for (let j = 0; j < doc.screenshots.length; j++) { |  | ||||||
|           let path = doc.screenshots[j]; |  | ||||||
|           arr.push({ |  | ||||||
|             url: await minioClient.presignedUrl('GET', minioBucket, |  | ||||||
|               `thumb/${path}`, 60 * 60), |  | ||||||
|             orig: await minioClient.presignedUrl('GET', minioBucket, |  | ||||||
|               `${path}`, 60 * 60) |  | ||||||
|           }); |  | ||||||
|         } |  | ||||||
|       }; |  | ||||||
|  |  | ||||||
|       if (arr.length > 0) { |  | ||||||
|         blob = JSON.stringify({...doc, screenshots: [...arr]}); |  | ||||||
|       } else { |  | ||||||
|         blob = JSON.stringify({...doc}); |  | ||||||
|       } |  | ||||||
|       return `event: log-entry\ndata: ${blob}\n\n` |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     // Notify SSE to React |  | ||||||
|     const header = { 'Content-Type': 'text/event-stream', 'Connection': 'keep-alive' }; |     const header = { 'Content-Type': 'text/event-stream', 'Connection': 'keep-alive' }; | ||||||
|     response.writeHead(200, "OK", header); |     response.writeHead(200, "OK", header); | ||||||
|  |  | ||||||
|     const historyCursor = collection.find().sort({$natural:-1}).limit(historyNumber); |     const historyCursor = collection.find() | ||||||
|  |         .sort({$natural:-1}) | ||||||
|  |         .limit(historyNumber).toArray().then((res) => { | ||||||
|  |           res.reverse().forEach((document) => { | ||||||
|  |             writeMessage(response, document) | ||||||
|  |           }) | ||||||
|  |         }); | ||||||
|  |  | ||||||
|     historyCursor.forEach(async (document) => { |     const changeListener = async (change) => { | ||||||
|       response.write(await wrapEvent(document)); |       writeMessage(response, change.fullDocument) | ||||||
|  |     } | ||||||
|  |     changeStream.on("change", changeListener); | ||||||
|  |     response.on('close', () => { | ||||||
|  |       changeStream.removeListener("change", changeListener) | ||||||
|     }) |     }) | ||||||
|  |  | ||||||
|     changeStream.on("change", async(data) => { |  | ||||||
|       response.write(await wrapEvent(data.fullDocument)); |  | ||||||
|     }); |  | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   app.listen(PORT); |   app.listen(PORT); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user