Showing
29 changed files
with
3745 additions
and
0 deletions
healthassistant/.gitignore
0 → 100644
healthassistant/README.md
0 → 100644
1 | +# [Health Assistant](http://2018102224.osschatbot.cf:23023) | ||
2 | + | ||
3 | +Health Assistant is a Web based program for Daily exercisers. | ||
4 | + | ||
5 | +* **시간 효율성:** 이 프로그램은 운동하는 사람에게 몇 세트가 남았는지 알려준다. 또한, 세트와 세트 사이에 유저가 설정한 쉬는 시간이 끝나면, 유저에게 쉬는 시간이 끝났음을 알리고, 다시 운동할 수 있게끔 해준다. 이를 통해 유저는 시간 효율적으로 운동할 수 있다. | ||
6 | +* **운동 추천 기능:** 유저들의 키, 몸무게 정보를 저장하여 비슷한 체형의 유저의 운동 루틴을 추천해주거나 운동을 많이 해보지 못한 유저가 운동법을 추천받기를 원하면, 유튜브와 연동하여 운동법을 추천해 준다. | ||
7 | + | ||
8 | +## Built with | ||
9 | +- kakao api | ||
10 | +- mysql DB | ||
11 | +- 부트스트랩 | ||
12 | +- node js | ||
13 | + | ||
14 | +## Prerequisites | ||
15 | +``` | ||
16 | +npm install | ||
17 | +npm install express --save | ||
18 | +``` | ||
19 | + | ||
20 | +## Installation | ||
21 | +- Clone repo<br> | ||
22 | + http://khuhub.khu.ac.kr/2018102224/health_assistant.git | ||
23 | + | ||
24 | +- MySQL 설치<br> | ||
25 | + sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm | ||
26 | + sudo yum install mysql-community-server | ||
27 | + - 서버 자동 시작 설정<br> | ||
28 | + sudo systemctl enable mysqld | ||
29 | + sudo systemctl start mysqld | ||
30 | + | ||
31 | + - 서버 실행 여부 확인<br> | ||
32 | + sudo systemctl status mysqld | ||
33 | + | ||
34 | + - mysql root 초기 비밀번호 확인<br> | ||
35 | + sudo grep 'A temporary password' /var/log/mysqld.log | ||
36 | + | ||
37 | + - mysql 접속<br> | ||
38 | + mysql -u root -p | ||
39 | + | ||
40 | +- DB 테이블 생성 | ||
41 | + - user_info(username, userHeight, userWeight) | ||
42 | + - userHealth(username, day, way, part, setNumber, number, breakTime, Id) | ||
43 | + | ||
44 | +- AWS 도메인 설정 | ||
45 | + - SSL Certificate | ||
46 | + | ||
47 | +## Usage | ||
48 | + | ||
49 | + 1. 로그인 - kakao | ||
50 | + 2. 키와 몸무게를 입력 | ||
51 | + 3. 요일별 운동 루틴 저장 | ||
52 | + 4. 운동 방법에 대한 설명 (유튜브 링크) | ||
53 | + 4. 설정한 쉬는 시간 끝났을 때 팝업 알림 | ||
54 | + 5. 루틴 추천 기능: 키와 몸무게가 비슷한 다른 유저들의 루틴 참고 가능 | ||
55 | + | ||
56 | +## Roadmap | ||
57 | + | ||
58 | +- [X] DataStructures | ||
59 | +- [X] Add back to top links | ||
60 | +- [X] Exception Handling | ||
61 | +- [X] Use Cookies | ||
62 | +- [X] Encryption | ||
63 | + | ||
64 | +## Contributing | ||
65 | + | ||
66 | +Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. | ||
67 | + | ||
68 | +If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". | ||
69 | +Don't forget to give the project a star! Thanks again! | ||
70 | + | ||
71 | +1. Fork the Project | ||
72 | +2. Create your Feature Branch | ||
73 | +3. Commit your Changes | ||
74 | +4. Push to the Branch | ||
75 | +5. Open a Pull Request | ||
76 | + | ||
77 | +## License | ||
78 | +- MySQL (https://www.mysql.com/) | ||
79 | +- Kakao API (https://developers.kakao.com/docs/latest/ko/kakaologin/common) | ||
80 | + | ||
81 | + | ||
82 | +## Contact | ||
83 | +- 임준표 wnsvy1997@gmail.com | ||
84 | + |
healthassistant/app.js
0 → 100644
1 | +const express = require("express"); | ||
2 | +const app = express(); | ||
3 | +const sslport = 23023; | ||
4 | +const passport = require("passport"); | ||
5 | +const index = require("./routes/index"); | ||
6 | +const user = require("./routes/user"); | ||
7 | +const path = require("path"); | ||
8 | +const setup = require("./routes/setup"); | ||
9 | +const daySelect = require("./routes/daySelect"); | ||
10 | +const otherUser = require("./routes/otherUser"); | ||
11 | +const myHealth = require("./routes/myHealth"); | ||
12 | + | ||
13 | +passport.serializeUser(function (user, done) { | ||
14 | + console.log("serialized"); | ||
15 | + done(null, user); | ||
16 | +}); | ||
17 | +passport.deserializeUser(function (user, done) { | ||
18 | + console.log("deserialized"); | ||
19 | + done(null, user); | ||
20 | +}); | ||
21 | + | ||
22 | +app.use(express.json()); | ||
23 | +app.use(express.static(__dirname + "/public")); | ||
24 | + | ||
25 | +app.set("views", path.join(__dirname, "views")); | ||
26 | +app.set("view engine", "ejs"); | ||
27 | + | ||
28 | +app.use(passport.initialize()); | ||
29 | +app.use("/", index); | ||
30 | +app.use("/user", user); | ||
31 | +app.use("/setup", setup); | ||
32 | +app.use("/daySelect", daySelect); | ||
33 | +app.use("/otherUser", otherUser); | ||
34 | +app.use("/myHealth", myHealth); | ||
35 | +app.use("/static", express.static("./js/")); | ||
36 | + | ||
37 | +app.listen(sslport, () => { | ||
38 | + console.log(`Example app listening at www.2018102224.osschatbot.cf:${sslport}`); | ||
39 | + //도메인 입력 | ||
40 | +}); | ||
41 | + | ||
42 | +module.exports = app; |
healthassistant/dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
0 → 100644
No preview for this file type
healthassistant/js/examples.js
0 → 100644
1 | +var target; | ||
2 | + | ||
3 | +function addressKindChange(e) { | ||
4 | + const shoulder = [ | ||
5 | + "아놀드 프레스", | ||
6 | + "래터럴 레이즈", | ||
7 | + "프론트 레이즈", | ||
8 | + "리버스 펙덱 플라이", | ||
9 | + ]; | ||
10 | + const leg = ["레그프레스", "스쿼트", "런지", "레그 익스텐션", "레그컬"]; | ||
11 | + const arm = [ | ||
12 | + "덤벨 컬", | ||
13 | + "오버헤드프레스", | ||
14 | + "덤벨 킥백", | ||
15 | + "라잉 트라이셉스 익스텐션", | ||
16 | + ]; | ||
17 | + const core = ["플랭크", "백 익스텐션", "크런치"]; | ||
18 | + const breath = ["싸이클", "런닝머신"]; | ||
19 | + const back = ["랫풀다운", "시티드로우", "바벨로우", "데드리프트", "풀업"]; | ||
20 | + const chest = ["인클라인 벤치프레스", "벤치프레스", "딥스", "푸쉬업"]; | ||
21 | + target = document.getElementById("way"); | ||
22 | + | ||
23 | + if (e.value == "어깨") var d = shoulder; | ||
24 | + else if (e.value == "하체") var d = leg; | ||
25 | + else if (e.value == "이삼두") var d = arm; | ||
26 | + else if (e.value == "등") var d = back; | ||
27 | + else if (e.value == "유산소") var d = breath; | ||
28 | + else if (e.value == "코어") var d = core; | ||
29 | + else if (e.value == "가슴") var d = chest; | ||
30 | + | ||
31 | + target.options.length = 0; | ||
32 | + | ||
33 | + for (x in d) { | ||
34 | + var opt = document.createElement("option"); | ||
35 | + opt.value = d[x]; | ||
36 | + opt.innerHTML = d[x]; | ||
37 | + target.appendChild(opt); | ||
38 | + } | ||
39 | +} | ||
40 | + | ||
41 | +function ex1() { | ||
42 | + return target; | ||
43 | +} |
healthassistant/js/scripts.js
0 → 100644
1 | +/*! | ||
2 | + * Start Bootstrap - Stylish Portfolio v6.0.4 (https://startbootstrap.com/theme/stylish-portfolio) | ||
3 | + * Copyright 2013-2021 Start Bootstrap | ||
4 | + * Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-stylish-portfolio/blob/master/LICENSE) | ||
5 | + */ | ||
6 | +window.addEventListener("DOMContentLoaded", (event) => { | ||
7 | + const sidebarWrapper = document.getElementById("sidebar-wrapper"); | ||
8 | + let scrollToTopVisible = false; | ||
9 | + // Closes the sidebar menu | ||
10 | + const menuToggle = document.body.querySelector(".menu-toggle"); | ||
11 | + menuToggle.addEventListener("click", (event) => { | ||
12 | + event.preventDefault(); | ||
13 | + sidebarWrapper.classList.toggle("active"); | ||
14 | + _toggleMenuIcon(); | ||
15 | + menuToggle.classList.toggle("active"); | ||
16 | + }); | ||
17 | + | ||
18 | + // Closes responsive menu when a scroll trigger link is clicked | ||
19 | + var scrollTriggerList = [].slice.call( | ||
20 | + document.querySelectorAll("#sidebar-wrapper .js-scroll-trigger") | ||
21 | + ); | ||
22 | + scrollTriggerList.map((scrollTrigger) => { | ||
23 | + scrollTrigger.addEventListener("click", () => { | ||
24 | + sidebarWrapper.classList.remove("active"); | ||
25 | + menuToggle.classList.remove("active"); | ||
26 | + _toggleMenuIcon(); | ||
27 | + }); | ||
28 | + }); | ||
29 | + | ||
30 | + function _toggleMenuIcon() { | ||
31 | + const menuToggleBars = document.body.querySelector( | ||
32 | + ".menu-toggle > .fa-bars" | ||
33 | + ); | ||
34 | + const menuToggleTimes = document.body.querySelector( | ||
35 | + ".menu-toggle > .fa-times" | ||
36 | + ); | ||
37 | + if (menuToggleBars) { | ||
38 | + menuToggleBars.classList.remove("fa-bars"); | ||
39 | + menuToggleBars.classList.add("fa-times"); | ||
40 | + } | ||
41 | + if (menuToggleTimes) { | ||
42 | + menuToggleTimes.classList.remove("fa-times"); | ||
43 | + menuToggleTimes.classList.add("fa-bars"); | ||
44 | + } | ||
45 | + } | ||
46 | + | ||
47 | + // Scroll to top button appear | ||
48 | + document.addEventListener("scroll", () => { | ||
49 | + const scrollToTop = document.body.querySelector(".scroll-to-top"); | ||
50 | + if (document.documentElement.scrollTop > 100) { | ||
51 | + if (!scrollToTopVisible) { | ||
52 | + fadeIn(scrollToTop); | ||
53 | + scrollToTopVisible = true; | ||
54 | + } | ||
55 | + } else { | ||
56 | + if (scrollToTopVisible) { | ||
57 | + fadeOut(scrollToTop); | ||
58 | + scrollToTopVisible = false; | ||
59 | + } | ||
60 | + } | ||
61 | + }); | ||
62 | +}); | ||
63 | + | ||
64 | +function fadeOut(el) { | ||
65 | + el.style.opacity = 1; | ||
66 | + (function fade() { | ||
67 | + if ((el.style.opacity -= 0.1) < 0) { | ||
68 | + el.style.display = "none"; | ||
69 | + } else { | ||
70 | + requestAnimationFrame(fade); | ||
71 | + } | ||
72 | + })(); | ||
73 | +} | ||
74 | + | ||
75 | +function fadeIn(el, display) { | ||
76 | + el.style.opacity = 0; | ||
77 | + el.style.display = display || "block"; | ||
78 | + (function fade() { | ||
79 | + var val = parseFloat(el.style.opacity); | ||
80 | + if (!((val += 0.1) > 1)) { | ||
81 | + el.style.opacity = val; | ||
82 | + requestAnimationFrame(fade); | ||
83 | + } | ||
84 | + })(); | ||
85 | +} |
healthassistant/js/timer.js
0 → 100644
1 | +var x; | ||
2 | + | ||
3 | +const onClick = (bt) => { | ||
4 | + const onDelete = () => { | ||
5 | + clearInterval(x); | ||
6 | + document.getElementById("demo").innerText = ""; | ||
7 | + document.querySelector("#deleteBtn").innerText = ""; | ||
8 | + document.querySelector("#healthname").innerText = ""; | ||
9 | + }; | ||
10 | + const a = document.querySelector("#breaktime").innerText; | ||
11 | + var time = parseInt(bt.value); | ||
12 | + console.log(bt.name); | ||
13 | + console.log(time); | ||
14 | + var min = ""; | ||
15 | + var sec = ""; | ||
16 | + x = setInterval(function () { | ||
17 | + min = parseInt(time / 60); | ||
18 | + sec = time % 60; | ||
19 | + | ||
20 | + document.getElementById("demo").innerHTML = min + ":" + sec + ""; | ||
21 | + time--; | ||
22 | + | ||
23 | + if (time < 0) { | ||
24 | + clearInterval(x); | ||
25 | + document.getElementById("demo").innerHTML = "쉬는시간 끝!"; | ||
26 | + alert("쉬는시간이 끝났습니다!"); | ||
27 | + } | ||
28 | + }, 1000); | ||
29 | + const del_bt = document.querySelector("#deleteBtn"); | ||
30 | + const healthname = document.querySelector("#healthname"); | ||
31 | + healthname.innerHTML = bt.name + " 쉬는시간!"; | ||
32 | + var ex = document.createElement("Button"); | ||
33 | + ex.innerHTML = "타이머 지우기"; | ||
34 | + ex.className = "btn btn-dark"; | ||
35 | + ex.onclick = onDelete; | ||
36 | + del_bt.appendChild(ex); | ||
37 | +}; |
healthassistant/package-lock.json
0 → 100644
1 | +{ | ||
2 | + "name": "abcd", | ||
3 | + "version": "1.0.0", | ||
4 | + "lockfileVersion": 2, | ||
5 | + "requires": true, | ||
6 | + "packages": { | ||
7 | + "": { | ||
8 | + "name": "abcd", | ||
9 | + "version": "1.0.0", | ||
10 | + "license": "ISC", | ||
11 | + "dependencies": { | ||
12 | + "axios": "^0.24.0", | ||
13 | + "body-parser": "^1.19.0", | ||
14 | + "ejs": "^3.1.6", | ||
15 | + "express": "^4.17.1", | ||
16 | + "express-mysql-session": "^2.1.7", | ||
17 | + "express-session": "^1.17.2", | ||
18 | + "mysql": "^2.18.1", | ||
19 | + "passport": "^0.5.0", | ||
20 | + "passport-kakao": "^1.0.1" | ||
21 | + } | ||
22 | + }, | ||
23 | + "node_modules/accepts": { | ||
24 | + "version": "1.3.7", | ||
25 | + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", | ||
26 | + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", | ||
27 | + "dependencies": { | ||
28 | + "mime-types": "~2.1.24", | ||
29 | + "negotiator": "0.6.2" | ||
30 | + }, | ||
31 | + "engines": { | ||
32 | + "node": ">= 0.6" | ||
33 | + } | ||
34 | + }, | ||
35 | + "node_modules/ansi-styles": { | ||
36 | + "version": "3.2.1", | ||
37 | + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||
38 | + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||
39 | + "dependencies": { | ||
40 | + "color-convert": "^1.9.0" | ||
41 | + }, | ||
42 | + "engines": { | ||
43 | + "node": ">=4" | ||
44 | + } | ||
45 | + }, | ||
46 | + "node_modules/array-flatten": { | ||
47 | + "version": "1.1.1", | ||
48 | + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | ||
49 | + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | ||
50 | + }, | ||
51 | + "node_modules/async": { | ||
52 | + "version": "0.9.2", | ||
53 | + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", | ||
54 | + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" | ||
55 | + }, | ||
56 | + "node_modules/axios": { | ||
57 | + "version": "0.24.0", | ||
58 | + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", | ||
59 | + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", | ||
60 | + "dependencies": { | ||
61 | + "follow-redirects": "^1.14.4" | ||
62 | + } | ||
63 | + }, | ||
64 | + "node_modules/balanced-match": { | ||
65 | + "version": "1.0.2", | ||
66 | + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||
67 | + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" | ||
68 | + }, | ||
69 | + "node_modules/bignumber.js": { | ||
70 | + "version": "9.0.0", | ||
71 | + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", | ||
72 | + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", | ||
73 | + "engines": { | ||
74 | + "node": "*" | ||
75 | + } | ||
76 | + }, | ||
77 | + "node_modules/body-parser": { | ||
78 | + "version": "1.19.0", | ||
79 | + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", | ||
80 | + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", | ||
81 | + "dependencies": { | ||
82 | + "bytes": "3.1.0", | ||
83 | + "content-type": "~1.0.4", | ||
84 | + "debug": "2.6.9", | ||
85 | + "depd": "~1.1.2", | ||
86 | + "http-errors": "1.7.2", | ||
87 | + "iconv-lite": "0.4.24", | ||
88 | + "on-finished": "~2.3.0", | ||
89 | + "qs": "6.7.0", | ||
90 | + "raw-body": "2.4.0", | ||
91 | + "type-is": "~1.6.17" | ||
92 | + }, | ||
93 | + "engines": { | ||
94 | + "node": ">= 0.8" | ||
95 | + } | ||
96 | + }, | ||
97 | + "node_modules/brace-expansion": { | ||
98 | + "version": "1.1.11", | ||
99 | + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||
100 | + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||
101 | + "dependencies": { | ||
102 | + "balanced-match": "^1.0.0", | ||
103 | + "concat-map": "0.0.1" | ||
104 | + } | ||
105 | + }, | ||
106 | + "node_modules/bytes": { | ||
107 | + "version": "3.1.0", | ||
108 | + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", | ||
109 | + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", | ||
110 | + "engines": { | ||
111 | + "node": ">= 0.8" | ||
112 | + } | ||
113 | + }, | ||
114 | + "node_modules/chalk": { | ||
115 | + "version": "2.4.2", | ||
116 | + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", | ||
117 | + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", | ||
118 | + "dependencies": { | ||
119 | + "ansi-styles": "^3.2.1", | ||
120 | + "escape-string-regexp": "^1.0.5", | ||
121 | + "supports-color": "^5.3.0" | ||
122 | + }, | ||
123 | + "engines": { | ||
124 | + "node": ">=4" | ||
125 | + } | ||
126 | + }, | ||
127 | + "node_modules/color-convert": { | ||
128 | + "version": "1.9.3", | ||
129 | + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", | ||
130 | + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", | ||
131 | + "dependencies": { | ||
132 | + "color-name": "1.1.3" | ||
133 | + } | ||
134 | + }, | ||
135 | + "node_modules/color-name": { | ||
136 | + "version": "1.1.3", | ||
137 | + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", | ||
138 | + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" | ||
139 | + }, | ||
140 | + "node_modules/concat-map": { | ||
141 | + "version": "0.0.1", | ||
142 | + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||
143 | + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" | ||
144 | + }, | ||
145 | + "node_modules/content-disposition": { | ||
146 | + "version": "0.5.3", | ||
147 | + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", | ||
148 | + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", | ||
149 | + "dependencies": { | ||
150 | + "safe-buffer": "5.1.2" | ||
151 | + }, | ||
152 | + "engines": { | ||
153 | + "node": ">= 0.6" | ||
154 | + } | ||
155 | + }, | ||
156 | + "node_modules/content-type": { | ||
157 | + "version": "1.0.4", | ||
158 | + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", | ||
159 | + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", | ||
160 | + "engines": { | ||
161 | + "node": ">= 0.6" | ||
162 | + } | ||
163 | + }, | ||
164 | + "node_modules/cookie": { | ||
165 | + "version": "0.4.0", | ||
166 | + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", | ||
167 | + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", | ||
168 | + "engines": { | ||
169 | + "node": ">= 0.6" | ||
170 | + } | ||
171 | + }, | ||
172 | + "node_modules/cookie-signature": { | ||
173 | + "version": "1.0.6", | ||
174 | + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | ||
175 | + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | ||
176 | + }, | ||
177 | + "node_modules/core-util-is": { | ||
178 | + "version": "1.0.3", | ||
179 | + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", | ||
180 | + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" | ||
181 | + }, | ||
182 | + "node_modules/debug": { | ||
183 | + "version": "2.6.9", | ||
184 | + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | ||
185 | + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", | ||
186 | + "dependencies": { | ||
187 | + "ms": "2.0.0" | ||
188 | + } | ||
189 | + }, | ||
190 | + "node_modules/depd": { | ||
191 | + "version": "1.1.2", | ||
192 | + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", | ||
193 | + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", | ||
194 | + "engines": { | ||
195 | + "node": ">= 0.6" | ||
196 | + } | ||
197 | + }, | ||
198 | + "node_modules/destroy": { | ||
199 | + "version": "1.0.4", | ||
200 | + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | ||
201 | + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" | ||
202 | + }, | ||
203 | + "node_modules/ee-first": { | ||
204 | + "version": "1.1.1", | ||
205 | + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", | ||
206 | + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" | ||
207 | + }, | ||
208 | + "node_modules/ejs": { | ||
209 | + "version": "3.1.6", | ||
210 | + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", | ||
211 | + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", | ||
212 | + "dependencies": { | ||
213 | + "jake": "^10.6.1" | ||
214 | + }, | ||
215 | + "bin": { | ||
216 | + "ejs": "bin/cli.js" | ||
217 | + }, | ||
218 | + "engines": { | ||
219 | + "node": ">=0.10.0" | ||
220 | + } | ||
221 | + }, | ||
222 | + "node_modules/encodeurl": { | ||
223 | + "version": "1.0.2", | ||
224 | + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", | ||
225 | + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", | ||
226 | + "engines": { | ||
227 | + "node": ">= 0.8" | ||
228 | + } | ||
229 | + }, | ||
230 | + "node_modules/escape-html": { | ||
231 | + "version": "1.0.3", | ||
232 | + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", | ||
233 | + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" | ||
234 | + }, | ||
235 | + "node_modules/escape-string-regexp": { | ||
236 | + "version": "1.0.5", | ||
237 | + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", | ||
238 | + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", | ||
239 | + "engines": { | ||
240 | + "node": ">=0.8.0" | ||
241 | + } | ||
242 | + }, | ||
243 | + "node_modules/etag": { | ||
244 | + "version": "1.8.1", | ||
245 | + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", | ||
246 | + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", | ||
247 | + "engines": { | ||
248 | + "node": ">= 0.6" | ||
249 | + } | ||
250 | + }, | ||
251 | + "node_modules/express": { | ||
252 | + "version": "4.17.1", | ||
253 | + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", | ||
254 | + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", | ||
255 | + "dependencies": { | ||
256 | + "accepts": "~1.3.7", | ||
257 | + "array-flatten": "1.1.1", | ||
258 | + "body-parser": "1.19.0", | ||
259 | + "content-disposition": "0.5.3", | ||
260 | + "content-type": "~1.0.4", | ||
261 | + "cookie": "0.4.0", | ||
262 | + "cookie-signature": "1.0.6", | ||
263 | + "debug": "2.6.9", | ||
264 | + "depd": "~1.1.2", | ||
265 | + "encodeurl": "~1.0.2", | ||
266 | + "escape-html": "~1.0.3", | ||
267 | + "etag": "~1.8.1", | ||
268 | + "finalhandler": "~1.1.2", | ||
269 | + "fresh": "0.5.2", | ||
270 | + "merge-descriptors": "1.0.1", | ||
271 | + "methods": "~1.1.2", | ||
272 | + "on-finished": "~2.3.0", | ||
273 | + "parseurl": "~1.3.3", | ||
274 | + "path-to-regexp": "0.1.7", | ||
275 | + "proxy-addr": "~2.0.5", | ||
276 | + "qs": "6.7.0", | ||
277 | + "range-parser": "~1.2.1", | ||
278 | + "safe-buffer": "5.1.2", | ||
279 | + "send": "0.17.1", | ||
280 | + "serve-static": "1.14.1", | ||
281 | + "setprototypeof": "1.1.1", | ||
282 | + "statuses": "~1.5.0", | ||
283 | + "type-is": "~1.6.18", | ||
284 | + "utils-merge": "1.0.1", | ||
285 | + "vary": "~1.1.2" | ||
286 | + }, | ||
287 | + "engines": { | ||
288 | + "node": ">= 0.10.0" | ||
289 | + } | ||
290 | + }, | ||
291 | + "node_modules/express-mysql-session": { | ||
292 | + "version": "2.1.7", | ||
293 | + "resolved": "https://registry.npmjs.org/express-mysql-session/-/express-mysql-session-2.1.7.tgz", | ||
294 | + "integrity": "sha512-0lY8nBVo6GZdQ/Y98zsTsRnDMNJJYRh5k83rrzLf/5CKHEAJZfOnHaox1WG/W8HHTutNKMsmsiiGgL16r1PcsQ==", | ||
295 | + "dependencies": { | ||
296 | + "debug": "4.3.2", | ||
297 | + "express-session": "1.17.2", | ||
298 | + "mysql": "2.18.1", | ||
299 | + "underscore": "1.13.1" | ||
300 | + }, | ||
301 | + "funding": { | ||
302 | + "type": "individual", | ||
303 | + "url": "https://degreesofzero.com/donate.html?project=express-mysql-session" | ||
304 | + } | ||
305 | + }, | ||
306 | + "node_modules/express-mysql-session/node_modules/debug": { | ||
307 | + "version": "4.3.2", | ||
308 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", | ||
309 | + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", | ||
310 | + "dependencies": { | ||
311 | + "ms": "2.1.2" | ||
312 | + }, | ||
313 | + "engines": { | ||
314 | + "node": ">=6.0" | ||
315 | + }, | ||
316 | + "peerDependenciesMeta": { | ||
317 | + "supports-color": { | ||
318 | + "optional": true | ||
319 | + } | ||
320 | + } | ||
321 | + }, | ||
322 | + "node_modules/express-mysql-session/node_modules/ms": { | ||
323 | + "version": "2.1.2", | ||
324 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||
325 | + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" | ||
326 | + }, | ||
327 | + "node_modules/express-session": { | ||
328 | + "version": "1.17.2", | ||
329 | + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz", | ||
330 | + "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==", | ||
331 | + "dependencies": { | ||
332 | + "cookie": "0.4.1", | ||
333 | + "cookie-signature": "1.0.6", | ||
334 | + "debug": "2.6.9", | ||
335 | + "depd": "~2.0.0", | ||
336 | + "on-headers": "~1.0.2", | ||
337 | + "parseurl": "~1.3.3", | ||
338 | + "safe-buffer": "5.2.1", | ||
339 | + "uid-safe": "~2.1.5" | ||
340 | + }, | ||
341 | + "engines": { | ||
342 | + "node": ">= 0.8.0" | ||
343 | + } | ||
344 | + }, | ||
345 | + "node_modules/express-session/node_modules/cookie": { | ||
346 | + "version": "0.4.1", | ||
347 | + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", | ||
348 | + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", | ||
349 | + "engines": { | ||
350 | + "node": ">= 0.6" | ||
351 | + } | ||
352 | + }, | ||
353 | + "node_modules/express-session/node_modules/depd": { | ||
354 | + "version": "2.0.0", | ||
355 | + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", | ||
356 | + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", | ||
357 | + "engines": { | ||
358 | + "node": ">= 0.8" | ||
359 | + } | ||
360 | + }, | ||
361 | + "node_modules/express-session/node_modules/safe-buffer": { | ||
362 | + "version": "5.2.1", | ||
363 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | ||
364 | + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", | ||
365 | + "funding": [ | ||
366 | + { | ||
367 | + "type": "github", | ||
368 | + "url": "https://github.com/sponsors/feross" | ||
369 | + }, | ||
370 | + { | ||
371 | + "type": "patreon", | ||
372 | + "url": "https://www.patreon.com/feross" | ||
373 | + }, | ||
374 | + { | ||
375 | + "type": "consulting", | ||
376 | + "url": "https://feross.org/support" | ||
377 | + } | ||
378 | + ] | ||
379 | + }, | ||
380 | + "node_modules/filelist": { | ||
381 | + "version": "1.0.2", | ||
382 | + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", | ||
383 | + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", | ||
384 | + "dependencies": { | ||
385 | + "minimatch": "^3.0.4" | ||
386 | + } | ||
387 | + }, | ||
388 | + "node_modules/finalhandler": { | ||
389 | + "version": "1.1.2", | ||
390 | + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", | ||
391 | + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", | ||
392 | + "dependencies": { | ||
393 | + "debug": "2.6.9", | ||
394 | + "encodeurl": "~1.0.2", | ||
395 | + "escape-html": "~1.0.3", | ||
396 | + "on-finished": "~2.3.0", | ||
397 | + "parseurl": "~1.3.3", | ||
398 | + "statuses": "~1.5.0", | ||
399 | + "unpipe": "~1.0.0" | ||
400 | + }, | ||
401 | + "engines": { | ||
402 | + "node": ">= 0.8" | ||
403 | + } | ||
404 | + }, | ||
405 | + "node_modules/follow-redirects": { | ||
406 | + "version": "1.14.5", | ||
407 | + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", | ||
408 | + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", | ||
409 | + "funding": [ | ||
410 | + { | ||
411 | + "type": "individual", | ||
412 | + "url": "https://github.com/sponsors/RubenVerborgh" | ||
413 | + } | ||
414 | + ], | ||
415 | + "engines": { | ||
416 | + "node": ">=4.0" | ||
417 | + }, | ||
418 | + "peerDependenciesMeta": { | ||
419 | + "debug": { | ||
420 | + "optional": true | ||
421 | + } | ||
422 | + } | ||
423 | + }, | ||
424 | + "node_modules/forwarded": { | ||
425 | + "version": "0.2.0", | ||
426 | + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", | ||
427 | + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", | ||
428 | + "engines": { | ||
429 | + "node": ">= 0.6" | ||
430 | + } | ||
431 | + }, | ||
432 | + "node_modules/fresh": { | ||
433 | + "version": "0.5.2", | ||
434 | + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", | ||
435 | + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", | ||
436 | + "engines": { | ||
437 | + "node": ">= 0.6" | ||
438 | + } | ||
439 | + }, | ||
440 | + "node_modules/has-flag": { | ||
441 | + "version": "3.0.0", | ||
442 | + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | ||
443 | + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", | ||
444 | + "engines": { | ||
445 | + "node": ">=4" | ||
446 | + } | ||
447 | + }, | ||
448 | + "node_modules/http-errors": { | ||
449 | + "version": "1.7.2", | ||
450 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", | ||
451 | + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", | ||
452 | + "dependencies": { | ||
453 | + "depd": "~1.1.2", | ||
454 | + "inherits": "2.0.3", | ||
455 | + "setprototypeof": "1.1.1", | ||
456 | + "statuses": ">= 1.5.0 < 2", | ||
457 | + "toidentifier": "1.0.0" | ||
458 | + }, | ||
459 | + "engines": { | ||
460 | + "node": ">= 0.6" | ||
461 | + } | ||
462 | + }, | ||
463 | + "node_modules/iconv-lite": { | ||
464 | + "version": "0.4.24", | ||
465 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | ||
466 | + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | ||
467 | + "dependencies": { | ||
468 | + "safer-buffer": ">= 2.1.2 < 3" | ||
469 | + }, | ||
470 | + "engines": { | ||
471 | + "node": ">=0.10.0" | ||
472 | + } | ||
473 | + }, | ||
474 | + "node_modules/inherits": { | ||
475 | + "version": "2.0.3", | ||
476 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | ||
477 | + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" | ||
478 | + }, | ||
479 | + "node_modules/ipaddr.js": { | ||
480 | + "version": "1.9.1", | ||
481 | + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", | ||
482 | + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", | ||
483 | + "engines": { | ||
484 | + "node": ">= 0.10" | ||
485 | + } | ||
486 | + }, | ||
487 | + "node_modules/isarray": { | ||
488 | + "version": "1.0.0", | ||
489 | + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||
490 | + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||
491 | + }, | ||
492 | + "node_modules/jake": { | ||
493 | + "version": "10.8.2", | ||
494 | + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", | ||
495 | + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", | ||
496 | + "dependencies": { | ||
497 | + "async": "0.9.x", | ||
498 | + "chalk": "^2.4.2", | ||
499 | + "filelist": "^1.0.1", | ||
500 | + "minimatch": "^3.0.4" | ||
501 | + }, | ||
502 | + "bin": { | ||
503 | + "jake": "bin/cli.js" | ||
504 | + }, | ||
505 | + "engines": { | ||
506 | + "node": "*" | ||
507 | + } | ||
508 | + }, | ||
509 | + "node_modules/media-typer": { | ||
510 | + "version": "0.3.0", | ||
511 | + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | ||
512 | + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", | ||
513 | + "engines": { | ||
514 | + "node": ">= 0.6" | ||
515 | + } | ||
516 | + }, | ||
517 | + "node_modules/merge-descriptors": { | ||
518 | + "version": "1.0.1", | ||
519 | + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | ||
520 | + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" | ||
521 | + }, | ||
522 | + "node_modules/methods": { | ||
523 | + "version": "1.1.2", | ||
524 | + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | ||
525 | + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", | ||
526 | + "engines": { | ||
527 | + "node": ">= 0.6" | ||
528 | + } | ||
529 | + }, | ||
530 | + "node_modules/mime": { | ||
531 | + "version": "1.6.0", | ||
532 | + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", | ||
533 | + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", | ||
534 | + "bin": { | ||
535 | + "mime": "cli.js" | ||
536 | + }, | ||
537 | + "engines": { | ||
538 | + "node": ">=4" | ||
539 | + } | ||
540 | + }, | ||
541 | + "node_modules/mime-db": { | ||
542 | + "version": "1.51.0", | ||
543 | + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", | ||
544 | + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", | ||
545 | + "engines": { | ||
546 | + "node": ">= 0.6" | ||
547 | + } | ||
548 | + }, | ||
549 | + "node_modules/mime-types": { | ||
550 | + "version": "2.1.34", | ||
551 | + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", | ||
552 | + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", | ||
553 | + "dependencies": { | ||
554 | + "mime-db": "1.51.0" | ||
555 | + }, | ||
556 | + "engines": { | ||
557 | + "node": ">= 0.6" | ||
558 | + } | ||
559 | + }, | ||
560 | + "node_modules/minimatch": { | ||
561 | + "version": "3.0.4", | ||
562 | + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", | ||
563 | + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", | ||
564 | + "dependencies": { | ||
565 | + "brace-expansion": "^1.1.7" | ||
566 | + }, | ||
567 | + "engines": { | ||
568 | + "node": "*" | ||
569 | + } | ||
570 | + }, | ||
571 | + "node_modules/ms": { | ||
572 | + "version": "2.0.0", | ||
573 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | ||
574 | + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | ||
575 | + }, | ||
576 | + "node_modules/mysql": { | ||
577 | + "version": "2.18.1", | ||
578 | + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", | ||
579 | + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", | ||
580 | + "dependencies": { | ||
581 | + "bignumber.js": "9.0.0", | ||
582 | + "readable-stream": "2.3.7", | ||
583 | + "safe-buffer": "5.1.2", | ||
584 | + "sqlstring": "2.3.1" | ||
585 | + }, | ||
586 | + "engines": { | ||
587 | + "node": ">= 0.6" | ||
588 | + } | ||
589 | + }, | ||
590 | + "node_modules/negotiator": { | ||
591 | + "version": "0.6.2", | ||
592 | + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", | ||
593 | + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", | ||
594 | + "engines": { | ||
595 | + "node": ">= 0.6" | ||
596 | + } | ||
597 | + }, | ||
598 | + "node_modules/oauth": { | ||
599 | + "version": "0.9.15", | ||
600 | + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", | ||
601 | + "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE=" | ||
602 | + }, | ||
603 | + "node_modules/on-finished": { | ||
604 | + "version": "2.3.0", | ||
605 | + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", | ||
606 | + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", | ||
607 | + "dependencies": { | ||
608 | + "ee-first": "1.1.1" | ||
609 | + }, | ||
610 | + "engines": { | ||
611 | + "node": ">= 0.8" | ||
612 | + } | ||
613 | + }, | ||
614 | + "node_modules/on-headers": { | ||
615 | + "version": "1.0.2", | ||
616 | + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", | ||
617 | + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", | ||
618 | + "engines": { | ||
619 | + "node": ">= 0.8" | ||
620 | + } | ||
621 | + }, | ||
622 | + "node_modules/parseurl": { | ||
623 | + "version": "1.3.3", | ||
624 | + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | ||
625 | + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", | ||
626 | + "engines": { | ||
627 | + "node": ">= 0.8" | ||
628 | + } | ||
629 | + }, | ||
630 | + "node_modules/passport": { | ||
631 | + "version": "0.5.0", | ||
632 | + "resolved": "https://registry.npmjs.org/passport/-/passport-0.5.0.tgz", | ||
633 | + "integrity": "sha512-ln+ue5YaNDS+fes6O5PCzXKSseY5u8MYhX9H5Co4s+HfYI5oqvnHKoOORLYDUPh+8tHvrxugF2GFcUA1Q1Gqfg==", | ||
634 | + "dependencies": { | ||
635 | + "passport-strategy": "1.x.x", | ||
636 | + "pause": "0.0.1" | ||
637 | + }, | ||
638 | + "engines": { | ||
639 | + "node": ">= 0.4.0" | ||
640 | + }, | ||
641 | + "funding": { | ||
642 | + "type": "github", | ||
643 | + "url": "https://github.com/sponsors/jaredhanson" | ||
644 | + } | ||
645 | + }, | ||
646 | + "node_modules/passport-kakao": { | ||
647 | + "version": "1.0.1", | ||
648 | + "resolved": "https://registry.npmjs.org/passport-kakao/-/passport-kakao-1.0.1.tgz", | ||
649 | + "integrity": "sha512-uItaYRVrTHL6iGPMnMZvPa/O1GrAdh/V6EMjOHcFlQcVroZ9wgG7BZ5PonMNJCxfHQ3L2QVNRnzhKWUzSsumbw==", | ||
650 | + "dependencies": { | ||
651 | + "passport-oauth2": "~1.1.2", | ||
652 | + "pkginfo": "~0.3.0" | ||
653 | + } | ||
654 | + }, | ||
655 | + "node_modules/passport-oauth2": { | ||
656 | + "version": "1.1.2", | ||
657 | + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.1.2.tgz", | ||
658 | + "integrity": "sha1-vXFjsbYJA3GGjcTvb58uHkzEuUg=", | ||
659 | + "dependencies": { | ||
660 | + "oauth": "0.9.x", | ||
661 | + "passport-strategy": "1.x.x", | ||
662 | + "uid2": "0.0.x" | ||
663 | + }, | ||
664 | + "engines": { | ||
665 | + "node": ">= 0.4.0" | ||
666 | + } | ||
667 | + }, | ||
668 | + "node_modules/passport-strategy": { | ||
669 | + "version": "1.0.0", | ||
670 | + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", | ||
671 | + "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=", | ||
672 | + "engines": { | ||
673 | + "node": ">= 0.4.0" | ||
674 | + } | ||
675 | + }, | ||
676 | + "node_modules/path-to-regexp": { | ||
677 | + "version": "0.1.7", | ||
678 | + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | ||
679 | + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" | ||
680 | + }, | ||
681 | + "node_modules/pause": { | ||
682 | + "version": "0.0.1", | ||
683 | + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", | ||
684 | + "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" | ||
685 | + }, | ||
686 | + "node_modules/pkginfo": { | ||
687 | + "version": "0.3.1", | ||
688 | + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", | ||
689 | + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=", | ||
690 | + "engines": { | ||
691 | + "node": ">= 0.4.0" | ||
692 | + } | ||
693 | + }, | ||
694 | + "node_modules/process-nextick-args": { | ||
695 | + "version": "2.0.1", | ||
696 | + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | ||
697 | + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" | ||
698 | + }, | ||
699 | + "node_modules/proxy-addr": { | ||
700 | + "version": "2.0.7", | ||
701 | + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | ||
702 | + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", | ||
703 | + "dependencies": { | ||
704 | + "forwarded": "0.2.0", | ||
705 | + "ipaddr.js": "1.9.1" | ||
706 | + }, | ||
707 | + "engines": { | ||
708 | + "node": ">= 0.10" | ||
709 | + } | ||
710 | + }, | ||
711 | + "node_modules/qs": { | ||
712 | + "version": "6.7.0", | ||
713 | + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", | ||
714 | + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", | ||
715 | + "engines": { | ||
716 | + "node": ">=0.6" | ||
717 | + } | ||
718 | + }, | ||
719 | + "node_modules/random-bytes": { | ||
720 | + "version": "1.0.0", | ||
721 | + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", | ||
722 | + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=", | ||
723 | + "engines": { | ||
724 | + "node": ">= 0.8" | ||
725 | + } | ||
726 | + }, | ||
727 | + "node_modules/range-parser": { | ||
728 | + "version": "1.2.1", | ||
729 | + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", | ||
730 | + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", | ||
731 | + "engines": { | ||
732 | + "node": ">= 0.6" | ||
733 | + } | ||
734 | + }, | ||
735 | + "node_modules/raw-body": { | ||
736 | + "version": "2.4.0", | ||
737 | + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", | ||
738 | + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", | ||
739 | + "dependencies": { | ||
740 | + "bytes": "3.1.0", | ||
741 | + "http-errors": "1.7.2", | ||
742 | + "iconv-lite": "0.4.24", | ||
743 | + "unpipe": "1.0.0" | ||
744 | + }, | ||
745 | + "engines": { | ||
746 | + "node": ">= 0.8" | ||
747 | + } | ||
748 | + }, | ||
749 | + "node_modules/readable-stream": { | ||
750 | + "version": "2.3.7", | ||
751 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", | ||
752 | + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", | ||
753 | + "dependencies": { | ||
754 | + "core-util-is": "~1.0.0", | ||
755 | + "inherits": "~2.0.3", | ||
756 | + "isarray": "~1.0.0", | ||
757 | + "process-nextick-args": "~2.0.0", | ||
758 | + "safe-buffer": "~5.1.1", | ||
759 | + "string_decoder": "~1.1.1", | ||
760 | + "util-deprecate": "~1.0.1" | ||
761 | + } | ||
762 | + }, | ||
763 | + "node_modules/safe-buffer": { | ||
764 | + "version": "5.1.2", | ||
765 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
766 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
767 | + }, | ||
768 | + "node_modules/safer-buffer": { | ||
769 | + "version": "2.1.2", | ||
770 | + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | ||
771 | + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | ||
772 | + }, | ||
773 | + "node_modules/send": { | ||
774 | + "version": "0.17.1", | ||
775 | + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", | ||
776 | + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", | ||
777 | + "dependencies": { | ||
778 | + "debug": "2.6.9", | ||
779 | + "depd": "~1.1.2", | ||
780 | + "destroy": "~1.0.4", | ||
781 | + "encodeurl": "~1.0.2", | ||
782 | + "escape-html": "~1.0.3", | ||
783 | + "etag": "~1.8.1", | ||
784 | + "fresh": "0.5.2", | ||
785 | + "http-errors": "~1.7.2", | ||
786 | + "mime": "1.6.0", | ||
787 | + "ms": "2.1.1", | ||
788 | + "on-finished": "~2.3.0", | ||
789 | + "range-parser": "~1.2.1", | ||
790 | + "statuses": "~1.5.0" | ||
791 | + }, | ||
792 | + "engines": { | ||
793 | + "node": ">= 0.8.0" | ||
794 | + } | ||
795 | + }, | ||
796 | + "node_modules/send/node_modules/ms": { | ||
797 | + "version": "2.1.1", | ||
798 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", | ||
799 | + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" | ||
800 | + }, | ||
801 | + "node_modules/serve-static": { | ||
802 | + "version": "1.14.1", | ||
803 | + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", | ||
804 | + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", | ||
805 | + "dependencies": { | ||
806 | + "encodeurl": "~1.0.2", | ||
807 | + "escape-html": "~1.0.3", | ||
808 | + "parseurl": "~1.3.3", | ||
809 | + "send": "0.17.1" | ||
810 | + }, | ||
811 | + "engines": { | ||
812 | + "node": ">= 0.8.0" | ||
813 | + } | ||
814 | + }, | ||
815 | + "node_modules/setprototypeof": { | ||
816 | + "version": "1.1.1", | ||
817 | + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", | ||
818 | + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" | ||
819 | + }, | ||
820 | + "node_modules/sqlstring": { | ||
821 | + "version": "2.3.1", | ||
822 | + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", | ||
823 | + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=", | ||
824 | + "engines": { | ||
825 | + "node": ">= 0.6" | ||
826 | + } | ||
827 | + }, | ||
828 | + "node_modules/statuses": { | ||
829 | + "version": "1.5.0", | ||
830 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", | ||
831 | + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", | ||
832 | + "engines": { | ||
833 | + "node": ">= 0.6" | ||
834 | + } | ||
835 | + }, | ||
836 | + "node_modules/string_decoder": { | ||
837 | + "version": "1.1.1", | ||
838 | + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
839 | + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
840 | + "dependencies": { | ||
841 | + "safe-buffer": "~5.1.0" | ||
842 | + } | ||
843 | + }, | ||
844 | + "node_modules/supports-color": { | ||
845 | + "version": "5.5.0", | ||
846 | + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||
847 | + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | ||
848 | + "dependencies": { | ||
849 | + "has-flag": "^3.0.0" | ||
850 | + }, | ||
851 | + "engines": { | ||
852 | + "node": ">=4" | ||
853 | + } | ||
854 | + }, | ||
855 | + "node_modules/toidentifier": { | ||
856 | + "version": "1.0.0", | ||
857 | + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", | ||
858 | + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", | ||
859 | + "engines": { | ||
860 | + "node": ">=0.6" | ||
861 | + } | ||
862 | + }, | ||
863 | + "node_modules/type-is": { | ||
864 | + "version": "1.6.18", | ||
865 | + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||
866 | + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", | ||
867 | + "dependencies": { | ||
868 | + "media-typer": "0.3.0", | ||
869 | + "mime-types": "~2.1.24" | ||
870 | + }, | ||
871 | + "engines": { | ||
872 | + "node": ">= 0.6" | ||
873 | + } | ||
874 | + }, | ||
875 | + "node_modules/uid-safe": { | ||
876 | + "version": "2.1.5", | ||
877 | + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", | ||
878 | + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", | ||
879 | + "dependencies": { | ||
880 | + "random-bytes": "~1.0.0" | ||
881 | + }, | ||
882 | + "engines": { | ||
883 | + "node": ">= 0.8" | ||
884 | + } | ||
885 | + }, | ||
886 | + "node_modules/uid2": { | ||
887 | + "version": "0.0.4", | ||
888 | + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", | ||
889 | + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" | ||
890 | + }, | ||
891 | + "node_modules/underscore": { | ||
892 | + "version": "1.13.1", | ||
893 | + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", | ||
894 | + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" | ||
895 | + }, | ||
896 | + "node_modules/unpipe": { | ||
897 | + "version": "1.0.0", | ||
898 | + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||
899 | + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", | ||
900 | + "engines": { | ||
901 | + "node": ">= 0.8" | ||
902 | + } | ||
903 | + }, | ||
904 | + "node_modules/util-deprecate": { | ||
905 | + "version": "1.0.2", | ||
906 | + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||
907 | + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | ||
908 | + }, | ||
909 | + "node_modules/utils-merge": { | ||
910 | + "version": "1.0.1", | ||
911 | + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | ||
912 | + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", | ||
913 | + "engines": { | ||
914 | + "node": ">= 0.4.0" | ||
915 | + } | ||
916 | + }, | ||
917 | + "node_modules/vary": { | ||
918 | + "version": "1.1.2", | ||
919 | + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | ||
920 | + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", | ||
921 | + "engines": { | ||
922 | + "node": ">= 0.8" | ||
923 | + } | ||
924 | + } | ||
925 | + }, | ||
926 | + "dependencies": { | ||
927 | + "accepts": { | ||
928 | + "version": "1.3.7", | ||
929 | + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", | ||
930 | + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", | ||
931 | + "requires": { | ||
932 | + "mime-types": "~2.1.24", | ||
933 | + "negotiator": "0.6.2" | ||
934 | + } | ||
935 | + }, | ||
936 | + "ansi-styles": { | ||
937 | + "version": "3.2.1", | ||
938 | + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", | ||
939 | + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", | ||
940 | + "requires": { | ||
941 | + "color-convert": "^1.9.0" | ||
942 | + } | ||
943 | + }, | ||
944 | + "array-flatten": { | ||
945 | + "version": "1.1.1", | ||
946 | + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", | ||
947 | + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" | ||
948 | + }, | ||
949 | + "async": { | ||
950 | + "version": "0.9.2", | ||
951 | + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", | ||
952 | + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" | ||
953 | + }, | ||
954 | + "axios": { | ||
955 | + "version": "0.24.0", | ||
956 | + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", | ||
957 | + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", | ||
958 | + "requires": { | ||
959 | + "follow-redirects": "^1.14.4" | ||
960 | + } | ||
961 | + }, | ||
962 | + "balanced-match": { | ||
963 | + "version": "1.0.2", | ||
964 | + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||
965 | + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" | ||
966 | + }, | ||
967 | + "bignumber.js": { | ||
968 | + "version": "9.0.0", | ||
969 | + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", | ||
970 | + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" | ||
971 | + }, | ||
972 | + "body-parser": { | ||
973 | + "version": "1.19.0", | ||
974 | + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", | ||
975 | + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", | ||
976 | + "requires": { | ||
977 | + "bytes": "3.1.0", | ||
978 | + "content-type": "~1.0.4", | ||
979 | + "debug": "2.6.9", | ||
980 | + "depd": "~1.1.2", | ||
981 | + "http-errors": "1.7.2", | ||
982 | + "iconv-lite": "0.4.24", | ||
983 | + "on-finished": "~2.3.0", | ||
984 | + "qs": "6.7.0", | ||
985 | + "raw-body": "2.4.0", | ||
986 | + "type-is": "~1.6.17" | ||
987 | + } | ||
988 | + }, | ||
989 | + "brace-expansion": { | ||
990 | + "version": "1.1.11", | ||
991 | + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||
992 | + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||
993 | + "requires": { | ||
994 | + "balanced-match": "^1.0.0", | ||
995 | + "concat-map": "0.0.1" | ||
996 | + } | ||
997 | + }, | ||
998 | + "bytes": { | ||
999 | + "version": "3.1.0", | ||
1000 | + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", | ||
1001 | + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" | ||
1002 | + }, | ||
1003 | + "chalk": { | ||
1004 | + "version": "2.4.2", | ||
1005 | + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", | ||
1006 | + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", | ||
1007 | + "requires": { | ||
1008 | + "ansi-styles": "^3.2.1", | ||
1009 | + "escape-string-regexp": "^1.0.5", | ||
1010 | + "supports-color": "^5.3.0" | ||
1011 | + } | ||
1012 | + }, | ||
1013 | + "color-convert": { | ||
1014 | + "version": "1.9.3", | ||
1015 | + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", | ||
1016 | + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", | ||
1017 | + "requires": { | ||
1018 | + "color-name": "1.1.3" | ||
1019 | + } | ||
1020 | + }, | ||
1021 | + "color-name": { | ||
1022 | + "version": "1.1.3", | ||
1023 | + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", | ||
1024 | + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" | ||
1025 | + }, | ||
1026 | + "concat-map": { | ||
1027 | + "version": "0.0.1", | ||
1028 | + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||
1029 | + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" | ||
1030 | + }, | ||
1031 | + "content-disposition": { | ||
1032 | + "version": "0.5.3", | ||
1033 | + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", | ||
1034 | + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", | ||
1035 | + "requires": { | ||
1036 | + "safe-buffer": "5.1.2" | ||
1037 | + } | ||
1038 | + }, | ||
1039 | + "content-type": { | ||
1040 | + "version": "1.0.4", | ||
1041 | + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", | ||
1042 | + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" | ||
1043 | + }, | ||
1044 | + "cookie": { | ||
1045 | + "version": "0.4.0", | ||
1046 | + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", | ||
1047 | + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" | ||
1048 | + }, | ||
1049 | + "cookie-signature": { | ||
1050 | + "version": "1.0.6", | ||
1051 | + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | ||
1052 | + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | ||
1053 | + }, | ||
1054 | + "core-util-is": { | ||
1055 | + "version": "1.0.3", | ||
1056 | + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", | ||
1057 | + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" | ||
1058 | + }, | ||
1059 | + "debug": { | ||
1060 | + "version": "2.6.9", | ||
1061 | + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | ||
1062 | + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", | ||
1063 | + "requires": { | ||
1064 | + "ms": "2.0.0" | ||
1065 | + } | ||
1066 | + }, | ||
1067 | + "depd": { | ||
1068 | + "version": "1.1.2", | ||
1069 | + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", | ||
1070 | + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" | ||
1071 | + }, | ||
1072 | + "destroy": { | ||
1073 | + "version": "1.0.4", | ||
1074 | + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", | ||
1075 | + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" | ||
1076 | + }, | ||
1077 | + "ee-first": { | ||
1078 | + "version": "1.1.1", | ||
1079 | + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", | ||
1080 | + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" | ||
1081 | + }, | ||
1082 | + "ejs": { | ||
1083 | + "version": "3.1.6", | ||
1084 | + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", | ||
1085 | + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", | ||
1086 | + "requires": { | ||
1087 | + "jake": "^10.6.1" | ||
1088 | + } | ||
1089 | + }, | ||
1090 | + "encodeurl": { | ||
1091 | + "version": "1.0.2", | ||
1092 | + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", | ||
1093 | + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" | ||
1094 | + }, | ||
1095 | + "escape-html": { | ||
1096 | + "version": "1.0.3", | ||
1097 | + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", | ||
1098 | + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" | ||
1099 | + }, | ||
1100 | + "escape-string-regexp": { | ||
1101 | + "version": "1.0.5", | ||
1102 | + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", | ||
1103 | + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" | ||
1104 | + }, | ||
1105 | + "etag": { | ||
1106 | + "version": "1.8.1", | ||
1107 | + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", | ||
1108 | + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" | ||
1109 | + }, | ||
1110 | + "express": { | ||
1111 | + "version": "4.17.1", | ||
1112 | + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", | ||
1113 | + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", | ||
1114 | + "requires": { | ||
1115 | + "accepts": "~1.3.7", | ||
1116 | + "array-flatten": "1.1.1", | ||
1117 | + "body-parser": "1.19.0", | ||
1118 | + "content-disposition": "0.5.3", | ||
1119 | + "content-type": "~1.0.4", | ||
1120 | + "cookie": "0.4.0", | ||
1121 | + "cookie-signature": "1.0.6", | ||
1122 | + "debug": "2.6.9", | ||
1123 | + "depd": "~1.1.2", | ||
1124 | + "encodeurl": "~1.0.2", | ||
1125 | + "escape-html": "~1.0.3", | ||
1126 | + "etag": "~1.8.1", | ||
1127 | + "finalhandler": "~1.1.2", | ||
1128 | + "fresh": "0.5.2", | ||
1129 | + "merge-descriptors": "1.0.1", | ||
1130 | + "methods": "~1.1.2", | ||
1131 | + "on-finished": "~2.3.0", | ||
1132 | + "parseurl": "~1.3.3", | ||
1133 | + "path-to-regexp": "0.1.7", | ||
1134 | + "proxy-addr": "~2.0.5", | ||
1135 | + "qs": "6.7.0", | ||
1136 | + "range-parser": "~1.2.1", | ||
1137 | + "safe-buffer": "5.1.2", | ||
1138 | + "send": "0.17.1", | ||
1139 | + "serve-static": "1.14.1", | ||
1140 | + "setprototypeof": "1.1.1", | ||
1141 | + "statuses": "~1.5.0", | ||
1142 | + "type-is": "~1.6.18", | ||
1143 | + "utils-merge": "1.0.1", | ||
1144 | + "vary": "~1.1.2" | ||
1145 | + } | ||
1146 | + }, | ||
1147 | + "express-mysql-session": { | ||
1148 | + "version": "2.1.7", | ||
1149 | + "resolved": "https://registry.npmjs.org/express-mysql-session/-/express-mysql-session-2.1.7.tgz", | ||
1150 | + "integrity": "sha512-0lY8nBVo6GZdQ/Y98zsTsRnDMNJJYRh5k83rrzLf/5CKHEAJZfOnHaox1WG/W8HHTutNKMsmsiiGgL16r1PcsQ==", | ||
1151 | + "requires": { | ||
1152 | + "debug": "4.3.2", | ||
1153 | + "express-session": "1.17.2", | ||
1154 | + "mysql": "2.18.1", | ||
1155 | + "underscore": "1.13.1" | ||
1156 | + }, | ||
1157 | + "dependencies": { | ||
1158 | + "debug": { | ||
1159 | + "version": "4.3.2", | ||
1160 | + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", | ||
1161 | + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", | ||
1162 | + "requires": { | ||
1163 | + "ms": "2.1.2" | ||
1164 | + } | ||
1165 | + }, | ||
1166 | + "ms": { | ||
1167 | + "version": "2.1.2", | ||
1168 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||
1169 | + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" | ||
1170 | + } | ||
1171 | + } | ||
1172 | + }, | ||
1173 | + "express-session": { | ||
1174 | + "version": "1.17.2", | ||
1175 | + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.2.tgz", | ||
1176 | + "integrity": "sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==", | ||
1177 | + "requires": { | ||
1178 | + "cookie": "0.4.1", | ||
1179 | + "cookie-signature": "1.0.6", | ||
1180 | + "debug": "2.6.9", | ||
1181 | + "depd": "~2.0.0", | ||
1182 | + "on-headers": "~1.0.2", | ||
1183 | + "parseurl": "~1.3.3", | ||
1184 | + "safe-buffer": "5.2.1", | ||
1185 | + "uid-safe": "~2.1.5" | ||
1186 | + }, | ||
1187 | + "dependencies": { | ||
1188 | + "cookie": { | ||
1189 | + "version": "0.4.1", | ||
1190 | + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", | ||
1191 | + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" | ||
1192 | + }, | ||
1193 | + "depd": { | ||
1194 | + "version": "2.0.0", | ||
1195 | + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", | ||
1196 | + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" | ||
1197 | + }, | ||
1198 | + "safe-buffer": { | ||
1199 | + "version": "5.2.1", | ||
1200 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | ||
1201 | + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" | ||
1202 | + } | ||
1203 | + } | ||
1204 | + }, | ||
1205 | + "filelist": { | ||
1206 | + "version": "1.0.2", | ||
1207 | + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", | ||
1208 | + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", | ||
1209 | + "requires": { | ||
1210 | + "minimatch": "^3.0.4" | ||
1211 | + } | ||
1212 | + }, | ||
1213 | + "finalhandler": { | ||
1214 | + "version": "1.1.2", | ||
1215 | + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", | ||
1216 | + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", | ||
1217 | + "requires": { | ||
1218 | + "debug": "2.6.9", | ||
1219 | + "encodeurl": "~1.0.2", | ||
1220 | + "escape-html": "~1.0.3", | ||
1221 | + "on-finished": "~2.3.0", | ||
1222 | + "parseurl": "~1.3.3", | ||
1223 | + "statuses": "~1.5.0", | ||
1224 | + "unpipe": "~1.0.0" | ||
1225 | + } | ||
1226 | + }, | ||
1227 | + "follow-redirects": { | ||
1228 | + "version": "1.14.5", | ||
1229 | + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", | ||
1230 | + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==" | ||
1231 | + }, | ||
1232 | + "forwarded": { | ||
1233 | + "version": "0.2.0", | ||
1234 | + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", | ||
1235 | + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" | ||
1236 | + }, | ||
1237 | + "fresh": { | ||
1238 | + "version": "0.5.2", | ||
1239 | + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", | ||
1240 | + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" | ||
1241 | + }, | ||
1242 | + "has-flag": { | ||
1243 | + "version": "3.0.0", | ||
1244 | + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | ||
1245 | + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" | ||
1246 | + }, | ||
1247 | + "http-errors": { | ||
1248 | + "version": "1.7.2", | ||
1249 | + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", | ||
1250 | + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", | ||
1251 | + "requires": { | ||
1252 | + "depd": "~1.1.2", | ||
1253 | + "inherits": "2.0.3", | ||
1254 | + "setprototypeof": "1.1.1", | ||
1255 | + "statuses": ">= 1.5.0 < 2", | ||
1256 | + "toidentifier": "1.0.0" | ||
1257 | + } | ||
1258 | + }, | ||
1259 | + "iconv-lite": { | ||
1260 | + "version": "0.4.24", | ||
1261 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | ||
1262 | + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | ||
1263 | + "requires": { | ||
1264 | + "safer-buffer": ">= 2.1.2 < 3" | ||
1265 | + } | ||
1266 | + }, | ||
1267 | + "inherits": { | ||
1268 | + "version": "2.0.3", | ||
1269 | + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | ||
1270 | + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" | ||
1271 | + }, | ||
1272 | + "ipaddr.js": { | ||
1273 | + "version": "1.9.1", | ||
1274 | + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", | ||
1275 | + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" | ||
1276 | + }, | ||
1277 | + "isarray": { | ||
1278 | + "version": "1.0.0", | ||
1279 | + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", | ||
1280 | + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" | ||
1281 | + }, | ||
1282 | + "jake": { | ||
1283 | + "version": "10.8.2", | ||
1284 | + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", | ||
1285 | + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", | ||
1286 | + "requires": { | ||
1287 | + "async": "0.9.x", | ||
1288 | + "chalk": "^2.4.2", | ||
1289 | + "filelist": "^1.0.1", | ||
1290 | + "minimatch": "^3.0.4" | ||
1291 | + } | ||
1292 | + }, | ||
1293 | + "media-typer": { | ||
1294 | + "version": "0.3.0", | ||
1295 | + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | ||
1296 | + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" | ||
1297 | + }, | ||
1298 | + "merge-descriptors": { | ||
1299 | + "version": "1.0.1", | ||
1300 | + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", | ||
1301 | + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" | ||
1302 | + }, | ||
1303 | + "methods": { | ||
1304 | + "version": "1.1.2", | ||
1305 | + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", | ||
1306 | + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" | ||
1307 | + }, | ||
1308 | + "mime": { | ||
1309 | + "version": "1.6.0", | ||
1310 | + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", | ||
1311 | + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" | ||
1312 | + }, | ||
1313 | + "mime-db": { | ||
1314 | + "version": "1.51.0", | ||
1315 | + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", | ||
1316 | + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" | ||
1317 | + }, | ||
1318 | + "mime-types": { | ||
1319 | + "version": "2.1.34", | ||
1320 | + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", | ||
1321 | + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", | ||
1322 | + "requires": { | ||
1323 | + "mime-db": "1.51.0" | ||
1324 | + } | ||
1325 | + }, | ||
1326 | + "minimatch": { | ||
1327 | + "version": "3.0.4", | ||
1328 | + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", | ||
1329 | + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", | ||
1330 | + "requires": { | ||
1331 | + "brace-expansion": "^1.1.7" | ||
1332 | + } | ||
1333 | + }, | ||
1334 | + "ms": { | ||
1335 | + "version": "2.0.0", | ||
1336 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | ||
1337 | + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | ||
1338 | + }, | ||
1339 | + "mysql": { | ||
1340 | + "version": "2.18.1", | ||
1341 | + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", | ||
1342 | + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", | ||
1343 | + "requires": { | ||
1344 | + "bignumber.js": "9.0.0", | ||
1345 | + "readable-stream": "2.3.7", | ||
1346 | + "safe-buffer": "5.1.2", | ||
1347 | + "sqlstring": "2.3.1" | ||
1348 | + } | ||
1349 | + }, | ||
1350 | + "negotiator": { | ||
1351 | + "version": "0.6.2", | ||
1352 | + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", | ||
1353 | + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" | ||
1354 | + }, | ||
1355 | + "oauth": { | ||
1356 | + "version": "0.9.15", | ||
1357 | + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", | ||
1358 | + "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE=" | ||
1359 | + }, | ||
1360 | + "on-finished": { | ||
1361 | + "version": "2.3.0", | ||
1362 | + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", | ||
1363 | + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", | ||
1364 | + "requires": { | ||
1365 | + "ee-first": "1.1.1" | ||
1366 | + } | ||
1367 | + }, | ||
1368 | + "on-headers": { | ||
1369 | + "version": "1.0.2", | ||
1370 | + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", | ||
1371 | + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" | ||
1372 | + }, | ||
1373 | + "parseurl": { | ||
1374 | + "version": "1.3.3", | ||
1375 | + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | ||
1376 | + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" | ||
1377 | + }, | ||
1378 | + "passport": { | ||
1379 | + "version": "0.5.0", | ||
1380 | + "resolved": "https://registry.npmjs.org/passport/-/passport-0.5.0.tgz", | ||
1381 | + "integrity": "sha512-ln+ue5YaNDS+fes6O5PCzXKSseY5u8MYhX9H5Co4s+HfYI5oqvnHKoOORLYDUPh+8tHvrxugF2GFcUA1Q1Gqfg==", | ||
1382 | + "requires": { | ||
1383 | + "passport-strategy": "1.x.x", | ||
1384 | + "pause": "0.0.1" | ||
1385 | + } | ||
1386 | + }, | ||
1387 | + "passport-kakao": { | ||
1388 | + "version": "1.0.1", | ||
1389 | + "resolved": "https://registry.npmjs.org/passport-kakao/-/passport-kakao-1.0.1.tgz", | ||
1390 | + "integrity": "sha512-uItaYRVrTHL6iGPMnMZvPa/O1GrAdh/V6EMjOHcFlQcVroZ9wgG7BZ5PonMNJCxfHQ3L2QVNRnzhKWUzSsumbw==", | ||
1391 | + "requires": { | ||
1392 | + "passport-oauth2": "~1.1.2", | ||
1393 | + "pkginfo": "~0.3.0" | ||
1394 | + } | ||
1395 | + }, | ||
1396 | + "passport-oauth2": { | ||
1397 | + "version": "1.1.2", | ||
1398 | + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.1.2.tgz", | ||
1399 | + "integrity": "sha1-vXFjsbYJA3GGjcTvb58uHkzEuUg=", | ||
1400 | + "requires": { | ||
1401 | + "oauth": "0.9.x", | ||
1402 | + "passport-strategy": "1.x.x", | ||
1403 | + "uid2": "0.0.x" | ||
1404 | + } | ||
1405 | + }, | ||
1406 | + "passport-strategy": { | ||
1407 | + "version": "1.0.0", | ||
1408 | + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", | ||
1409 | + "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" | ||
1410 | + }, | ||
1411 | + "path-to-regexp": { | ||
1412 | + "version": "0.1.7", | ||
1413 | + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", | ||
1414 | + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" | ||
1415 | + }, | ||
1416 | + "pause": { | ||
1417 | + "version": "0.0.1", | ||
1418 | + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", | ||
1419 | + "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" | ||
1420 | + }, | ||
1421 | + "pkginfo": { | ||
1422 | + "version": "0.3.1", | ||
1423 | + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", | ||
1424 | + "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" | ||
1425 | + }, | ||
1426 | + "process-nextick-args": { | ||
1427 | + "version": "2.0.1", | ||
1428 | + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", | ||
1429 | + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" | ||
1430 | + }, | ||
1431 | + "proxy-addr": { | ||
1432 | + "version": "2.0.7", | ||
1433 | + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", | ||
1434 | + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", | ||
1435 | + "requires": { | ||
1436 | + "forwarded": "0.2.0", | ||
1437 | + "ipaddr.js": "1.9.1" | ||
1438 | + } | ||
1439 | + }, | ||
1440 | + "qs": { | ||
1441 | + "version": "6.7.0", | ||
1442 | + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", | ||
1443 | + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" | ||
1444 | + }, | ||
1445 | + "random-bytes": { | ||
1446 | + "version": "1.0.0", | ||
1447 | + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", | ||
1448 | + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" | ||
1449 | + }, | ||
1450 | + "range-parser": { | ||
1451 | + "version": "1.2.1", | ||
1452 | + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", | ||
1453 | + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" | ||
1454 | + }, | ||
1455 | + "raw-body": { | ||
1456 | + "version": "2.4.0", | ||
1457 | + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", | ||
1458 | + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", | ||
1459 | + "requires": { | ||
1460 | + "bytes": "3.1.0", | ||
1461 | + "http-errors": "1.7.2", | ||
1462 | + "iconv-lite": "0.4.24", | ||
1463 | + "unpipe": "1.0.0" | ||
1464 | + } | ||
1465 | + }, | ||
1466 | + "readable-stream": { | ||
1467 | + "version": "2.3.7", | ||
1468 | + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", | ||
1469 | + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", | ||
1470 | + "requires": { | ||
1471 | + "core-util-is": "~1.0.0", | ||
1472 | + "inherits": "~2.0.3", | ||
1473 | + "isarray": "~1.0.0", | ||
1474 | + "process-nextick-args": "~2.0.0", | ||
1475 | + "safe-buffer": "~5.1.1", | ||
1476 | + "string_decoder": "~1.1.1", | ||
1477 | + "util-deprecate": "~1.0.1" | ||
1478 | + } | ||
1479 | + }, | ||
1480 | + "safe-buffer": { | ||
1481 | + "version": "5.1.2", | ||
1482 | + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", | ||
1483 | + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" | ||
1484 | + }, | ||
1485 | + "safer-buffer": { | ||
1486 | + "version": "2.1.2", | ||
1487 | + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", | ||
1488 | + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" | ||
1489 | + }, | ||
1490 | + "send": { | ||
1491 | + "version": "0.17.1", | ||
1492 | + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", | ||
1493 | + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", | ||
1494 | + "requires": { | ||
1495 | + "debug": "2.6.9", | ||
1496 | + "depd": "~1.1.2", | ||
1497 | + "destroy": "~1.0.4", | ||
1498 | + "encodeurl": "~1.0.2", | ||
1499 | + "escape-html": "~1.0.3", | ||
1500 | + "etag": "~1.8.1", | ||
1501 | + "fresh": "0.5.2", | ||
1502 | + "http-errors": "~1.7.2", | ||
1503 | + "mime": "1.6.0", | ||
1504 | + "ms": "2.1.1", | ||
1505 | + "on-finished": "~2.3.0", | ||
1506 | + "range-parser": "~1.2.1", | ||
1507 | + "statuses": "~1.5.0" | ||
1508 | + }, | ||
1509 | + "dependencies": { | ||
1510 | + "ms": { | ||
1511 | + "version": "2.1.1", | ||
1512 | + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", | ||
1513 | + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" | ||
1514 | + } | ||
1515 | + } | ||
1516 | + }, | ||
1517 | + "serve-static": { | ||
1518 | + "version": "1.14.1", | ||
1519 | + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", | ||
1520 | + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", | ||
1521 | + "requires": { | ||
1522 | + "encodeurl": "~1.0.2", | ||
1523 | + "escape-html": "~1.0.3", | ||
1524 | + "parseurl": "~1.3.3", | ||
1525 | + "send": "0.17.1" | ||
1526 | + } | ||
1527 | + }, | ||
1528 | + "setprototypeof": { | ||
1529 | + "version": "1.1.1", | ||
1530 | + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", | ||
1531 | + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" | ||
1532 | + }, | ||
1533 | + "sqlstring": { | ||
1534 | + "version": "2.3.1", | ||
1535 | + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", | ||
1536 | + "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=" | ||
1537 | + }, | ||
1538 | + "statuses": { | ||
1539 | + "version": "1.5.0", | ||
1540 | + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", | ||
1541 | + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" | ||
1542 | + }, | ||
1543 | + "string_decoder": { | ||
1544 | + "version": "1.1.1", | ||
1545 | + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", | ||
1546 | + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", | ||
1547 | + "requires": { | ||
1548 | + "safe-buffer": "~5.1.0" | ||
1549 | + } | ||
1550 | + }, | ||
1551 | + "supports-color": { | ||
1552 | + "version": "5.5.0", | ||
1553 | + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", | ||
1554 | + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", | ||
1555 | + "requires": { | ||
1556 | + "has-flag": "^3.0.0" | ||
1557 | + } | ||
1558 | + }, | ||
1559 | + "toidentifier": { | ||
1560 | + "version": "1.0.0", | ||
1561 | + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", | ||
1562 | + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" | ||
1563 | + }, | ||
1564 | + "type-is": { | ||
1565 | + "version": "1.6.18", | ||
1566 | + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||
1567 | + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", | ||
1568 | + "requires": { | ||
1569 | + "media-typer": "0.3.0", | ||
1570 | + "mime-types": "~2.1.24" | ||
1571 | + } | ||
1572 | + }, | ||
1573 | + "uid-safe": { | ||
1574 | + "version": "2.1.5", | ||
1575 | + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", | ||
1576 | + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", | ||
1577 | + "requires": { | ||
1578 | + "random-bytes": "~1.0.0" | ||
1579 | + } | ||
1580 | + }, | ||
1581 | + "uid2": { | ||
1582 | + "version": "0.0.4", | ||
1583 | + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz", | ||
1584 | + "integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==" | ||
1585 | + }, | ||
1586 | + "underscore": { | ||
1587 | + "version": "1.13.1", | ||
1588 | + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", | ||
1589 | + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==" | ||
1590 | + }, | ||
1591 | + "unpipe": { | ||
1592 | + "version": "1.0.0", | ||
1593 | + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | ||
1594 | + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" | ||
1595 | + }, | ||
1596 | + "util-deprecate": { | ||
1597 | + "version": "1.0.2", | ||
1598 | + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", | ||
1599 | + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" | ||
1600 | + }, | ||
1601 | + "utils-merge": { | ||
1602 | + "version": "1.0.1", | ||
1603 | + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | ||
1604 | + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" | ||
1605 | + }, | ||
1606 | + "vary": { | ||
1607 | + "version": "1.1.2", | ||
1608 | + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | ||
1609 | + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" | ||
1610 | + } | ||
1611 | + } | ||
1612 | +} |
healthassistant/package.json
0 → 100644
1 | +{ | ||
2 | + "name": "abcd", | ||
3 | + "version": "1.0.0", | ||
4 | + "description": "", | ||
5 | + "main": "app.js", | ||
6 | + "scripts": { | ||
7 | + "test": "echo \"Error: no test specified\" && exit 1" | ||
8 | + }, | ||
9 | + "keywords": [], | ||
10 | + "author": "", | ||
11 | + "license": "ISC", | ||
12 | + "dependencies": { | ||
13 | + "axios": "^0.24.0", | ||
14 | + "body-parser": "^1.19.0", | ||
15 | + "ejs": "^3.1.6", | ||
16 | + "express": "^4.17.1", | ||
17 | + "express-mysql-session": "^2.1.7", | ||
18 | + "express-session": "^1.17.2", | ||
19 | + "mysql": "^2.18.1", | ||
20 | + "passport": "^0.5.0", | ||
21 | + "passport-kakao": "^1.0.1" | ||
22 | + } | ||
23 | +} |

360 KB

325 KB

9.64 KB
File mode changed
This diff could not be displayed because it is too large.
healthassistant/routes/daySelect.js
0 → 100644
1 | +const express = require("express"); | ||
2 | +const router = express.Router(); | ||
3 | +const mysql = require("mysql"); | ||
4 | + | ||
5 | +router.use(express.urlencoded({ extended: false })); | ||
6 | + | ||
7 | +const conn = { | ||
8 | + host: "localhost", | ||
9 | + port: "3306", | ||
10 | + user: "root", | ||
11 | + password: "@Binocchio66", | ||
12 | + database: "healthassistant", | ||
13 | +}; | ||
14 | + | ||
15 | +let testQuery; | ||
16 | + | ||
17 | +const connection = mysql.createConnection(conn); // DB 커넥션 생성 | ||
18 | +connection.connect(); // DB접속 | ||
19 | + | ||
20 | +router.get("/", (req, res, next) => { | ||
21 | + testQuery = `SELECT * FROM userHealth WHERE username ="${req.user.nickname}"`; | ||
22 | + connection.query(testQuery, (err, results, fields) => { | ||
23 | + if (!err) { | ||
24 | + let myArr_mon = new Array(); | ||
25 | + let myArr_tue = new Array(); | ||
26 | + let myArr_wed = new Array(); | ||
27 | + let myArr_thu = new Array(); | ||
28 | + let myArr_fri = new Array(); | ||
29 | + let myArr_sat = new Array(); | ||
30 | + let myArr_sun = new Array(); | ||
31 | + for (let i = 0; i < results.length; i++) { | ||
32 | + if (results[i].day == "월") { | ||
33 | + myArr_mon.push(results[i]); | ||
34 | + } | ||
35 | + } | ||
36 | + for (let i = 0; i < results.length; i++) { | ||
37 | + if (results[i].day == "화") { | ||
38 | + myArr_tue.push(results[i]); | ||
39 | + } | ||
40 | + } | ||
41 | + for (let i = 0; i < results.length; i++) { | ||
42 | + if (results[i].day == "수") { | ||
43 | + myArr_wed.push(results[i]); | ||
44 | + } | ||
45 | + } | ||
46 | + for (let i = 0; i < results.length; i++) { | ||
47 | + if (results[i].day == "목") { | ||
48 | + myArr_thu.push(results[i]); | ||
49 | + } | ||
50 | + } | ||
51 | + for (let i = 0; i < results.length; i++) { | ||
52 | + if (results[i].day == "금") { | ||
53 | + myArr_fri.push(results[i]); | ||
54 | + } | ||
55 | + } | ||
56 | + for (let i = 0; i < results.length; i++) { | ||
57 | + if (results[i].day == "토") { | ||
58 | + myArr_sat.push(results[i]); | ||
59 | + } | ||
60 | + } | ||
61 | + for (let i = 0; i < results.length; i++) { | ||
62 | + if (results[i].day == "일") { | ||
63 | + myArr_sun.push(results[i]); | ||
64 | + } | ||
65 | + } | ||
66 | + res.render("daySelect", { | ||
67 | + arr_mon: myArr_mon, | ||
68 | + arr_tue: myArr_tue, | ||
69 | + arr_wed: myArr_wed, | ||
70 | + arr_thu: myArr_thu, | ||
71 | + arr_fri: myArr_fri, | ||
72 | + arr_sat: myArr_sat, | ||
73 | + arr_sun: myArr_sun, | ||
74 | + }); | ||
75 | + } else { | ||
76 | + console.log(err); | ||
77 | + } | ||
78 | + }); | ||
79 | +}); | ||
80 | + | ||
81 | + | ||
82 | +module.exports = router; |
healthassistant/routes/index.js
0 → 100644
1 | +const express = require("express"); | ||
2 | +const router = express.Router(); | ||
3 | +const passport = require("passport"); | ||
4 | +const axios = require("axios"); | ||
5 | +const KakaoStrategy = require("passport-kakao").Strategy; | ||
6 | +const session = require("express-session"); | ||
7 | +const mysql = require("mysql"); | ||
8 | + | ||
9 | +passport.serializeUser(function (user, done) { | ||
10 | + // console.log("serialized"); | ||
11 | + done(null, user); | ||
12 | +}); | ||
13 | +passport.deserializeUser(function (user, done) { | ||
14 | + // console.log("deserialized"); | ||
15 | + done(null, user); | ||
16 | +}); | ||
17 | + | ||
18 | +router.use(session({ secret: "anything" })); | ||
19 | +router.use(passport.initialize()); | ||
20 | +router.use(passport.session()); | ||
21 | + | ||
22 | +passport.use( | ||
23 | + "kakao-login", | ||
24 | + new KakaoStrategy( | ||
25 | + { | ||
26 | + clientID: "359a37c3d9b0bec98aab1f2882447b24", | ||
27 | + callbackURL: "/auth/kakao/callback", | ||
28 | + clientSecret: "XvRp0bV6dZ8aj9f7ApYCT0ZoeDEL9cGi", | ||
29 | + }, | ||
30 | + async (accessToken, refreshToken, profile, done) => { | ||
31 | + console.log(accessToken); | ||
32 | + console.log(profile); | ||
33 | + return done(null, { | ||
34 | + //req.user가 되는 부분 | ||
35 | + user_id: profile._json.id, | ||
36 | + nickname: profile._json.properties.nickname, | ||
37 | + }); | ||
38 | + } | ||
39 | + ) | ||
40 | +); | ||
41 | +router.get("/", (req, res) => { | ||
42 | + res.render("index", { | ||
43 | + title: "안녕하세요", | ||
44 | + }); | ||
45 | +}); | ||
46 | + | ||
47 | +router.get("/auth/kakao", passport.authenticate("kakao-login")); | ||
48 | + | ||
49 | +router.get( | ||
50 | + "/auth/kakao/callback", | ||
51 | + passport.authenticate("kakao-login", { | ||
52 | + failureRedirect: "/failure", | ||
53 | + }), | ||
54 | + (req, res) => { | ||
55 | + res.redirect("/user"); | ||
56 | + } | ||
57 | +); | ||
58 | + | ||
59 | +router.get("/auth/logout/kakao", function (req, res) { | ||
60 | + req.logout(); | ||
61 | + res.redirect("/"); | ||
62 | +}); | ||
63 | + | ||
64 | +module.exports = router; |
healthassistant/routes/myHealth.js
0 → 100644
1 | +const express = require("express"); | ||
2 | +const router = express.Router(); | ||
3 | +const mysql = require("mysql"); | ||
4 | + | ||
5 | +router.use(express.urlencoded({ extended: false })); | ||
6 | + | ||
7 | +const conn = { | ||
8 | + host: "localhost", | ||
9 | + port: "3306", | ||
10 | + user: "root", | ||
11 | + password: "@Binocchio66", | ||
12 | + database: "healthassistant", | ||
13 | +}; | ||
14 | + | ||
15 | +let testQuery; | ||
16 | + | ||
17 | +const connection = mysql.createConnection(conn); // DB 커넥션 생성 | ||
18 | +connection.connect(); // DB접속 | ||
19 | + | ||
20 | +router.get("/", (req, res) => { | ||
21 | + testQuery = `SELECT * FROM userHealth WHERE username = "${req.user.nickname}"`; | ||
22 | + connection.query(testQuery, (err, results, field) => { | ||
23 | + if (err) { | ||
24 | + console.log(err); | ||
25 | + } else { | ||
26 | + console.log(results); | ||
27 | + res.render("myHealth", { | ||
28 | + arr1: results, | ||
29 | + }); | ||
30 | + } | ||
31 | + }); | ||
32 | +}); | ||
33 | + | ||
34 | +module.exports = router; |
healthassistant/routes/otherUser.js
0 → 100644
1 | +const express = require("express"); | ||
2 | +const router = express.Router(); | ||
3 | +const mysql = require("mysql"); | ||
4 | + | ||
5 | +router.use(express.urlencoded({ extended: false })); | ||
6 | + | ||
7 | +const conn = { | ||
8 | + host: "localhost", | ||
9 | + port: "3306", | ||
10 | + user: "root", | ||
11 | + password: "@Binocchio66", | ||
12 | + database: "healthassistant", | ||
13 | +}; | ||
14 | + | ||
15 | +let testQuery; | ||
16 | + | ||
17 | +const connection = mysql.createConnection(conn); // DB 커넥션 생성 | ||
18 | +connection.connect(); // DB접속 | ||
19 | + | ||
20 | +router.get("/", (req, res) => { | ||
21 | + testQuery = `SELECT * FROM user_info WHERE username="${req.user.nickname}"`; | ||
22 | + connection.query(testQuery, (err, results, fields) => { | ||
23 | + if (!err) { | ||
24 | + const userHeight = results[0].userHeight; | ||
25 | + const userWeight = results[0].userWeight; | ||
26 | + testQuery = `SELECT * FROM user_info WHERE userWeight <= (${userWeight} + 5) and userWeight >= (${userWeight} -5 ) and userHeight <= (${userHeight} +5) and userHeight >= (${userHeight} -5) and username != "${req.user.nickname}" `; | ||
27 | + connection.query(testQuery, (err, results, fields) => { | ||
28 | + if (err) { | ||
29 | + console.log(err); | ||
30 | + } else { | ||
31 | + res.render("otherUser", { | ||
32 | + userlist: results, | ||
33 | + }); | ||
34 | + } | ||
35 | + }); | ||
36 | + } | ||
37 | + }); | ||
38 | +}); | ||
39 | + | ||
40 | +router.get("/show/:username", (req, res) => { | ||
41 | + const username = req.params.username; | ||
42 | + testQuery = `SELECT * FROM userHealth WHERE username = "${username}"`; | ||
43 | + connection.query(testQuery, (err, results, field) => { | ||
44 | + if (err) { | ||
45 | + console.log(err); | ||
46 | + } else { | ||
47 | + res.render("otherHealth", { | ||
48 | + arr1: results, | ||
49 | + username: username, | ||
50 | + }); | ||
51 | + } | ||
52 | + }); | ||
53 | +}); | ||
54 | + | ||
55 | +module.exports = router; |
healthassistant/routes/setup.js
0 → 100644
1 | +const express = require("express"); | ||
2 | +const router = express.Router(); | ||
3 | +const mysql = require("mysql"); | ||
4 | +const test = require("../js/examples"); | ||
5 | + | ||
6 | +const conn = { | ||
7 | + host: "localhost", | ||
8 | + port: "3306", | ||
9 | + user: "root", | ||
10 | + password: "@Binocchio66", | ||
11 | + database: "healthassistant", | ||
12 | +}; | ||
13 | + | ||
14 | +let day, day_eng; | ||
15 | +let myArr, myArr2; | ||
16 | +let cnt = 0; | ||
17 | + | ||
18 | +const connection = mysql.createConnection(conn); // DB 커넥션 생성 | ||
19 | +connection.connect(); // DB접속 | ||
20 | + | ||
21 | +router.use(express.urlencoded({ extended: false })); | ||
22 | + | ||
23 | +router.get("/", (req, res, next) => { | ||
24 | + res.render("setup"); | ||
25 | +}); | ||
26 | + | ||
27 | +router.post("/", (req, res, next) => { | ||
28 | + let testQuery = `INSERT INTO userHealth (username, day, way, part, setNumber, number, breakTime, Id) VALUES ("${req.user.nickname}", "${req.body.day}","${req.body.way}","${req.body.part}","${req.body.setNumber}","${req.body.number}","${req.body.breakTime}","${cnt}")`; | ||
29 | + cnt++; | ||
30 | + connection.query(testQuery, (err, results, fields) => { | ||
31 | + //results에 배열로 db값이 저장됨. | ||
32 | + if (err) { | ||
33 | + console.log(err); | ||
34 | + } | ||
35 | + }); | ||
36 | + res.redirect("/daySelect"); | ||
37 | +}); | ||
38 | + | ||
39 | +router.get("/Monday", (req, res, next) => { | ||
40 | + let testQuery = `SELECT * FROM userHealth WHERE username = "${req.user.nickname}"`; | ||
41 | + connection.query(testQuery, (err, results, fields) => { | ||
42 | + if (!err) { | ||
43 | + day = "월"; | ||
44 | + day_eng = "Monday"; | ||
45 | + myArr = new Array(); | ||
46 | + myArr2 = new Array(); | ||
47 | + for (let i = 0; i < results.length; i++) { | ||
48 | + if (results[i].day == "월") { | ||
49 | + myArr2.push(results[i]); | ||
50 | + } | ||
51 | + } | ||
52 | + for (let i = 0; i < results.length; i++) { | ||
53 | + myArr.push(results[i].day); | ||
54 | + } | ||
55 | + if (myArr.findIndex((e) => e === "월") !== -1) { | ||
56 | + console.log("월요일 루틴이 있습니다."); | ||
57 | + res.render("startHealth", { | ||
58 | + day: "월", | ||
59 | + arr1: myArr2, | ||
60 | + }); | ||
61 | + } else { | ||
62 | + console.log("월요일 루틴이 없습니다."); | ||
63 | + res.render("setup"); | ||
64 | + } | ||
65 | + } else { | ||
66 | + console.log(err); | ||
67 | + } | ||
68 | + }); | ||
69 | +}); | ||
70 | + | ||
71 | +router.get("/Tuesday", (req, res, next) => { | ||
72 | + let testQuery = `SELECT * FROM userHealth WHERE username = "${req.user.nickname}"`; | ||
73 | + connection.query(testQuery, (err, results, fields) => { | ||
74 | + if (!err) { | ||
75 | + day = "화"; | ||
76 | + day_eng = "Tuesday"; | ||
77 | + myArr = new Array(); | ||
78 | + myArr2 = new Array(); | ||
79 | + for (let i = 0; i < results.length; i++) { | ||
80 | + if (results[i].day == "화") { | ||
81 | + myArr2.push(results[i]); | ||
82 | + } | ||
83 | + } | ||
84 | + for (let i = 0; i < results.length; i++) { | ||
85 | + myArr.push(results[i].day); | ||
86 | + } | ||
87 | + if (myArr.findIndex((e) => e === "화") !== -1) { | ||
88 | + console.log("화요일 루틴이 있습니다."); | ||
89 | + res.render("startHealth", { | ||
90 | + day: "화", | ||
91 | + arr1: myArr2, | ||
92 | + }); | ||
93 | + } else { | ||
94 | + console.log("화요일 루틴이 없습니다."); | ||
95 | + res.render("setup"); | ||
96 | + } | ||
97 | + } else { | ||
98 | + console.log(err); | ||
99 | + } | ||
100 | + }); | ||
101 | +}); | ||
102 | + | ||
103 | +router.get("/Wednesday", (req, res, next) => { | ||
104 | + let testQuery = `SELECT * FROM userHealth WHERE username = "${req.user.nickname}"`; | ||
105 | + connection.query(testQuery, (err, results, fields) => { | ||
106 | + if (!err) { | ||
107 | + day = "수"; | ||
108 | + day_eng = "Wednesday"; | ||
109 | + myArr = new Array(); | ||
110 | + myArr2 = new Array(); | ||
111 | + for (let i = 0; i < results.length; i++) { | ||
112 | + if (results[i].day == "수") { | ||
113 | + myArr2.push(results[i]); | ||
114 | + } | ||
115 | + } | ||
116 | + for (let i = 0; i < results.length; i++) { | ||
117 | + myArr.push(results[i].day); | ||
118 | + } | ||
119 | + if (myArr.findIndex((e) => e === "수") !== -1) { | ||
120 | + console.log("수요일 루틴이 있습니다."); | ||
121 | + res.render("startHealth", { | ||
122 | + day: "수", | ||
123 | + arr1: myArr2, | ||
124 | + }); | ||
125 | + } else { | ||
126 | + console.log("수요일 루틴이 없습니다."); | ||
127 | + res.render("setup"); | ||
128 | + } | ||
129 | + } else { | ||
130 | + console.log(err); | ||
131 | + } | ||
132 | + }); | ||
133 | +}); | ||
134 | + | ||
135 | +router.get("/Thursday", (req, res, next) => { | ||
136 | + let testQuery = `SELECT * FROM userHealth WHERE username = "${req.user.nickname}"`; | ||
137 | + connection.query(testQuery, (err, results, fields) => { | ||
138 | + if (!err) { | ||
139 | + day = "목"; | ||
140 | + day_eng = "Thursday"; | ||
141 | + myArr = new Array(); | ||
142 | + myArr2 = new Array(); | ||
143 | + for (let i = 0; i < results.length; i++) { | ||
144 | + if (results[i].day == "목") { | ||
145 | + myArr2.push(results[i]); | ||
146 | + } | ||
147 | + } | ||
148 | + for (let i = 0; i < results.length; i++) { | ||
149 | + myArr.push(results[i].day); | ||
150 | + } | ||
151 | + if (myArr.findIndex((e) => e === "목") !== -1) { | ||
152 | + console.log("목요일 루틴이 있습니다."); | ||
153 | + res.render("startHealth", { | ||
154 | + day: "목", | ||
155 | + arr1: myArr2, | ||
156 | + }); | ||
157 | + } else { | ||
158 | + console.log("목요일 루틴이 없습니다."); | ||
159 | + res.render("setup"); | ||
160 | + } | ||
161 | + } else { | ||
162 | + console.log(err); | ||
163 | + } | ||
164 | + }); | ||
165 | +}); | ||
166 | + | ||
167 | +router.get("/Friday", (req, res, next) => { | ||
168 | + let testQuery = `SELECT * FROM userHealth WHERE username = "${req.user.nickname}"`; | ||
169 | + connection.query(testQuery, (err, results, fields) => { | ||
170 | + if (!err) { | ||
171 | + day = "금"; | ||
172 | + day_eng = "Friday"; | ||
173 | + myArr = new Array(); | ||
174 | + myArr2 = new Array(); | ||
175 | + for (let i = 0; i < results.length; i++) { | ||
176 | + if (results[i].day == "금") { | ||
177 | + myArr2.push(results[i]); | ||
178 | + } | ||
179 | + } | ||
180 | + for (let i = 0; i < results.length; i++) { | ||
181 | + myArr.push(results[i].day); | ||
182 | + } | ||
183 | + if (myArr.findIndex((e) => e === "금") !== -1) { | ||
184 | + console.log("금요일 루틴이 있습니다."); | ||
185 | + res.render("startHealth", { | ||
186 | + day: "금", | ||
187 | + arr1: myArr2, | ||
188 | + }); | ||
189 | + } else { | ||
190 | + console.log("금요일 루틴이 없습니다."); | ||
191 | + res.render("setup"); | ||
192 | + } | ||
193 | + } else { | ||
194 | + console.log(err); | ||
195 | + } | ||
196 | + }); | ||
197 | +}); | ||
198 | + | ||
199 | +router.get("/Saturday", (req, res, next) => { | ||
200 | + let testQuery = `SELECT * FROM userHealth WHERE username = "${req.user.nickname}"`; | ||
201 | + connection.query(testQuery, (err, results, fields) => { | ||
202 | + if (!err) { | ||
203 | + day = "토"; | ||
204 | + day_eng = "Saturday"; | ||
205 | + myArr = new Array(); | ||
206 | + myArr2 = new Array(); | ||
207 | + for (let i = 0; i < results.length; i++) { | ||
208 | + if (results[i].day == "토") { | ||
209 | + myArr2.push(results[i]); | ||
210 | + } | ||
211 | + } | ||
212 | + for (let i = 0; i < results.length; i++) { | ||
213 | + myArr.push(results[i].day); | ||
214 | + } | ||
215 | + if (myArr.findIndex((e) => e === "토") !== -1) { | ||
216 | + console.log("토요일 루틴이 있습니다."); | ||
217 | + res.render("startHealth", { | ||
218 | + day: "토", | ||
219 | + arr1: myArr2, | ||
220 | + }); | ||
221 | + } else { | ||
222 | + console.log("토요일 루틴이 없습니다."); | ||
223 | + res.render("setup"); | ||
224 | + } | ||
225 | + } else { | ||
226 | + console.log(err); | ||
227 | + } | ||
228 | + }); | ||
229 | +}); | ||
230 | + | ||
231 | +router.get("/Sunday", (req, res, next) => { | ||
232 | + let testQuery = `SELECT * FROM userHealth WHERE username = "${req.user.nickname}"`; | ||
233 | + connection.query(testQuery, (err, results, fields) => { | ||
234 | + if (!err) { | ||
235 | + day = "일"; | ||
236 | + day_eng = "Sunday"; | ||
237 | + myArr = new Array(); | ||
238 | + myArr2 = new Array(); | ||
239 | + for (let i = 0; i < results.length; i++) { | ||
240 | + if (results[i].day == "일") { | ||
241 | + myArr2.push(results[i]); | ||
242 | + } | ||
243 | + } | ||
244 | + for (let i = 0; i < results.length; i++) { | ||
245 | + myArr.push(results[i].day); | ||
246 | + } | ||
247 | + if (myArr.findIndex((e) => e === "일") !== -1) { | ||
248 | + console.log("일요일 루틴이 있습니다."); | ||
249 | + res.render("startHealth", { | ||
250 | + day: "일", | ||
251 | + arr1: myArr2, | ||
252 | + }); | ||
253 | + } else { | ||
254 | + console.log("일요일 루틴이 없습니다."); | ||
255 | + res.render("setup"); | ||
256 | + } | ||
257 | + } else { | ||
258 | + console.log(err); | ||
259 | + } | ||
260 | + }); | ||
261 | +}); | ||
262 | + | ||
263 | +router.get("/remove/:Id", (req, res, next) => { | ||
264 | + let testQuery = `SELECT * FROM userHealth WHERE username = "${req.user.nickname}"`; | ||
265 | + const Id = req.params.Id; | ||
266 | + connection.query(testQuery, (err, results, fields) => { | ||
267 | + if (!err) { | ||
268 | + myArr = new Array(); | ||
269 | + for (let i = 0; i < results.length; i++) { | ||
270 | + if (results[i].day == day) { | ||
271 | + myArr.push(results[i]); | ||
272 | + } | ||
273 | + } | ||
274 | + testQuery = `DELETE FROM userHealth WHERE id = ${Id}`; | ||
275 | + connection.query(testQuery, (err, results, fields) => { | ||
276 | + if (!err) { | ||
277 | + res.send( | ||
278 | + `<script>alert("삭제 완료!"); location.href='/setup/${day_eng}';</script>` | ||
279 | + ); | ||
280 | + } else { | ||
281 | + console.log(err); | ||
282 | + } | ||
283 | + }); | ||
284 | + } else { | ||
285 | + console.log(err); | ||
286 | + } | ||
287 | + }); | ||
288 | +}); | ||
289 | + | ||
290 | +router.get("/edit/:Id", (req, res, next) => { | ||
291 | + res.render("editHealth", { | ||
292 | + day: day, | ||
293 | + arr1: myArr2, | ||
294 | + Id: req.params.Id, | ||
295 | + }); | ||
296 | +}); | ||
297 | + | ||
298 | +router.post("/edit/:Id", (req, res, next) => { | ||
299 | + const Id = req.params.Id; | ||
300 | + let testQuery = `UPDATE userHealth SET way="${req.body.way}", part="${req.body.part}", setNumber="${req.body.setNumber}", number="${req.body.number}", breakTime="${req.body.breakTime}" WHERE way = "${Id}"`; | ||
301 | + connection.query(testQuery, (err, results, field) => { | ||
302 | + if (!err) { | ||
303 | + console.log("수정완료!"); | ||
304 | + res.redirect(`/setup/${day_eng}`); | ||
305 | + } else { | ||
306 | + console.log(err); | ||
307 | + } | ||
308 | + }); | ||
309 | +}); | ||
310 | + | ||
311 | +module.exports = router; |
healthassistant/routes/user.js
0 → 100644
1 | +const express = require("express"); | ||
2 | +const router = express.Router(); | ||
3 | +const mysql = require("mysql"); | ||
4 | + | ||
5 | +const conn = { | ||
6 | + host: "localhost", | ||
7 | + port: "3306", | ||
8 | + user: "root", | ||
9 | + password: "@Binocchio66", | ||
10 | + database: "healthassistant", | ||
11 | +}; | ||
12 | + | ||
13 | +const connection = mysql.createConnection(conn); // DB 커넥션 생성 | ||
14 | +connection.connect(); // DB접속 | ||
15 | + | ||
16 | +router.use(express.urlencoded({ extended: false })); | ||
17 | + | ||
18 | +router.get("/", (req, res, next) => { | ||
19 | + console.log("로그인 성공!"); | ||
20 | + | ||
21 | + let testQuery = `SELECT * FROM user_info WHERE username="${req.user.nickname}"`; | ||
22 | + | ||
23 | + connection.query(testQuery, (err, results, fields) => { | ||
24 | + if (results.length == 0) { | ||
25 | + res.render("user", { | ||
26 | + title: "정보 입력", | ||
27 | + }); | ||
28 | + } else { | ||
29 | + console.log("정보가 있는 유저입니다."); | ||
30 | + res.redirect("/daySelect"); | ||
31 | + } | ||
32 | + }); | ||
33 | +}); | ||
34 | + | ||
35 | +router.post("/", (req, res) => { | ||
36 | + const height = req.body.height; | ||
37 | + const weight = req.body.weight; | ||
38 | + | ||
39 | + let testQuery = `INSERT INTO user_info (username, userHeight, userWeight) values ("${req.user.nickname}", ${height}, ${weight})`; | ||
40 | + // let testQuery = `INSERT INTO 'user_info' ('username', 'userHeight)`; | ||
41 | + | ||
42 | + connection.query(testQuery, (err, results, fields) => { | ||
43 | + if (err) { | ||
44 | + console.log(err); | ||
45 | + } | ||
46 | + }); | ||
47 | + res.redirect("/daySelect"); | ||
48 | + // res.redirect("/"); | ||
49 | +}); | ||
50 | + | ||
51 | +module.exports = router; |
healthassistant/views/daySelect.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="ko"> | ||
3 | + <head> | ||
4 | + <meta charset="UTF-8" /> | ||
5 | + <title>Setup</title> | ||
6 | + <link | ||
7 | + href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" | ||
8 | + rel="stylesheet" | ||
9 | + /> | ||
10 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
11 | + <!-- Font Awesome icons (free version)--> | ||
12 | + <script | ||
13 | + src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" | ||
14 | + crossorigin="anonymous" | ||
15 | + ></script> | ||
16 | + <!-- Simple line icons--> | ||
17 | + <link | ||
18 | + href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.5.5/css/simple-line-icons.min.css" | ||
19 | + rel="stylesheet" | ||
20 | + /> | ||
21 | + <!-- Google fonts--> | ||
22 | + <link | ||
23 | + href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" | ||
24 | + rel="stylesheet" | ||
25 | + type="text/css" | ||
26 | + /> | ||
27 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> | ||
28 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | ||
29 | + <link | ||
30 | + href="https://fonts.googleapis.com/css2?family=Corinthia:wght@700&family=Gowun+Dodum&family=Do+Hyeon&family=Jua&family=Anton&family=Fuzzy+Bubbles:wght@700&display=swap" | ||
31 | + rel="stylesheet" | ||
32 | + /> | ||
33 | + <link rel="stylesheet" href="/stylesheets/styles.css" /> | ||
34 | + <style> | ||
35 | + .title-fontA { | ||
36 | + font-family: 'Fuzzy Bubbles', cursive; | ||
37 | + } | ||
38 | + .title-fontB { | ||
39 | + font-family: 'Anton', sans-serif; | ||
40 | + } | ||
41 | + .day-fontA { | ||
42 | + font-family: 'Gowun Dodum', sans-serif; | ||
43 | + font-size: 35px; | ||
44 | + color: black; | ||
45 | + } | ||
46 | + </style> | ||
47 | + </head> | ||
48 | + <body> | ||
49 | + <div class="navbar navbar-expand-lg navbar-light bgtop"> | ||
50 | + <div class="container text-center mx-4 my-1"> | ||
51 | + <a class="navbar-brand title-fontA" href="/daySelect">Health Assistant</a> | ||
52 | + </div> | ||
53 | + <div class="mx-3"> | ||
54 | + <a class="otherUser title-fontB" href="/otherUser">OTHER</a> | ||
55 | + </div> | ||
56 | + <div class="mx-3"> | ||
57 | + <a class="otherUser title-fontB" href="/myHealth">MY</a> | ||
58 | + </div> | ||
59 | + <div class="mx-3"> | ||
60 | + <a class="otherUser title-fontB" href="/auth/logout/kakao">LOGOUT</a> | ||
61 | + </div> | ||
62 | + </div> | ||
63 | + <div class="container"> | ||
64 | + <div class="row row-cols-1 row-cols-md-4 g-4 mt-4"> | ||
65 | + <div class="col"> | ||
66 | + <a href="/setup/Monday"> | ||
67 | + <div class="card" style="width: 75%"> | ||
68 | + <div class="card-body"> | ||
69 | + <h5 class="card-title text-center day-fontA">월요일</h5> | ||
70 | + <p class="card-text"> | ||
71 | + | ||
72 | + <% if(arr_mon.length ==0) { %> | ||
73 | + <p>월요일 운동이 없습니다! </p> | ||
74 | + <% } else { %> | ||
75 | + <ul> | ||
76 | + <li><%= arr_mon[0].way %></li> | ||
77 | + </ul> | ||
78 | + <% } %> | ||
79 | + | ||
80 | + </p> | ||
81 | + </div> | ||
82 | + </div> | ||
83 | + </a> | ||
84 | + </div> | ||
85 | + <div class="col"> | ||
86 | + <a href="/setup/Tuesday"> | ||
87 | + <div class="card" style="width: 75%"> | ||
88 | + <div class="card-body"> | ||
89 | + <h5 class="card-title text-center day-fontA">화요일</h5> | ||
90 | + <p class="card-text"> | ||
91 | + <% if(arr_tue.length ==0) { %> | ||
92 | + <p>화요일 운동이 없습니다!</p> | ||
93 | + <% } else { %> | ||
94 | + <ul> | ||
95 | + <li><%= arr_tue[0].way %></li> | ||
96 | + </ul> | ||
97 | + <% } %> | ||
98 | + </p> | ||
99 | + </div> | ||
100 | + </div> | ||
101 | + </a> | ||
102 | + </div> | ||
103 | + <div class="col"> | ||
104 | + <a href="/setup/Wednesday"> | ||
105 | + <div class="card" style="width: 75%"> | ||
106 | + <div class="card-body"> | ||
107 | + <h5 class="card-title text-center day-fontA">수요일</h5> | ||
108 | + <p class="card-text"> | ||
109 | + <% if(arr_wed.length ==0) { %> | ||
110 | + <p>수요일 운동이 없습니다!</p> | ||
111 | + <% } else { %> | ||
112 | + <ul> | ||
113 | + <li><%= arr_wed[0].way %></li> | ||
114 | + </ul> | ||
115 | + <% } %> | ||
116 | + </ul> | ||
117 | + </p> | ||
118 | + </div> | ||
119 | + </div> | ||
120 | + </a> | ||
121 | + </div> | ||
122 | + <div class="col"> | ||
123 | + <a href="/setup/Thursday"> | ||
124 | + <div class="card" style="width: 75%"> | ||
125 | + <div class="card-body"> | ||
126 | + <h5 class="card-title text-center day-fontA">목요일</h5> | ||
127 | + <p class="card-text"> | ||
128 | + | ||
129 | + <% if(arr_thu.length ==0) { %> | ||
130 | + <p>목요일 운동이 없습니다!</p> | ||
131 | + <% } else { %> | ||
132 | + <ul> | ||
133 | + <li><%= arr_thu[0].way %></li> | ||
134 | + </ul> | ||
135 | + <% } %> | ||
136 | + | ||
137 | + </p> | ||
138 | + </div> | ||
139 | + </div> | ||
140 | + </a> | ||
141 | + </div> | ||
142 | + <div class="col"> | ||
143 | + <a href="/setup/Friday"> | ||
144 | + <div class="card mt-5" style="width: 75%"> | ||
145 | + <div class="card-body"> | ||
146 | + <h5 class="card-title text-center day-fontA">금요일</h5> | ||
147 | + <p class="card-text"> | ||
148 | + | ||
149 | + <% if(arr_fri.length ==0) { %> | ||
150 | + <p>금요일 운동이 없습니다!</p> | ||
151 | + <% } else { %> | ||
152 | + <ul> | ||
153 | + <li><%= arr_fri[0].way %></li> | ||
154 | + </ul> | ||
155 | + <% } %> | ||
156 | + | ||
157 | + </p> | ||
158 | + </div> | ||
159 | + </div> | ||
160 | + </a> | ||
161 | + </div> | ||
162 | + <div class="col"> | ||
163 | + <a href="/setup/Saturday"> | ||
164 | + <div class="card mt-5" style="width: 75%"> | ||
165 | + <div class="card-body"> | ||
166 | + <h5 class="card-title text-center day-fontA">토요일</h5> | ||
167 | + <p class="card-text"> | ||
168 | + | ||
169 | + <% if(arr_sat.length ==0) { %> | ||
170 | + <p>토요일 운동이 없습니다!</p> | ||
171 | + <% } else { %> | ||
172 | + <ul> | ||
173 | + <li><%= arr_sat[0].way %></li> | ||
174 | + </ul> | ||
175 | + <% } %> | ||
176 | + </p> | ||
177 | + </div> | ||
178 | + </div> | ||
179 | + </a> | ||
180 | + </div> | ||
181 | + <div class="col"> | ||
182 | + <a href="setup/Sunday"> | ||
183 | + <div class="card mt-5" style="width: 75%"> | ||
184 | + <div class="card-body"> | ||
185 | + <h5 class="card-title text-center day-fontA">일요일</h5> | ||
186 | + <p class="card-text"> | ||
187 | + | ||
188 | + <% if(arr_sun.length ==0) { %> | ||
189 | + <p>일요일 운동이 없습니다!</p> | ||
190 | + <% } else { %> | ||
191 | + <ul> | ||
192 | + <li><%= arr_sun[0].way %></li> | ||
193 | + </ul> | ||
194 | + <% } %> | ||
195 | + </p> | ||
196 | + </div> | ||
197 | + </div> | ||
198 | + </a> | ||
199 | + </div> | ||
200 | + </div> | ||
201 | + </div> | ||
202 | + | ||
203 | + | ||
204 | + | ||
205 | + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> | ||
206 | + <script src="/static/scripts.js"></script> | ||
207 | + </body> | ||
208 | +</html> |
healthassistant/views/editHealth.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="en"> | ||
3 | + <head> | ||
4 | + <meta charset="UTF-8" /> | ||
5 | + <title><%= day %>요일 운동 시작!</title> | ||
6 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
7 | + <!-- Font Awesome icons (free version)--> | ||
8 | + <script | ||
9 | + src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" | ||
10 | + crossorigin="anonymous" | ||
11 | + ></script> | ||
12 | + <!-- Simple line icons--> | ||
13 | + <link | ||
14 | + href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.5.5/css/simple-line-icons.min.css" | ||
15 | + rel="stylesheet" | ||
16 | + /> | ||
17 | + <!-- Google fonts--> | ||
18 | + <link | ||
19 | + href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" | ||
20 | + rel="stylesheet" | ||
21 | + type="text/css" | ||
22 | + /> | ||
23 | + <!-- Core theme CSS (includes Bootstrap)--> | ||
24 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> | ||
25 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | ||
26 | + <link | ||
27 | + href="https://fonts.googleapis.com/css2?family=Corinthia:wght@700&family=Anton&family=Jua&family=Fuzzy+Bubbles:wght@700&display=swap" | ||
28 | + rel="stylesheet" | ||
29 | + /> | ||
30 | + <link rel="stylesheet" href="/stylesheets/styles.css" /> | ||
31 | + <style> | ||
32 | + .title-fontA { | ||
33 | + font-family: 'Fuzzy Bubbles', cursive; | ||
34 | + } | ||
35 | + .title-fontB { | ||
36 | + font-family: 'Anton', sans-serif; | ||
37 | + } | ||
38 | + .day-fontB { | ||
39 | + font-family: 'Jua'; | ||
40 | + } | ||
41 | + </style> | ||
42 | + </head> | ||
43 | + | ||
44 | + <body> | ||
45 | + <div class="navbar navbar-expand-lg navbar-light bgtop"> | ||
46 | + <div class="container text-center mx-4 my-1"> | ||
47 | + <a class="navbar-brand title-fontA" href="/daySelect">Health Assistant</a> | ||
48 | + </div> | ||
49 | + <div class="mx-3"> | ||
50 | + <a class="otherUser title-fontB" href="/otherUser">OTHER</a> | ||
51 | + </div> | ||
52 | + <div class="mx-3"> | ||
53 | + <a class="otherUser title-fontB" href="/myHealth">MY</a> | ||
54 | + </div> | ||
55 | + <div class="mx-3"> | ||
56 | + <a class="otherUser title-fontB" href="/auth/logout/kakao">LOGOUT</a> | ||
57 | + </div> | ||
58 | + </div> | ||
59 | + <section class="container"> | ||
60 | + <div> | ||
61 | + <h1 class="day-fontB mt-5 text-center"><%= day%>요일 운동 수정</h1> | ||
62 | + </div> | ||
63 | + <div class="mt-5"> | ||
64 | + <table class="table text-center"> | ||
65 | + <tr> | ||
66 | + <th>운동 방법</th> | ||
67 | + <th>자극 부위</th> | ||
68 | + <th>세트</th> | ||
69 | + <th>횟수</th> | ||
70 | + <th>쉬는시간(초)</th> | ||
71 | + <th></th> | ||
72 | + <th></th> | ||
73 | + </tr> | ||
74 | + | ||
75 | + <% for(let i=0; i <arr1.length ;i++) { | ||
76 | + %> | ||
77 | + <% if(arr1[i].way == Id) { %> | ||
78 | + <tr> | ||
79 | + <form method="POST" action="" id="editForm"> | ||
80 | + <td><input class="w-40" type="text" name="way" /></td> | ||
81 | + <td><input class="w-40" type="text" name="part" /></td> | ||
82 | + <td><input class="w-40" type="text" name="setNumber" /></td> | ||
83 | + <td><input class="w-40" type="text" name="number" /></td> | ||
84 | + <td><input class="w-40" type="text" name="breakTime" /></td> | ||
85 | + <td><button class="btn" type="submit"><i class="far fa-check-circle"></i></button></td> | ||
86 | + <td></td> | ||
87 | + </form> | ||
88 | + </tr> | ||
89 | + <% } else {%> | ||
90 | + <div> | ||
91 | + <tr> | ||
92 | + <td><%= arr1[i].way %></td> | ||
93 | + <td><%= arr1[i].part %></td> | ||
94 | + <td><%= arr1[i].setNumber %></td> | ||
95 | + <td><%= arr1[i].number %></td> | ||
96 | + <td><%= arr1[i].breakTime %></td> | ||
97 | + <td></td> | ||
98 | + <td></td> | ||
99 | + </tr> | ||
100 | + </div> | ||
101 | + <% }} %> | ||
102 | + </table> | ||
103 | + </div> | ||
104 | +</section> | ||
105 | + | ||
106 | + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> | ||
107 | + <script src="/static/scripts.js"></script> | ||
108 | + </body> | ||
109 | +</html> |
healthassistant/views/index.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="ko"> | ||
3 | + <head> | ||
4 | + <meta charset="UTF-8" /> | ||
5 | + <title>Health Assistant</title> | ||
6 | + <link | ||
7 | + href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" | ||
8 | + rel="stylesheet" | ||
9 | + /> | ||
10 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
11 | + <!-- Font Awesome icons (free version)--> | ||
12 | + <script | ||
13 | + src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" | ||
14 | + crossorigin="anonymous" | ||
15 | + ></script> | ||
16 | + <!-- Simple line icons--> | ||
17 | + <link | ||
18 | + href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.5.5/css/simple-line-icons.min.css" | ||
19 | + rel="stylesheet" | ||
20 | + /> | ||
21 | + <!-- Google fonts--> | ||
22 | + <link | ||
23 | + href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" | ||
24 | + rel="stylesheet" | ||
25 | + type="text/css" | ||
26 | + /> | ||
27 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> | ||
28 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | ||
29 | + <link | ||
30 | + href="https://fonts.googleapis.com/css2?family=Corinthia:wght@700&family=Fuzzy+Bubbles:wght@700&display=swap" | ||
31 | + rel="stylesheet" | ||
32 | + /> | ||
33 | + <link rel="stylesheet" href="/stylesheets/styles.css" /> | ||
34 | + <style> | ||
35 | + .title-fontA { | ||
36 | + font-family: "Fuzzy Bubbles", cursive; | ||
37 | + } | ||
38 | + </style> | ||
39 | + </head> | ||
40 | + <body id="page-top"> | ||
41 | + <nav id="sidebar-wrapper"> | ||
42 | + <ul class="sidebar-nav"> | ||
43 | + <li class="sidebar-brand"><a href="#page-top">Health Assistant</a></li> | ||
44 | + <li class="sidebar-nav-item"><a href="#page-top">Home</a></li> | ||
45 | + <li class="sidebar-nav-item"><a href="#about">About</a></li> | ||
46 | + <li class="sidebar-nav-item"><a href="#features">Services</a></li> | ||
47 | + </ul> | ||
48 | + </nav> | ||
49 | + <div class="navbar navbar-expand-lg navbar-light fixed-top"> | ||
50 | + <a class="menu-toggle rounded" href="#"><i class="fas fa-bars"></i></a> | ||
51 | + <div class="container mx-4 my-1"> | ||
52 | + <a class="navbar-brand title-fontA" href="#page-top" | ||
53 | + >Health Assistant</a | ||
54 | + > | ||
55 | + </div> | ||
56 | + </div> | ||
57 | + | ||
58 | + <!-- Header--> | ||
59 | + <header class="masthead d-flex align-items-center"> | ||
60 | + <div class="container px-4 px-lg-5 text-center"> | ||
61 | + <h1 class="mb-1">Health Assitant</h1> | ||
62 | + <h3 class="mb-5"><em>헬스 관리 쉽게하자!</em></h3> | ||
63 | + <a class="btn btn-dark btn-xl" href="/auth/kakao">카카오로 시작하기</a> | ||
64 | + </div> | ||
65 | + </header> | ||
66 | + <section class="content-section bg-light" id="about"> | ||
67 | + <div class="container px-4 px-lg-5 text-center"> | ||
68 | + <div class="row gx-4 gx-lg-5 justify-content-center"> | ||
69 | + <div class="col-lg-4"> | ||
70 | + <h2 class="mb-3">Programmers</h2> | ||
71 | + <p class="lead mb-5">2018102224 임준표</p> | ||
72 | + </div> | ||
73 | + <div class="col-lg-4"> | ||
74 | + <h2 class="mb-3">Introduction</h2> | ||
75 | + <p class="lead mb-5"> | ||
76 | + Health Assistant is a Web based program for Daily exercisers. | ||
77 | + </p> | ||
78 | + </div> | ||
79 | + <div class="col-lg-5 mt-1"> | ||
80 | + <a class="btn btn-dark btn-xl" href="#features">Features</a> | ||
81 | + </div> | ||
82 | + </div> | ||
83 | + </div> | ||
84 | + </section> | ||
85 | + | ||
86 | + <section | ||
87 | + class="content-section bg-primary text-white text-center" | ||
88 | + id="features" | ||
89 | + > | ||
90 | + <div class="container px-4 px-lg-5"> | ||
91 | + <div class="content-section-heading"> | ||
92 | + <h3 class="text-secondary mb-0 title-fontA">Health Assistant</h3> | ||
93 | + <h2 class="mb-5">Features</h2> | ||
94 | + </div> | ||
95 | + <div class="row gx-4 gx-lg-5"> | ||
96 | + <div class="col-lg-4 col-md-6 mb-5 mb-lg-0"> | ||
97 | + <span class="service-icon rounded-circle mx-auto mb-3"> | ||
98 | + <i class="fas fa-cogs"></i> | ||
99 | + </span> | ||
100 | + <h4><strong>효율성</strong></h4> | ||
101 | + <p class="text-faded mb-0"> | ||
102 | + 요일별 부위와 운동을 정리해 <br />효율적으로 볼 수 있습니다! | ||
103 | + </p> | ||
104 | + </div> | ||
105 | + <div class="col-lg-4 col-md-0 mb-0 mb-lg-0"> | ||
106 | + <span class="service-icon rounded-circle mx-auto mb-3"> | ||
107 | + <div> | ||
108 | + <i class="fas fa-clock"></i> | ||
109 | + </div> | ||
110 | + </span> | ||
111 | + <h4><strong>시간관리</strong></h4> | ||
112 | + <p class="text-faded mb-0"> | ||
113 | + 타이머를 통해 쉬는시간을 <br />확실하게 알 수 있습니다! | ||
114 | + </p> | ||
115 | + </div> | ||
116 | + <div class="col-lg-4 col-md-0 mb-0 mb-md-0"> | ||
117 | + <span class="service-icon rounded-circle mx-auto mb-3"> | ||
118 | + <i class="far fa-user-circle"></i> | ||
119 | + </span> | ||
120 | + <h4><strong>루틴추천</strong></h4> | ||
121 | + <p class="text-faded mb-0"> | ||
122 | + 나와 비슷한 체형인 <br />다른사람의 루틴을 볼 수 있습니다! | ||
123 | + </p> | ||
124 | + </div> | ||
125 | + </div> | ||
126 | + </div> | ||
127 | + </section> | ||
128 | + | ||
129 | + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> | ||
130 | + <script src="/static/scripts.js"></script> | ||
131 | + </body> | ||
132 | +</html> | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
healthassistant/views/myHealth.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="en"> | ||
3 | + <head> | ||
4 | + <meta charset="UTF-8" /> | ||
5 | + <title>내 운동 목록</title> | ||
6 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
7 | + <!-- Font Awesome icons (free version)--> | ||
8 | + <script | ||
9 | + src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" | ||
10 | + crossorigin="anonymous" | ||
11 | + ></script> | ||
12 | + <!-- Simple line icons--> | ||
13 | + <link | ||
14 | + href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.5.5/css/simple-line-icons.min.css" | ||
15 | + rel="stylesheet" | ||
16 | + /> | ||
17 | + <!-- Google fonts--> | ||
18 | + <link | ||
19 | + href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" | ||
20 | + rel="stylesheet" | ||
21 | + type="text/css" | ||
22 | + /> | ||
23 | + <!-- Core theme CSS (includes Bootstrap)--> | ||
24 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> | ||
25 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | ||
26 | + <link | ||
27 | + href="https://fonts.googleapis.com/css2?family=Corinthia:wght@700&family=Jua&family=Anton&family=Fuzzy+Bubbles:wght@700&display=swap" | ||
28 | + rel="stylesheet" | ||
29 | + /> | ||
30 | + <link rel="stylesheet" href="/stylesheets/styles.css" /> | ||
31 | + <style> | ||
32 | + .title-fontA { | ||
33 | + font-family: 'Fuzzy Bubbles', cursive; | ||
34 | + } | ||
35 | + .title-fontB { | ||
36 | + font-family: 'Anton', sans-serif; | ||
37 | + } | ||
38 | + .day-fontB { | ||
39 | + font-family: 'Jua'; | ||
40 | + } | ||
41 | + .table-title { | ||
42 | + color: pink; | ||
43 | + font-size: 20px; | ||
44 | + } | ||
45 | + </style> | ||
46 | + | ||
47 | + </head> | ||
48 | + | ||
49 | + <body> | ||
50 | + <div class="navbar navbar-expand-lg navbar-light bgtop"> | ||
51 | + <div class="container text-center mx-4 my-1"> | ||
52 | + <a class="navbar-brand title-fontA" href="/daySelect">Health Assistant</a> | ||
53 | + </div> | ||
54 | + <div class="mx-3"> | ||
55 | + <a class="otherUser title-fontB" href="/otherUser">OTHER</a> | ||
56 | + </div> | ||
57 | + <div class="mx-3"> | ||
58 | + <a class="otherUser title-fontB" href="/myHealth">MY</a> | ||
59 | + </div> | ||
60 | + <div class="mx-3"> | ||
61 | + <a class="otherUser title-fontB" href="/auth/logout/kakao">LOGOUT</a> | ||
62 | + </div> | ||
63 | + </div> | ||
64 | + <section class="container"> | ||
65 | + <div> | ||
66 | + <h1 class="mt-5 text-center day-fontB">내 운동 목록</h1> | ||
67 | + </div> | ||
68 | + <div class="mt-5"> | ||
69 | + <table class="table text-center"> | ||
70 | + <tr class="table-title"> | ||
71 | + <th>운동 방법</th> | ||
72 | + <th>자극 부위</th> | ||
73 | + <th>세트</th> | ||
74 | + <th>횟수</th> | ||
75 | + <th>쉬는시간(초)</th> | ||
76 | + </tr> | ||
77 | + <div> | ||
78 | + <% for(let i=0; i <arr1.length ;i++) { | ||
79 | + %> | ||
80 | + <tr> | ||
81 | + <td><%= arr1[i].way %></td> | ||
82 | + <td><%= arr1[i].part %></td> | ||
83 | + <td><%= arr1[i].setNumber %></td> | ||
84 | + <td><%= arr1[i].number %></td> | ||
85 | + <td><%= arr1[i].breakTime %></td> | ||
86 | + </tr> | ||
87 | + <% } %> | ||
88 | + </div> | ||
89 | + </table> | ||
90 | + </div> | ||
91 | + <div> | ||
92 | + <button class="btn btn-lg" onclick="location.href='/setup'" style="float: right;"><i class="fas fa-plus"></i> 추가</button> | ||
93 | + </div> | ||
94 | + | ||
95 | + </section> | ||
96 | + | ||
97 | + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> | ||
98 | + </body> | ||
99 | +</html> |
healthassistant/views/otherHealth.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="en"> | ||
3 | + <head> | ||
4 | + <meta charset="UTF-8" /> | ||
5 | + <title>내 운동 목록</title> | ||
6 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
7 | + <!-- Font Awesome icons (free version)--> | ||
8 | + <script | ||
9 | + src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" | ||
10 | + crossorigin="anonymous" | ||
11 | + ></script> | ||
12 | + <!-- Simple line icons--> | ||
13 | + <link | ||
14 | + href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.5.5/css/simple-line-icons.min.css" | ||
15 | + rel="stylesheet" | ||
16 | + /> | ||
17 | + <!-- Google fonts--> | ||
18 | + <link | ||
19 | + href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" | ||
20 | + rel="stylesheet" | ||
21 | + type="text/css" | ||
22 | + /> | ||
23 | + <!-- Core theme CSS (includes Bootstrap)--> | ||
24 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> | ||
25 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | ||
26 | + <link | ||
27 | + href="https://fonts.googleapis.com/css2?family=Corinthia:wght@700&family=Jua&family=Anton&family=Fuzzy+Bubbles:wght@700&display=swap" | ||
28 | + rel="stylesheet" | ||
29 | + /> | ||
30 | + <link rel="stylesheet" href="/stylesheets/styles.css" /> | ||
31 | + <style> | ||
32 | + .title-fontA { | ||
33 | + font-family: 'Fuzzy Bubbles', cursive; | ||
34 | + } | ||
35 | + .title-fontB { | ||
36 | + font-family: 'Anton', sans-serif; | ||
37 | + } | ||
38 | + .table-title { | ||
39 | + color: pink; | ||
40 | + font-size: 20px; | ||
41 | + } | ||
42 | + .otheruser { | ||
43 | + font-family: 'Jua', sans-serif; | ||
44 | + } | ||
45 | + </style> | ||
46 | + </head> | ||
47 | + | ||
48 | + <body> | ||
49 | + <div class="navbar navbar-expand-lg navbar-light bgtop"> | ||
50 | + <div class="container text-center mx-4 my-1"> | ||
51 | + <a class="navbar-brand title-fontA" href="/daySelect">Health Assistant</a> | ||
52 | + </div> | ||
53 | + <div class="mx-3"> | ||
54 | + <a class="otherUser title-fontB" href="/otherUser">OTHER</a> | ||
55 | + </div> | ||
56 | + <div class="mx-3"> | ||
57 | + <a class="otherUser title-fontB" href="/myHealth">MY</a> | ||
58 | + </div> | ||
59 | + <div class="mx-3"> | ||
60 | + <a class="otherUser title-fontB" href="/auth/logout/kakao">LOGOUT</a> | ||
61 | + </div> | ||
62 | + </div> | ||
63 | + <section class="container"> | ||
64 | + <div> | ||
65 | + <h1 class="otheruser mt-5 text-center"><%= username[0] %>**의 운동 목록</h1> | ||
66 | + </div> | ||
67 | + <% if(arr1.length == 0) { %> | ||
68 | + <h2 class="text-center mt-5"><%= username[0] %>**님의 운동목록이 없습니다!</h2> | ||
69 | + <% } else { %> | ||
70 | + <div class="mt-5"> | ||
71 | + <table class="table text-center"> | ||
72 | + <tr class="table-title"> | ||
73 | + <th>운동 방법</th> | ||
74 | + <th>자극 부위</th> | ||
75 | + <th>세트</th> | ||
76 | + <th>횟수</th> | ||
77 | + <th>쉬는시간(초)</th> | ||
78 | + </tr> | ||
79 | + | ||
80 | + <div> | ||
81 | + | ||
82 | + <% for(let i=0; i <arr1.length ;i++) { | ||
83 | + %> | ||
84 | + <tr> | ||
85 | + <td><%= arr1[i].way %></td> | ||
86 | + <td><%= arr1[i].part %></td> | ||
87 | + <td><%= arr1[i].setNumber %></td> | ||
88 | + <td><%= arr1[i].number %></td> | ||
89 | + <td><%= arr1[i].breakTime %></td> | ||
90 | + </tr> | ||
91 | + <% } %> | ||
92 | + </div> | ||
93 | + <% } %> | ||
94 | + | ||
95 | + | ||
96 | + </table> | ||
97 | + </div> | ||
98 | + | ||
99 | + </section> | ||
100 | + | ||
101 | + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> | ||
102 | + </body> | ||
103 | +</html> |
healthassistant/views/otherUser.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="en"> | ||
3 | + <head> | ||
4 | + <meta charset="UTF-8" /> | ||
5 | + <title>Document</title> | ||
6 | + <link | ||
7 | + href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" | ||
8 | + rel="stylesheet" | ||
9 | + /> | ||
10 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
11 | + <!-- Font Awesome icons (free version)--> | ||
12 | + <script | ||
13 | + src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" | ||
14 | + crossorigin="anonymous" | ||
15 | + ></script> | ||
16 | + <!-- Simple line icons--> | ||
17 | + <link | ||
18 | + href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.5.5/css/simple-line-icons.min.css" | ||
19 | + rel="stylesheet" | ||
20 | + /> | ||
21 | + <!-- Google fonts--> | ||
22 | + <link | ||
23 | + href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" | ||
24 | + rel="stylesheet" | ||
25 | + type="text/css" | ||
26 | + /> | ||
27 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> | ||
28 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | ||
29 | + <link | ||
30 | + href="https://fonts.googleapis.com/css2?family=Corinthia:wght@700&family=Jua&family=Anton&family=Fuzzy+Bubbles:wght@700&display=swap" | ||
31 | + rel="stylesheet" | ||
32 | + /> | ||
33 | + <link rel="stylesheet" href="/stylesheets/styles.css" /> | ||
34 | + <style> | ||
35 | + .title-fontA { | ||
36 | + font-family: 'Fuzzy Bubbles', cursive; | ||
37 | + } | ||
38 | + .title-fontB { | ||
39 | + font-family: 'Anton', sans-serif; | ||
40 | + } | ||
41 | + .noneuser { | ||
42 | + font-family: 'Jua', sans-serif; | ||
43 | + } | ||
44 | + </style> | ||
45 | + </head> | ||
46 | + <body> | ||
47 | + <div class="navbar navbar-expand-lg navbar-light bgtop"> | ||
48 | + <div class="container text-center mx-4 my-1"> | ||
49 | + <a class="navbar-brand title-fontA" href="/daySelect">Health Assistant</a> | ||
50 | + </div> | ||
51 | + <div class="mx-3"> | ||
52 | + <a class="otherUser title-fontB" href="/otherUser">OTHER</a> | ||
53 | + </div> | ||
54 | + <div class="mx-3"> | ||
55 | + <a class="otherUser title-fontB" href="/myHealth">MY</a> | ||
56 | + </div> | ||
57 | + <div class="mx-3"> | ||
58 | + <a class="otherUser title-fontB" href="/auth/logout/kakao">LOGOUT</a> | ||
59 | + </div> | ||
60 | + </div> | ||
61 | + <div class="container"> | ||
62 | + <% if(userlist.length ==0) { %> | ||
63 | + <div class="mt-5 text-center noneuser"> | ||
64 | + <h1>비슷한 체형의 사용자가 없습니다!</h1> | ||
65 | + </div> | ||
66 | + <% } else { %> | ||
67 | + <div class="row row-cols-1 row-cols-md-4 g-4 mt-4"> | ||
68 | + | ||
69 | + <% for(let i =0; i <userlist.length; i++) { %> | ||
70 | + <div class="col"> | ||
71 | + <a href="/otherUser/show/<%= userlist[i].username %>"> | ||
72 | + <div class="card" style="width: 75%"> | ||
73 | + <div class="card-body"> | ||
74 | + <h5 class="card-title text-center"> | ||
75 | + <%= userlist[i].username[0] %>** | ||
76 | + </h5> | ||
77 | + <p class="card-text"></p> | ||
78 | + <p><%= userlist[i].userHeight %></p> | ||
79 | + <p><%= userlist[i].userWeight %></p> | ||
80 | + </div> | ||
81 | + </div> | ||
82 | + </a> | ||
83 | + </div> | ||
84 | + <% }} %> | ||
85 | + | ||
86 | + </div> | ||
87 | + </div> | ||
88 | + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> | ||
89 | + </body> | ||
90 | +</html> |
healthassistant/views/setup.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | + <head> | ||
4 | + <meta charset="UTF-8" /> | ||
5 | + <title>Setup</title> | ||
6 | + <link | ||
7 | + href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" | ||
8 | + rel="stylesheet" | ||
9 | + /> | ||
10 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
11 | + <!-- Font Awesome icons (free version)--> | ||
12 | + <script | ||
13 | + src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" | ||
14 | + crossorigin="anonymous" | ||
15 | + ></script> | ||
16 | + <!-- Simple line icons--> | ||
17 | + <link | ||
18 | + href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.5.5/css/simple-line-icons.min.css" | ||
19 | + rel="stylesheet" | ||
20 | + /> | ||
21 | + <!-- Google fonts--> | ||
22 | + <link | ||
23 | + href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" | ||
24 | + rel="stylesheet" | ||
25 | + type="text/css" | ||
26 | + /> | ||
27 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> | ||
28 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | ||
29 | + <link | ||
30 | + href="https://fonts.googleapis.com/css2?family=Corinthia:wght@700&family=Jua&family=Anton&family=Fuzzy+Bubbles:wght@700&display=swap" | ||
31 | + rel="stylesheet" | ||
32 | + /> | ||
33 | + <link rel="stylesheet" href="/stylesheets/styles.css" /> | ||
34 | + <style> | ||
35 | + .title-fontA { | ||
36 | + font-family: "Fuzzy Bubbles", cursive; | ||
37 | + } | ||
38 | + .title-fontB { | ||
39 | + font-family: "Anton", sans-serif; | ||
40 | + } | ||
41 | + .day-fontB { | ||
42 | + font-family: "Jua", sans-serif; | ||
43 | + } | ||
44 | + </style> | ||
45 | + <script src="/static/examples.js"></script> | ||
46 | + </head> | ||
47 | + | ||
48 | + <body id="page-top"> | ||
49 | + <div class="navbar navbar-expand-lg navbar-light bgtop"> | ||
50 | + <div class="container text-center mx-4 my-1"> | ||
51 | + <a class="navbar-brand title-fontA" href="/daySelect" | ||
52 | + >Health Assistant</a | ||
53 | + > | ||
54 | + </div> | ||
55 | + <div class="mx-3"> | ||
56 | + <a class="otherUser title-fontB" href="/otherUser">OTHER</a> | ||
57 | + </div> | ||
58 | + <div class="mx-3"> | ||
59 | + <a class="otherUser title-fontB" href="/myHealth">MY</a> | ||
60 | + </div> | ||
61 | + <div class="mx-3"> | ||
62 | + <a class="otherUser title-fontB" href="/auth/logout/kakao">LOGOUT</a> | ||
63 | + </div> | ||
64 | + </div> | ||
65 | + <section class="container"> | ||
66 | + <div> | ||
67 | + <h1 class="mt-5 text-center day-fontB">운동 추가!</h1> | ||
68 | + </div> | ||
69 | + <div class="mt-5" style="float: none; margin: 100 auto"> | ||
70 | + <form | ||
71 | + class="w-50" | ||
72 | + style="float: none; margin: 0 auto" | ||
73 | + method="POST" | ||
74 | + action="/setup" | ||
75 | + > | ||
76 | + <div class="mb-3 row"> | ||
77 | + <label for="staticEmail" class="col-sm-2 col-form-label" | ||
78 | + >요일</label | ||
79 | + > | ||
80 | + <div class="col-sm-10"> | ||
81 | + <select class="form-select" name="day"> | ||
82 | + <option>선택해주세요</option> | ||
83 | + <option value="월">월</option> | ||
84 | + <option value="화">화</option> | ||
85 | + <option value="수">수</option> | ||
86 | + <option value="목">목</option> | ||
87 | + <option value="금">금</option> | ||
88 | + <option value="토">토</option> | ||
89 | + <option value="일">일</option> | ||
90 | + </select> | ||
91 | + </div> | ||
92 | + </div> | ||
93 | + | ||
94 | + <div class="mb-4 row"> | ||
95 | + <label for="staticEmail" class="col-sm-2 col-form-label"> | ||
96 | + 운동 부위 | ||
97 | + </label> | ||
98 | + <div class="col-sm-10"> | ||
99 | + <select | ||
100 | + class="form-select" | ||
101 | + name="part" | ||
102 | + id="part" | ||
103 | + onchange="addressKindChange(this)" | ||
104 | + > | ||
105 | + <option>선택해주세요</option> | ||
106 | + <option value="어깨">어깨</option> | ||
107 | + <option value="하체">하체</option> | ||
108 | + <option value="이삼두">이두 삼두</option> | ||
109 | + <option value="코어">코어</option> | ||
110 | + <option value="유산소">유산소</option> | ||
111 | + <option value="등">등</option> | ||
112 | + <option value="가슴">가슴</option> | ||
113 | + <!-- <option value="d">이두</option> --> | ||
114 | + <!-- <option value="e">삼두</option> | ||
115 | + <option value="f">하체</option> | ||
116 | + <option value="g">코어</option> --> | ||
117 | + </select> | ||
118 | + </div> | ||
119 | + </div> | ||
120 | + <div class="mb-4 row"> | ||
121 | + <label for="staticEmail" class="col-sm-2 col-form-label"> | ||
122 | + 운동 방법 | ||
123 | + </label> | ||
124 | + <div class="col-sm-10"> | ||
125 | + <select class="form-select" id="way" name="way"> | ||
126 | + <option>선택해주세요</option> | ||
127 | + </select> | ||
128 | + </div> | ||
129 | + </div> | ||
130 | + <div class="mb-4 row"> | ||
131 | + <label for="staticEmail" class="col-sm-2 col-form-label"> | ||
132 | + 세트 수 | ||
133 | + </label> | ||
134 | + <div class="col-sm-10"> | ||
135 | + <input class="form-control" type="text" name="setNumber" /> | ||
136 | + </div> | ||
137 | + </div> | ||
138 | + <div class="mb-4 row"> | ||
139 | + <label for="staticEmail" class="col-sm-2 col-form-label"> | ||
140 | + 횟수 | ||
141 | + </label> | ||
142 | + <div class="col-sm-10"> | ||
143 | + <input class="form-control" type="text" name="number" /> | ||
144 | + </div> | ||
145 | + </div> | ||
146 | + <div class="mb-4 row"> | ||
147 | + <label for="staticEmail" class="col-sm-2 col-form-label"> | ||
148 | + 쉬는 시간(초) | ||
149 | + </label> | ||
150 | + <div class="col-sm-10"> | ||
151 | + <input class="form-control" type="text" name="breakTime" /> | ||
152 | + </div> | ||
153 | + </div> | ||
154 | + <div class="mt-3 text-center"> | ||
155 | + <button type="submit" class="btn btn-lg"> | ||
156 | + <i class="fas fa-save"></i> | ||
157 | + </button> | ||
158 | + </div> | ||
159 | + </form> | ||
160 | + </div> | ||
161 | + </section> | ||
162 | + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> | ||
163 | + <script src="/static/scripts.js"></script> | ||
164 | + </body> | ||
165 | +</html> |
healthassistant/views/startHealth.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="en"> | ||
3 | + <head> | ||
4 | + <meta charset="UTF-8" /> | ||
5 | + <title><%= day %>요일 운동 시작!</title> | ||
6 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
7 | + <!-- Font Awesome icons (free version)--> | ||
8 | + <script | ||
9 | + src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" | ||
10 | + crossorigin="anonymous" | ||
11 | + ></script> | ||
12 | + <!-- Simple line icons--> | ||
13 | + <link | ||
14 | + href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.5.5/css/simple-line-icons.min.css" | ||
15 | + rel="stylesheet" | ||
16 | + /> | ||
17 | + <!-- Google fonts--> | ||
18 | + <link | ||
19 | + href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" | ||
20 | + rel="stylesheet" | ||
21 | + type="text/css" | ||
22 | + /> | ||
23 | + <!-- Core theme CSS (includes Bootstrap)--> | ||
24 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> | ||
25 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | ||
26 | + <link | ||
27 | + href="https://fonts.googleapis.com/css2?family=Corinthia:wght@700&family=Jua&family=Anton&family=Fuzzy+Bubbles:wght@700&display=swap" | ||
28 | + rel="stylesheet" | ||
29 | + /> | ||
30 | + <link rel="stylesheet" href="/stylesheets/styles.css" /> | ||
31 | + <style> | ||
32 | + .healthLink { | ||
33 | + color: black; | ||
34 | + font-size: 18px; | ||
35 | + } | ||
36 | + .healthLink2 { | ||
37 | + font-size: 18px; | ||
38 | + } | ||
39 | + | ||
40 | + .title-fontA { | ||
41 | + font-family: 'Fuzzy Bubbles', cursive; | ||
42 | + } | ||
43 | + .title-fontB { | ||
44 | + font-family: 'Anton', sans-serif; | ||
45 | + } | ||
46 | + .day-fontB { | ||
47 | + font-family: 'Jua'; | ||
48 | + } | ||
49 | + | ||
50 | + .table-title { | ||
51 | + color: pink; | ||
52 | + font-size: 20px; | ||
53 | + } | ||
54 | + .timer { | ||
55 | + font-family: 'Jua'; | ||
56 | + font-size: 140px; | ||
57 | + color: darkcyan; | ||
58 | + } | ||
59 | + .healthname { | ||
60 | + font-family: 'Jua'; | ||
61 | + font-size: 57px; | ||
62 | + color: darkgrey; | ||
63 | + } | ||
64 | + </style> | ||
65 | + <script src="/static/timer.js"></script> | ||
66 | + </head> | ||
67 | + | ||
68 | + <body> | ||
69 | + <div class="navbar navbar-expand-lg navbar-light bgtop"> | ||
70 | + <div class="container text-center mx-4 my-1"> | ||
71 | + <a class="navbar-brand title-fontA" href="/daySelect">Health Assistant</a> | ||
72 | + </div> | ||
73 | + <div class="mx-3"> | ||
74 | + <a class="otherUser title-fontB" href="/otherUser">OTHER</a> | ||
75 | + </div> | ||
76 | + <div class="mx-3"> | ||
77 | + <a class="otherUser title-fontB" href="/myHealth">MY</a> | ||
78 | + </div> | ||
79 | + <div class="mx-3"> | ||
80 | + <a class="otherUser title-fontB" href="/auth/logout/kakao">LOGOUT</a> | ||
81 | + </div> | ||
82 | + </div> | ||
83 | + <section class="container"> | ||
84 | + <div> | ||
85 | + <h1 class="mt-5 text-center day-fontB"><%= day%>요일 운동 시작하세요!</h1> | ||
86 | + </div> | ||
87 | + <div class="mt-5"> | ||
88 | + <table class="table text-center"> | ||
89 | + <tr class="table-title"> | ||
90 | + <th>운동 방법</th> | ||
91 | + <th>자극 부위</th> | ||
92 | + <th>세트</th> | ||
93 | + <th>횟수</th> | ||
94 | + <th>쉬는시간(초)</th> | ||
95 | + <th></th> | ||
96 | + <th></th> | ||
97 | + </tr> | ||
98 | + <div> | ||
99 | + <% for(let i=0; i <arr1.length ;i++) { | ||
100 | + %> | ||
101 | + <tr> | ||
102 | + <% if(arr1[i].way =="프론트 레이즈") { %> | ||
103 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=j2Nvn8nbtXs"><%= arr1[i].way %></a></td> | ||
104 | + <% } else if(arr1[i].way == "아놀드 프레스") { %> | ||
105 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=tsSxQ2__DQU"><%= arr1[i].way %></a></td> | ||
106 | + <% } else if(arr1[i].way == "래터럴 레이즈") { %> | ||
107 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=geenhiHju-o"><%= arr1[i].way %></a></td> | ||
108 | + <% } else if(arr1[i].way == "리버스 펙덱 플라이") { %> | ||
109 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=Ey8KQroKsCk"><%= arr1[i].way %></a></td> | ||
110 | + <% } else if(arr1[i].way == "인클라인 벤치프레스") { %> | ||
111 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=11gY7Q5D5wo"><%= arr1[i].way %></a></td> | ||
112 | + <% } else if(arr1[i].way == "벤치프레스") { %> | ||
113 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=5rRHgro9Vrg"><%= arr1[i].way %></a></td> | ||
114 | + <% } else if(arr1[i].way == "딥스") { %> | ||
115 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=W6I5Tsuu_CE"><%= arr1[i].way %></a></td> | ||
116 | + <% } else if(arr1[i].way == "푸쉬업") { %> | ||
117 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=2qzcGwK282Y"><%= arr1[i].way %></a></td> | ||
118 | + <% } else if(arr1[i].way == "랫풀다운") { %> | ||
119 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=hVa5dsH3DaA"><%= arr1[i].way %></a></td> | ||
120 | + <% } else if(arr1[i].way == "시티드로우") { %> | ||
121 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=jzf_IMgQ1Zc"><%= arr1[i].way %></a></td> | ||
122 | + <% } else if(arr1[i].way == "데드리프트") { %> | ||
123 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=6RW8nWzbIS8"><%= arr1[i].way %></a></td> | ||
124 | + <% } else if(arr1[i].way == "바벨로우") { %> | ||
125 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=g4X2faTd0DE"><%= arr1[i].way %></a></td> | ||
126 | + <% } else if(arr1[i].way == "풀업") { %> | ||
127 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=LY54fY1ThOw"><%= arr1[i].way %></a></td> | ||
128 | + <% } else if(arr1[i].way == "덤벨 컬") { %> | ||
129 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=sAq_ocpRh_I"><%= arr1[i].way %></a></td> | ||
130 | + <% } else if(arr1[i].way == "오버헤드프레스") { %> | ||
131 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=kDbUNTX-Xts"><%= arr1[i].way %></a></td> | ||
132 | + <% } else if(arr1[i].way == "덤벨 킥백") { %> | ||
133 | + <td><a class="healthLink" href="https://youtu.be/6SS6K3lAwZ8"><%= arr1[i].way %></a></td> | ||
134 | + <% } else if(arr1[i].way == "라잉 트라이셉스 익스텐션") { %> | ||
135 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=MVwknaifUfw"><%= arr1[i].way %></a></td> | ||
136 | + <% } else if(arr1[i].way == "레그프레스") { %> | ||
137 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=hYwJrXpzEfs"><%= arr1[i].way %></a></td> | ||
138 | + <% } else if(arr1[i].way == "스쿼트") { %> | ||
139 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=IOCOKjTI2Qo"><%= arr1[i].way %></a></td> | ||
140 | + <% } else if(arr1[i].way == "런지") { %> | ||
141 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=Nx1_TkD41DE"><%= arr1[i].way %></a></td> | ||
142 | + <% } else if(arr1[i].way == "레그 익스텐션") { %> | ||
143 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=amJyUQfDXTs"><%= arr1[i].way %></a></td> | ||
144 | + <% } else if(arr1[i].way == "레그컬") { %> | ||
145 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=_UZDE-HH2eA"><%= arr1[i].way %></a></td> | ||
146 | + <% } else if(arr1[i].way == "플랭크") { %> | ||
147 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=B--6YfhmBGc"><%= arr1[i].way %></a></td> | ||
148 | + <% } else if(arr1[i].way == "크런치") { %> | ||
149 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=pq6aj0yiSrw"><%= arr1[i].way %></a></td> | ||
150 | + <% } else if(arr1[i].way == "백 익스텐션") { %> | ||
151 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=Bw9YuQTTc58"><%= arr1[i].way %></a></td> | ||
152 | + <% } else if(arr1[i].way == "싸이클") { %> | ||
153 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=y1e3KYo_Pas"><%= arr1[i].way %></a></td> | ||
154 | + <% } else if(arr1[i].way == "런닝머신") { %> | ||
155 | + <td><a class="healthLink" href="https://www.youtube.com/watch?v=djAJE282AyI"><%= arr1[i].way %></a></td> | ||
156 | + <% } else {%> | ||
157 | + <td class="healthLink2"><%= arr1[i].way %></td> | ||
158 | + <% } %> | ||
159 | + <td><%= arr1[i].part %></td> | ||
160 | + <td><%= arr1[i].setNumber %></td> | ||
161 | + <td><%= arr1[i].number %></td> | ||
162 | + <td id="breaktime"><%= arr1[i].breakTime %></td> | ||
163 | + <td> | ||
164 | + <button class="btn" onclick="onClick(this)" name="<%= arr1[i].way %>" value="<%= arr1[i].breakTime %>"> | ||
165 | + <i class="far fa-clock"></i> | ||
166 | + </button> | ||
167 | + </td> | ||
168 | + <td> | ||
169 | + <button class="btn" onclick="location.href='edit/<%= arr1[i].way %>'"><i class="fas fa-edit"></i></button> | ||
170 | + </td> | ||
171 | + <td> | ||
172 | + <button class="btn" onclick="location.href='remove/<%= arr1[i].Id %>'"><i class="fas fa-trash-alt"></i></button> | ||
173 | + </td> | ||
174 | + </tr> | ||
175 | + <% } %> | ||
176 | + </div> | ||
177 | + </table> | ||
178 | + </div> | ||
179 | + | ||
180 | + | ||
181 | + </section> | ||
182 | + <section class="container"> | ||
183 | + <div> | ||
184 | + <button class="btn btn-lg" onclick="location.href='/setup'" style="float: right;"><i class="fas fa-plus"></i> 추가</button> | ||
185 | + </div> | ||
186 | + </section> | ||
187 | + <section class="container"> | ||
188 | + <div> | ||
189 | + <div> | ||
190 | + <div> | ||
191 | + </div> | ||
192 | + </div> | ||
193 | + | ||
194 | + <div> | ||
195 | + | ||
196 | + </div> | ||
197 | + </div> | ||
198 | + </section> | ||
199 | + <section class="container text-center"> | ||
200 | + <div class="row"> | ||
201 | + <div class="healthname mt-5" id="healthname"> | ||
202 | + | ||
203 | + </div> | ||
204 | + <div class="timer mt-2" id="demo"> | ||
205 | + </div> | ||
206 | + <div class="day-fontB" id="deleteBtn"> | ||
207 | + </div> | ||
208 | + </div> | ||
209 | + </section> | ||
210 | + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> | ||
211 | + </body> | ||
212 | +</html> |
healthassistant/views/user.ejs
0 → 100644
1 | +<!DOCTYPE html> | ||
2 | +<html lang="en"> | ||
3 | + <head> | ||
4 | + <meta charset="utf-8" /> | ||
5 | + <meta | ||
6 | + name="viewport" | ||
7 | + content="width=device-width, initial-scale=1, shrink-to-fit=no" | ||
8 | + /> | ||
9 | + <meta name="description" content="" /> | ||
10 | + <meta name="author" content="" /> | ||
11 | + <title>정보 입력</title> | ||
12 | + <!-- Favicon--> | ||
13 | + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" /> | ||
14 | + <!-- Font Awesome icons (free version)--> | ||
15 | + <script | ||
16 | + src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" | ||
17 | + crossorigin="anonymous" | ||
18 | + ></script> | ||
19 | + <!-- Simple line icons--> | ||
20 | + <link | ||
21 | + href="https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.5.5/css/simple-line-icons.min.css" | ||
22 | + rel="stylesheet" | ||
23 | + /> | ||
24 | + <!-- Google fonts--> | ||
25 | + <link | ||
26 | + href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,700,300italic,400italic,700italic" | ||
27 | + rel="stylesheet" | ||
28 | + type="text/css" | ||
29 | + /> | ||
30 | + <!-- Core theme CSS (includes Bootstrap)--> | ||
31 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> | ||
32 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> | ||
33 | + <link | ||
34 | + href="https://fonts.googleapis.com/css2?family=Corinthia:wght@700&family=Fuzzy+Bubbles:wght@700&display=swap" | ||
35 | + rel="stylesheet" | ||
36 | + /> | ||
37 | + <link rel="stylesheet" href="/stylesheets/styles.css" /> | ||
38 | + <style> | ||
39 | + .title-fontA { | ||
40 | + font-family: "Fuzzy Bubbles", cursive; | ||
41 | + } | ||
42 | + </style> | ||
43 | + </head> | ||
44 | + <body id="page-top"> | ||
45 | + <div class="navbar navbar-expand-lg navbar-light fixed-top"> | ||
46 | + <div class="container mx-4 my-1"> | ||
47 | + <a class="navbar-brand title-fontA">Health Assistant</a> | ||
48 | + </div> | ||
49 | + </div> | ||
50 | + <div class="mastheadSecond"> | ||
51 | + <div class="container text-center mt-5"> | ||
52 | + <h1 class="text-white">User Information</h1> | ||
53 | + <div class="row"> | ||
54 | + <div class="col-lg-6 order-lg-1"> | ||
55 | + <div class="p-5 mr-2 float-end"> | ||
56 | + <img | ||
57 | + class="img-fluid rounded-circle" | ||
58 | + src="../stylesheets/assets/img/human.png" | ||
59 | + alt="..." | ||
60 | + /> | ||
61 | + </div> | ||
62 | + </div> | ||
63 | + <div class="col-lg-6 order-lg-2"> | ||
64 | + <div class="p-5 mt-3"> | ||
65 | + <form action="/user" method="post" id="userForm"> | ||
66 | + <div class="mt-5"> | ||
67 | + <input | ||
68 | + class="form-control w-50 text-center" | ||
69 | + placeholder="키를 입력해주세요" | ||
70 | + type="text" | ||
71 | + name="height" | ||
72 | + /> | ||
73 | + </div> | ||
74 | + <div class="mt-4"> | ||
75 | + <input | ||
76 | + class="form-control w-50 text-center" | ||
77 | + placeholder="몸무게를 입력해주세요" | ||
78 | + type="text" | ||
79 | + name="weight" | ||
80 | + /> | ||
81 | + </div> | ||
82 | + <div> | ||
83 | + <button | ||
84 | + class="btn btn-primary rounded float-start w-50 mt-4" | ||
85 | + type="submit" | ||
86 | + > | ||
87 | + 확인 | ||
88 | + </button> | ||
89 | + </div> | ||
90 | + </form> | ||
91 | + </div> | ||
92 | + </div> | ||
93 | + </div> | ||
94 | + </div> | ||
95 | + </div> | ||
96 | + <!-- Bootstrap core JS--> | ||
97 | + <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script> | ||
98 | + <!-- Core theme JS--> | ||
99 | + <script src="/static/scripts.js"></script> | ||
100 | + </body> | ||
101 | +</html> |
-
Please register or login to post a comment