한우준

Merge branch 'main-page' into 'master'

Main page

complete main page

See merge request !1
1 -[{"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\reportWebVitals.js":"1","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\Landing.js":"2","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\components\\Header.js":"3","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\index.js":"4","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\components\\Button.js":"5"},{"size":362,"mtime":1606827597211,"results":"6","hashOfConfig":"7"},{"size":0,"mtime":1607082038941,"results":"8","hashOfConfig":"7"},{"size":213,"mtime":1607081885405,"results":"9","hashOfConfig":"7"},{"size":287,"mtime":1607081544438,"results":"10","hashOfConfig":"7"},{"size":356,"mtime":1607081873376,"results":"11","hashOfConfig":"7"},{"filePath":"12","messages":"13","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"dlgyj4",{"filePath":"14","messages":"15","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16","messages":"17","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"18","messages":"19","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"20","messages":"21","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\reportWebVitals.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\Landing.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\components\\Header.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\index.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\components\\Button.js",[]]
...\ No newline at end of file ...\ No newline at end of file
1 +[{"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\reportWebVitals.js":"1","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\Landing.js":"2","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\components\\Header.js":"3","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\index.js":"4","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\components\\Button.js":"5","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\App.js":"6","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\Main.js":"7","C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\AnalysisPose.js":"8"},{"size":362,"mtime":1606827597211,"results":"9","hashOfConfig":"10"},{"size":0,"mtime":1607082038941,"results":"11","hashOfConfig":"10"},{"size":746,"mtime":1607265954632,"results":"12","hashOfConfig":"10"},{"size":287,"mtime":1607081544438,"results":"13","hashOfConfig":"10"},{"size":353,"mtime":1607264649923,"results":"14","hashOfConfig":"10"},{"size":570,"mtime":1607264613644,"results":"15","hashOfConfig":"10"},{"size":3214,"mtime":1607500306215,"results":"16","hashOfConfig":"10"},{"size":5932,"mtime":1607499647762,"results":"17","hashOfConfig":"10"},{"filePath":"18","messages":"19","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"dlgyj4",{"filePath":"20","messages":"21","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"22","messages":"23","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"24","messages":"25","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"26"},{"filePath":"27","messages":"28","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"29","messages":"30","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"31","messages":"32","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"33","messages":"34","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\reportWebVitals.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\Landing.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\components\\Header.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\index.js",[],["35","36"],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\components\\Button.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\App.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\Main.js",[],"C:\\Users\\mylit\\Documents\\OSW-HW\\Straight-Up\\straight-up\\src\\AnalysisPose.js",[],{"ruleId":"37","replacedBy":"38"},{"ruleId":"39","replacedBy":"40"},"no-native-reassign",["41"],"no-negated-in-lhs",["42"],"no-global-assign","no-unsafe-negation"]
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
13 13
14 # misc 14 # misc
15 .DS_Store 15 .DS_Store
16 +.env
16 .env.local 17 .env.local
17 .env.development.local 18 .env.development.local
18 .env.test.local 19 .env.test.local
......
This diff could not be displayed because it is too large.
...@@ -6,6 +6,15 @@ ...@@ -6,6 +6,15 @@
6 "@testing-library/jest-dom": "^5.11.4", 6 "@testing-library/jest-dom": "^5.11.4",
7 "@testing-library/react": "^11.1.0", 7 "@testing-library/react": "^11.1.0",
8 "@testing-library/user-event": "^12.1.10", 8 "@testing-library/user-event": "^12.1.10",
9 + "axios": "^0.21.0",
10 + "body-parser": "^1.19.0",
11 + "dot": "^1.1.3",
12 + "dotenv": "^8.2.0",
13 + "env": "0.0.2",
14 + "express": "^4.17.1",
15 + "http-proxy-middleware": "^1.0.6",
16 + "moment": "^2.29.1",
17 + "multer": "^1.4.2",
9 "react": "^17.0.1", 18 "react": "^17.0.1",
10 "react-dom": "^17.0.1", 19 "react-dom": "^17.0.1",
11 "react-router-dom": "^5.2.0", 20 "react-router-dom": "^5.2.0",
...@@ -13,7 +22,9 @@ ...@@ -13,7 +22,9 @@
13 "web-vitals": "^0.2.4" 22 "web-vitals": "^0.2.4"
14 }, 23 },
15 "scripts": { 24 "scripts": {
16 - "start": "react-scripts start", 25 + "start": "npm-run-all --parallel start:**",
26 + "start:client": "react-scripts start",
27 + "start:server": "node ./server/app.js",
17 "build": "react-scripts build", 28 "build": "react-scripts build",
18 "test": "react-scripts test", 29 "test": "react-scripts test",
19 "eject": "react-scripts eject" 30 "eject": "react-scripts eject"
...@@ -35,5 +46,8 @@ ...@@ -35,5 +46,8 @@
35 "last 1 firefox version", 46 "last 1 firefox version",
36 "last 1 safari version" 47 "last 1 safari version"
37 ] 48 ]
49 + },
50 + "devDependencies": {
51 + "npm-run-all": "^4.1.5"
38 } 52 }
39 } 53 }
......
No preview for this file type
1 +const express = require('express');
2 +const bodyParser = require('body-parser')
3 +const app = express();
4 +const api = require('./routes/index');
5 +
6 +app.use(bodyParser.json());
7 +app.use('/api', api);
8 +
9 +const port = 3001;
10 +app.listen(port, () => console.log(`Listening on port ${port}`));
...\ No newline at end of file ...\ No newline at end of file
1 +const express = require('express');
2 +const router = express.Router();
3 +
4 +router.get('/', (req, res) => res.json({data:'this is index.'}));
5 +
6 +module.exports = router
...\ No newline at end of file ...\ No newline at end of file
1 +//두 좌표 사이의 거리를 반환하는 함수
2 +function distance(x1, y1, x2, y2) {
3 + var x = Math.abs(x1 - x2);
4 + var y = Math.abs(y1 - y2);
5 + var result = Math.hypot(x, y);
6 + return result;
7 +}
8 +
9 +//두 길이의 차이를 %비로 반환하는 함수
10 +function difference(d1, d2) {
11 + if (d1 > d2) {
12 + return (1 - (d2 / d1)) * 100;
13 + } else if (d1 < d2) {
14 + return (1 - (d1 / d2)) * 100;
15 + } else if (d1 === d2) {
16 + return 0;
17 + }
18 +}
19 +
20 +//객체와 방향정보를 받아 자세정보를 반환하는 함수
21 +const checkStraight = (resData, position) => { //resData: API로 받은 JSON 객체, position: 사진의 방향정보
22 + var trust_value = []; //17개의 신체부위 좌표에 대한 신뢰도를 저장할 배열
23 + var x_position = []; //17개의 신체부위의 X좌표값을 저장할 배열
24 + var y_position = []; //17개의 신체부위의 Y좌표값을 저장할 배열
25 + const neck_maximum_angle = (180 * 30) / Math.PI; //어깨-귀 각도가 30도 이상일 경우 > 거북목
26 + const back_minimum_angle = (180 * 70) / Math.PI; //엉덩이-어깨 각도가 70도 이하일 경우 > 굽은등
27 + let ear = 3;
28 + let shoulder = 5;
29 + let hip = 11;
30 + for (let i = 0; i < 49; i += 3) {
31 + x_position.push(resData[i]);
32 + y_position.push(resData[i + 1]);
33 + trust_value.push(resData[i + 2]);
34 + }
35 + if (position === 'front') { //정면 사진일 경우
36 + //사용할 데이터의 신뢰도가 0.4 미만이면 실행하지 않음
37 + if (trust_value[ear] < 0.4) {
38 + return 'error_low_trust_value (keypoint:left_ear:4)'
39 + }
40 + if (trust_value[ear + 1] < 0.4) {
41 + return 'error_low_trust_value (keypoint:right_ear:5)'
42 + }
43 + if (trust_value[shoulder] < 0.4) {
44 + return 'error_low_trust_value (keypoint:left_shoulder:6)'
45 + }
46 + if (trust_value[shoulder + 1] < 0.4) {
47 + return 'error_low_trust_value (keypoint:right_shoulder_7)'
48 + }
49 +
50 + //왼쪽귀(4)-왼쪽어깨(6) 거리와 오른쪽귀(5)-오른쪽어깨(7) 거리가 30% 이상 차이날 경우 > 좌우편향
51 + var d_left = distance(x_position[ear], y_position[ear], x_position[shoulder], y_position[shoulder]);
52 + var d_right = distance(x_position[ear + 1], y_position[ear + 1], x_position[shoulder + 1], y_position[shoulder + 1]);
53 + var gap = difference(d_left, d_right);
54 +
55 + if (gap >= 20) { //기운 각도가 20도를 넘을 경우
56 + if (d_left > d_right) { //오른쪽으로 기울인 경우
57 + return 'leaning right by ' + gap + 'percent.';
58 + } else if (d_left < d_right) { //왼쪽으로 기울인 경우
59 + return 'leaning left by ' + gap + 'percent.';
60 + }
61 + } else { //기운 각도가 20도 미만인 경우
62 + return 'okay';
63 + }
64 +
65 +
66 + }
67 + else {
68 + if (position === 'right') {
69 + ear++;
70 + shoulder++;
71 + hip++;
72 + }
73 + if (trust_value[hip] < 0.4) { //사용할 데이터의 신뢰도가 0.4 미만이면 실행하지 않음
74 + return `error_low_trust_value (keypoint:${position}hip)`;
75 + }
76 + if (trust_value[shoulder] < 0.4) {
77 + return `error_low_trust_value (keypoint:${position}shoulder)`;
78 + }
79 + if (trust_value[ear] < 0.4) {
80 + return `error_low_trust_value (keypoint:${position}ear)`;
81 + }
82 + //엉덩이(12)-어깨(6) 각도가 70도 이하일 경우 > 굽은등
83 +
84 + var back_d1 = Math.abs(x_position[hip] - x_position[shoulder]);
85 + var back_d2 = Math.abs(y_position[hip] - y_position[shoulder]);
86 + var back_angle = Math.atan(back_d2 / back_d1);
87 + var back_angle_rad = (180 * back_angle) / Math.PI; //라디안 > 육십분법 변환
88 + if (back_angle_rad <= back_minimum_angle) {
89 + return 'bent_back';
90 + }
91 + //어깨(6)-귀(4) 각도가 30도 이상일 경우 > 거북목
92 + var neck_d1 = Math.abs(y_position[ear] - y_position[shoulder]);
93 + var neck_d2 = Math.abs(x_position[ear] - x_position[shoulder]);
94 + var neck_angle = Math.atan(neck_d2 / neck_d1);
95 + var neck_angle_rad = (180 * neck_angle) / Math.PI; //라디안 > 육십분법 변환
96 + if (neck_angle_rad >= neck_maximum_angle) {
97 + return 'bent_neck';
98 + }
99 + //굽은등, 거북목 모두 없을 경우
100 + return 'okay';
101 + }
102 +}
103 +
104 +export default checkStraight;
...\ No newline at end of file ...\ No newline at end of file
1 import React from 'react'; 1 import React from 'react';
2 import { BrowserRouter as Router, Route, Switch, Redirect } from 'react-router-dom'; 2 import { BrowserRouter as Router, Route, Switch, Redirect } from 'react-router-dom';
3 import Landing from './Landing'; 3 import Landing from './Landing';
4 +import Main from './Main';
4 5
5 6
6 class App extends React.Component { 7 class App extends React.Component {
...@@ -9,6 +10,7 @@ class App extends React.Component { ...@@ -9,6 +10,7 @@ class App extends React.Component {
9 <Router> 10 <Router>
10 <Switch> 11 <Switch>
11 <Route exact path="/landing" component={Landing} /> 12 <Route exact path="/landing" component={Landing} />
13 + <Route exact path="/main" component={Main} />
12 <Redirect path="*" to="/landing" /> 14 <Redirect path="*" to="/landing" />
13 </Switch> 15 </Switch>
14 </Router> 16 </Router>
......
1 +import React, { useState } from 'react'
2 +import Header from './components/Header';
3 +import checkStraight from './AnalysisPose';
4 +import './style/Main.css';
5 +require('dotenv').config();
6 +
7 +const axios = require('axios');
8 +const API_KEY = "1f14e860f7f53f39a4dfe0a2a919a8c7";
9 +//process.env.api_key;
10 +let imageFormData = new FormData();
11 +
12 +export default function Main() {
13 + const [imgBase64, setImgBase64] = useState("");
14 + const [img, setImage] = useState(null);
15 + const handleChangeFile = (event) => {
16 + let reader = new FileReader();
17 + reader.onloadend = () => {
18 + const base64 = reader.result;
19 + if (base64) {
20 + setImgBase64(base64.toString());
21 + }
22 + }
23 + if (event.target.files[0]) {
24 + reader.readAsDataURL(event.target.files[0]); // 1. 파일을 읽어 버퍼에 저장합니다.
25 + setImage(event.target.files[0]); // 파일 상태 업데이트
26 + }
27 + }
28 +
29 + const analysisImage = () => {
30 + imageFormData.append('file', img);
31 + axios({
32 + method: 'post',
33 + url: "https://cors-anywhere.herokuapp.com/https://cv-api.kakaobrain.com/pose",
34 + headers: {
35 + 'Authorization': `KakaoAK ${API_KEY}`,
36 + 'Content-Type': 'multipart/form-data',
37 + 'X-Requested-With': '*'
38 + },
39 + data: imageFormData
40 + }).then(function (response) {
41 + const resdata = response.data[0].keypoints;
42 + console.log(resdata[0]);
43 + const result = checkStraight(resdata, 'front');
44 + console.log(result);
45 +
46 + // console.log(resdata[0] === )
47 + }).catch(function (error) {
48 + if (error.response) {
49 + // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.
50 + console.log(error.response.data);
51 + console.log(error.response.status);
52 + console.log(error.response.headers);
53 + }
54 + else if (error.request) {
55 + // 요청이 이루어 졌으나 응답을 받지 못했습니다.
56 + // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는
57 + // Node.js의 http.ClientRequest 인스턴스입니다.
58 + console.log(error.request);
59 + }
60 + else {
61 + // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.
62 + console.log('Error', error.message);
63 + }
64 + console.log(error.config);
65 + });
66 + }
67 + return (
68 + <div>
69 + <Header />
70 + <span>This is Main Page</span>
71 + <div className="Image-Preview-Container" style={{ "backgroundColor": "#efefef", "width": "400px", "height": "400px" }}>
72 + <img className="Image-Preview" alt="preview" src={imgBase64}></img>
73 + </div>
74 + <div className="Image_input">
75 + <input type="file" name="file" onChange={handleChangeFile} />
76 + <button type="button" onClick={analysisImage} >Submit</button>
77 + </div>
78 + </div>
79 + )
80 +}
...@@ -5,10 +5,9 @@ import "../style/Landing.css"; ...@@ -5,10 +5,9 @@ import "../style/Landing.css";
5 const Button = () => { 5 const Button = () => {
6 return ( 6 return (
7 <div className="mainBtnContainer"> 7 <div className="mainBtnContainer">
8 - <Link to='./main'> 8 + <Link to="/main">
9 <button className="startBtn">Get Started!</button> 9 <button className="startBtn">Get Started!</button>
10 </Link> 10 </Link>
11 -
12 </div> 11 </div>
13 ) 12 )
14 } 13 }
......
1 import React from 'react' 1 import React from 'react'
2 - 2 +import { Link } from 'react-router-dom';
3 +import logo from '../style/Logo.JPG';
3 const Header = () => { 4 const Header = () => {
4 return ( 5 return (
5 - <div className="Header"> 6 + <div className="HeaderContainer"
6 - <img src="../style/Logo.jpg" alt="Logo"></img> 7 + style={{
8 + display: 'inline-block',
9 + width: '100vw',
10 + height: '100px',
11 + background: '#2f3640'
12 + }}
13 + >
14 +
15 + <div className="logo">
16 + <Link to="/landing">
17 + <img
18 + src={logo}
19 + width='100px'
20 + height='100px'
21 + alt="Logo"></img>
22 + </Link>
23 + </div>
24 +
25 +
7 </div> 26 </div>
8 ) 27 )
9 } 28 }
......
1 +const proxy = require('http-proxy-middleware');
2 +
3 +module.exports = function (app) {
4 + app.use(
5 + proxy('/api', {
6 + target: 'http://localhost:3001/'
7 + })
8 + );
9 +};
...\ No newline at end of file ...\ No newline at end of file
...@@ -17,6 +17,7 @@ body { ...@@ -17,6 +17,7 @@ body {
17 width: 100vw; 17 width: 100vw;
18 height: 100vh; 18 height: 100vh;
19 } 19 }
20 +/*
20 .Landingbg:after { 21 .Landingbg:after {
21 content: ''; 22 content: '';
22 position: absolute; 23 position: absolute;
...@@ -28,7 +29,7 @@ body { ...@@ -28,7 +29,7 @@ body {
28 background: rgba(0,0,0,0.001); 29 background: rgba(0,0,0,0.001);
29 box-shadow: inset 100px 100px 250px #000000, inset -100px -100px 250px #000000; 30 box-shadow: inset 100px 100px 250px #000000, inset -100px -100px 250px #000000;
30 } 31 }
31 - 32 +*/
32 .mainTextContainer{ 33 .mainTextContainer{
33 text-align: center; 34 text-align: center;
34 position: relative; 35 position: relative;
...@@ -60,5 +61,5 @@ body { ...@@ -60,5 +61,5 @@ body {
60 } 61 }
61 62
62 .startBtn:hover { 63 .startBtn:hover {
63 - opacity: 0.5; 64 + opacity: 0.8;
64 } 65 }
...\ No newline at end of file ...\ No newline at end of file
......
1 +.Image-Preview{
2 + width: 400px;
3 + height: 400px;
4 +}
...\ No newline at end of file ...\ No newline at end of file
...@@ -1700,6 +1700,13 @@ ...@@ -1700,6 +1700,13 @@
1700 resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" 1700 resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50"
1701 integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== 1701 integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA==
1702 1702
1703 +"@types/http-proxy@^1.17.4":
1704 + version "1.17.4"
1705 + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b"
1706 + integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q==
1707 + dependencies:
1708 + "@types/node" "*"
1709 +
1703 "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 1710 "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
1704 version "2.0.3" 1711 version "2.0.3"
1705 resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" 1712 resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
...@@ -2467,6 +2474,13 @@ axe-core@^4.0.2: ...@@ -2467,6 +2474,13 @@ axe-core@^4.0.2:
2467 resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.1.tgz#70a7855888e287f7add66002211a423937063eaf" 2474 resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.1.tgz#70a7855888e287f7add66002211a423937063eaf"
2468 integrity sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ== 2475 integrity sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==
2469 2476
2477 +axios@^0.21.0:
2478 + version "0.21.0"
2479 + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.0.tgz#26df088803a2350dff2c27f96fef99fe49442aca"
2480 + integrity sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==
2481 + dependencies:
2482 + follow-redirects "^1.10.0"
2483 +
2470 axobject-query@^2.2.0: 2484 axobject-query@^2.2.0:
2471 version "2.2.0" 2485 version "2.2.0"
2472 resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" 2486 resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
...@@ -2718,7 +2732,7 @@ bn.js@^5.0.0, bn.js@^5.1.1: ...@@ -2718,7 +2732,7 @@ bn.js@^5.0.0, bn.js@^5.1.1:
2718 resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" 2732 resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b"
2719 integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== 2733 integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==
2720 2734
2721 -body-parser@1.19.0: 2735 +body-parser@1.19.0, body-parser@^1.19.0:
2722 version "1.19.0" 2736 version "1.19.0"
2723 resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" 2737 resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
2724 integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== 2738 integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
...@@ -3541,7 +3555,7 @@ cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2: ...@@ -3541,7 +3555,7 @@ cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2:
3541 shebang-command "^2.0.0" 3555 shebang-command "^2.0.0"
3542 which "^2.0.1" 3556 which "^2.0.1"
3543 3557
3544 -cross-spawn@^6.0.0: 3558 +cross-spawn@^6.0.0, cross-spawn@^6.0.5:
3545 version "6.0.5" 3559 version "6.0.5"
3546 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 3560 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
3547 integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 3561 integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
...@@ -4145,7 +4159,7 @@ dotenv-expand@5.1.0: ...@@ -4145,7 +4159,7 @@ dotenv-expand@5.1.0:
4145 resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" 4159 resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
4146 integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== 4160 integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
4147 4161
4148 -dotenv@8.2.0: 4162 +dotenv@8.2.0, dotenv@^8.2.0:
4149 version "8.2.0" 4163 version "8.2.0"
4150 resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" 4164 resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
4151 integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== 4165 integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
...@@ -4997,7 +5011,7 @@ flush-write-stream@^1.0.0: ...@@ -4997,7 +5011,7 @@ flush-write-stream@^1.0.0:
4997 inherits "^2.0.3" 5011 inherits "^2.0.3"
4998 readable-stream "^2.3.6" 5012 readable-stream "^2.3.6"
4999 5013
5000 -follow-redirects@^1.0.0: 5014 +follow-redirects@^1.0.0, follow-redirects@^1.10.0:
5001 version "1.13.0" 5015 version "1.13.0"
5002 resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" 5016 resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db"
5003 integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== 5017 integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==
...@@ -5563,7 +5577,18 @@ http-proxy-middleware@0.19.1: ...@@ -5563,7 +5577,18 @@ http-proxy-middleware@0.19.1:
5563 lodash "^4.17.11" 5577 lodash "^4.17.11"
5564 micromatch "^3.1.10" 5578 micromatch "^3.1.10"
5565 5579
5566 -http-proxy@^1.17.0: 5580 +http-proxy-middleware@^1.0.6:
5581 + version "1.0.6"
5582 + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-1.0.6.tgz#0618557722f450375d3796d701a8ac5407b3b94e"
5583 + integrity sha512-NyL6ZB6cVni7pl+/IT2W0ni5ME00xR0sN27AQZZrpKn1b+qRh+mLbBxIq9Cq1oGfmTc7BUq4HB77mxwCaxAYNg==
5584 + dependencies:
5585 + "@types/http-proxy" "^1.17.4"
5586 + http-proxy "^1.18.1"
5587 + is-glob "^4.0.1"
5588 + lodash "^4.17.20"
5589 + micromatch "^4.0.2"
5590 +
5591 +http-proxy@^1.17.0, http-proxy@^1.18.1:
5567 version "1.18.1" 5592 version "1.18.1"
5568 resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" 5593 resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
5569 integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== 5594 integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
...@@ -6827,6 +6852,16 @@ load-json-file@^2.0.0: ...@@ -6827,6 +6852,16 @@ load-json-file@^2.0.0:
6827 pify "^2.0.0" 6852 pify "^2.0.0"
6828 strip-bom "^3.0.0" 6853 strip-bom "^3.0.0"
6829 6854
6855 +load-json-file@^4.0.0:
6856 + version "4.0.0"
6857 + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
6858 + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
6859 + dependencies:
6860 + graceful-fs "^4.1.2"
6861 + parse-json "^4.0.0"
6862 + pify "^3.0.0"
6863 + strip-bom "^3.0.0"
6864 +
6830 loader-runner@^2.4.0: 6865 loader-runner@^2.4.0:
6831 version "2.4.0" 6866 version "2.4.0"
6832 resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" 6867 resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
...@@ -7041,6 +7076,11 @@ memory-fs@^0.5.0: ...@@ -7041,6 +7076,11 @@ memory-fs@^0.5.0:
7041 errno "^0.1.3" 7076 errno "^0.1.3"
7042 readable-stream "^2.0.1" 7077 readable-stream "^2.0.1"
7043 7078
7079 +memorystream@^0.3.1:
7080 + version "0.3.1"
7081 + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
7082 + integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
7083 +
7044 merge-descriptors@1.0.1: 7084 merge-descriptors@1.0.1:
7045 version "1.0.1" 7085 version "1.0.1"
7046 resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 7086 resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
...@@ -7460,6 +7500,21 @@ normalize-url@^3.0.0: ...@@ -7460,6 +7500,21 @@ normalize-url@^3.0.0:
7460 resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" 7500 resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
7461 integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== 7501 integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
7462 7502
7503 +npm-run-all@^4.1.5:
7504 + version "4.1.5"
7505 + resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
7506 + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
7507 + dependencies:
7508 + ansi-styles "^3.2.1"
7509 + chalk "^2.4.1"
7510 + cross-spawn "^6.0.5"
7511 + memorystream "^0.3.1"
7512 + minimatch "^3.0.4"
7513 + pidtree "^0.3.0"
7514 + read-pkg "^3.0.0"
7515 + shell-quote "^1.6.1"
7516 + string.prototype.padend "^3.0.0"
7517 +
7463 npm-run-path@^2.0.0: 7518 npm-run-path@^2.0.0:
7464 version "2.0.2" 7519 version "2.0.2"
7465 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 7520 resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
...@@ -7912,6 +7967,13 @@ path-type@^2.0.0: ...@@ -7912,6 +7967,13 @@ path-type@^2.0.0:
7912 dependencies: 7967 dependencies:
7913 pify "^2.0.0" 7968 pify "^2.0.0"
7914 7969
7970 +path-type@^3.0.0:
7971 + version "3.0.0"
7972 + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
7973 + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
7974 + dependencies:
7975 + pify "^3.0.0"
7976 +
7915 path-type@^4.0.0: 7977 path-type@^4.0.0:
7916 version "4.0.0" 7978 version "4.0.0"
7917 resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 7979 resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
...@@ -7938,11 +8000,21 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: ...@@ -7938,11 +8000,21 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2:
7938 resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 8000 resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
7939 integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 8001 integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
7940 8002
8003 +pidtree@^0.3.0:
8004 + version "0.3.1"
8005 + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
8006 + integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
8007 +
7941 pify@^2.0.0: 8008 pify@^2.0.0:
7942 version "2.3.0" 8009 version "2.3.0"
7943 resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 8010 resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
7944 integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 8011 integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
7945 8012
8013 +pify@^3.0.0:
8014 + version "3.0.0"
8015 + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
8016 + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
8017 +
7946 pify@^4.0.1: 8018 pify@^4.0.1:
7947 version "4.0.1" 8019 version "4.0.1"
7948 resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 8020 resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
...@@ -9115,6 +9187,15 @@ read-pkg@^2.0.0: ...@@ -9115,6 +9187,15 @@ read-pkg@^2.0.0:
9115 normalize-package-data "^2.3.2" 9187 normalize-package-data "^2.3.2"
9116 path-type "^2.0.0" 9188 path-type "^2.0.0"
9117 9189
9190 +read-pkg@^3.0.0:
9191 + version "3.0.0"
9192 + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
9193 + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
9194 + dependencies:
9195 + load-json-file "^4.0.0"
9196 + normalize-package-data "^2.3.2"
9197 + path-type "^3.0.0"
9198 +
9118 read-pkg@^5.2.0: 9199 read-pkg@^5.2.0:
9119 version "5.2.0" 9200 version "5.2.0"
9120 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" 9201 resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc"
...@@ -9792,7 +9873,7 @@ shebang-regex@^3.0.0: ...@@ -9792,7 +9873,7 @@ shebang-regex@^3.0.0:
9792 resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 9873 resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
9793 integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 9874 integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
9794 9875
9795 -shell-quote@1.7.2: 9876 +shell-quote@1.7.2, shell-quote@^1.6.1:
9796 version "1.7.2" 9877 version "1.7.2"
9797 resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" 9878 resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
9798 integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== 9879 integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
...@@ -10162,6 +10243,15 @@ string.prototype.matchall@^4.0.2: ...@@ -10162,6 +10243,15 @@ string.prototype.matchall@^4.0.2:
10162 regexp.prototype.flags "^1.3.0" 10243 regexp.prototype.flags "^1.3.0"
10163 side-channel "^1.0.3" 10244 side-channel "^1.0.3"
10164 10245
10246 +string.prototype.padend@^3.0.0:
10247 + version "3.1.1"
10248 + resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.1.tgz#824c84265dbac46cade2b957b38b6a5d8d1683c5"
10249 + integrity sha512-eCzTASPnoCr5Ht+Vn1YXgm8SB015hHKgEIMu9Nr9bQmLhRBxKRfmzSj/IQsxDFc8JInJDDFA0qXwK+xxI7wDkg==
10250 + dependencies:
10251 + call-bind "^1.0.0"
10252 + define-properties "^1.1.3"
10253 + es-abstract "^1.18.0-next.1"
10254 +
10165 string.prototype.trimend@^1.0.1: 10255 string.prototype.trimend@^1.0.1:
10166 version "1.0.3" 10256 version "1.0.3"
10167 resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" 10257 resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
......