From 1d0b518c6103d226560e235257cdd09dd5eb0302 Mon Sep 17 00:00:00 2001 From: EunsooJung Date: Sat, 15 Feb 2020 22:44:36 -0800 Subject: [PATCH] Layouts --- .gitignore | 1 + package.json | 2 + public/index.html | 51 +++++++------------ public/manifest.json | 13 +++++ src/App.css | 3 +- src/Routes.js | 60 +++++++++++++++++++++++ src/component-antd/Header.js | 10 ++++ src/component-antd/Home.js | 8 +++ src/component-antd/SideNav.js | 84 ++++++++++++++++++++++++++++++++ src/components/Home.js | 9 ++++ src/components/Layout.js | 21 ++++++++ src/components/Menu.js | 43 ++++++++++++++++ src/config.js | 1 + src/index.js | 5 +- src/user/SignIn.js | 9 ++++ src/user/SignUp.js | 10 ++++ yarn.lock | 92 +++++++++++++++++++++++++++++++++-- 17 files changed, 379 insertions(+), 43 deletions(-) create mode 100644 public/manifest.json create mode 100644 src/Routes.js create mode 100644 src/component-antd/Header.js create mode 100644 src/component-antd/Home.js create mode 100644 src/component-antd/SideNav.js create mode 100644 src/components/Home.js create mode 100644 src/components/Layout.js create mode 100644 src/components/Menu.js create mode 100644 src/config.js create mode 100644 src/user/SignIn.js create mode 100644 src/user/SignUp.js diff --git a/.gitignore b/.gitignore index 4d29575..966bc27 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ npm-debug.log* yarn-debug.log* yarn-error.log* +.env \ No newline at end of file diff --git a/package.json b/package.json index cccff81..7666f2a 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,10 @@ "@testing-library/react": "^9.3.2", "@testing-library/user-event": "^7.1.2", "antd": "^3.26.9", + "dotenv": "^8.2.0", "react": "^16.12.0", "react-dom": "^16.12.0", + "react-router-dom": "^5.1.2", "react-scripts": "3.4.0" }, "scripts": { diff --git a/public/index.html b/public/index.html index aa069f2..0df360d 100644 --- a/public/index.html +++ b/public/index.html @@ -1,43 +1,28 @@ - - - - - - - - - - - React App - - - -
- - - + + + \ No newline at end of file diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 0000000..a00dee5 --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,13 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [{ + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} \ No newline at end of file diff --git a/src/App.css b/src/App.css index 5ab5587..4b75c17 100644 --- a/src/App.css +++ b/src/App.css @@ -1,5 +1,4 @@ -@import '~antd/dist/antd.css'; - +/* @import '~antd/dist/antd.css'; */ .App { text-align: center; } diff --git a/src/Routes.js b/src/Routes.js new file mode 100644 index 0000000..4cbe00b --- /dev/null +++ b/src/Routes.js @@ -0,0 +1,60 @@ +import React from 'react'; +/** Wrap the rest of the application routes, make props available to + * other nested components + */ +import { BrowserRouter, Switch, Route } from 'react-router-dom'; + +import SignUp from './user/SignUp'; +import SignIn from './user/SignIn'; +import Home from './components/Home'; +// import Menu from './components/Menu'; + +// import PrivateRoute from './auth/PrivateRoute'; +// import Dashboard from './user/UserDashboard'; +// import AdminRoute from './auth/AdminRoute'; +// import AdminDashboard from './user/AdminDashboard'; +// import AddCategory from './admin/AddCategory'; +// import AddProduct from './admin/AddProduct'; +// import Shop from './core/Shop'; +// import Product from './core/Product'; +// import Cart from './core/Cart'; +// import Orders from './admin/Orders'; +// import Profile from './user/Profile'; +// import ManageProducts from './admin/ManageProducts'; +// import UpdateProduct from './admin/UpdateProduct'; +// import UpdateCategory from './admin/updateCategory'; + +const Routes = () => { + return ( + + {/* */} + + + {/* */} + + + {/* + + + + + + + + + + */} + + + ); +}; + +export default Routes; diff --git a/src/component-antd/Header.js b/src/component-antd/Header.js new file mode 100644 index 0000000..0a54577 --- /dev/null +++ b/src/component-antd/Header.js @@ -0,0 +1,10 @@ +import React from 'react'; +import { withRouter } from 'react-router-dom'; +import 'antd/dist/antd.css'; +import '../index.css'; +import { PageHeader } from 'antd'; +import { render } from '@testing-library/react'; + +const Header = () =>
This is Header
; + +export default withRouter(Header); diff --git a/src/component-antd/Home.js b/src/component-antd/Home.js new file mode 100644 index 0000000..dc07c5e --- /dev/null +++ b/src/component-antd/Home.js @@ -0,0 +1,8 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import 'antd/dist/antd.css'; +import '../index.css'; + +const Home = () =>
Welcome My Home
; + +export default Home; diff --git a/src/component-antd/SideNav.js b/src/component-antd/SideNav.js new file mode 100644 index 0000000..adc0543 --- /dev/null +++ b/src/component-antd/SideNav.js @@ -0,0 +1,84 @@ +import React from 'react'; +import { withRouter } from 'react-router-dom'; +import { Menu, Link, Icon, Switch } from 'antd'; + +const { SubMenu } = Menu; + +class SideNav extends React.Component { + state = { + mode: 'inline', + theme: 'light' + }; + + changeMode = value => { + this.setState({ + mode: value ? 'vertical' : 'inline' + }); + }; + + changeTheme = value => { + this.setState({ + theme: value ? 'dark' : 'light' + }); + }; + + render() { + return ( +
+ Change Mode + + Change Theme +
+
+ + + + Product + + + + Navigation Two + + + + Navigation Three + + } + > + Option 3 + Option 4 + + Option 5 + Option 6 + + + + + Navigation Four + + } + > + Option 7 + Option 8 + Option 9 + Option 10 + + +
+ ); + } +} + +export default withRouter(SideNav); diff --git a/src/components/Home.js b/src/components/Home.js new file mode 100644 index 0000000..d76e585 --- /dev/null +++ b/src/components/Home.js @@ -0,0 +1,9 @@ +import React from 'react'; +import Layout from './Layout'; + +const Home = () => ( + + ... + +); +export default Home; diff --git a/src/components/Layout.js b/src/components/Layout.js new file mode 100644 index 0000000..0c6d04d --- /dev/null +++ b/src/components/Layout.js @@ -0,0 +1,21 @@ +import React from 'react'; +import Menu from './Menu'; + +/** To display dynamically using props with default value */ +const Layout = ({ + title = 'Title', + description = 'Description', + className, + children +}) => ( +
+ +
+

{title}

+

{description}

+
+
{children}
+
+); + +export default Layout; diff --git a/src/components/Menu.js b/src/components/Menu.js new file mode 100644 index 0000000..f9fbead --- /dev/null +++ b/src/components/Menu.js @@ -0,0 +1,43 @@ +import React from 'react'; +import { Link, withRouter } from 'react-router-dom'; +import { Icon } from 'antd'; + +const isActive = (history, path) => { + if (history.location.pathname === path) { + return { color: '#ff9900' }; + } else { + return { color: '#ffffff' }; + } +}; + +const Menu = ({ history }) => ( +
    +
  • + + Home + +
  • + +
  • + + Signin + +
  • + +
  • + + Signup + +
  • +
+); + +export default withRouter(Menu); diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..22a5d13 --- /dev/null +++ b/src/config.js @@ -0,0 +1 @@ +export const API = process.env.REACT_APP_API_URL; diff --git a/src/index.js b/src/index.js index 395b749..621e94f 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,5 @@ import React from 'react'; import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App'; +import Routes from './Routes'; -ReactDOM.render(, document.getElementById('root')); +ReactDOM.render(, document.getElementById('root')); diff --git a/src/user/SignIn.js b/src/user/SignIn.js new file mode 100644 index 0000000..09182aa --- /dev/null +++ b/src/user/SignIn.js @@ -0,0 +1,9 @@ +import React from 'react'; +import Layout from '../components/Layout'; + +const SignIn = () => ( + + ... + +); +export default SignIn; diff --git a/src/user/SignUp.js b/src/user/SignUp.js new file mode 100644 index 0000000..0d899b6 --- /dev/null +++ b/src/user/SignUp.js @@ -0,0 +1,10 @@ +import React from 'react'; +import Layout from '../components/Layout'; +import { API } from '../config'; + +const SignUp = () => ( + + {API} + +); +export default SignUp; diff --git a/yarn.lock b/yarn.lock index aa76003..cd9ad80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -877,7 +877,7 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.2" -"@babel/runtime@7.8.4", "@babel/runtime@^7.0.0", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.1", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6": +"@babel/runtime@7.8.4", "@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.1", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.7.6": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== @@ -3713,7 +3713,7 @@ dotenv-expand@5.1.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== -dotenv@8.2.0: +dotenv@8.2.0, dotenv@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== @@ -4927,6 +4927,18 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== +history@^4.9.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" + integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^3.0.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^1.0.1" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4941,7 +4953,7 @@ hoist-non-react-statics@^2.3.1: resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== -hoist-non-react-statics@^3.3.0: +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -5614,6 +5626,11 @@ is-wsl@^2.1.1: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -6482,7 +6499,7 @@ loglevel@^1.6.6: resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -6684,6 +6701,15 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= +mini-create-react-context@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189" + integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw== + dependencies: + "@babel/runtime" "^7.4.0" + gud "^1.0.0" + tiny-warning "^1.0.2" + mini-css-extract-plugin@0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" @@ -7486,6 +7512,13 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= +path-to-regexp@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" @@ -9005,7 +9038,7 @@ react-error-overlay@^6.0.6: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.6.tgz#ac4d9dc4c1b5c536c2c312bf66aa2b09bfa384e2" integrity sha512-Yzpno3enVzSrSCnnljmr4b/2KUQSMZaPuqmS26t9k4nW7uwJk6STWmH9heNjPuvqUTO3jOSPkHoKgO4+Dw7uIw== -react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: version "16.12.0" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== @@ -9025,6 +9058,35 @@ react-lifecycles-compat@^3.0.2, react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-router-dom@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.1.2.tgz#06701b834352f44d37fbb6311f870f84c76b9c18" + integrity sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + loose-envify "^1.3.1" + prop-types "^15.6.2" + react-router "5.1.2" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + +react-router@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.1.2.tgz#6ea51d789cb36a6be1ba5f7c0d48dd9e817d3418" + integrity sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A== + dependencies: + "@babel/runtime" "^7.1.2" + history "^4.9.0" + hoist-non-react-statics "^3.1.0" + loose-envify "^1.3.1" + mini-create-react-context "^0.3.0" + path-to-regexp "^1.7.0" + prop-types "^15.6.2" + react-is "^16.6.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + react-scripts@3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-3.4.0.tgz#f413680f0b5b937c8879ba1ffdae9b8c5b364bf5" @@ -9398,6 +9460,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-pathname@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" + integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== + resolve-url-loader@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz#28931895fa1eab9be0647d3b2958c100ae3c0bf0" @@ -10413,6 +10480,16 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tiny-invariant@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.1.0.tgz#634c5f8efdc27714b7f386c35e6760991d230875" + integrity sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw== + +tiny-warning@^1.0.0, tiny-warning@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + tinycolor2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" @@ -10776,6 +10853,11 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +value-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" + integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"