Commit fd848334 authored by Choi Ga Young's avatar Choi Ga Young
Browse files

비밀번호 찾기&변경 기능완성

parent e67fdeae
import React, { useState } from 'react';
import { Formik } from 'formik';
import * as Yup from 'yup';
import axios from 'axios';
import 'bootstrap/dist/css/bootstrap.css';
import { Link, Redirect } from 'react-router-dom';
function Change() {
// const [state, setState] = useState(false);
// if (state) {
// return <Redirect to="/login" />;
// }
return (
<div className="d-flex flex-column justify-content-between vh-100">
<Formik
initialValues={{ password: '' }}
validationSchema={Yup.object({
password: Yup.string()
.required('비밀번호를 입력해주세요.')
.min(8, '8자 이상 입력해주세요.'),
password2: Yup.string()
.required('비밀번호를 다시 입력해주세요.')
.min(8, '8자 이상 입력해주세요.')
.oneOf([Yup.ref("password"), null], '비밀번호가 일치하지 않습니다.'),
})}
onSubmit={(values, { setSubmitting }) => {
axios.put(`/users`, { ...values, id: localStorage.getItem('id') },
)
.then(res => {
console.log(res.data);
if (res.status === 404) return alert(res.data.error)
alert("회원정보가 수정되었습니다!")
})
.catch(err => {
alert(err.error)
});
setTimeout(() => {
setSubmitting(false);
}, 400); // finish the cycle in handler
}}
>
{({
errors,
touched,
handleSubmit,
getFieldProps, // contain values, handleChange, handleBlur
isSubmitting,
}) => (
<div className="row justify-content-center align-items-center">
<form onSubmit={handleSubmit} className="col-sm-3">
<div className="form-group mb-4">
<input
className={(touched.password && errors.password ? 'form-control is-invalid' : "form-control")}
type="password"
name="password"
{...getFieldProps('password')}
placeholder="새 비밀번호를 입력해주세요."
/>
{touched.password && errors.password ? (
<div className="invalid-feedback text-left">{errors.password}</ div>
) : null}
</div>
<div className="form-group mb-4">
<input
className={(touched.password2 && errors.password2 ? 'form-control is-invalid' : "form-control")}
type="password"
name="password2"
{...getFieldProps('password2')}
placeholder="새 비밀번호를 다시 입력해주세요."
/>
{touched.password2 && errors.password2 ? (
<div className="invalid-feedback text-left">{errors.password2}</div>
) : null}
</div>
<button type="submit" className="btn btn-light" disabled={isSubmitting}>저장</button>
<button class="btn btn-light"><Link to="/login">로그인</Link></button>
</form>
</div>
)}
</Formik>
</div >
);
}
export default Change;
\ No newline at end of file
import React, { useState } from 'react';
import { Field, Form, Formik } from 'formik';
import * as Yup from 'yup';
import axios from 'axios';
import 'bootstrap/dist/css/bootstrap.css';
import { Link, Redirect } from 'react-router-dom';
function Find() {
const [state, setState] = useState(false);
if (state) {
return <Redirect to="/change" />;
}
return (
<div className="d-flex flex-column justify-content-between vh-100">
<Formik
initialValues={{ id: '', question: '', answer: '' }}
validationSchema={Yup.object({
id: Yup.string()
.required('학번을 입력해주세요.'),
answer: Yup.string()
.required('답변을 입력해주세요.'),
})}
onSubmit={(values, { setSubmitting }) => {
axios({
method: 'post',
url: '/login/find',
data: values,
}).then(res => {
if (res.status === 404) return alert(res.data.error)
localStorage.setItem('id', res.data.users._id);
setState(true);
})
.catch(err => {
alert(err.error)
});
console.log(values);
setTimeout(() => {
setSubmitting(false);
}, 400); // finish the cycle in handler
}}
>
{({
errors,
touched,
handleSubmit,
getFieldProps, // contain values, handleChange, handleBlur
isSubmitting,
}) => (
<div className="row justify-content-center align-items-center">
<form onSubmit={handleSubmit} className="col-sm-3">
<div className="form-group mb-4">
<input
className={(touched.id && errors.id ? 'form-control is-invalid' : "form-control")}
type="number"
name="id"
{...getFieldProps('id')}
placeholder="Input Student Id"
/>
{touched.id && errors.id ? (
<div className="invalid-feedback text-left">{errors.id}</div>
) : null}
</div>
<div className="form-group mb-4">
<label>본인 확인 질문</label>
<Field as="select" name="question">
<option value="">질문을 선택하세요</option>
<option value="life">자신의 인생 좌우명은?</option>
<option value="school">자신이 다녔던 초등학교의 이름은?</option>
<option value="place">기억에 남는 추억의 장소는?</option>
</Field>
</div>
<div className="form-group mb-4">
<input
className={(touched.answer && errors.answer ? 'form-control is-invalid' : "form-control")}
type="text"
name="answer"
{...getFieldProps('answer')}
placeholder="Input answer" />
{touched.answer && errors.answer ? (
<div className="invalid-feedback text-left">{errors.answer}</div>
) : null}
</div>
<button type="submit" className="btn btn-dark" disabled={isSubmitting}>
submit
</button>
<button><Link to="/login">로그인</Link></button>
<button><Link to="/"></Link></button>
</form>
</div>
)}
</Formik>
</div>
);
}
// const withFormik = Formik({
// mapPropsToValues: () => ({ color: '' }),
// validationSchema: Yup.object().shape({
// color: Yup.string().required('Color is required!'),
// }),
// handleSubmit: (values, { setSubmitting }) => {
// setTimeout(() => {
// alert(JSON.stringify(values, null, 2));
// setSubmitting(false);
// }, 1000);
// },
// displayName: 'BasicForm', // helps with React DevTools
// });
// const MyForm = props => {
// const {
// values,
// touched,
// errors,
// dirty,
// isSubmitting,
// handleChange,
// handleBlur,
// handleSubmit,
// handleReset,
// } = props;
// return (
// <form onSubmit={handleSubmit}>
// <label htmlFor="email" style={{ display: 'block' }}>
// Color
// </label>
// <select
// name="color"
// value={values.color}
// onChange={handleChange}
// onBlur={handleBlur}
// style={{ display: 'block' }}
// >
// <option value="" label="Select a color" />
// <option value="red" label="red" />
// <option value="blue" label="blue" />
// <option value="green" label="green" />
// </select>
// {errors.color &&
// touched.color &&
// <div className="input-feedback">
// {errors.color}
// </div>}
// <button
// type="button"
// className="outline"
// onClick={handleReset}
// disabled={!dirty || isSubmitting}
// >
// Reset
// </button>
// <button type="submit" disabled={isSubmitting}>
// Submit
// </button>
// <DisplayFormikState {...props} />
// </form>
// );
// };
export default Find;
......@@ -10,6 +10,7 @@ function Home() {
home
<button><Link to="/login">로그인</Link></button>
<button><Link to="/signup">회원가입</Link></button>
<button><Link to="/change">비밀번호 수정</Link></button>
</div>
</div>
)
......
import React, { } from 'react';
import styled from 'styled-components';
import { Link } from 'react-router-dom';
const Log = styled.div`
background-color: #981e1e;
`
const Logo = styled.div`
background-color: #E76A6A;
`
function Login() {
return (
<div className="container-fluid">
<div className="row">
<Logo className="col-md-5 col-12">
<h2>고려대학교</h2>
<h4>대관 시스템</h4>
</Logo>
<Log className="col-md-7 col-12">
<form encType='multipart/form-data' className="mt-4" style={{ height: "100%" }}>
<div className="form-group">
<label for="title_input">학번</label>
<input className="form-control" id="title_input" name="title" type="text" required />
</div>
<div className="form-group">
<label for="author_input">비밀번호</label>
<input className="form-control" id="author_input" name="author" type="text" required />
</div>
<div className="form-group">
<Link to="/home">
<button className="btn" type="submit">로그인</button>
</Link>
</div>
</form>
</Log>
</div>
</div>
)
}
export default Login
......@@ -7,10 +7,10 @@ import axios from 'axios';
import 'bootstrap/dist/css/bootstrap.css';
const Log = styled.div`
background-color: #981e1e;
background-color: #7B031D;
`
const Logo = styled.div`
background-color: #E76A6A;
background-color: rgb(239, 218, 200);
`
......@@ -92,12 +92,12 @@ function Login() {
<div className="invalid-feedback text-left">{errors.password}</div>
) : null}
</div>
<button type="submit" className="btn btn-dark" disabled={isSubmitting}>
<button type="submit" class="btn btn-outline-light" disabled={isSubmitting}>
Login
</button>
<button><Link to="/home"></Link></button>
<button class="btn btn-outline-light"><Link to="/home"></Link></button>
<div></div>
<Link to="/signup">비밀번호를 잊으셨나요?</Link>
<Link to="/find">비밀번호를 잊으셨나요?</Link>
<div></div>
<Link to="/signup">회원이 아니신가요?</Link>
</form>
......
import React, { useState } from 'react';
import { Formik } from 'formik';
import { Field, Formik } from 'formik';
import * as Yup from 'yup';
import axios from 'axios';
import 'bootstrap/dist/css/bootstrap.css';
import { Link, Redirect } from 'react-router-dom';
function Signup() {
const [state, setState] = useState(false);
const [state, setState] = useState(false);
if (state) {
if (state) {
return <Redirect to="/login" />;
}
}
return (
<div className="d-flex flex-column justify-content-between vh-100">
<Formik
initialValues={{ name: '', id: '', password: '', password2: ''}}
initialValues={{ name: '', id: '', password: '', password2: '', question: '', answer: '' }}
validationSchema={Yup.object({
name: Yup.string()
.required('이름을 입력해주세요.'),
......@@ -28,21 +28,24 @@ function Signup() {
.required('비밀번호를 다시 입력해주세요.')
.min(8, '8자 이상 입력해주세요.')
.oneOf([Yup.ref("password"), null], '비밀번호가 일치하지 않습니다.'),
answer: Yup.string()
.required('답변을 입력해주세요.'),
})}
onSubmit={(values, { setSubmitting }) => {
axios({
method: 'post',
url: '/users',
data: values,
method: 'post',
url: '/users',
data: values,
}).then(res => {
if (res.status === 404) return alert(res.data.error)
alert("회원가입이 완료되었습니다!")
if (res.status === 404) return alert(res.data.error)
alert("회원가입이 완료되었습니다!")
setState(true);
setState(true);
})
.catch(err => {
alert(err.error)
});
.catch(err => {
alert(err.error)
});
setTimeout(() => {
setSubmitting(false);
......@@ -64,7 +67,7 @@ function Signup() {
type="text"
name="name"
{...getFieldProps('name')}
placeholder="Input Name" />
placeholder="이름" />
{touched.name && errors.name ? (
<div className="invalid-feedback text-left">{errors.name}</div>
) : null}
......@@ -72,10 +75,10 @@ function Signup() {
<div className="form-group mb-4">
<input
className={(touched.id && errors.id ? 'form-control is-invalid' : "form-control")}
type="number"
type="text"
name="id"
{...getFieldProps('id')}
placeholder="Input Student Id"
placeholder="학번/교번"
/>
{touched.id && errors.id ? (
<div className="invalid-feedback text-left">{errors.id}</div>
......@@ -87,7 +90,7 @@ function Signup() {
type="password"
name="password"
{...getFieldProps('password')}
placeholder="Input Password"
placeholder="비밀번호"
/>
{touched.password && errors.password ? (
<div className="invalid-feedback text-left">{errors.password}</div>
......@@ -99,17 +102,37 @@ function Signup() {
type="password"
name="password2"
{...getFieldProps('password2')}
placeholder="Input Confirm Password"
placeholder="비밀번호 확인"
/>
{touched.password2 && errors.password2 ? (
<div className="invalid-feedback text-left">{errors.password2}</div>
) : null}
</div>
<button type="submit" className="btn btn-dark" disabled={isSubmitting}>
<div className="form-group mb-4">
<label>본인 확인 질문</label>
<Field as="select" name="question">
<option value="">질문을 선택하세요</option>
<option value="life">자신의 인생 좌우명은?</option>
<option value="school">자신이 다녔던 초등학교의 이름은?</option>
<option value="place">기억에 남는 추억의 장소는?</option>
</Field>
</div>
<div className="form-group mb-4">
<input
className={(touched.answer && errors.answer ? 'form-control is-invalid' : "form-control")}
type="text"
name="answer"
{...getFieldProps('answer')}
placeholder="Input answer" />
{touched.answer && errors.answer ? (
<div className="invalid-feedback text-left">{errors.answer}</div>
) : null}
</div>
<button type="submit" class="btn btn-light" disabled={isSubmitting}>
Sign Up
</button>
<button><Link to="/login">로그인</Link></button>
<button><Link to="/"></Link></button>
<button class="btn btn-light"><Link to="/login">로그인</Link></button>
<button class="btn btn-light"><Link to="/"></Link></button>
</form>
</div>
)}
......
......@@ -10,6 +10,8 @@ import { PrivateRoute } from './Components/PrivateRoute';
import Login from './Pages/LoginPage';
import Home from './Pages/HomePage';
import Signup from './Pages/SignupPage';
import Find from './Pages/FindPage';
import Change from './Pages/ChangePage';
import Apply from './Pages/ApplyPage';
import Check from './Pages/CheckPage';
import Notice from './Pages/NoticePage';
......@@ -25,11 +27,14 @@ ReactDOM.render(
<Route path="/login" component={Login} />
<Route path="/home" component={Home} />
<Route path="/signup" component={Signup} />
<Route path="/find" component={Find} />
<Route path="/change" component={Change} />
<Route path="/apply" component={Apply} />
<Route path="/check" component={Check} />
<Route path="/notice" component={Notice} />
<Redirect path="/login" to="/" />
<Redirect path="/home" to="/" />
<Redirect path="/change/:id" to="/change"/>
</Switch>
</Router>,
document.getElementById('root')
......
......@@ -909,6 +909,3089 @@
"osenv": "^0.1.4"
}
},
"npm": {
"version": "6.14.8",
"resolved": "https://registry.npmjs.org/npm/-/npm-6.14.8.tgz",
"integrity": "sha512-HBZVBMYs5blsj94GTeQZel7s9odVuuSUHy1+AlZh7rPVux1os2ashvEGLy/STNK7vUjbrCg5Kq9/GXisJgdf6A==",
"requires": {
"JSONStream": "^1.3.5",
"abbrev": "~1.1.1",
"ansicolors": "~0.3.2",
"ansistyles": "~0.1.3",
"aproba": "^2.0.0",
"archy": "~1.0.0",
"bin-links": "^1.1.8",
"bluebird": "^3.5.5",
"byte-size": "^5.0.1",
"cacache": "^12.0.3",
"call-limit": "^1.1.1",
"chownr": "^1.1.4",
"ci-info": "^2.0.0",
"cli-columns": "^3.1.2",
"cli-table3": "^0.5.1",
"cmd-shim": "^3.0.3",
"columnify": "~1.5.4",
"config-chain": "^1.1.12",
"debuglog": "*",
"detect-indent": "~5.0.0",
"detect-newline": "^2.1.0",
"dezalgo": "~1.0.3",
"editor": "~1.0.0",
"figgy-pudding": "^3.5.1",
"find-npm-prefix": "^1.0.2",
"fs-vacuum": "~1.2.10",
"fs-write-stream-atomic": "~1.0.10",
"gentle-fs": "^2.3.1",
"glob": "^7.1.6",
"graceful-fs": "^4.2.4",
"has-unicode": "~2.0.1",
"hosted-git-info": "^2.8.8",
"iferr": "^1.0.2",
"imurmurhash": "*",
"infer-owner": "^1.0.4",
"inflight": "~1.0.6",
"inherits": "^2.0.4",
"ini": "^1.3.5",
"init-package-json": "^1.10.3",
"is-cidr": "^3.0.0",
"json-parse-better-errors": "^1.0.2",
"lazy-property": "~1.0.0",
"libcipm": "^4.0.8",
"libnpm": "^3.0.1",
"libnpmaccess": "^3.0.2",
"libnpmhook": "^5.0.3",
"libnpmorg": "^1.0.1",
"libnpmsearch": "^2.0.2",
"libnpmteam": "^1.0.2",
"libnpx": "^10.2.4",
"lock-verify": "^2.1.0",
"lockfile": "^1.0.4",
"lodash._baseindexof": "*",
"lodash._baseuniq": "~4.6.0",
"lodash._bindcallback": "*",
"lodash._cacheindexof": "*",
"lodash._createcache": "*",
"lodash._getnative": "*",
"lodash.clonedeep": "~4.5.0",
"lodash.restparam": "*",
"lodash.union": "~4.6.0",
"lodash.uniq": "~4.5.0",
"lodash.without": "~4.4.0",
"lru-cache": "^5.1.1",
"meant": "^1.0.2",
"mississippi": "^3.0.0",
"mkdirp": "^0.5.5",
"move-concurrently": "^1.0.1",
"node-gyp": "^5.1.0",
"nopt": "^4.0.3",
"normalize-package-data": "^2.5.0",
"npm-audit-report": "^1.3.3",
"npm-cache-filename": "~1.0.2",
"npm-install-checks": "^3.0.2",
"npm-lifecycle": "^3.1.5",
"npm-package-arg": "^6.1.1",
"npm-packlist": "^1.4.8",
"npm-pick-manifest": "^3.0.2",
"npm-profile": "^4.0.4",
"npm-registry-fetch": "^4.0.7",
"npm-user-validate": "~1.0.0",
"npmlog": "~4.1.2",
"once": "~1.4.0",
"opener": "^1.5.1",
"osenv": "^0.1.5",
"pacote": "^9.5.12",
"path-is-inside": "~1.0.2",
"promise-inflight": "~1.0.1",
"qrcode-terminal": "^0.12.0",
"query-string": "^6.8.2",
"qw": "~1.0.1",
"read": "~1.0.7",
"read-cmd-shim": "^1.0.5",
"read-installed": "~4.0.3",
"read-package-json": "^2.1.1",
"read-package-tree": "^5.3.1",
"readable-stream": "^3.6.0",
"readdir-scoped-modules": "^1.1.0",
"request": "^2.88.0",
"retry": "^0.12.0",
"rimraf": "^2.7.1",
"safe-buffer": "^5.1.2",
"semver": "^5.7.1",
"sha": "^3.0.0",
"slide": "~1.1.6",
"sorted-object": "~2.0.1",
"sorted-union-stream": "~2.1.3",
"ssri": "^6.0.1",
"stringify-package": "^1.0.1",
"tar": "^4.4.13",
"text-table": "~0.2.0",
"tiny-relative-date": "^1.3.0",
"uid-number": "0.0.6",
"umask": "~1.1.0",
"unique-filename": "^1.1.1",
"unpipe": "~1.0.0",
"update-notifier": "^2.5.0",
"uuid": "^3.3.3",
"validate-npm-package-license": "^3.0.4",
"validate-npm-package-name": "~3.0.0",
"which": "^1.3.1",
"worker-farm": "^1.7.0",
"write-file-atomic": "^2.4.3"
},
"dependencies": {
"JSONStream": {
"version": "1.3.5",
"bundled": true,
"requires": {
"jsonparse": "^1.2.0",
"through": ">=2.2.7 <3"
}
},
"abbrev": {
"version": "1.1.1",
"bundled": true
},
"agent-base": {
"version": "4.3.0",
"bundled": true,
"requires": {
"es6-promisify": "^5.0.0"
}
},
"agentkeepalive": {
"version": "3.5.2",
"bundled": true,
"requires": {
"humanize-ms": "^1.2.1"
}
},
"ajv": {
"version": "5.5.2",
"bundled": true,
"requires": {
"co": "^4.6.0",
"fast-deep-equal": "^1.0.0",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.3.0"
}
},
"ansi-align": {
"version": "2.0.0",
"bundled": true,
"requires": {
"string-width": "^2.0.0"
}
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
},
"ansi-styles": {
"version": "3.2.1",
"bundled": true,
"requires": {
"color-convert": "^1.9.0"
}
},
"ansicolors": {
"version": "0.3.2",
"bundled": true
},
"ansistyles": {
"version": "0.1.3",
"bundled": true
},
"aproba": {
"version": "2.0.0",
"bundled": true
},
"archy": {
"version": "1.0.0",
"bundled": true
},
"are-we-there-yet": {
"version": "1.1.4",
"bundled": true,
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
},
"dependencies": {
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"asap": {
"version": "2.0.6",
"bundled": true
},
"asn1": {
"version": "0.2.4",
"bundled": true,
"requires": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"version": "1.0.0",
"bundled": true
},
"asynckit": {
"version": "0.4.0",
"bundled": true
},
"aws-sign2": {
"version": "0.7.0",
"bundled": true
},
"aws4": {
"version": "1.8.0",
"bundled": true
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"bundled": true,
"optional": true,
"requires": {
"tweetnacl": "^0.14.3"
}
},
"bin-links": {
"version": "1.1.8",
"bundled": true,
"requires": {
"bluebird": "^3.5.3",
"cmd-shim": "^3.0.0",
"gentle-fs": "^2.3.0",
"graceful-fs": "^4.1.15",
"npm-normalize-package-bin": "^1.0.0",
"write-file-atomic": "^2.3.0"
}
},
"bluebird": {
"version": "3.5.5",
"bundled": true
},
"boxen": {
"version": "1.3.0",
"bundled": true,
"requires": {
"ansi-align": "^2.0.0",
"camelcase": "^4.0.0",
"chalk": "^2.0.1",
"cli-boxes": "^1.0.0",
"string-width": "^2.0.0",
"term-size": "^1.2.0",
"widest-line": "^2.0.0"
}
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"buffer-from": {
"version": "1.0.0",
"bundled": true
},
"builtins": {
"version": "1.0.3",
"bundled": true
},
"byline": {
"version": "5.0.0",
"bundled": true
},
"byte-size": {
"version": "5.0.1",
"bundled": true
},
"cacache": {
"version": "12.0.3",
"bundled": true,
"requires": {
"bluebird": "^3.5.5",
"chownr": "^1.1.1",
"figgy-pudding": "^3.5.1",
"glob": "^7.1.4",
"graceful-fs": "^4.1.15",
"infer-owner": "^1.0.3",
"lru-cache": "^5.1.1",
"mississippi": "^3.0.0",
"mkdirp": "^0.5.1",
"move-concurrently": "^1.0.1",
"promise-inflight": "^1.0.1",
"rimraf": "^2.6.3",
"ssri": "^6.0.1",
"unique-filename": "^1.1.1",
"y18n": "^4.0.0"
}
},
"call-limit": {
"version": "1.1.1",
"bundled": true
},
"camelcase": {
"version": "4.1.0",
"bundled": true
},
"capture-stack-trace": {
"version": "1.0.0",
"bundled": true
},
"caseless": {
"version": "0.12.0",
"bundled": true
},
"chalk": {
"version": "2.4.1",
"bundled": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"chownr": {
"version": "1.1.4",
"bundled": true
},
"ci-info": {
"version": "2.0.0",
"bundled": true
},
"cidr-regex": {
"version": "2.0.10",
"bundled": true,
"requires": {
"ip-regex": "^2.1.0"
}
},
"cli-boxes": {
"version": "1.0.0",
"bundled": true
},
"cli-columns": {
"version": "3.1.2",
"bundled": true,
"requires": {
"string-width": "^2.0.0",
"strip-ansi": "^3.0.1"
}
},
"cli-table3": {
"version": "0.5.1",
"bundled": true,
"requires": {
"colors": "^1.1.2",
"object-assign": "^4.1.0",
"string-width": "^2.1.1"
}
},
"cliui": {
"version": "5.0.0",
"bundled": true,
"requires": {
"string-width": "^3.1.0",
"strip-ansi": "^5.2.0",
"wrap-ansi": "^5.1.0"
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"bundled": true
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"bundled": true
},
"string-width": {
"version": "3.1.0",
"bundled": true,
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
}
},
"strip-ansi": {
"version": "5.2.0",
"bundled": true,
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"clone": {
"version": "1.0.4",
"bundled": true
},
"cmd-shim": {
"version": "3.0.3",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.2",
"mkdirp": "~0.5.0"
}
},
"co": {
"version": "4.6.0",
"bundled": true
},
"code-point-at": {
"version": "1.1.0",
"bundled": true
},
"color-convert": {
"version": "1.9.1",
"bundled": true,
"requires": {
"color-name": "^1.1.1"
}
},
"color-name": {
"version": "1.1.3",
"bundled": true
},
"colors": {
"version": "1.3.3",
"bundled": true,
"optional": true
},
"columnify": {
"version": "1.5.4",
"bundled": true,
"requires": {
"strip-ansi": "^3.0.0",
"wcwidth": "^1.0.0"
}
},
"combined-stream": {
"version": "1.0.6",
"bundled": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"concat-map": {
"version": "0.0.1",
"bundled": true
},
"concat-stream": {
"version": "1.6.2",
"bundled": true,
"requires": {
"buffer-from": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
},
"dependencies": {
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"config-chain": {
"version": "1.1.12",
"bundled": true,
"requires": {
"ini": "^1.3.4",
"proto-list": "~1.2.1"
}
},
"configstore": {
"version": "3.1.5",
"bundled": true,
"requires": {
"dot-prop": "^4.2.1",
"graceful-fs": "^4.1.2",
"make-dir": "^1.0.0",
"unique-string": "^1.0.0",
"write-file-atomic": "^2.0.0",
"xdg-basedir": "^3.0.0"
}
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true
},
"copy-concurrently": {
"version": "1.0.5",
"bundled": true,
"requires": {
"aproba": "^1.1.1",
"fs-write-stream-atomic": "^1.0.8",
"iferr": "^0.1.5",
"mkdirp": "^0.5.1",
"rimraf": "^2.5.4",
"run-queue": "^1.0.0"
},
"dependencies": {
"aproba": {
"version": "1.2.0",
"bundled": true
},
"iferr": {
"version": "0.1.5",
"bundled": true
}
}
},
"core-util-is": {
"version": "1.0.2",
"bundled": true
},
"create-error-class": {
"version": "3.0.2",
"bundled": true,
"requires": {
"capture-stack-trace": "^1.0.0"
}
},
"cross-spawn": {
"version": "5.1.0",
"bundled": true,
"requires": {
"lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
},
"dependencies": {
"lru-cache": {
"version": "4.1.5",
"bundled": true,
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"yallist": {
"version": "2.1.2",
"bundled": true
}
}
},
"crypto-random-string": {
"version": "1.0.0",
"bundled": true
},
"cyclist": {
"version": "0.2.2",
"bundled": true
},
"dashdash": {
"version": "1.14.1",
"bundled": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"debug": {
"version": "3.1.0",
"bundled": true,
"requires": {
"ms": "2.0.0"
},
"dependencies": {
"ms": {
"version": "2.0.0",
"bundled": true
}
}
},
"debuglog": {
"version": "1.0.1",
"bundled": true
},
"decamelize": {
"version": "1.2.0",
"bundled": true
},
"decode-uri-component": {
"version": "0.2.0",
"bundled": true
},
"deep-extend": {
"version": "0.6.0",
"bundled": true
},
"defaults": {
"version": "1.0.3",
"bundled": true,
"requires": {
"clone": "^1.0.2"
}
},
"define-properties": {
"version": "1.1.3",
"bundled": true,
"requires": {
"object-keys": "^1.0.12"
}
},
"delayed-stream": {
"version": "1.0.0",
"bundled": true
},
"delegates": {
"version": "1.0.0",
"bundled": true
},
"detect-indent": {
"version": "5.0.0",
"bundled": true
},
"detect-newline": {
"version": "2.1.0",
"bundled": true
},
"dezalgo": {
"version": "1.0.3",
"bundled": true,
"requires": {
"asap": "^2.0.0",
"wrappy": "1"
}
},
"dot-prop": {
"version": "4.2.1",
"bundled": true,
"requires": {
"is-obj": "^1.0.0"
}
},
"dotenv": {
"version": "5.0.1",
"bundled": true
},
"duplexer3": {
"version": "0.1.4",
"bundled": true
},
"duplexify": {
"version": "3.6.0",
"bundled": true,
"requires": {
"end-of-stream": "^1.0.0",
"inherits": "^2.0.1",
"readable-stream": "^2.0.0",
"stream-shift": "^1.0.0"
},
"dependencies": {
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"ecc-jsbn": {
"version": "0.1.2",
"bundled": true,
"optional": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"editor": {
"version": "1.0.0",
"bundled": true
},
"emoji-regex": {
"version": "7.0.3",
"bundled": true
},
"encoding": {
"version": "0.1.12",
"bundled": true,
"requires": {
"iconv-lite": "~0.4.13"
}
},
"end-of-stream": {
"version": "1.4.1",
"bundled": true,
"requires": {
"once": "^1.4.0"
}
},
"env-paths": {
"version": "2.2.0",
"bundled": true
},
"err-code": {
"version": "1.1.2",
"bundled": true
},
"errno": {
"version": "0.1.7",
"bundled": true,
"requires": {
"prr": "~1.0.1"
}
},
"es-abstract": {
"version": "1.12.0",
"bundled": true,
"requires": {
"es-to-primitive": "^1.1.1",
"function-bind": "^1.1.1",
"has": "^1.0.1",
"is-callable": "^1.1.3",
"is-regex": "^1.0.4"
}
},
"es-to-primitive": {
"version": "1.2.0",
"bundled": true,
"requires": {
"is-callable": "^1.1.4",
"is-date-object": "^1.0.1",
"is-symbol": "^1.0.2"
}
},
"es6-promise": {
"version": "4.2.8",
"bundled": true
},
"es6-promisify": {
"version": "5.0.0",
"bundled": true,
"requires": {
"es6-promise": "^4.0.3"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"bundled": true
},
"execa": {
"version": "0.7.0",
"bundled": true,
"requires": {
"cross-spawn": "^5.0.1",
"get-stream": "^3.0.0",
"is-stream": "^1.1.0",
"npm-run-path": "^2.0.0",
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
},
"dependencies": {
"get-stream": {
"version": "3.0.0",
"bundled": true
}
}
},
"extend": {
"version": "3.0.2",
"bundled": true
},
"extsprintf": {
"version": "1.3.0",
"bundled": true
},
"fast-deep-equal": {
"version": "1.1.0",
"bundled": true
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"bundled": true
},
"figgy-pudding": {
"version": "3.5.1",
"bundled": true
},
"find-npm-prefix": {
"version": "1.0.2",
"bundled": true
},
"flush-write-stream": {
"version": "1.0.3",
"bundled": true,
"requires": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.4"
},
"dependencies": {
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"forever-agent": {
"version": "0.6.1",
"bundled": true
},
"form-data": {
"version": "2.3.2",
"bundled": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "1.0.6",
"mime-types": "^2.1.12"
}
},
"from2": {
"version": "2.3.0",
"bundled": true,
"requires": {
"inherits": "^2.0.1",
"readable-stream": "^2.0.0"
},
"dependencies": {
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"fs-minipass": {
"version": "1.2.7",
"bundled": true,
"requires": {
"minipass": "^2.6.0"
},
"dependencies": {
"minipass": {
"version": "2.9.0",
"bundled": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
}
}
},
"fs-vacuum": {
"version": "1.2.10",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.2",
"path-is-inside": "^1.0.1",
"rimraf": "^2.5.2"
}
},
"fs-write-stream-atomic": {
"version": "1.0.10",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.2",
"iferr": "^0.1.5",
"imurmurhash": "^0.1.4",
"readable-stream": "1 || 2"
},
"dependencies": {
"iferr": {
"version": "0.1.5",
"bundled": true
},
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true
},
"function-bind": {
"version": "1.1.1",
"bundled": true
},
"gauge": {
"version": "2.7.4",
"bundled": true,
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
},
"dependencies": {
"aproba": {
"version": "1.2.0",
"bundled": true
},
"string-width": {
"version": "1.0.2",
"bundled": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
}
}
},
"genfun": {
"version": "5.0.0",
"bundled": true
},
"gentle-fs": {
"version": "2.3.1",
"bundled": true,
"requires": {
"aproba": "^1.1.2",
"chownr": "^1.1.2",
"cmd-shim": "^3.0.3",
"fs-vacuum": "^1.2.10",
"graceful-fs": "^4.1.11",
"iferr": "^0.1.5",
"infer-owner": "^1.0.4",
"mkdirp": "^0.5.1",
"path-is-inside": "^1.0.2",
"read-cmd-shim": "^1.0.1",
"slide": "^1.1.6"
},
"dependencies": {
"aproba": {
"version": "1.2.0",
"bundled": true
},
"iferr": {
"version": "0.1.5",
"bundled": true
}
}
},
"get-caller-file": {
"version": "2.0.5",
"bundled": true
},
"get-stream": {
"version": "4.1.0",
"bundled": true,
"requires": {
"pump": "^3.0.0"
}
},
"getpass": {
"version": "0.1.7",
"bundled": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.6",
"bundled": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"global-dirs": {
"version": "0.1.1",
"bundled": true,
"requires": {
"ini": "^1.3.4"
}
},
"got": {
"version": "6.7.1",
"bundled": true,
"requires": {
"create-error-class": "^3.0.0",
"duplexer3": "^0.1.4",
"get-stream": "^3.0.0",
"is-redirect": "^1.0.0",
"is-retry-allowed": "^1.0.0",
"is-stream": "^1.0.0",
"lowercase-keys": "^1.0.0",
"safe-buffer": "^5.0.1",
"timed-out": "^4.0.0",
"unzip-response": "^2.0.1",
"url-parse-lax": "^1.0.0"
},
"dependencies": {
"get-stream": {
"version": "3.0.0",
"bundled": true
}
}
},
"graceful-fs": {
"version": "4.2.4",
"bundled": true
},
"har-schema": {
"version": "2.0.0",
"bundled": true
},
"har-validator": {
"version": "5.1.0",
"bundled": true,
"requires": {
"ajv": "^5.3.0",
"har-schema": "^2.0.0"
}
},
"has": {
"version": "1.0.3",
"bundled": true,
"requires": {
"function-bind": "^1.1.1"
}
},
"has-flag": {
"version": "3.0.0",
"bundled": true
},
"has-symbols": {
"version": "1.0.0",
"bundled": true
},
"has-unicode": {
"version": "2.0.1",
"bundled": true
},
"hosted-git-info": {
"version": "2.8.8",
"bundled": true
},
"http-cache-semantics": {
"version": "3.8.1",
"bundled": true
},
"http-proxy-agent": {
"version": "2.1.0",
"bundled": true,
"requires": {
"agent-base": "4",
"debug": "3.1.0"
}
},
"http-signature": {
"version": "1.2.0",
"bundled": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"https-proxy-agent": {
"version": "2.2.4",
"bundled": true,
"requires": {
"agent-base": "^4.3.0",
"debug": "^3.1.0"
}
},
"humanize-ms": {
"version": "1.2.1",
"bundled": true,
"requires": {
"ms": "^2.0.0"
}
},
"iconv-lite": {
"version": "0.4.23",
"bundled": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"iferr": {
"version": "1.0.2",
"bundled": true
},
"ignore-walk": {
"version": "3.0.3",
"bundled": true,
"requires": {
"minimatch": "^3.0.4"
}
},
"import-lazy": {
"version": "2.1.0",
"bundled": true
},
"imurmurhash": {
"version": "0.1.4",
"bundled": true
},
"infer-owner": {
"version": "1.0.4",
"bundled": true
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"bundled": true
},
"ini": {
"version": "1.3.5",
"bundled": true
},
"init-package-json": {
"version": "1.10.3",
"bundled": true,
"requires": {
"glob": "^7.1.1",
"npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0",
"promzard": "^0.3.0",
"read": "~1.0.1",
"read-package-json": "1 || 2",
"semver": "2.x || 3.x || 4 || 5",
"validate-npm-package-license": "^3.0.1",
"validate-npm-package-name": "^3.0.0"
}
},
"ip": {
"version": "1.1.5",
"bundled": true
},
"ip-regex": {
"version": "2.1.0",
"bundled": true
},
"is-callable": {
"version": "1.1.4",
"bundled": true
},
"is-ci": {
"version": "1.2.1",
"bundled": true,
"requires": {
"ci-info": "^1.5.0"
},
"dependencies": {
"ci-info": {
"version": "1.6.0",
"bundled": true
}
}
},
"is-cidr": {
"version": "3.0.0",
"bundled": true,
"requires": {
"cidr-regex": "^2.0.10"
}
},
"is-date-object": {
"version": "1.0.1",
"bundled": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"is-installed-globally": {
"version": "0.1.0",
"bundled": true,
"requires": {
"global-dirs": "^0.1.0",
"is-path-inside": "^1.0.0"
}
},
"is-npm": {
"version": "1.0.0",
"bundled": true
},
"is-obj": {
"version": "1.0.1",
"bundled": true
},
"is-path-inside": {
"version": "1.0.1",
"bundled": true,
"requires": {
"path-is-inside": "^1.0.1"
}
},
"is-redirect": {
"version": "1.0.0",
"bundled": true
},
"is-regex": {
"version": "1.0.4",
"bundled": true,
"requires": {
"has": "^1.0.1"
}
},
"is-retry-allowed": {
"version": "1.2.0",
"bundled": true
},
"is-stream": {
"version": "1.1.0",
"bundled": true
},
"is-symbol": {
"version": "1.0.2",
"bundled": true,
"requires": {
"has-symbols": "^1.0.0"
}
},
"is-typedarray": {
"version": "1.0.0",
"bundled": true
},
"isarray": {
"version": "1.0.0",
"bundled": true
},
"isexe": {
"version": "2.0.0",
"bundled": true
},
"isstream": {
"version": "0.1.2",
"bundled": true
},
"jsbn": {
"version": "0.1.1",
"bundled": true,
"optional": true
},
"json-parse-better-errors": {
"version": "1.0.2",
"bundled": true
},
"json-schema": {
"version": "0.2.3",
"bundled": true
},
"json-schema-traverse": {
"version": "0.3.1",
"bundled": true
},
"json-stringify-safe": {
"version": "5.0.1",
"bundled": true
},
"jsonparse": {
"version": "1.3.1",
"bundled": true
},
"jsprim": {
"version": "1.4.1",
"bundled": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"latest-version": {
"version": "3.1.0",
"bundled": true,
"requires": {
"package-json": "^4.0.0"
}
},
"lazy-property": {
"version": "1.0.0",
"bundled": true
},
"libcipm": {
"version": "4.0.8",
"bundled": true,
"requires": {
"bin-links": "^1.1.2",
"bluebird": "^3.5.1",
"figgy-pudding": "^3.5.1",
"find-npm-prefix": "^1.0.2",
"graceful-fs": "^4.1.11",
"ini": "^1.3.5",
"lock-verify": "^2.1.0",
"mkdirp": "^0.5.1",
"npm-lifecycle": "^3.0.0",
"npm-logical-tree": "^1.2.1",
"npm-package-arg": "^6.1.0",
"pacote": "^9.1.0",
"read-package-json": "^2.0.13",
"rimraf": "^2.6.2",
"worker-farm": "^1.6.0"
}
},
"libnpm": {
"version": "3.0.1",
"bundled": true,
"requires": {
"bin-links": "^1.1.2",
"bluebird": "^3.5.3",
"find-npm-prefix": "^1.0.2",
"libnpmaccess": "^3.0.2",
"libnpmconfig": "^1.2.1",
"libnpmhook": "^5.0.3",
"libnpmorg": "^1.0.1",
"libnpmpublish": "^1.1.2",
"libnpmsearch": "^2.0.2",
"libnpmteam": "^1.0.2",
"lock-verify": "^2.0.2",
"npm-lifecycle": "^3.0.0",
"npm-logical-tree": "^1.2.1",
"npm-package-arg": "^6.1.0",
"npm-profile": "^4.0.2",
"npm-registry-fetch": "^4.0.0",
"npmlog": "^4.1.2",
"pacote": "^9.5.3",
"read-package-json": "^2.0.13",
"stringify-package": "^1.0.0"
}
},
"libnpmaccess": {
"version": "3.0.2",
"bundled": true,
"requires": {
"aproba": "^2.0.0",
"get-stream": "^4.0.0",
"npm-package-arg": "^6.1.0",
"npm-registry-fetch": "^4.0.0"
}
},
"libnpmconfig": {
"version": "1.2.1",
"bundled": true,
"requires": {
"figgy-pudding": "^3.5.1",
"find-up": "^3.0.0",
"ini": "^1.3.5"
},
"dependencies": {
"find-up": {
"version": "3.0.0",
"bundled": true,
"requires": {
"locate-path": "^3.0.0"
}
},
"locate-path": {
"version": "3.0.0",
"bundled": true,
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
}
},
"p-limit": {
"version": "2.2.0",
"bundled": true,
"requires": {
"p-try": "^2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
"bundled": true,
"requires": {
"p-limit": "^2.0.0"
}
},
"p-try": {
"version": "2.2.0",
"bundled": true
}
}
},
"libnpmhook": {
"version": "5.0.3",
"bundled": true,
"requires": {
"aproba": "^2.0.0",
"figgy-pudding": "^3.4.1",
"get-stream": "^4.0.0",
"npm-registry-fetch": "^4.0.0"
}
},
"libnpmorg": {
"version": "1.0.1",
"bundled": true,
"requires": {
"aproba": "^2.0.0",
"figgy-pudding": "^3.4.1",
"get-stream": "^4.0.0",
"npm-registry-fetch": "^4.0.0"
}
},
"libnpmpublish": {
"version": "1.1.2",
"bundled": true,
"requires": {
"aproba": "^2.0.0",
"figgy-pudding": "^3.5.1",
"get-stream": "^4.0.0",
"lodash.clonedeep": "^4.5.0",
"normalize-package-data": "^2.4.0",
"npm-package-arg": "^6.1.0",
"npm-registry-fetch": "^4.0.0",
"semver": "^5.5.1",
"ssri": "^6.0.1"
}
},
"libnpmsearch": {
"version": "2.0.2",
"bundled": true,
"requires": {
"figgy-pudding": "^3.5.1",
"get-stream": "^4.0.0",
"npm-registry-fetch": "^4.0.0"
}
},
"libnpmteam": {
"version": "1.0.2",
"bundled": true,
"requires": {
"aproba": "^2.0.0",
"figgy-pudding": "^3.4.1",
"get-stream": "^4.0.0",
"npm-registry-fetch": "^4.0.0"
}
},
"libnpx": {
"version": "10.2.4",
"bundled": true,
"requires": {
"dotenv": "^5.0.1",
"npm-package-arg": "^6.0.0",
"rimraf": "^2.6.2",
"safe-buffer": "^5.1.0",
"update-notifier": "^2.3.0",
"which": "^1.3.0",
"y18n": "^4.0.0",
"yargs": "^14.2.3"
}
},
"lock-verify": {
"version": "2.1.0",
"bundled": true,
"requires": {
"npm-package-arg": "^6.1.0",
"semver": "^5.4.1"
}
},
"lockfile": {
"version": "1.0.4",
"bundled": true,
"requires": {
"signal-exit": "^3.0.2"
}
},
"lodash._baseindexof": {
"version": "3.1.0",
"bundled": true
},
"lodash._baseuniq": {
"version": "4.6.0",
"bundled": true,
"requires": {
"lodash._createset": "~4.0.0",
"lodash._root": "~3.0.0"
}
},
"lodash._bindcallback": {
"version": "3.0.1",
"bundled": true
},
"lodash._cacheindexof": {
"version": "3.0.2",
"bundled": true
},
"lodash._createcache": {
"version": "3.1.2",
"bundled": true,
"requires": {
"lodash._getnative": "^3.0.0"
}
},
"lodash._createset": {
"version": "4.0.3",
"bundled": true
},
"lodash._getnative": {
"version": "3.9.1",
"bundled": true
},
"lodash._root": {
"version": "3.0.1",
"bundled": true
},
"lodash.clonedeep": {
"version": "4.5.0",
"bundled": true
},
"lodash.restparam": {
"version": "3.6.1",
"bundled": true
},
"lodash.union": {
"version": "4.6.0",
"bundled": true
},
"lodash.uniq": {
"version": "4.5.0",
"bundled": true
},
"lodash.without": {
"version": "4.4.0",
"bundled": true
},
"lowercase-keys": {
"version": "1.0.1",
"bundled": true
},
"lru-cache": {
"version": "5.1.1",
"bundled": true,
"requires": {
"yallist": "^3.0.2"
}
},
"make-dir": {
"version": "1.3.0",
"bundled": true,
"requires": {
"pify": "^3.0.0"
}
},
"make-fetch-happen": {
"version": "5.0.2",
"bundled": true,
"requires": {
"agentkeepalive": "^3.4.1",
"cacache": "^12.0.0",
"http-cache-semantics": "^3.8.1",
"http-proxy-agent": "^2.1.0",
"https-proxy-agent": "^2.2.3",
"lru-cache": "^5.1.1",
"mississippi": "^3.0.0",
"node-fetch-npm": "^2.0.2",
"promise-retry": "^1.1.1",
"socks-proxy-agent": "^4.0.0",
"ssri": "^6.0.0"
}
},
"meant": {
"version": "1.0.2",
"bundled": true
},
"mime-db": {
"version": "1.35.0",
"bundled": true
},
"mime-types": {
"version": "2.1.19",
"bundled": true,
"requires": {
"mime-db": "~1.35.0"
}
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "1.2.5",
"bundled": true
},
"minizlib": {
"version": "1.3.3",
"bundled": true,
"requires": {
"minipass": "^2.9.0"
},
"dependencies": {
"minipass": {
"version": "2.9.0",
"bundled": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
}
}
},
"mississippi": {
"version": "3.0.0",
"bundled": true,
"requires": {
"concat-stream": "^1.5.0",
"duplexify": "^3.4.2",
"end-of-stream": "^1.1.0",
"flush-write-stream": "^1.0.0",
"from2": "^2.1.0",
"parallel-transform": "^1.1.0",
"pump": "^3.0.0",
"pumpify": "^1.3.3",
"stream-each": "^1.1.0",
"through2": "^2.0.0"
}
},
"mkdirp": {
"version": "0.5.5",
"bundled": true,
"requires": {
"minimist": "^1.2.5"
},
"dependencies": {
"minimist": {
"version": "1.2.5",
"bundled": true
}
}
},
"move-concurrently": {
"version": "1.0.1",
"bundled": true,
"requires": {
"aproba": "^1.1.1",
"copy-concurrently": "^1.0.0",
"fs-write-stream-atomic": "^1.0.8",
"mkdirp": "^0.5.1",
"rimraf": "^2.5.4",
"run-queue": "^1.0.3"
},
"dependencies": {
"aproba": {
"version": "1.2.0",
"bundled": true
}
}
},
"ms": {
"version": "2.1.1",
"bundled": true
},
"mute-stream": {
"version": "0.0.7",
"bundled": true
},
"node-fetch-npm": {
"version": "2.0.2",
"bundled": true,
"requires": {
"encoding": "^0.1.11",
"json-parse-better-errors": "^1.0.0",
"safe-buffer": "^5.1.1"
}
},
"node-gyp": {
"version": "5.1.0",
"bundled": true,
"requires": {
"env-paths": "^2.2.0",
"glob": "^7.1.4",
"graceful-fs": "^4.2.2",
"mkdirp": "^0.5.1",
"nopt": "^4.0.1",
"npmlog": "^4.1.2",
"request": "^2.88.0",
"rimraf": "^2.6.3",
"semver": "^5.7.1",
"tar": "^4.4.12",
"which": "^1.3.1"
}
},
"nopt": {
"version": "4.0.3",
"bundled": true,
"requires": {
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"normalize-package-data": {
"version": "2.5.0",
"bundled": true,
"requires": {
"hosted-git-info": "^2.1.4",
"resolve": "^1.10.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
},
"dependencies": {
"resolve": {
"version": "1.10.0",
"bundled": true,
"requires": {
"path-parse": "^1.0.6"
}
}
}
},
"npm-audit-report": {
"version": "1.3.3",
"bundled": true,
"requires": {
"cli-table3": "^0.5.0",
"console-control-strings": "^1.1.0"
}
},
"npm-bundled": {
"version": "1.1.1",
"bundled": true,
"requires": {
"npm-normalize-package-bin": "^1.0.1"
}
},
"npm-cache-filename": {
"version": "1.0.2",
"bundled": true
},
"npm-install-checks": {
"version": "3.0.2",
"bundled": true,
"requires": {
"semver": "^2.3.0 || 3.x || 4 || 5"
}
},
"npm-lifecycle": {
"version": "3.1.5",
"bundled": true,
"requires": {
"byline": "^5.0.0",
"graceful-fs": "^4.1.15",
"node-gyp": "^5.0.2",
"resolve-from": "^4.0.0",
"slide": "^1.1.6",
"uid-number": "0.0.6",
"umask": "^1.1.0",
"which": "^1.3.1"
}
},
"npm-logical-tree": {
"version": "1.2.1",
"bundled": true
},
"npm-normalize-package-bin": {
"version": "1.0.1",
"bundled": true
},
"npm-package-arg": {
"version": "6.1.1",
"bundled": true,
"requires": {
"hosted-git-info": "^2.7.1",
"osenv": "^0.1.5",
"semver": "^5.6.0",
"validate-npm-package-name": "^3.0.0"
}
},
"npm-packlist": {
"version": "1.4.8",
"bundled": true,
"requires": {
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1",
"npm-normalize-package-bin": "^1.0.1"
}
},
"npm-pick-manifest": {
"version": "3.0.2",
"bundled": true,
"requires": {
"figgy-pudding": "^3.5.1",
"npm-package-arg": "^6.0.0",
"semver": "^5.4.1"
}
},
"npm-profile": {
"version": "4.0.4",
"bundled": true,
"requires": {
"aproba": "^1.1.2 || 2",
"figgy-pudding": "^3.4.1",
"npm-registry-fetch": "^4.0.0"
}
},
"npm-registry-fetch": {
"version": "4.0.7",
"bundled": true,
"requires": {
"JSONStream": "^1.3.4",
"bluebird": "^3.5.1",
"figgy-pudding": "^3.4.1",
"lru-cache": "^5.1.1",
"make-fetch-happen": "^5.0.0",
"npm-package-arg": "^6.1.0",
"safe-buffer": "^5.2.0"
},
"dependencies": {
"safe-buffer": {
"version": "5.2.1",
"bundled": true
}
}
},
"npm-run-path": {
"version": "2.0.2",
"bundled": true,
"requires": {
"path-key": "^2.0.0"
}
},
"npm-user-validate": {
"version": "1.0.0",
"bundled": true
},
"npmlog": {
"version": "4.1.2",
"bundled": true,
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true
},
"oauth-sign": {
"version": "0.9.0",
"bundled": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true
},
"object-keys": {
"version": "1.0.12",
"bundled": true
},
"object.getownpropertydescriptors": {
"version": "2.0.3",
"bundled": true,
"requires": {
"define-properties": "^1.1.2",
"es-abstract": "^1.5.1"
}
},
"once": {
"version": "1.4.0",
"bundled": true,
"requires": {
"wrappy": "1"
}
},
"opener": {
"version": "1.5.1",
"bundled": true
},
"os-homedir": {
"version": "1.0.2",
"bundled": true
},
"os-tmpdir": {
"version": "1.0.2",
"bundled": true
},
"osenv": {
"version": "0.1.5",
"bundled": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"p-finally": {
"version": "1.0.0",
"bundled": true
},
"package-json": {
"version": "4.0.1",
"bundled": true,
"requires": {
"got": "^6.7.1",
"registry-auth-token": "^3.0.1",
"registry-url": "^3.0.3",
"semver": "^5.1.0"
}
},
"pacote": {
"version": "9.5.12",
"bundled": true,
"requires": {
"bluebird": "^3.5.3",
"cacache": "^12.0.2",
"chownr": "^1.1.2",
"figgy-pudding": "^3.5.1",
"get-stream": "^4.1.0",
"glob": "^7.1.3",
"infer-owner": "^1.0.4",
"lru-cache": "^5.1.1",
"make-fetch-happen": "^5.0.0",
"minimatch": "^3.0.4",
"minipass": "^2.3.5",
"mississippi": "^3.0.0",
"mkdirp": "^0.5.1",
"normalize-package-data": "^2.4.0",
"npm-normalize-package-bin": "^1.0.0",
"npm-package-arg": "^6.1.0",
"npm-packlist": "^1.1.12",
"npm-pick-manifest": "^3.0.0",
"npm-registry-fetch": "^4.0.0",
"osenv": "^0.1.5",
"promise-inflight": "^1.0.1",
"promise-retry": "^1.1.1",
"protoduck": "^5.0.1",
"rimraf": "^2.6.2",
"safe-buffer": "^5.1.2",
"semver": "^5.6.0",
"ssri": "^6.0.1",
"tar": "^4.4.10",
"unique-filename": "^1.1.1",
"which": "^1.3.1"
},
"dependencies": {
"minipass": {
"version": "2.9.0",
"bundled": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
}
}
},
"parallel-transform": {
"version": "1.1.0",
"bundled": true,
"requires": {
"cyclist": "~0.2.2",
"inherits": "^2.0.3",
"readable-stream": "^2.1.5"
},
"dependencies": {
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"path-exists": {
"version": "3.0.0",
"bundled": true
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true
},
"path-is-inside": {
"version": "1.0.2",
"bundled": true
},
"path-key": {
"version": "2.0.1",
"bundled": true
},
"path-parse": {
"version": "1.0.6",
"bundled": true
},
"performance-now": {
"version": "2.1.0",
"bundled": true
},
"pify": {
"version": "3.0.0",
"bundled": true
},
"prepend-http": {
"version": "1.0.4",
"bundled": true
},
"process-nextick-args": {
"version": "2.0.0",
"bundled": true
},
"promise-inflight": {
"version": "1.0.1",
"bundled": true
},
"promise-retry": {
"version": "1.1.1",
"bundled": true,
"requires": {
"err-code": "^1.0.0",
"retry": "^0.10.0"
},
"dependencies": {
"retry": {
"version": "0.10.1",
"bundled": true
}
}
},
"promzard": {
"version": "0.3.0",
"bundled": true,
"requires": {
"read": "1"
}
},
"proto-list": {
"version": "1.2.4",
"bundled": true
},
"protoduck": {
"version": "5.0.1",
"bundled": true,
"requires": {
"genfun": "^5.0.0"
}
},
"prr": {
"version": "1.0.1",
"bundled": true
},
"pseudomap": {
"version": "1.0.2",
"bundled": true
},
"psl": {
"version": "1.1.29",
"bundled": true
},
"pump": {
"version": "3.0.0",
"bundled": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"pumpify": {
"version": "1.5.1",
"bundled": true,
"requires": {
"duplexify": "^3.6.0",
"inherits": "^2.0.3",
"pump": "^2.0.0"
},
"dependencies": {
"pump": {
"version": "2.0.1",
"bundled": true,
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
}
}
},
"punycode": {
"version": "1.4.1",
"bundled": true
},
"qrcode-terminal": {
"version": "0.12.0",
"bundled": true
},
"qs": {
"version": "6.5.2",
"bundled": true
},
"query-string": {
"version": "6.8.2",
"bundled": true,
"requires": {
"decode-uri-component": "^0.2.0",
"split-on-first": "^1.0.0",
"strict-uri-encode": "^2.0.0"
}
},
"qw": {
"version": "1.0.1",
"bundled": true
},
"rc": {
"version": "1.2.8",
"bundled": true,
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
}
},
"read": {
"version": "1.0.7",
"bundled": true,
"requires": {
"mute-stream": "~0.0.4"
}
},
"read-cmd-shim": {
"version": "1.0.5",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.2"
}
},
"read-installed": {
"version": "4.0.3",
"bundled": true,
"requires": {
"debuglog": "^1.0.1",
"graceful-fs": "^4.1.2",
"read-package-json": "^2.0.0",
"readdir-scoped-modules": "^1.0.0",
"semver": "2 || 3 || 4 || 5",
"slide": "~1.1.3",
"util-extend": "^1.0.1"
}
},
"read-package-json": {
"version": "2.1.1",
"bundled": true,
"requires": {
"glob": "^7.1.1",
"graceful-fs": "^4.1.2",
"json-parse-better-errors": "^1.0.1",
"normalize-package-data": "^2.0.0",
"npm-normalize-package-bin": "^1.0.0"
}
},
"read-package-tree": {
"version": "5.3.1",
"bundled": true,
"requires": {
"read-package-json": "^2.0.0",
"readdir-scoped-modules": "^1.0.0",
"util-promisify": "^2.1.0"
}
},
"readable-stream": {
"version": "3.6.0",
"bundled": true,
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
}
},
"readdir-scoped-modules": {
"version": "1.1.0",
"bundled": true,
"requires": {
"debuglog": "^1.0.1",
"dezalgo": "^1.0.0",
"graceful-fs": "^4.1.2",
"once": "^1.3.0"
}
},
"registry-auth-token": {
"version": "3.4.0",
"bundled": true,
"requires": {
"rc": "^1.1.6",
"safe-buffer": "^5.0.1"
}
},
"registry-url": {
"version": "3.1.0",
"bundled": true,
"requires": {
"rc": "^1.0.1"
}
},
"request": {
"version": "2.88.0",
"bundled": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.0",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.4.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
}
},
"require-directory": {
"version": "2.1.1",
"bundled": true
},
"require-main-filename": {
"version": "2.0.0",
"bundled": true
},
"resolve-from": {
"version": "4.0.0",
"bundled": true
},
"retry": {
"version": "0.12.0",
"bundled": true
},
"rimraf": {
"version": "2.7.1",
"bundled": true,
"requires": {
"glob": "^7.1.3"
}
},
"run-queue": {
"version": "1.0.3",
"bundled": true,
"requires": {
"aproba": "^1.1.1"
},
"dependencies": {
"aproba": {
"version": "1.2.0",
"bundled": true
}
}
},
"safe-buffer": {
"version": "5.1.2",
"bundled": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true
},
"semver": {
"version": "5.7.1",
"bundled": true
},
"semver-diff": {
"version": "2.1.0",
"bundled": true,
"requires": {
"semver": "^5.0.3"
}
},
"set-blocking": {
"version": "2.0.0",
"bundled": true
},
"sha": {
"version": "3.0.0",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.2"
}
},
"shebang-command": {
"version": "1.2.0",
"bundled": true,
"requires": {
"shebang-regex": "^1.0.0"
}
},
"shebang-regex": {
"version": "1.0.0",
"bundled": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true
},
"slide": {
"version": "1.1.6",
"bundled": true
},
"smart-buffer": {
"version": "4.1.0",
"bundled": true
},
"socks": {
"version": "2.3.3",
"bundled": true,
"requires": {
"ip": "1.1.5",
"smart-buffer": "^4.1.0"
}
},
"socks-proxy-agent": {
"version": "4.0.2",
"bundled": true,
"requires": {
"agent-base": "~4.2.1",
"socks": "~2.3.2"
},
"dependencies": {
"agent-base": {
"version": "4.2.1",
"bundled": true,
"requires": {
"es6-promisify": "^5.0.0"
}
}
}
},
"sorted-object": {
"version": "2.0.1",
"bundled": true
},
"sorted-union-stream": {
"version": "2.1.3",
"bundled": true,
"requires": {
"from2": "^1.3.0",
"stream-iterate": "^1.1.0"
},
"dependencies": {
"from2": {
"version": "1.3.0",
"bundled": true,
"requires": {
"inherits": "~2.0.1",
"readable-stream": "~1.1.10"
}
},
"isarray": {
"version": "0.0.1",
"bundled": true
},
"readable-stream": {
"version": "1.1.14",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"isarray": "0.0.1",
"string_decoder": "~0.10.x"
}
},
"string_decoder": {
"version": "0.10.31",
"bundled": true
}
}
},
"spdx-correct": {
"version": "3.0.0",
"bundled": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
"version": "2.1.0",
"bundled": true
},
"spdx-expression-parse": {
"version": "3.0.0",
"bundled": true,
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-license-ids": {
"version": "3.0.5",
"bundled": true
},
"split-on-first": {
"version": "1.1.0",
"bundled": true
},
"sshpk": {
"version": "1.14.2",
"bundled": true,
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
"ssri": {
"version": "6.0.1",
"bundled": true,
"requires": {
"figgy-pudding": "^3.5.1"
}
},
"stream-each": {
"version": "1.2.2",
"bundled": true,
"requires": {
"end-of-stream": "^1.1.0",
"stream-shift": "^1.0.0"
}
},
"stream-iterate": {
"version": "1.2.0",
"bundled": true,
"requires": {
"readable-stream": "^2.1.5",
"stream-shift": "^1.0.0"
},
"dependencies": {
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"stream-shift": {
"version": "1.0.0",
"bundled": true
},
"strict-uri-encode": {
"version": "2.0.0",
"bundled": true
},
"string-width": {
"version": "2.1.1",
"bundled": true,
"requires": {
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"bundled": true
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"bundled": true
},
"strip-ansi": {
"version": "4.0.0",
"bundled": true,
"requires": {
"ansi-regex": "^3.0.0"
}
}
}
},
"string_decoder": {
"version": "1.3.0",
"bundled": true,
"requires": {
"safe-buffer": "~5.2.0"
},
"dependencies": {
"safe-buffer": {
"version": "5.2.0",
"bundled": true
}
}
},
"stringify-package": {
"version": "1.0.1",
"bundled": true
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-eof": {
"version": "1.0.0",
"bundled": true
},
"strip-json-comments": {
"version": "2.0.1",
"bundled": true
},
"supports-color": {
"version": "5.4.0",
"bundled": true,
"requires": {
"has-flag": "^3.0.0"
}
},
"tar": {
"version": "4.4.13",
"bundled": true,
"requires": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.8.6",
"minizlib": "^1.2.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.3"
},
"dependencies": {
"minipass": {
"version": "2.9.0",
"bundled": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
}
}
},
"term-size": {
"version": "1.2.0",
"bundled": true,
"requires": {
"execa": "^0.7.0"
}
},
"text-table": {
"version": "0.2.0",
"bundled": true
},
"through": {
"version": "2.3.8",
"bundled": true
},
"through2": {
"version": "2.0.3",
"bundled": true,
"requires": {
"readable-stream": "^2.1.5",
"xtend": "~4.0.1"
},
"dependencies": {
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"timed-out": {
"version": "4.0.1",
"bundled": true
},
"tiny-relative-date": {
"version": "1.3.0",
"bundled": true
},
"tough-cookie": {
"version": "2.4.3",
"bundled": true,
"requires": {
"psl": "^1.1.24",
"punycode": "^1.4.1"
}
},
"tunnel-agent": {
"version": "0.6.0",
"bundled": true,
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"bundled": true,
"optional": true
},
"typedarray": {
"version": "0.0.6",
"bundled": true
},
"uid-number": {
"version": "0.0.6",
"bundled": true
},
"umask": {
"version": "1.1.0",
"bundled": true
},
"unique-filename": {
"version": "1.1.1",
"bundled": true,
"requires": {
"unique-slug": "^2.0.0"
}
},
"unique-slug": {
"version": "2.0.0",
"bundled": true,
"requires": {
"imurmurhash": "^0.1.4"
}
},
"unique-string": {
"version": "1.0.0",
"bundled": true,
"requires": {
"crypto-random-string": "^1.0.0"
}
},
"unpipe": {
"version": "1.0.0",
"bundled": true
},
"unzip-response": {
"version": "2.0.1",
"bundled": true
},
"update-notifier": {
"version": "2.5.0",
"bundled": true,
"requires": {
"boxen": "^1.2.1",
"chalk": "^2.0.1",
"configstore": "^3.0.0",
"import-lazy": "^2.1.0",
"is-ci": "^1.0.10",
"is-installed-globally": "^0.1.0",
"is-npm": "^1.0.0",
"latest-version": "^3.0.0",
"semver-diff": "^2.0.0",
"xdg-basedir": "^3.0.0"
}
},
"url-parse-lax": {
"version": "1.0.0",
"bundled": true,
"requires": {
"prepend-http": "^1.0.1"
}
},
"util-deprecate": {
"version": "1.0.2",
"bundled": true
},
"util-extend": {
"version": "1.0.3",
"bundled": true
},
"util-promisify": {
"version": "2.1.0",
"bundled": true,
"requires": {
"object.getownpropertydescriptors": "^2.0.3"
}
},
"uuid": {
"version": "3.3.3",
"bundled": true
},
"validate-npm-package-license": {
"version": "3.0.4",
"bundled": true,
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
"validate-npm-package-name": {
"version": "3.0.0",
"bundled": true,
"requires": {
"builtins": "^1.0.3"
}
},
"verror": {
"version": "1.10.0",
"bundled": true,
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"wcwidth": {
"version": "1.0.1",
"bundled": true,
"requires": {
"defaults": "^1.0.3"
}
},
"which": {
"version": "1.3.1",
"bundled": true,
"requires": {
"isexe": "^2.0.0"
}
},
"which-module": {
"version": "2.0.0",
"bundled": true
},
"wide-align": {
"version": "1.1.2",
"bundled": true,
"requires": {
"string-width": "^1.0.2"
},
"dependencies": {
"string-width": {
"version": "1.0.2",
"bundled": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
}
}
},
"widest-line": {
"version": "2.0.1",
"bundled": true,
"requires": {
"string-width": "^2.1.1"
}
},
"worker-farm": {
"version": "1.7.0",
"bundled": true,
"requires": {
"errno": "~0.1.7"
}
},
"wrap-ansi": {
"version": "5.1.0",
"bundled": true,
"requires": {
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
"strip-ansi": "^5.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"bundled": true
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"bundled": true
},
"string-width": {
"version": "3.1.0",
"bundled": true,
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
}
},
"strip-ansi": {
"version": "5.2.0",
"bundled": true,
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true
},
"write-file-atomic": {
"version": "2.4.3",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.2"
}
},
"xdg-basedir": {
"version": "3.0.0",
"bundled": true
},
"xtend": {
"version": "4.0.1",
"bundled": true
},
"y18n": {
"version": "4.0.0",
"bundled": true
},
"yallist": {
"version": "3.0.3",
"bundled": true
},
"yargs": {
"version": "14.2.3",
"bundled": true,
"requires": {
"cliui": "^5.0.0",
"decamelize": "^1.2.0",
"find-up": "^3.0.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^3.0.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^15.0.1"
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"bundled": true
},
"find-up": {
"version": "3.0.0",
"bundled": true,
"requires": {
"locate-path": "^3.0.0"
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"bundled": true
},
"locate-path": {
"version": "3.0.0",
"bundled": true,
"requires": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
}
},
"p-limit": {
"version": "2.3.0",
"bundled": true,
"requires": {
"p-try": "^2.0.0"
}
},
"p-locate": {
"version": "3.0.0",
"bundled": true,
"requires": {
"p-limit": "^2.0.0"
}
},
"p-try": {
"version": "2.2.0",
"bundled": true
},
"string-width": {
"version": "3.1.0",
"bundled": true,
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
}
},
"strip-ansi": {
"version": "5.2.0",
"bundled": true,
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"yargs-parser": {
"version": "15.0.1",
"bundled": true,
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
},
"dependencies": {
"camelcase": {
"version": "5.3.1",
"bundled": true
}
}
}
}
},
"npm-bundled": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
......
......@@ -15,6 +15,7 @@
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.10.6",
"morgan": "~1.9.1",
"npm": "^6.14.8",
"pug": "^3.0.0"
}
}
......@@ -2,6 +2,7 @@ const express = require('express');
const User = require('../schemas/user');
const bcrypt = require("bcrypt");
const jwt = require('jsonwebtoken');
const user = require('../schemas/user');
const router = express.Router();
......@@ -23,7 +24,7 @@ router.post('/', function (req, res, next) {
if (err) return res.status(500).json({ error: err });
if (!users) {
return res.status(404).json({ error: '해당 아이디가 존재하지 않습니다.' });
return res.status(404).json({ error: '해당 학번이 존재하지 않습니다.' });
}
bcrypt.compare(req.body.password, users.password, function (err, result) {
......@@ -49,4 +50,21 @@ router.post('/', function (req, res, next) {
})
});
router.post('/find', function (req, res, next) {
console.log('/find post request', req.body)
User.findOne({ id: req.body.id }, 'id question answer', function (err, users) {
console.log('/user inform', users)
if (err) return res.status(500).json({ error: err });
if (users.question === req.body.question) {
if (users.answer === req.body.answer) {
return res.status(201).json({users});
}
return res.status(404).json({ error: '답변이 일치하지 않습니다.'});
}
return res.status(404).json({error: '질문을 다시 선택해주세요.'});
})
});
module.exports = router;
......@@ -11,13 +11,15 @@ router.post('/', function (req, res, next) {
if (err) return res.status(500).json({ error: err });
if (users) {
return res.status(404).json({ error: '이미 존재하는 아이디입니다.' })
return res.status(404).json({ error: '이미 존재하는 학번입니다.' })
};
const user = new User({
name: req.body.name,
id: req.body.id,
password: req.body.password,
question: req.body.question,
answer: req.body.answer,
});
user.save()
......@@ -31,4 +33,31 @@ router.post('/', function (req, res, next) {
});
})
});
router.put('/', function (req, res, next) {
console.log('/change put req.body', req.body)
User.findOne({ _id: req.body.id }, 'password', function (err, user) {
if (err) return res.status(500).json({ error: err });
bcrypt.compare(req.body.password, user.password, function (err, result) {
if (err) {
console.log(err)
return res.status(500).json({ error: err });
}
if (result) {
return res.status(404).json({ error: '새로운 비밀번호를 입력해주세요.' })
}
});
user.password = req.body.password;
user.save()
.then((result) => {
console.log(result);
res.status(201).json(result);
})
.catch((err) => {
console.error(err);
next(err);
});
})
});
module.exports = router;
......@@ -12,6 +12,17 @@ const userSchema = new Schema({
type: String,
},
role: {
type: String,
default:'user',
},
answer:{
type: String,
},
question: {
type: String,
},
id: {
type: Number,
required: true,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment