최은석
...@@ -21,3 +21,102 @@ ...@@ -21,3 +21,102 @@
21 ```한 사용자가 여러번 남기는 것을 막아야 해서 로그인 기능 고려 필요``` 21 ```한 사용자가 여러번 남기는 것을 막아야 해서 로그인 기능 고려 필요```
22 * 게시물 작성을 유도하기 위해 포인트 적립을 통해 랭킹 기능 고려 22 * 게시물 작성을 유도하기 위해 포인트 적립을 통해 랭킹 기능 고려
23 * 작성된 글을 보기 쉽도록 게시글을 검색하는 기능 23 * 작성된 글을 보기 쉽도록 게시글을 검색하는 기능
24 +
25 +## BACK
26 +### /api/getList
27 +#### GET호출
28 +> response
29 +> ```
30 +> ["게시물 id1", "게시물 id2", "게시물 id3"]
31 +>```
32 +>> 오늘 게시물들의 아이디 표시
33 +
34 +-------------
35 +### /api/getList/:date
36 +#### GET호출
37 +> response
38 +> ```
39 +> ["게시물 id1", "게시물 id2", "게시물 id3"]
40 +>```
41 +>> 특정 날자의 게시물들의 아이디 표시
42 +
43 +-------------
44 +### /api/get
45 +#### GET호출
46 +> request(body)
47 +> ```
48 +> {
49 +> "idArray": ["게시물 id1", "게시물 id2", "게시물 id3"]
50 +> }
51 +> ```
52 +
53 +> response
54 +> ```
55 +> [
56 +> {
57 +> "id": "게시물 id1",
58 +> "title": "제목1",
59 +> "content": "내용1"
60 +> },
61 +> {
62 +> "id": "게시물 id2",
63 +> "title": "제목2",
64 +> "content": "내용2"
65 +> },
66 +> {
67 +> "id": "게시물 id3",
68 +> "title": "제목3",
69 +> "content": "이 것은 긴 내용이..."
70 +> }
71 +> ]
72 +> ```
73 +>> 특정 id(여러개)의 게시물 내용 요약 불러오기
74 +
75 +-------------
76 +### /api/get/:id
77 +#### GET호출
78 +> response
79 +> ```
80 +> {
81 +> "title": "제목",
82 +> "content": "내용"
83 +> }
84 +>```
85 +>> 특정 id의 게시물 불러오기
86 +
87 +-------------
88 +### /api/isPassEqual
89 +#### POST호출
90 +> request(body)
91 +> ```
92 +> {
93 +> "id":"게시물 id",
94 +> "password":"사용자가 입력한 암호"
95 +> }
96 +> ```
97 +
98 +> response
99 +> ```
100 +> success
101 +> ```
102 +> or
103 +> ```
104 +> failed
105 +> ```
106 +>
107 +>> 암호가 같으면 success, 아니면 failed
108 +
109 +-------------
110 +### /api/postSave
111 +#### POST호출
112 +> request(body)
113 +> ```
114 +> {
115 +> "title":"제목",
116 +> "content":"게시물 내용",
117 +> "password":"암호"
118 +> }
119 +> ```
120 +>> 오늘 게시물 작성
121 +>>> response 수정예정
122 +>>>>>>> ea6cadae0f258eb9d8abc6e597913cf5bda4b9fd
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
6 "@testing-library/jest-dom": "^5.16.4", 6 "@testing-library/jest-dom": "^5.16.4",
7 "@testing-library/react": "^13.3.0", 7 "@testing-library/react": "^13.3.0",
8 "@testing-library/user-event": "^13.5.0", 8 "@testing-library/user-event": "^13.5.0",
9 + "axios": "^0.27.2",
9 "react": "^18.1.0", 10 "react": "^18.1.0",
10 "react-dom": "^18.1.0", 11 "react-dom": "^18.1.0",
11 "react-scripts": "5.0.1", 12 "react-scripts": "5.0.1",
......
1 { 1 {
2 - "name": "reactTest", 2 + "name": "ossw-project",
3 "lockfileVersion": 2, 3 "lockfileVersion": 2,
4 "requires": true, 4 "requires": true,
5 "packages": { 5 "packages": {
6 "": { 6 "": {
7 "dependencies": { 7 "dependencies": {
8 "axios": "^0.27.2", 8 "axios": "^0.27.2",
9 + "body-parser": "^1.20.0",
9 "concurrently": "^7.2.1", 10 "concurrently": "^7.2.1",
10 "express": "^4.18.1", 11 "express": "^4.18.1",
11 "http-proxy-middleware": "^2.0.6", 12 "http-proxy-middleware": "^2.0.6",
13 + "mongoose": "^6.3.4",
12 "nodemon": "^2.0.16" 14 "nodemon": "^2.0.16"
13 } 15 }
14 }, 16 },
...@@ -44,6 +46,20 @@ ...@@ -44,6 +46,20 @@
44 "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", 46 "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz",
45 "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==" 47 "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA=="
46 }, 48 },
49 + "node_modules/@types/webidl-conversions": {
50 + "version": "6.1.1",
51 + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
52 + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
53 + },
54 + "node_modules/@types/whatwg-url": {
55 + "version": "8.2.1",
56 + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
57 + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
58 + "dependencies": {
59 + "@types/node": "*",
60 + "@types/webidl-conversions": "*"
61 + }
62 + },
47 "node_modules/abbrev": { 63 "node_modules/abbrev": {
48 "version": "1.1.1", 64 "version": "1.1.1",
49 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 65 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
...@@ -127,6 +143,25 @@ ...@@ -127,6 +143,25 @@
127 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 143 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
128 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 144 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
129 }, 145 },
146 + "node_modules/base64-js": {
147 + "version": "1.5.1",
148 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
149 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
150 + "funding": [
151 + {
152 + "type": "github",
153 + "url": "https://github.com/sponsors/feross"
154 + },
155 + {
156 + "type": "patreon",
157 + "url": "https://www.patreon.com/feross"
158 + },
159 + {
160 + "type": "consulting",
161 + "url": "https://feross.org/support"
162 + }
163 + ]
164 + },
130 "node_modules/binary-extensions": { 165 "node_modules/binary-extensions": {
131 "version": "2.2.0", 166 "version": "2.2.0",
132 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 167 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
...@@ -199,6 +234,40 @@ ...@@ -199,6 +234,40 @@
199 "node": ">=8" 234 "node": ">=8"
200 } 235 }
201 }, 236 },
237 + "node_modules/bson": {
238 + "version": "4.6.4",
239 + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
240 + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==",
241 + "dependencies": {
242 + "buffer": "^5.6.0"
243 + },
244 + "engines": {
245 + "node": ">=6.9.0"
246 + }
247 + },
248 + "node_modules/buffer": {
249 + "version": "5.7.1",
250 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
251 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
252 + "funding": [
253 + {
254 + "type": "github",
255 + "url": "https://github.com/sponsors/feross"
256 + },
257 + {
258 + "type": "patreon",
259 + "url": "https://www.patreon.com/feross"
260 + },
261 + {
262 + "type": "consulting",
263 + "url": "https://feross.org/support"
264 + }
265 + ],
266 + "dependencies": {
267 + "base64-js": "^1.3.1",
268 + "ieee754": "^1.1.13"
269 + }
270 + },
202 "node_modules/bytes": { 271 "node_modules/bytes": {
203 "version": "3.1.2", 272 "version": "3.1.2",
204 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 273 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
...@@ -547,6 +616,14 @@ ...@@ -547,6 +616,14 @@
547 "node": ">=0.4.0" 616 "node": ">=0.4.0"
548 } 617 }
549 }, 618 },
619 + "node_modules/denque": {
620 + "version": "2.0.1",
621 + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
622 + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==",
623 + "engines": {
624 + "node": ">=0.10"
625 + }
626 + },
550 "node_modules/depd": { 627 "node_modules/depd": {
551 "version": "2.0.0", 628 "version": "2.0.0",
552 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 629 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
...@@ -963,6 +1040,25 @@ ...@@ -963,6 +1040,25 @@
963 "node": ">=0.10.0" 1040 "node": ">=0.10.0"
964 } 1041 }
965 }, 1042 },
1043 + "node_modules/ieee754": {
1044 + "version": "1.2.1",
1045 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
1046 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
1047 + "funding": [
1048 + {
1049 + "type": "github",
1050 + "url": "https://github.com/sponsors/feross"
1051 + },
1052 + {
1053 + "type": "patreon",
1054 + "url": "https://www.patreon.com/feross"
1055 + },
1056 + {
1057 + "type": "consulting",
1058 + "url": "https://feross.org/support"
1059 + }
1060 + ]
1061 + },
966 "node_modules/ignore-by-default": { 1062 "node_modules/ignore-by-default": {
967 "version": "1.0.1", 1063 "version": "1.0.1",
968 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 1064 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
...@@ -997,6 +1093,11 @@ ...@@ -997,6 +1093,11 @@
997 "node": ">=10" 1093 "node": ">=10"
998 } 1094 }
999 }, 1095 },
1096 + "node_modules/ip": {
1097 + "version": "1.1.8",
1098 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
1099 + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
1100 + },
1000 "node_modules/ipaddr.js": { 1101 "node_modules/ipaddr.js": {
1001 "version": "1.9.1", 1102 "version": "1.9.1",
1002 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1103 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
...@@ -1130,6 +1231,11 @@ ...@@ -1130,6 +1231,11 @@
1130 "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 1231 "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
1131 "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" 1232 "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ=="
1132 }, 1233 },
1234 + "node_modules/kareem": {
1235 + "version": "2.3.5",
1236 + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.5.tgz",
1237 + "integrity": "sha512-qxCyQtp3ioawkiRNQr/v8xw9KIviMSSNmy+63Wubj7KmMn3g7noRXIZB4vPCAP+ETi2SR8eH6CvmlKZuGpoHOg=="
1238 + },
1133 "node_modules/keyv": { 1239 "node_modules/keyv": {
1134 "version": "3.1.0", 1240 "version": "3.1.0",
1135 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 1241 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
...@@ -1203,6 +1309,12 @@ ...@@ -1203,6 +1309,12 @@
1203 "node": ">= 0.6" 1309 "node": ">= 0.6"
1204 } 1310 }
1205 }, 1311 },
1312 + "node_modules/memory-pager": {
1313 + "version": "1.5.0",
1314 + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
1315 + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
1316 + "optional": true
1317 + },
1206 "node_modules/merge-descriptors": { 1318 "node_modules/merge-descriptors": {
1207 "version": "1.0.1", 1319 "version": "1.0.1",
1208 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1320 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
...@@ -1282,6 +1394,98 @@ ...@@ -1282,6 +1394,98 @@
1282 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1394 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
1283 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 1395 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
1284 }, 1396 },
1397 + "node_modules/mongodb": {
1398 + "version": "4.5.0",
1399 + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.5.0.tgz",
1400 + "integrity": "sha512-A2l8MjEpKojnhbCM0MK3+UOGUSGvTNNSv7AkP1fsT7tkambrkkqN/5F2y+PhzsV0Nbv58u04TETpkaSEdI2zKA==",
1401 + "dependencies": {
1402 + "bson": "^4.6.2",
1403 + "denque": "^2.0.1",
1404 + "mongodb-connection-string-url": "^2.5.2",
1405 + "socks": "^2.6.2"
1406 + },
1407 + "engines": {
1408 + "node": ">=12.9.0"
1409 + },
1410 + "optionalDependencies": {
1411 + "saslprep": "^1.0.3"
1412 + }
1413 + },
1414 + "node_modules/mongodb-connection-string-url": {
1415 + "version": "2.5.2",
1416 + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz",
1417 + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==",
1418 + "dependencies": {
1419 + "@types/whatwg-url": "^8.2.1",
1420 + "whatwg-url": "^11.0.0"
1421 + }
1422 + },
1423 + "node_modules/mongoose": {
1424 + "version": "6.3.4",
1425 + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.3.4.tgz",
1426 + "integrity": "sha512-UP0azyGMdY+2YNbJUHeHhnVw5vPzCqs4GQDUwHkilif/rwmSZktUQhQWMp1pUgRNeF2JC30vWGLrInZxD7K/Qw==",
1427 + "dependencies": {
1428 + "bson": "^4.6.2",
1429 + "kareem": "2.3.5",
1430 + "mongodb": "4.5.0",
1431 + "mpath": "0.9.0",
1432 + "mquery": "4.0.3",
1433 + "ms": "2.1.3",
1434 + "sift": "16.0.0"
1435 + },
1436 + "engines": {
1437 + "node": ">=12.0.0"
1438 + },
1439 + "funding": {
1440 + "type": "opencollective",
1441 + "url": "https://opencollective.com/mongoose"
1442 + }
1443 + },
1444 + "node_modules/mongoose/node_modules/ms": {
1445 + "version": "2.1.3",
1446 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1447 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1448 + },
1449 + "node_modules/mpath": {
1450 + "version": "0.9.0",
1451 + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
1452 + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==",
1453 + "engines": {
1454 + "node": ">=4.0.0"
1455 + }
1456 + },
1457 + "node_modules/mquery": {
1458 + "version": "4.0.3",
1459 + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz",
1460 + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==",
1461 + "dependencies": {
1462 + "debug": "4.x"
1463 + },
1464 + "engines": {
1465 + "node": ">=12.0.0"
1466 + }
1467 + },
1468 + "node_modules/mquery/node_modules/debug": {
1469 + "version": "4.3.4",
1470 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1471 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1472 + "dependencies": {
1473 + "ms": "2.1.2"
1474 + },
1475 + "engines": {
1476 + "node": ">=6.0"
1477 + },
1478 + "peerDependenciesMeta": {
1479 + "supports-color": {
1480 + "optional": true
1481 + }
1482 + }
1483 + },
1484 + "node_modules/mquery/node_modules/ms": {
1485 + "version": "2.1.2",
1486 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1487 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1488 + },
1285 "node_modules/ms": { 1489 "node_modules/ms": {
1286 "version": "2.0.0", 1490 "version": "2.0.0",
1287 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1491 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
...@@ -1481,6 +1685,14 @@ ...@@ -1481,6 +1685,14 @@
1481 "once": "^1.3.1" 1685 "once": "^1.3.1"
1482 } 1686 }
1483 }, 1687 },
1688 + "node_modules/punycode": {
1689 + "version": "2.1.1",
1690 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1691 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1692 + "engines": {
1693 + "node": ">=6"
1694 + }
1695 + },
1484 "node_modules/pupa": { 1696 "node_modules/pupa": {
1485 "version": "2.1.1", 1697 "version": "2.1.1",
1486 "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", 1698 "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
...@@ -1636,6 +1848,18 @@ ...@@ -1636,6 +1848,18 @@
1636 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1848 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1637 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1849 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1638 }, 1850 },
1851 + "node_modules/saslprep": {
1852 + "version": "1.0.3",
1853 + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
1854 + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
1855 + "optional": true,
1856 + "dependencies": {
1857 + "sparse-bitfield": "^3.0.3"
1858 + },
1859 + "engines": {
1860 + "node": ">=6"
1861 + }
1862 + },
1639 "node_modules/semver": { 1863 "node_modules/semver": {
1640 "version": "5.7.1", 1864 "version": "5.7.1",
1641 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1865 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
...@@ -1728,11 +1952,47 @@ ...@@ -1728,11 +1952,47 @@
1728 "url": "https://github.com/sponsors/ljharb" 1952 "url": "https://github.com/sponsors/ljharb"
1729 } 1953 }
1730 }, 1954 },
1955 + "node_modules/sift": {
1956 + "version": "16.0.0",
1957 + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
1958 + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ=="
1959 + },
1731 "node_modules/signal-exit": { 1960 "node_modules/signal-exit": {
1732 "version": "3.0.7", 1961 "version": "3.0.7",
1733 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1962 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
1734 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 1963 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
1735 }, 1964 },
1965 + "node_modules/smart-buffer": {
1966 + "version": "4.2.0",
1967 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
1968 + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
1969 + "engines": {
1970 + "node": ">= 6.0.0",
1971 + "npm": ">= 3.0.0"
1972 + }
1973 + },
1974 + "node_modules/socks": {
1975 + "version": "2.6.2",
1976 + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
1977 + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
1978 + "dependencies": {
1979 + "ip": "^1.1.5",
1980 + "smart-buffer": "^4.2.0"
1981 + },
1982 + "engines": {
1983 + "node": ">= 10.13.0",
1984 + "npm": ">= 3.0.0"
1985 + }
1986 + },
1987 + "node_modules/sparse-bitfield": {
1988 + "version": "3.0.3",
1989 + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
1990 + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
1991 + "optional": true,
1992 + "dependencies": {
1993 + "memory-pager": "^1.0.2"
1994 + }
1995 + },
1736 "node_modules/spawn-command": { 1996 "node_modules/spawn-command": {
1737 "version": "0.0.2-1", 1997 "version": "0.0.2-1",
1738 "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", 1998 "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
...@@ -1827,6 +2087,17 @@ ...@@ -1827,6 +2087,17 @@
1827 "nodetouch": "bin/nodetouch.js" 2087 "nodetouch": "bin/nodetouch.js"
1828 } 2088 }
1829 }, 2089 },
2090 + "node_modules/tr46": {
2091 + "version": "3.0.0",
2092 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
2093 + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
2094 + "dependencies": {
2095 + "punycode": "^2.1.1"
2096 + },
2097 + "engines": {
2098 + "node": ">=12"
2099 + }
2100 + },
1830 "node_modules/tree-kill": { 2101 "node_modules/tree-kill": {
1831 "version": "1.2.2", 2102 "version": "1.2.2",
1832 "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 2103 "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
...@@ -1963,6 +2234,26 @@ ...@@ -1963,6 +2234,26 @@
1963 "node": ">= 0.8" 2234 "node": ">= 0.8"
1964 } 2235 }
1965 }, 2236 },
2237 + "node_modules/webidl-conversions": {
2238 + "version": "7.0.0",
2239 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
2240 + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
2241 + "engines": {
2242 + "node": ">=12"
2243 + }
2244 + },
2245 + "node_modules/whatwg-url": {
2246 + "version": "11.0.0",
2247 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
2248 + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
2249 + "dependencies": {
2250 + "tr46": "^3.0.0",
2251 + "webidl-conversions": "^7.0.0"
2252 + },
2253 + "engines": {
2254 + "node": ">=12"
2255 + }
2256 + },
1966 "node_modules/widest-line": { 2257 "node_modules/widest-line": {
1967 "version": "3.1.0", 2258 "version": "3.1.0",
1968 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 2259 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
...@@ -2080,6 +2371,20 @@ ...@@ -2080,6 +2371,20 @@
2080 "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz", 2371 "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.36.tgz",
2081 "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA==" 2372 "integrity": "sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA=="
2082 }, 2373 },
2374 + "@types/webidl-conversions": {
2375 + "version": "6.1.1",
2376 + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz",
2377 + "integrity": "sha512-XAahCdThVuCFDQLT7R7Pk/vqeObFNL3YqRyFZg+AqAP/W1/w3xHaIxuW7WszQqTbIBOPRcItYJIou3i/mppu3Q=="
2378 + },
2379 + "@types/whatwg-url": {
2380 + "version": "8.2.1",
2381 + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.1.tgz",
2382 + "integrity": "sha512-2YubE1sjj5ifxievI5Ge1sckb9k/Er66HyR2c+3+I6VDUUg1TLPdYYTEbQ+DjRkS4nTxMJhgWfSfMRD2sl2EYQ==",
2383 + "requires": {
2384 + "@types/node": "*",
2385 + "@types/webidl-conversions": "*"
2386 + }
2387 + },
2083 "abbrev": { 2388 "abbrev": {
2084 "version": "1.1.1", 2389 "version": "1.1.1",
2085 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 2390 "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
...@@ -2148,6 +2453,11 @@ ...@@ -2148,6 +2453,11 @@
2148 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2453 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
2149 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 2454 "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
2150 }, 2455 },
2456 + "base64-js": {
2457 + "version": "1.5.1",
2458 + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
2459 + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
2460 + },
2151 "binary-extensions": { 2461 "binary-extensions": {
2152 "version": "2.2.0", 2462 "version": "2.2.0",
2153 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 2463 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
...@@ -2204,6 +2514,23 @@ ...@@ -2204,6 +2514,23 @@
2204 "fill-range": "^7.0.1" 2514 "fill-range": "^7.0.1"
2205 } 2515 }
2206 }, 2516 },
2517 + "bson": {
2518 + "version": "4.6.4",
2519 + "resolved": "https://registry.npmjs.org/bson/-/bson-4.6.4.tgz",
2520 + "integrity": "sha512-TdQ3FzguAu5HKPPlr0kYQCyrYUYh8tFM+CMTpxjNzVzxeiJY00Rtuj3LXLHSgiGvmaWlZ8PE+4KyM2thqE38pQ==",
2521 + "requires": {
2522 + "buffer": "^5.6.0"
2523 + }
2524 + },
2525 + "buffer": {
2526 + "version": "5.7.1",
2527 + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
2528 + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
2529 + "requires": {
2530 + "base64-js": "^1.3.1",
2531 + "ieee754": "^1.1.13"
2532 + }
2533 + },
2207 "bytes": { 2534 "bytes": {
2208 "version": "3.1.2", 2535 "version": "3.1.2",
2209 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 2536 "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
...@@ -2453,6 +2780,11 @@ ...@@ -2453,6 +2780,11 @@
2453 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 2780 "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
2454 "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 2781 "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
2455 }, 2782 },
2783 + "denque": {
2784 + "version": "2.0.1",
2785 + "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz",
2786 + "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ=="
2787 + },
2456 "depd": { 2788 "depd": {
2457 "version": "2.0.0", 2789 "version": "2.0.0",
2458 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 2790 "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
...@@ -2752,6 +3084,11 @@ ...@@ -2752,6 +3084,11 @@
2752 "safer-buffer": ">= 2.1.2 < 3" 3084 "safer-buffer": ">= 2.1.2 < 3"
2753 } 3085 }
2754 }, 3086 },
3087 + "ieee754": {
3088 + "version": "1.2.1",
3089 + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
3090 + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
3091 + },
2755 "ignore-by-default": { 3092 "ignore-by-default": {
2756 "version": "1.0.1", 3093 "version": "1.0.1",
2757 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 3094 "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz",
...@@ -2777,6 +3114,11 @@ ...@@ -2777,6 +3114,11 @@
2777 "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", 3114 "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
2778 "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" 3115 "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA=="
2779 }, 3116 },
3117 + "ip": {
3118 + "version": "1.1.8",
3119 + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
3120 + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
3121 + },
2780 "ipaddr.js": { 3122 "ipaddr.js": {
2781 "version": "1.9.1", 3123 "version": "1.9.1",
2782 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 3124 "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
...@@ -2865,6 +3207,11 @@ ...@@ -2865,6 +3207,11 @@
2865 "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 3207 "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
2866 "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" 3208 "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ=="
2867 }, 3209 },
3210 + "kareem": {
3211 + "version": "2.3.5",
3212 + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.5.tgz",
3213 + "integrity": "sha512-qxCyQtp3ioawkiRNQr/v8xw9KIviMSSNmy+63Wubj7KmMn3g7noRXIZB4vPCAP+ETi2SR8eH6CvmlKZuGpoHOg=="
3214 + },
2868 "keyv": { 3215 "keyv": {
2869 "version": "3.1.0", 3216 "version": "3.1.0",
2870 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 3217 "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
...@@ -2919,6 +3266,12 @@ ...@@ -2919,6 +3266,12 @@
2919 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 3266 "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
2920 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 3267 "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
2921 }, 3268 },
3269 + "memory-pager": {
3270 + "version": "1.5.0",
3271 + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz",
3272 + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==",
3273 + "optional": true
3274 + },
2922 "merge-descriptors": { 3275 "merge-descriptors": {
2923 "version": "1.0.1", 3276 "version": "1.0.1",
2924 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 3277 "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
...@@ -2974,6 +3327,76 @@ ...@@ -2974,6 +3327,76 @@
2974 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 3327 "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
2975 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 3328 "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
2976 }, 3329 },
3330 + "mongodb": {
3331 + "version": "4.5.0",
3332 + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.5.0.tgz",
3333 + "integrity": "sha512-A2l8MjEpKojnhbCM0MK3+UOGUSGvTNNSv7AkP1fsT7tkambrkkqN/5F2y+PhzsV0Nbv58u04TETpkaSEdI2zKA==",
3334 + "requires": {
3335 + "bson": "^4.6.2",
3336 + "denque": "^2.0.1",
3337 + "mongodb-connection-string-url": "^2.5.2",
3338 + "saslprep": "^1.0.3",
3339 + "socks": "^2.6.2"
3340 + }
3341 + },
3342 + "mongodb-connection-string-url": {
3343 + "version": "2.5.2",
3344 + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.5.2.tgz",
3345 + "integrity": "sha512-tWDyIG8cQlI5k3skB6ywaEA5F9f5OntrKKsT/Lteub2zgwSUlhqEN2inGgBTm8bpYJf8QYBdA/5naz65XDpczA==",
3346 + "requires": {
3347 + "@types/whatwg-url": "^8.2.1",
3348 + "whatwg-url": "^11.0.0"
3349 + }
3350 + },
3351 + "mongoose": {
3352 + "version": "6.3.4",
3353 + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.3.4.tgz",
3354 + "integrity": "sha512-UP0azyGMdY+2YNbJUHeHhnVw5vPzCqs4GQDUwHkilif/rwmSZktUQhQWMp1pUgRNeF2JC30vWGLrInZxD7K/Qw==",
3355 + "requires": {
3356 + "bson": "^4.6.2",
3357 + "kareem": "2.3.5",
3358 + "mongodb": "4.5.0",
3359 + "mpath": "0.9.0",
3360 + "mquery": "4.0.3",
3361 + "ms": "2.1.3",
3362 + "sift": "16.0.0"
3363 + },
3364 + "dependencies": {
3365 + "ms": {
3366 + "version": "2.1.3",
3367 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
3368 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
3369 + }
3370 + }
3371 + },
3372 + "mpath": {
3373 + "version": "0.9.0",
3374 + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz",
3375 + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew=="
3376 + },
3377 + "mquery": {
3378 + "version": "4.0.3",
3379 + "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz",
3380 + "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==",
3381 + "requires": {
3382 + "debug": "4.x"
3383 + },
3384 + "dependencies": {
3385 + "debug": {
3386 + "version": "4.3.4",
3387 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
3388 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
3389 + "requires": {
3390 + "ms": "2.1.2"
3391 + }
3392 + },
3393 + "ms": {
3394 + "version": "2.1.2",
3395 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
3396 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
3397 + }
3398 + }
3399 + },
2977 "ms": { 3400 "ms": {
2978 "version": "2.0.0", 3401 "version": "2.0.0",
2979 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3402 "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
...@@ -3121,6 +3544,11 @@ ...@@ -3121,6 +3544,11 @@
3121 "once": "^1.3.1" 3544 "once": "^1.3.1"
3122 } 3545 }
3123 }, 3546 },
3547 + "punycode": {
3548 + "version": "2.1.1",
3549 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
3550 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
3551 + },
3124 "pupa": { 3552 "pupa": {
3125 "version": "2.1.1", 3553 "version": "2.1.1",
3126 "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", 3554 "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
...@@ -3231,6 +3659,15 @@ ...@@ -3231,6 +3659,15 @@
3231 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3659 "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
3232 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 3660 "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
3233 }, 3661 },
3662 + "saslprep": {
3663 + "version": "1.0.3",
3664 + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz",
3665 + "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==",
3666 + "optional": true,
3667 + "requires": {
3668 + "sparse-bitfield": "^3.0.3"
3669 + }
3670 + },
3234 "semver": { 3671 "semver": {
3235 "version": "5.7.1", 3672 "version": "5.7.1",
3236 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3673 "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
...@@ -3309,11 +3746,39 @@ ...@@ -3309,11 +3746,39 @@
3309 "object-inspect": "^1.9.0" 3746 "object-inspect": "^1.9.0"
3310 } 3747 }
3311 }, 3748 },
3749 + "sift": {
3750 + "version": "16.0.0",
3751 + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.0.tgz",
3752 + "integrity": "sha512-ILTjdP2Mv9V1kIxWMXeMTIRbOBrqKc4JAXmFMnFq3fKeyQ2Qwa3Dw1ubcye3vR+Y6ofA0b9gNDr/y2t6eUeIzQ=="
3753 + },
3312 "signal-exit": { 3754 "signal-exit": {
3313 "version": "3.0.7", 3755 "version": "3.0.7",
3314 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3756 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
3315 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 3757 "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
3316 }, 3758 },
3759 + "smart-buffer": {
3760 + "version": "4.2.0",
3761 + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
3762 + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
3763 + },
3764 + "socks": {
3765 + "version": "2.6.2",
3766 + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
3767 + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
3768 + "requires": {
3769 + "ip": "^1.1.5",
3770 + "smart-buffer": "^4.2.0"
3771 + }
3772 + },
3773 + "sparse-bitfield": {
3774 + "version": "3.0.3",
3775 + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz",
3776 + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=",
3777 + "optional": true,
3778 + "requires": {
3779 + "memory-pager": "^1.0.2"
3780 + }
3781 + },
3317 "spawn-command": { 3782 "spawn-command": {
3318 "version": "0.0.2-1", 3783 "version": "0.0.2-1",
3319 "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", 3784 "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
...@@ -3381,6 +3846,14 @@ ...@@ -3381,6 +3846,14 @@
3381 "nopt": "~1.0.10" 3846 "nopt": "~1.0.10"
3382 } 3847 }
3383 }, 3848 },
3849 + "tr46": {
3850 + "version": "3.0.0",
3851 + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz",
3852 + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==",
3853 + "requires": {
3854 + "punycode": "^2.1.1"
3855 + }
3856 + },
3384 "tree-kill": { 3857 "tree-kill": {
3385 "version": "1.2.2", 3858 "version": "1.2.2",
3386 "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", 3859 "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
...@@ -3480,6 +3953,20 @@ ...@@ -3480,6 +3953,20 @@
3480 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 3953 "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
3481 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 3954 "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
3482 }, 3955 },
3956 + "webidl-conversions": {
3957 + "version": "7.0.0",
3958 + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
3959 + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
3960 + },
3961 + "whatwg-url": {
3962 + "version": "11.0.0",
3963 + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz",
3964 + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==",
3965 + "requires": {
3966 + "tr46": "^3.0.0",
3967 + "webidl-conversions": "^7.0.0"
3968 + }
3969 + },
3483 "widest-line": { 3970 "widest-line": {
3484 "version": "3.1.0", 3971 "version": "3.1.0",
3485 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 3972 "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
......
1 { 1 {
2 "scripts": { 2 "scripts": {
3 "server": "cd server && nodemon server", 3 "server": "cd server && nodemon server",
4 - "client": "cd client && npm start", 4 + "client": "cd client && npm start --port",
5 "start": "concurrently --kill-others-on-fail \"npm run server\" \"npm run client\"" 5 "start": "concurrently --kill-others-on-fail \"npm run server\" \"npm run client\""
6 }, 6 },
7 "dependencies": { 7 "dependencies": {
8 "axios": "^0.27.2", 8 "axios": "^0.27.2",
9 + "body-parser": "^1.20.0",
9 "concurrently": "^7.2.1", 10 "concurrently": "^7.2.1",
10 "express": "^4.18.1", 11 "express": "^4.18.1",
11 "http-proxy-middleware": "^2.0.6", 12 "http-proxy-middleware": "^2.0.6",
13 + "mongoose": "^6.3.4",
12 "nodemon": "^2.0.16" 14 "nodemon": "^2.0.16"
13 } 15 }
14 } 16 }
......
1 +const express = require('express');
2 +const router = express.Router();
3 +const mongoose = require('mongoose')
4 +
5 +mongoose.connect('mongodb+srv://choieunseok:uA3mhjPcB3DwsuuD@cluster0.2gsua4u.mongodb.net/?retryWrites=true&w=majority');
6 +
7 +const db = mongoose.connection
8 +db.on('error', console.error)
9 +db.once('open', () => {
10 + console.log('Connected to mongodb Server')
11 +});
12 +
13 +const dayPostList = mongoose.Schema({
14 + date: 'string',
15 + idArray: [{ type: String }]
16 +});
17 +const dayPostListModel = mongoose.model('dayPostList', dayPostList);
18 +const post = mongoose.Schema({
19 + date: 'string',
20 + title: 'string',
21 + content: 'string',
22 + password: 'string'
23 +});
24 +const postModel = mongoose.model('post', post);
25 +
26 +// router.get('/api', (req, res) => {
27 +// res.send({ test: "hi" });
28 +// });
29 +
30 +function getCurrentDate(originDate) {
31 + var date;
32 + if(originDate == null) date = new Date();
33 + else date = new Date(originDate);
34 + var year = date.getFullYear().toString();
35 +
36 + var month = date.getMonth() + 1;
37 + month = month < 10 ? '0' + month.toString() : month.toString();
38 +
39 + var day = date.getDate();
40 + day = day < 10 ? '0' + day.toString() : day.toString();
41 +
42 + return year + '-'+ month + '-'+ day ;
43 +}
44 +
45 +router.get('/api/getList', async(req, res) => {
46 + const today = getCurrentDate();
47 + var testDayPostList = await dayPostListModel.findOne({ date: today });
48 + if (testDayPostList == null) testDayPostList = new dayPostListModel({ date: today, idArray: [] });
49 + res.send(testDayPostList.idArray);
50 +});
51 +
52 +router.get('/api/getList/:date', async(req, res) => {
53 + const today = getCurrentDate(req.params.date);
54 + var testDayPostList = await dayPostListModel.findOne({ date: today });
55 + if (testDayPostList == null) testDayPostList = new dayPostListModel({ date: today, idArray: [] });
56 + res.send(testDayPostList.idArray);
57 +});
58 +
59 +router.get('/api/get', async(req, res) => {
60 + const idArray = req.body.idArray;
61 + var resultArray = [];
62 + for (const id of idArray){
63 + const onePost = await postModel.findById(id);
64 + var tempJSON = {};
65 + tempJSON.id = onePost.id;
66 + tempJSON.title = onePost.title;
67 + tempJSON.content = onePost.content;
68 + tempJSON.content = tempJSON.content.replace(/(?:\r\n|\r|\n)/g, '');
69 + const sliceLength = 10;
70 + if(tempJSON.content.length > sliceLength) tempJSON.content = tempJSON.content.slice(0,sliceLength) + "...";
71 + resultArray.push(tempJSON);
72 + }
73 + res.send(resultArray);
74 +});
75 +
76 +router.get('/api/get/:id', async(req, res) => {
77 + const currentPost = await postModel.findById(req.params.id);
78 + res.send({ title: currentPost.title, content: currentPost.content });
79 +});
80 +
81 +router.post('/api/isPassEqual', async(req, res) => {
82 + const currentPost = await postModel.findById(req.body.id);
83 + if (currentPost.password == req.body.password) res.send("success");
84 + else res.send("failed");
85 +});
86 +
87 +router.post('/api/postSave', async (req, res) => {
88 + var isFirst = false;
89 + const today = getCurrentDate();
90 +
91 + var testDayPostList = await dayPostListModel.findOne({ date: today });
92 + if (testDayPostList == null) {
93 + testDayPostList = new dayPostListModel({ date: today, idArray: [] });
94 + isFirst = true;
95 + }
96 + var postListArr = testDayPostList.idArray;
97 + var newPost = new postModel({ date: today, title: req.body.title, content: req.body.content, password: req.body.password });
98 + var newPostData = await newPost.save();
99 + postListArr.push(newPostData._id.toString());
100 +
101 + if (isFirst) await testDayPostList.save();
102 + else await dayPostListModel.updateOne({ date: today }, { idArray: postListArr });
103 +
104 + res.send(newPostData);
105 +});
106 +
107 +// 게시물 저장에 성공 실패 메시지만 표시, 게시물 수정, 삭제 추가예정 ---------------------------------------------------------------------------------------------------------------------------------------
108 +
109 +// router.get('/api/testSave', async (req, res) => {
110 +// var isFirst = false;
111 +
112 +// var testDayPostList = await dayPostListModel.findOne({ date: '2022-05-30' });
113 +// if (testDayPostList == null) {
114 +// testDayPostList = new dayPostListModel({ date: '2022-05-30', idArray: [] });
115 +// isFirst = true;
116 +// }
117 +// var postListArr = testDayPostList.idArray;
118 +
119 +// var newPost = new postModel({ date: '2022-05-30', title: '테스트 제목', content: '테스트 내용', password: 'password' });
120 +// var newPostData = await newPost.save();
121 +// postListArr.push(newPostData._id.toString());
122 +
123 +// if (isFirst) await testDayPostList.save();
124 +// else await dayPostListModel.updateOne({ date: '2022-05-30' }, { idArray: postListArr });
125 +
126 +// res.send("test");
127 +// });
128 +
129 +module.exports = router;
130 +
1 -const express = require('express');
2 -const router = express.Router();
3 -
4 -router.get('/api', (req, res)=>{
5 - res.send({ test: "hi"});
6 -});
7 -
8 -module.exports = router;
...\ No newline at end of file ...\ No newline at end of file
1 const express = require('express'); 1 const express = require('express');
2 const app = express(); 2 const app = express();
3 -const test = require('.//Router/test'); 3 +const api = require('./Router/api');
4 +let bodyParser = require('body-parser');
5 +app.use(bodyParser.urlencoded({ extended: false }));
6 +app.use(bodyParser.json());
4 7
5 -app.use('/', test); 8 +app.use('/', api);
6 9
7 -const port=23023;
8 -app.listen(port, ()=>{console.log(`Listening on port ${port}`)});
...\ No newline at end of file ...\ No newline at end of file
10 +const port = 23023;
11 +app.listen(port, () => { console.log(`Listening on port ${port}`) });
...\ No newline at end of file ...\ No newline at end of file
......