From 0d06f7c469e7a20136dde64eefd4ade0ebc2c1dc Mon Sep 17 00:00:00 2001 From: Cynthia Black Date: Sat, 1 Oct 2022 14:00:59 -0800 Subject: [PATCH 1/6] Add site preview & Readme --- .DS_Store | Bin 0 -> 6148 bytes README.md | 26 ++++++++------------------ sitepreview.png | Bin 0 -> 74943 bytes 3 files changed, 8 insertions(+), 18 deletions(-) create mode 100644 .DS_Store create mode 100644 sitepreview.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5a52259b5d6a9bf10debf8dd5014807df38b24c8 GIT binary patch literal 6148 zcmeHKJx{|h5PgOYMJyc|^9Mr3KL{n=fPo5TS|vlIwnR-L!Iq!SyE}u32rE?RF0$YG zKAiKDV#ff&qARX|8GtF9U=U?Q#60RciNS(F=eWZXm)N1G+mVTm(ImB>;emBuBgdEe zH@98W9_Y=n!W$a2D7msZp74S#I_f2@bNbixt*Je7T;ibC8&ue%VCI~b5;e0Vx}kl? z(U!K9?UlOt8$Ky#srjVTJ8T$Nsl8(Ep1D6&dLJttS;sL_?ln0B&VV!E4E!+zJhMfn z=Z4-p1I~am@X3Je4+)!K7O^+ft%IFj0f-ZtRjA8dLUNLbS;XFu9!juOqNRp-#R!&8 zdlKWah`phuBj}qsPki&opUmhbf0*JUXTTZw zXAFc%zRDL|R6JY1ElKIyzresdt@Jhi literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 3236aa44b..31361ce60 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,12 @@ -#100Devs Simple Express App Submission +# Client Connect Call Tracker +A basic CRUD app with a dynamically-rendered table to display user-entered data. -### Goal: Make Your Own CRUD APP and Push To Heroku +**Link to project:** https://clientconnect.onrender.com -### How to submit your code for review: +![Site Preview Image](https://github.com/cynthiablack/simple-express-app-submission/blob/answer/sitepreview.png) -- Fork and clone this repo -- Create a new branch called answer -- Checkout answer branch -- Push to your fork -- Issue a pull request -- Your pull request description should contain the following: - - (1 to 5 no 3) I completed the challenge - - (1 to 5 no 3) I feel good about my code - - Anything specific on which you want feedback! +## How It's Made: -Example: -``` -I completed the challenge: 5 -I feel good about my code: 4 -I'm not sure if my constructors are setup cleanly... -``` +**Tech used:** MongoDB, Express.js, Node.js, Javascript, EJS, CSS + +ClientConnect allows users to enter client contact data into a web form, track follow up contacts on a dynamically-rendered table, and delete client contact information. \ No newline at end of file diff --git a/sitepreview.png b/sitepreview.png new file mode 100644 index 0000000000000000000000000000000000000000..c68bd5234a305201fca9626e0fac30d8577dd40a GIT binary patch literal 74943 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 z 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 V|A@gO^RIx1!|CtsST+I4{{tF9#LEBx literal 0 HcmV?d00001 From 97985265881e47ca9ed66820566b3b8d827b40a3 Mon Sep 17 00:00:00 2001 From: Cynthia Black Date: Sat, 1 Oct 2022 14:02:01 -0800 Subject: [PATCH 2/6] Add views, public, server.js --- .DS_Store | Bin 6148 -> 6148 bytes public/.DS_Store | Bin 0 -> 6148 bytes public/css/style.css | 56 +++++++++++++++++++++++++++++++++++ public/js/main.js | 68 +++++++++++++++++++++++++++++++++++++++++++ views/index.ejs | 52 +++++++++++++++++++++++++++++++++ 5 files changed, 176 insertions(+) create mode 100644 public/.DS_Store create mode 100644 public/css/style.css create mode 100644 public/js/main.js create mode 100644 views/index.ejs diff --git a/.DS_Store b/.DS_Store index 5a52259b5d6a9bf10debf8dd5014807df38b24c8..aa3109f3b1cb827a7f844e6f2f0394c3ff116c81 100644 GIT binary patch delta 69 zcmZoMXfc@JFUrioz`)4BAi%(o$&j2pY0cXG& z_)`YtsHRM=6Z-57I0MeW7X$Kr$T$RZ!y%!5Iyh+yKpfMoLS1?Z$;k|J!yzF(l#o)1 zDK%J&5mGwsnZ@OXL&B7fV9iIcJAXDWLGRA}GYv<`6Z-57I0L5)NbgIT%K3lKSLSS! zuOU7;1J1yIWgv`;WwGGX+1dKzIpwU)I9@qKByJFeLjB|?fD8GK+^948Gtn8B8x9F& T7qM$P(SHP#5TBfZUtr(^p71vY literal 0 HcmV?d00001 diff --git a/public/css/style.css b/public/css/style.css new file mode 100644 index 000000000..af40ed503 --- /dev/null +++ b/public/css/style.css @@ -0,0 +1,56 @@ +body { + font-family: 'Mulish', sans-serif; +} + +h1{ + font-family: 'Limelight', cursive; + text-align: center; +} + +h2, +.submit { + background-color: #586F7C; + color: #F4F4F9; + margin-bottom: 0; + padding-bottom: 0; + text-align: center; +} + +form, table { + border-spacing: 0px; + width: 100%; +} + +input { + font-size: 0.8rem; + height: 3.5vh; + margin: 0.5vh 0.25vw; + width: 15%; +} + +.submit { + border-radius: 0.25em; + text-transform: uppercase; + width: 8%; +} + +td, th { + border: 1px solid #586F7C; + font-size: 1rem; + padding: 0 .75em; + vertical-align: top; + text-align: center; +} + +th { + background-color: #C1CDD3; + font-weight: 800; +} + +tr:hover { + background-color: #B8DBD9; +} + +.fa { + color: #586F7C; +} \ No newline at end of file diff --git a/public/js/main.js b/public/js/main.js new file mode 100644 index 000000000..fe9067b14 --- /dev/null +++ b/public/js/main.js @@ -0,0 +1,68 @@ +const deleteText = document.querySelectorAll('.fa-trash') +const followUp = document.querySelectorAll('.fa-phone') + +Array.from(deleteText).forEach((element)=>{ + element.addEventListener('click', deleteClient) +}) + +Array.from(followUp).forEach((element)=>{ + element.addEventListener('click', addLike) +}) + +async function deleteClient(){ + const cName = this.closest("tr").children[0].innerText + const cEmail = this.closest("tr").children[1] + const cPhone = this.closest("tr").children[2] + const cDate = this.closest("tr").children[3] + const cNotes = this.closest("tr").children[4] + try { + const response = await fetch('deleteClient', { + method: 'delete', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ + 'clientNameS': cName, + 'clientEmailS': cEmail, + 'clientPhoneS': cPhone, + 'dateS': cDate, + 'clientNotesS': cNotes, + }) + }) + const data = await response.json() + console.log(data) + location.reload() + + }catch(err){ + console.log(err) + } +} + +async function addLike(){ + const cName = this.closest('tr').children[0].innerText + const cEmail = this.closest('tr').children[1].innerText + const cPhone = this.closest('tr').children[2].innerText + const cDate = this.closest('tr').children[3].innerText + const cNotes = this.closest('tr').children[4].innerText + const tLikes = this.closest('tr').children[5].innerText + + console.log(cName, tLikes) + try{ + const response = await fetch('addOneLike', { + method: 'put', + headers: {'Content-Type': 'application/json'}, + body: JSON.stringify({ + 'clientNameS': cName, + 'clientEmailS': cEmail, + 'clientPhoneS': cPhone, + 'dateS': cDate, + 'clientNotesS': cNotes, + 'likesS': Number(tLikes) + }) + }) + const data = await response.json() + console.log('Follow up recorded') + location.reload() + + }catch(err){ + console.log(err) + } +} \ No newline at end of file diff --git a/views/index.ejs b/views/index.ejs new file mode 100644 index 000000000..a2edbe461 --- /dev/null +++ b/views/index.ejs @@ -0,0 +1,52 @@ + + + + + + + ClientConnect Call Log + + + + + + + + +

Welcome to ClientConnect

+ +

Client Call Log

+ + + + + + + + <% for(var i = 0; i < info.length; i++) { %> + + + + + + + + + + <% } %> +
Client Name EmailPhone NumberDate ContactedNotesFollow Up?
<%= info[i].clientName %><%= info[i].clientEmail %><%= info[i].clientPhone %><%= info[i].date %><%= info[i].clientNotes %><%= info[i].likes %> <%= this.id %>
+ +

Add A Call:

+
+ + + + + + +
+ + + + + From b3a118d838970038983e0ac9a24476a316852817 Mon Sep 17 00:00:00 2001 From: Cynthia Black <96799365+cynthiablack@users.noreply.github.com> Date: Sat, 1 Oct 2022 14:02:30 -0800 Subject: [PATCH 3/6] Delete .DS_Store --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index aa3109f3b1cb827a7f844e6f2f0394c3ff116c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKO;3YB5PhqSsqxaINB#gd{sXM^rXFncY$+U?Kp_PZz46n1vpX6a@oJ2nA-ivw zuibq~*$x1==<{n}24Kn|=tLP2F^{@VH29S0e2pzOdAljIx-Lfw{Y8`P{R|CyWGL}v z|2z=R@rWgEkm8-@CS2i@t&IhbQ& z3>X8(fH82S49FEnnO+36*%&YejDb%Ez9B7G z|0RDiqfNdKvB?-P2L3ApZj!Fj1y84U>$h{tT^n({aEM6UAPR;0!Jh!W$amz@JA*$G aopFic5KyX!-KP`nkANq{CS%|i7( From 9047b28e22e9d11da1945ecd6c8a80e8def8e118 Mon Sep 17 00:00:00 2001 From: Cynthia Black Date: Sat, 1 Oct 2022 14:04:19 -0800 Subject: [PATCH 4/6] Copy over gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..69da19644 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +node_modules +.env \ No newline at end of file From 301c57d500590e6f27fa36f5d57cd35bd3f36273 Mon Sep 17 00:00:00 2001 From: Cynthia Black Date: Sat, 1 Oct 2022 14:06:12 -0800 Subject: [PATCH 5/6] Add server.js & NPM dependencies --- package-lock.json | 1871 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 27 + server.js | 80 ++ 3 files changed, 1978 insertions(+) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 server.js diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..c3b3672ef --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1871 @@ +{ + "name": "simple-express-app-submission", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "simple-express-app-submission", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "ejs": "^3.1.8", + "express": "^4.18.1", + "mongodb": "^4.10.0", + "mongoose": "^6.6.3" + } + }, + "node_modules/@types/node": { + "version": "18.7.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", + "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "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==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/bson": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz", + "integrity": "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/kareem": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz", + "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mongodb": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.10.0.tgz", + "integrity": "sha512-My2QxLTw0Cc1O9gih0mz4mqo145Jq4rLAQx0Glk/Ha9iYBzYpt4I2QFNRIh35uNFNfe8KFQcdwY1/HKxXBkinw==", + "dependencies": { + "bson": "^4.7.0", + "denque": "^2.1.0", + "mongodb-connection-string-url": "^2.5.3", + "socks": "^2.7.0" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz", + "integrity": "sha512-SeAxuWs0ez3iI3vvmLk/j2y+zHwigTDKQhtdxTgt5ZCOQQS5+HW4g45/Xw5vzzbn7oQXCNQ24Z40AkJsizEy7w==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongoose": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.6.3.tgz", + "integrity": "sha512-2Ye018PNBBXJd717qhfjBGo7k8HQb/pKziO9d5wY14iZSUI7hxqL7bwNDg+poeBwnlhBYLncZkips15Blfgxbw==", + "dependencies": { + "bson": "^4.6.5", + "kareem": "2.4.1", + "mongodb": "4.9.1", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/mongodb": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.9.1.tgz", + "integrity": "sha512-ZhgI/qBf84fD7sI4waZBoLBNJYPQN5IOC++SBCiPiyhzpNKOxN/fi0tBHvH2dEC42HXtNEbFB0zmNz4+oVtorQ==", + "dependencies": { + "bson": "^4.7.0", + "denque": "^2.1.0", + "mongodb-connection-string-url": "^2.5.3", + "socks": "^2.7.0" + }, + "engines": { + "node": ">=12.9.0" + }, + "optionalDependencies": { + "saslprep": "^1.0.3" + } + }, + "node_modules/mongoose/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==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/mquery/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mquery/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "dependencies": { + "sparse-bitfield": "^3.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/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==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sift": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz", + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + } + }, + "dependencies": { + "@types/node": { + "version": "18.7.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.23.tgz", + "integrity": "sha512-DWNcCHolDq0ZKGizjx2DZjR/PqsYwAcYUJmfMWqtVU2MBMG5Mo+xFZrhGId5r/O5HOuMPyQEcM6KUBp5lBZZBg==" + }, + "@types/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" + }, + "@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "requires": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "bson": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.0.tgz", + "integrity": "sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA==", + "requires": { + "buffer": "^5.6.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ejs": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", + "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", + "requires": { + "jake": "^10.8.5" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "express": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "jake": { + "version": "10.8.5", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", + "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + } + }, + "kareem": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.4.1.tgz", + "integrity": "sha512-aJ9opVoXroQUPfovYP5kaj2lM7Jn02Gw13bL0lg9v0V7SaUc0qavPs0Eue7d2DcC3NjqI6QAUElXNsuZSeM+EA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mongodb": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.10.0.tgz", + "integrity": "sha512-My2QxLTw0Cc1O9gih0mz4mqo145Jq4rLAQx0Glk/Ha9iYBzYpt4I2QFNRIh35uNFNfe8KFQcdwY1/HKxXBkinw==", + "requires": { + "bson": "^4.7.0", + "denque": "^2.1.0", + "mongodb-connection-string-url": "^2.5.3", + "saslprep": "^1.0.3", + "socks": "^2.7.0" + } + }, + "mongodb-connection-string-url": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.4.tgz", + "integrity": "sha512-SeAxuWs0ez3iI3vvmLk/j2y+zHwigTDKQhtdxTgt5ZCOQQS5+HW4g45/Xw5vzzbn7oQXCNQ24Z40AkJsizEy7w==", + "requires": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "mongoose": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.6.3.tgz", + "integrity": "sha512-2Ye018PNBBXJd717qhfjBGo7k8HQb/pKziO9d5wY14iZSUI7hxqL7bwNDg+poeBwnlhBYLncZkips15Blfgxbw==", + "requires": { + "bson": "^4.6.5", + "kareem": "2.4.1", + "mongodb": "4.9.1", + "mpath": "0.9.0", + "mquery": "4.0.3", + "ms": "2.1.3", + "sift": "16.0.0" + }, + "dependencies": { + "mongodb": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.9.1.tgz", + "integrity": "sha512-ZhgI/qBf84fD7sI4waZBoLBNJYPQN5IOC++SBCiPiyhzpNKOxN/fi0tBHvH2dEC42HXtNEbFB0zmNz4+oVtorQ==", + "requires": { + "bson": "^4.7.0", + "denque": "^2.1.0", + "mongodb-connection-string-url": "^2.5.3", + "saslprep": "^1.0.3", + "socks": "^2.7.0" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" + }, + "mquery": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", + "requires": { + "debug": "4.x" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "requires": { + "ee-first": "1.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saslprep": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sift": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz", + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ==" + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", + "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "requires": { + "punycode": "^2.1.1" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..065418f98 --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "simple-express-app-submission", + "version": "1.0.0", + "description": "Client call log", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/cynthiablack/simple-express-app-submission.git" + }, + "author": "Cindy Black", + "license": "MIT", + "bugs": { + "url": "https://github.com/cynthiablack/simple-express-app-submission/issues" + }, + "homepage": "https://github.com/cynthiablack/simple-express-app-submission#readme", + "dependencies": { + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "ejs": "^3.1.8", + "express": "^4.18.1", + "mongodb": "^4.10.0", + "mongoose": "^6.6.3" + } +} diff --git a/server.js b/server.js new file mode 100644 index 000000000..ba9189b36 --- /dev/null +++ b/server.js @@ -0,0 +1,80 @@ +const express = require('express') +const app = express() +const MongoClient = require('mongodb').MongoClient +const PORT = 2121 +require('dotenv').config() + + +let db, + dbConnectionStr = process.env.DB_STRING, + dbName = 'calls' + +MongoClient.connect(dbConnectionStr, { useUnifiedTopology: true }) + .then(client => { + console.log(`Connected to ${dbName} database`) + db = client.db(dbName) + }) + +app.set('view engine', 'ejs') +app.use(express.static('public')) +app.use(express.urlencoded({ extended: true })) +app.use(express.json()) + + +app.get('/',(request, response)=>{ + db.collection('calls').find().sort({likes: -1}).toArray() + .then(data => { + response.render('index.ejs', { info: data }) + }) + .catch(error => console.error(error)) +}) + +app.post('/addCall', (request, response) => { + db.collection('calls').insertOne({ + clientName: request.body.clientName, + clientEmail: request.body.clientEmail, + clientPhone: request.body.clientPhone, + date: request.body.date, + clientNotes: request.body.clientNotes}) + .then(result => { + console.log('Client Added') + response.redirect('/') + }) + .catch(error => console.error(error)) +}) + +app.put('/addOneLike', (request, response) => { + db.collection('calls').updateOne({ + clientName: request.body.clientNameS, + clientEmail: request.body.clientEmailS, + clientPhone: request.body.clientPhoneS, + date: request.body.dateS, + clientNote: request.body.clientNoteS, + likes: request.body.likesS + },{ + $set: { + likes:request.body.likesS + 1 + } + },) + .then(result => { + console.log('Client Starred') + response.json('Star Added') + }) + .catch(error => console.error(error)) +}) + +app.delete('/deleteClient', (request, response) => { + db.collection('calls').deleteOne({ + clientName: request.body.clientNameS + }) + .then(result => { + console.log('Client Deleted') + response.json('Client Deleted') + }) + .catch(error => console.error(error)) + +}) + +app.listen(process.env.PORT || PORT, ()=>{ + console.log(`Server running on port ${PORT}`) +}) \ No newline at end of file From 38aa36919bac705355a97a8cb1fea02d0f26c302 Mon Sep 17 00:00:00 2001 From: Cynthia Black <96799365+cynthiablack@users.noreply.github.com> Date: Sat, 1 Oct 2022 14:57:10 -0800 Subject: [PATCH 6/6] Update README.md Update URL for deployed app --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 31361ce60..64d24d5d8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Client Connect Call Tracker A basic CRUD app with a dynamically-rendered table to display user-entered data. -**Link to project:** https://clientconnect.onrender.com +**Link to project:** https://clientconnect-app.herokuapp.com ![Site Preview Image](https://github.com/cynthiablack/simple-express-app-submission/blob/answer/sitepreview.png) @@ -9,4 +9,4 @@ A basic CRUD app with a dynamically-rendered table to display user-entered data. **Tech used:** MongoDB, Express.js, Node.js, Javascript, EJS, CSS -ClientConnect allows users to enter client contact data into a web form, track follow up contacts on a dynamically-rendered table, and delete client contact information. \ No newline at end of file +ClientConnect allows users to enter client contact data into a web form, track follow up contacts on a dynamically-rendered table, and delete client contact information.