├── .gitignore
├── LICENSE
├── README.md
├── client
├── Dockerfile
├── Dockerfile.dev
├── README.md
├── nginx
│ └── default.conf
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
├── src
│ ├── App.css
│ ├── App.js
│ ├── actions
│ │ ├── bookActions.js
│ │ └── types.js
│ ├── bootstrap.min.css
│ ├── components
│ │ ├── Book.js
│ │ ├── Footer.js
│ │ ├── Header.js
│ │ ├── Loader.js
│ │ └── Message.js
│ ├── index.css
│ ├── index.js
│ ├── pages
│ │ ├── BookListPage.js
│ │ ├── BookPage.js
│ │ └── HomePage.js
│ ├── reducers
│ │ ├── bookReducers.js
│ │ └── index.js
│ ├── reportWebVitals.js
│ └── store.js
└── yarn.lock
├── docker-compose.yml
├── nginx
├── Dockerfile
├── Dockerfile.dev
└── default.conf
└── server
├── .dockerignore
├── .env.example
├── .eslintrc.json
├── Dockerfile
├── Dockerfile.dev
├── Makefile
├── controllers
└── bookControllers.js
├── database
└── db.js
├── middleware
└── errorMiddleware.js
├── models
└── Book.js
├── package.json
├── routes
└── bookRoutes.js
├── server.js
├── utils
├── asyncManager.js
└── libraryError.js
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # Snowpack dependency directory (https://snowpack.dev/)
45 | web_modules/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 | .parcel-cache
78 |
79 | # Next.js build output
80 | .next
81 | out
82 |
83 | # Nuxt.js build / generate output
84 | .nuxt
85 | dist
86 |
87 | # Gatsby files
88 | .cache/
89 | # Comment in the public line in if your project uses Gatsby and not Next.js
90 | # https://nextjs.org/blog/next-9-1#public-directory-support
91 | # public
92 |
93 | # vuepress build output
94 | .vuepress/dist
95 |
96 | # Serverless directories
97 | .serverless/
98 |
99 | # FuseBox cache
100 | .fusebox/
101 |
102 | # DynamoDB Local files
103 | .dynamodb/
104 |
105 | # TernJS port file
106 | .tern-port
107 |
108 | # Stores VSCode versions used for testing VSCode extensions
109 | .vscode-test
110 |
111 | # yarn v2
112 | .yarn/cache
113 | .yarn/unplugged
114 | .yarn/build-state.yml
115 | .yarn/install-state.gz
116 | .pnp.*
117 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 API-Imperfect
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Simple Library MERN App
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 👋 This simple Library MERN Book Application built to demonstrate how The MERN stack can be used with Docker and NGINX
10 |
11 | ## Run the Application
12 |
13 | ```
14 | git clone https://github.com/API-Imperfect/mern_library_nginx.git
15 | cd mern_library_nginx
16 | cd server
17 | run the command: make build
18 | navigate to localhost:8080
19 | ```
20 |
21 | If you prefer not using Make files
22 |
23 | ```
24 | git clone https://github.com/API-Imperfect/mern_library_nginx.git
25 | cd mern_library_nginx
26 | run the command: docker-compose up --build --remove-orphans
27 | navigate to localhost:8080
28 | ```
29 |
30 | ## License
31 |
32 | MIT
33 |
--------------------------------------------------------------------------------
/client/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:14-alpine3.10 as builder
2 |
3 | LABEL version="1.0"
4 | LABEL description="React Frontend for the Library API"
5 |
6 | WORKDIR /app
7 |
8 | COPY ./package.json ./
9 |
10 | RUN npm install
11 |
12 | COPY . .
13 |
14 | RUN npm run build
15 |
16 | FROM nginx
17 | EXPOSE 3000
18 | COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
19 | COPY --from=builder /app/build /usr/share/nginx/html
20 |
21 |
--------------------------------------------------------------------------------
/client/Dockerfile.dev:
--------------------------------------------------------------------------------
1 | FROM node:14-alpine3.10
2 |
3 | LABEL version="1.0"
4 | LABEL description="React Frontend for the Library API"
5 |
6 | WORKDIR /app
7 |
8 | COPY ./package.json ./
9 |
10 | RUN npm install
11 |
12 | COPY . .
13 |
14 | CMD [ "npm", "run", "start" ]
15 |
16 |
--------------------------------------------------------------------------------
/client/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started with Create React App
2 |
3 | This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
4 |
5 | ## Available Scripts
6 |
7 | In the project directory, you can run:
8 |
9 | ### `yarn start`
10 |
11 | Runs the app in the development mode.\
12 | Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
13 |
14 | The page will reload if you make edits.\
15 | You will also see any lint errors in the console.
16 |
17 | ### `yarn test`
18 |
19 | Launches the test runner in the interactive watch mode.\
20 | See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
21 |
22 | ### `yarn build`
23 |
24 | Builds the app for production to the `build` folder.\
25 | It correctly bundles React in production mode and optimizes the build for the best performance.
26 |
27 | The build is minified and the filenames include the hashes.\
28 | Your app is ready to be deployed!
29 |
30 | See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
31 |
32 | ### `yarn eject`
33 |
34 | **Note: this is a one-way operation. Once you `eject`, you can’t go back!**
35 |
36 | If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
37 |
38 | Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.
39 |
40 | You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
41 |
42 | ## Learn More
43 |
44 | You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
45 |
46 | To learn React, check out the [React documentation](https://reactjs.org/).
47 |
48 | ### Code Splitting
49 |
50 | This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
51 |
52 | ### Analyzing the Bundle Size
53 |
54 | This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
55 |
56 | ### Making a Progressive Web App
57 |
58 | This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
59 |
60 | ### Advanced Configuration
61 |
62 | This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
63 |
64 | ### Deployment
65 |
66 | This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
67 |
68 | ### `yarn build` fails to minify
69 |
70 | This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
71 |
--------------------------------------------------------------------------------
/client/nginx/default.conf:
--------------------------------------------------------------------------------
1 | server {
2 | listen 3000;
3 |
4 | location / {
5 | root /usr/share/nginx.html;
6 | index index.html index.htm;
7 | try_files $uri $uri/ /index.html;
8 | }
9 | }
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "client",
3 | "version": "0.1.0",
4 | "private": true,
5 | "dependencies": {
6 | "@testing-library/jest-dom": "^5.11.4",
7 | "@testing-library/react": "^11.1.0",
8 | "@testing-library/user-event": "^12.1.10",
9 | "axios": "^0.21.1",
10 | "react": "^17.0.1",
11 | "react-bootstrap": "^1.4.3",
12 | "react-dom": "^17.0.1",
13 | "react-redux": "^7.2.2",
14 | "react-router-bootstrap": "^0.25.0",
15 | "react-router-dom": "^5.2.0",
16 | "react-scripts": "4.0.2",
17 | "redux": "^4.0.5",
18 | "redux-devtools-extension": "^2.13.8",
19 | "redux-thunk": "^2.3.0",
20 | "web-vitals": "^1.0.1"
21 | },
22 | "scripts": {
23 | "start": "react-scripts start",
24 | "build": "react-scripts build",
25 | "test": "react-scripts test",
26 | "eject": "react-scripts eject"
27 | },
28 | "eslintConfig": {
29 | "extends": [
30 | "react-app",
31 | "react-app/jest"
32 | ]
33 | },
34 | "browserslist": {
35 | "production": [
36 | ">0.2%",
37 | "not dead",
38 | "not op_mini all"
39 | ],
40 | "development": [
41 | "last 1 chrome version",
42 | "last 1 firefox version",
43 | "last 1 safari version"
44 | ]
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/client/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/API-Imperfect/mern_library_nginx/5fb1a53e225d83e97ce82076c4b7d8c913565664/client/public/favicon.ico
--------------------------------------------------------------------------------
/client/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
15 |
16 |
25 |
28 | My Library
29 |
30 |
31 |
32 |
33 |
34 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/client/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/API-Imperfect/mern_library_nginx/5fb1a53e225d83e97ce82076c4b7d8c913565664/client/public/logo192.png
--------------------------------------------------------------------------------
/client/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/API-Imperfect/mern_library_nginx/5fb1a53e225d83e97ce82076c4b7d8c913565664/client/public/logo512.png
--------------------------------------------------------------------------------
/client/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/client/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/client/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | text-align: center;
3 | }
4 |
5 | .App-logo {
6 | height: 40vmin;
7 | pointer-events: none;
8 | }
9 |
10 | @media (prefers-reduced-motion: no-preference) {
11 | .App-logo {
12 | animation: App-logo-spin infinite 20s linear;
13 | }
14 | }
15 |
16 | .App-header {
17 | background-color: #282c34;
18 | min-height: 100vh;
19 | display: flex;
20 | flex-direction: column;
21 | align-items: center;
22 | justify-content: center;
23 | font-size: calc(10px + 2vmin);
24 | color: white;
25 | }
26 |
27 | .App-link {
28 | color: #61dafb;
29 | }
30 |
31 | @keyframes App-logo-spin {
32 | from {
33 | transform: rotate(0deg);
34 | }
35 | to {
36 | transform: rotate(360deg);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/client/src/App.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Container } from "react-bootstrap";
3 | import { BrowserRouter as Router, Route } from "react-router-dom";
4 | import Footer from "./components/Footer";
5 | import Header from "./components/Header";
6 | import BookListPage from "./pages/BookListPage";
7 | import BookPage from "./pages/BookPage";
8 | import HomePage from "./pages/HomePage";
9 |
10 | const App = () => {
11 | return (
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | };
25 |
26 | export default App;
27 |
--------------------------------------------------------------------------------
/client/src/actions/bookActions.js:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 | import {
3 | BOOK_CREATE_FAIL,
4 | BOOK_CREATE_REQUEST,
5 | BOOK_CREATE_SUCCESS,
6 | BOOK_DELETE_FAIL,
7 | BOOK_DELETE_REQUEST,
8 | BOOK_DELETE_SUCCESS,
9 | BOOK_DETAILS_FAIL,
10 | BOOK_DETAILS_REQUEST,
11 | BOOK_DETAILS_SUCCESS,
12 | BOOK_LIST_FAIL,
13 | BOOK_LIST_REQUEST,
14 | BOOK_LIST_SUCCESS,
15 | } from "./types";
16 |
17 | export const listBooks = () => async (dispatch) => {
18 | try {
19 | dispatch({ type: BOOK_LIST_REQUEST });
20 | const { data } = await axios.get("/api/v1/books");
21 | dispatch({
22 | type: BOOK_LIST_SUCCESS,
23 | payload: data,
24 | });
25 | } catch (error) {
26 | dispatch({
27 | type: BOOK_LIST_FAIL,
28 | payload:
29 | error.response && error.response.data.message
30 | ? error.response.data.message
31 | : error.message,
32 | });
33 | }
34 | };
35 |
36 | export const listBookDetails = (id) => async (dispatch) => {
37 | try {
38 | dispatch({ type: BOOK_DETAILS_REQUEST });
39 |
40 | const { data } = await axios.get(`/api/v1/books/${id}`);
41 | dispatch({
42 | type: BOOK_DETAILS_SUCCESS,
43 | payload: data,
44 | });
45 | } catch (error) {
46 | dispatch({
47 | type: BOOK_DETAILS_FAIL,
48 | payload:
49 | error.response && error.response.data.message
50 | ? error.response.data.message
51 | : error.message,
52 | });
53 | }
54 | };
55 |
56 | export const createBook = (bookData) => async (dispatch) => {
57 | try {
58 | dispatch({
59 | type: BOOK_CREATE_REQUEST,
60 | });
61 | const config = {
62 | headers: {
63 | "Content-Type": "application/json",
64 | },
65 | };
66 | const { data } = await axios.post(`/api/v1/books`, bookData, config);
67 | dispatch({
68 | type: BOOK_CREATE_SUCCESS,
69 | payload: data,
70 | });
71 | } catch (error) {
72 | dispatch({
73 | type: BOOK_CREATE_FAIL,
74 | payload:
75 | error.response && error.response.data.message
76 | ? error.response.data.message
77 | : error.message,
78 | });
79 | }
80 | };
81 |
82 | export const deleteBook = (id) => async (dispatch) => {
83 | try {
84 | dispatch({
85 | type: BOOK_DELETE_REQUEST,
86 | });
87 | const { data } = await axios.delete(`/api/v1/books/${id}`);
88 | dispatch({
89 | type: BOOK_DELETE_SUCCESS,
90 | payload: data,
91 | });
92 | } catch (error) {
93 | dispatch({
94 | type: BOOK_DELETE_FAIL,
95 | payload:
96 | error.response && error.response.data.message
97 | ? error.response.data.message
98 | : error.message,
99 | });
100 | }
101 | };
102 |
--------------------------------------------------------------------------------
/client/src/actions/types.js:
--------------------------------------------------------------------------------
1 | export const BOOK_LIST_FAIL = "BOOK_LIST_FAIL";
2 | export const BOOK_LIST_REQUEST = "BOOK_LIST_REQUEST";
3 | export const BOOK_LIST_SUCCESS = "BOOK_LIST_SUCCESS";
4 |
5 | export const BOOK_DETAILS_FAIL = "BOOK_DETAILS_FAIL";
6 | export const BOOK_DETAILS_REQUEST = "BOOK_DETAILS_REQUEST";
7 | export const BOOK_DETAILS_SUCCESS = "BOOK_DETAILS_SUCCESS";
8 |
9 | export const BOOK_CREATE_REQUEST = "BOOK_CREATE_REQUEST";
10 | export const BOOK_CREATE_SUCCESS = "BOOK_CREATE_SUCCESS";
11 | export const BOOK_CREATE_FAIL = "BOOK_CREATE_FAIL";
12 | export const BOOK_CREATE_RESET = "BOOK_CREATE_RESET";
13 |
14 | export const BOOK_DELETE_REQUEST = "BOOK_DELETE_REQUEST";
15 | export const BOOK_DELETE_SUCCESS = "BOOK_DELETE_SUCCESS";
16 | export const BOOK_DELETE_FAIL = "BOOK_DELETE_FAIL";
17 |
--------------------------------------------------------------------------------
/client/src/components/Book.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Button, Card } from "react-bootstrap";
3 | import { Link } from "react-router-dom";
4 |
5 | const Book = ({ book, deleteHandler }) => {
6 | return (
7 |
8 |
9 |
10 |
11 | {book.title}
12 |
13 |
14 |
15 | {book.subtitle}
16 |
17 | {book.description}
18 | ISBN {book.isbn}
19 |
20 |
23 |
24 |
25 | );
26 | };
27 |
28 | export default Book;
29 |
--------------------------------------------------------------------------------
/client/src/components/Footer.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Col, Container, Row } from "react-bootstrap";
3 |
4 | const Footer = () => {
5 | return (
6 |
15 | );
16 | };
17 |
18 | export default Footer;
19 |
--------------------------------------------------------------------------------
/client/src/components/Header.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Container, Nav, Navbar } from "react-bootstrap";
3 | import { LinkContainer } from "react-router-bootstrap";
4 |
5 | const Header = () => {
6 | return (
7 |
8 |
9 |
10 |
11 | My Library
12 |
13 |
14 |
15 |
22 |
23 |
24 |
25 |
26 | );
27 | };
28 |
29 | export default Header;
30 |
--------------------------------------------------------------------------------
/client/src/components/Loader.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Spinner } from "react-bootstrap";
3 |
4 | const Loader = () => {
5 | return (
6 |
16 | Loading....
17 |
18 | );
19 | };
20 |
21 | export default Loader;
22 |
--------------------------------------------------------------------------------
/client/src/components/Message.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Alert } from "react-bootstrap";
3 |
4 | const Message = ({ variant, children }) => {
5 | return {children};
6 | };
7 |
8 | Message.defaultProps = { variant: "info" };
9 |
10 | export default Message;
11 |
--------------------------------------------------------------------------------
/client/src/index.css:
--------------------------------------------------------------------------------
1 | main {
2 | min-height: 80vh;
3 | }
4 |
--------------------------------------------------------------------------------
/client/src/index.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import ReactDOM from "react-dom";
3 | import { Provider } from "react-redux";
4 | import App from "./App";
5 | import "./bootstrap.min.css";
6 | import "./index.css";
7 | import reportWebVitals from "./reportWebVitals";
8 | import store from "./store";
9 |
10 | ReactDOM.render(
11 |
12 |
13 | ,
14 | document.getElementById("root")
15 | );
16 |
17 | // If you want to start measuring performance in your app, pass a function
18 | // to log results (for example: reportWebVitals(console.log))
19 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
20 | reportWebVitals();
21 |
--------------------------------------------------------------------------------
/client/src/pages/BookListPage.js:
--------------------------------------------------------------------------------
1 | import React, { useEffect, useState } from "react";
2 | import { Button, Col, Form, Row } from "react-bootstrap";
3 | import { useDispatch, useSelector } from "react-redux";
4 | import { createBook, deleteBook, listBooks } from "../actions/bookActions";
5 | import { BOOK_CREATE_RESET } from "../actions/types";
6 | import Book from "../components/Book";
7 | import Loader from "../components/Loader";
8 | import Message from "../components/Message";
9 |
10 | const BookListPage = ({ history }) => {
11 | const [title, setTitle] = useState("");
12 | const [subtitle, setSubTitle] = useState("");
13 | const [author, setAuthor] = useState("");
14 | const [description, setDescription] = useState("");
15 | const [isbn, setISBN] = useState("");
16 |
17 | const dispatch = useDispatch();
18 | const bookList = useSelector((state) => state.bookList);
19 | const { loading, error, books } = bookList;
20 |
21 | const bookCreate = useSelector((state) => state.bookCreate);
22 | const {
23 | loading: loadingCreate,
24 | error: errorCreate,
25 | success: successCreate,
26 | book: createdBook,
27 | } = bookCreate;
28 |
29 | const bookDelete = useSelector((state) => state.bookDelete);
30 | const {
31 | loading: loadingDelete,
32 | error: errorDelete,
33 | success: successDelete,
34 | } = bookDelete;
35 |
36 | useEffect(() => {
37 | dispatch({ type: BOOK_CREATE_RESET });
38 |
39 | if (successCreate) {
40 | history.push(`/books/${createdBook._id}`);
41 | } else {
42 | dispatch(listBooks());
43 | }
44 | }, [dispatch, history, successCreate, successDelete, createdBook]);
45 |
46 | const createBookHandler = (e) => {
47 | e.preventDefault();
48 |
49 | dispatch(
50 | createBook({
51 | title,
52 | subtitle,
53 | description,
54 | author,
55 | isbn,
56 | })
57 | );
58 | };
59 | const deleteHandler = (id) => {
60 | dispatch(deleteBook(id));
61 | };
62 |
63 | return (
64 | <>
65 | {loadingCreate && }
66 | {errorCreate && {errorCreate}}
67 | {loadingDelete && }
68 | {errorDelete && {errorDelete}}
69 |
70 |
71 |
73 | Book Title
74 | setTitle(e.target.value)}
78 | placeholder="Enter Title"
79 | />
80 |
81 |
82 | Book Sub-Title
83 | setSubTitle(e.target.value)}
87 | placeholder="Enter Sub title"
88 | />
89 |
90 |
91 | Author
92 | setAuthor(e.target.value)}
96 | placeholder="Enter an Author"
97 | />
98 |
99 |
100 | Description
101 | setDescription(e.target.value)}
105 | placeholder="Enter Description"
106 | />
107 |
108 |
109 | ISBN Number
110 | setISBN(e.target.value)}
114 | placeholder="Enter ISBN Number"
115 | />
116 |
117 |
118 |
127 |
128 |
129 |
130 |
131 |
132 | The Books in My Library
133 |
134 |
135 | {loading ? (
136 |
137 | ) : error ? (
138 | {error}
139 | ) : (
140 | <>
141 |
142 | {books.map((book) => (
143 |
144 |
145 |
146 | ))}
147 |
148 | >
149 | )}
150 | >
151 | );
152 | };
153 |
154 | export default BookListPage;
155 |
--------------------------------------------------------------------------------
/client/src/pages/BookPage.js:
--------------------------------------------------------------------------------
1 | import React, { useEffect } from "react";
2 | import { Button, Card, Row } from "react-bootstrap";
3 | import { useDispatch, useSelector } from "react-redux";
4 | import { Link } from "react-router-dom";
5 | import { listBookDetails } from "../actions/bookActions";
6 | import Loader from "../components/Loader";
7 | import Message from "../components/Message";
8 |
9 | const BookPage = ({ match }) => {
10 | const dispatch = useDispatch();
11 |
12 | const bookDetails = useSelector((state) => state.bookDetails);
13 | const { loading, error, book } = bookDetails;
14 |
15 | useEffect(() => {
16 | dispatch(listBookDetails(match.params.id));
17 | }, [dispatch, match]);
18 | return (
19 | <>
20 |
21 | Go Back to My Books
22 |
23 | {loading ? (
24 |
25 | ) : error ? (
26 | {error}
27 | ) : (
28 |
29 |
30 |
31 | {book.title}
32 |
33 |
34 |
35 | {book.subtitle}
36 |
37 | {book.description}
38 |
39 | ISBN {book.isbn}
40 |
41 |
42 |
43 |
44 | )}
45 | >
46 | );
47 | };
48 |
49 | export default BookPage;
50 |
--------------------------------------------------------------------------------
/client/src/pages/HomePage.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { Button, Jumbotron } from "react-bootstrap";
3 | import { LinkContainer } from "react-router-bootstrap";
4 |
5 | const HomePage = () => {
6 | return (
7 | <>
8 |
9 | Welcome to My Library!
10 |
11 | This is a simple Fullstack MERN Application to demonstrate how
12 | Nginx and Docker can be used in this workflow
13 |
14 |
15 |
16 |
19 |
20 |
21 |
22 | >
23 | );
24 | };
25 |
26 | export default HomePage;
27 |
--------------------------------------------------------------------------------
/client/src/reducers/bookReducers.js:
--------------------------------------------------------------------------------
1 | import {
2 | BOOK_CREATE_FAIL,
3 | BOOK_CREATE_REQUEST,
4 | BOOK_CREATE_RESET,
5 | BOOK_CREATE_SUCCESS,
6 | BOOK_DELETE_FAIL,
7 | BOOK_DELETE_REQUEST,
8 | BOOK_DELETE_SUCCESS,
9 | BOOK_DETAILS_FAIL,
10 | BOOK_DETAILS_REQUEST,
11 | BOOK_DETAILS_SUCCESS,
12 | BOOK_LIST_FAIL,
13 | BOOK_LIST_REQUEST,
14 | BOOK_LIST_SUCCESS,
15 | } from "../actions/types";
16 |
17 | export const bookListReducer = (state = { books: [] }, action) => {
18 | switch (action.type) {
19 | case BOOK_LIST_REQUEST:
20 | return { loading: true, books: [] };
21 | case BOOK_LIST_SUCCESS:
22 | return { loading: false, books: action.payload };
23 | case BOOK_LIST_FAIL:
24 | return { loading: false, error: action.payload };
25 | default:
26 | return state;
27 | }
28 | };
29 |
30 | export const bookDetailsReducer = (state = { book: {} }, action) => {
31 | switch (action.type) {
32 | case BOOK_DETAILS_REQUEST:
33 | return { ...state, loading: true };
34 | case BOOK_DETAILS_SUCCESS:
35 | return { loading: false, book: action.payload };
36 | case BOOK_DETAILS_FAIL:
37 | return { loading: false, error: action.payload };
38 | default:
39 | return state;
40 | }
41 | };
42 |
43 | export const bookCreateReducer = (state = {}, action) => {
44 | switch (action.type) {
45 | case BOOK_CREATE_REQUEST:
46 | return { loading: true };
47 | case BOOK_CREATE_SUCCESS:
48 | return { loading: false, success: true, book: action.payload };
49 | case BOOK_CREATE_FAIL:
50 | return { loading: false, error: action.payload };
51 | case BOOK_CREATE_RESET:
52 | return {};
53 | default:
54 | return state;
55 | }
56 | };
57 |
58 | export const bookDeleteReducer = (state = {}, action) => {
59 | switch (action.type) {
60 | case BOOK_DELETE_REQUEST:
61 | return { loading: true };
62 | case BOOK_DELETE_SUCCESS:
63 | return { loading: false, success: true };
64 | case BOOK_DELETE_FAIL:
65 | return { loading: false, error: action.payload };
66 | default:
67 | return state;
68 | }
69 | };
70 |
--------------------------------------------------------------------------------
/client/src/reducers/index.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from "redux";
2 | import {
3 | bookCreateReducer,
4 | bookDeleteReducer,
5 | bookDetailsReducer,
6 | bookListReducer,
7 | } from "./bookReducers";
8 |
9 | export default combineReducers({
10 | bookList: bookListReducer,
11 | bookDetails: bookDetailsReducer,
12 | bookCreate: bookCreateReducer,
13 | bookDelete: bookDeleteReducer,
14 | });
15 |
--------------------------------------------------------------------------------
/client/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/client/src/store.js:
--------------------------------------------------------------------------------
1 | import { applyMiddleware, createStore } from "redux";
2 | import { composeWithDevTools } from "redux-devtools-extension";
3 | import reduxThunk from "redux-thunk";
4 | import rootReducer from "./reducers";
5 |
6 | const initialState = {};
7 |
8 | const store = createStore(
9 | rootReducer,
10 | initialState,
11 | composeWithDevTools(applyMiddleware(reduxThunk))
12 | );
13 |
14 | export default store;
15 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: "3.9"
2 |
3 | services:
4 | library-api:
5 | restart: always
6 | build:
7 | context: ./server
8 | dockerfile: Dockerfile.dev
9 | container_name: library_mern_nginx
10 | # volumes allow sharing of data in run-time between host and container
11 | volumes:
12 | # don't overwrite this folder in container with the local one
13 | - /app/node_modules
14 | # map current local directory to the /app inside the container
15 | #This is a must for development in order to update our container whenever a change to the source code is made. Without this, you would have to rebuild the image each time you make a change to source code.
16 |
17 | - ./server:/app
18 | # ports:
19 | # - 5000:5000
20 | depends_on:
21 | - mongodb
22 | environment:
23 | NODE_ENV: ${NODE_ENV}
24 | MONGO_URI: mongodb://${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}@mongodb
25 | networks:
26 | - library-mern-api
27 |
28 | mongodb:
29 | image: mongo
30 | restart: always
31 | ports:
32 | - 27017:27017
33 | environment:
34 | MONGO_INITDB_ROOT_USERNAME: ${MONGO_ROOT_USERNAME}
35 | MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
36 | volumes:
37 | # for persistence storage
38 | - mongodb-data:/data/db
39 | networks:
40 | - library-mern-api
41 |
42 | # mongo-express should only be used privately for development purposes.
43 | # It helps us interact with a mongoDB database using our browser
44 | mongo-express:
45 | image: mongo-express
46 | depends_on:
47 | - mongodb
48 | ports:
49 | - 8081:8081
50 | environment:
51 | ME_CONFIG_MONGODB_ADMINUSERNAME: ${MONGO_ROOT_USERNAME}
52 | ME_CONFIG_MONGODB_ADMINPASSWORD: ${MONGO_ROOT_PASSWORD}
53 | ME_CONFIG_MONGODB_SERVER: mongodb
54 | ME_CONFIG_BASICAUTH_USERNAME: admin
55 | ME_CONFIG_BASICAUTH_PASSWORD: admin123456
56 | volumes:
57 | - mongodb-data
58 | networks:
59 | - library-mern-api
60 |
61 | client:
62 | restart: always
63 | build:
64 | context: ./client
65 | dockerfile: Dockerfile.dev
66 | container_name: library_mern_frontend
67 | volumes:
68 | - ./app/node_modules
69 | - ./client:/app
70 | # ports:
71 | # - 3000:3000
72 | depends_on:
73 | - library-api
74 | networks:
75 | - library-mern-api
76 |
77 | nginx:
78 | restart: always
79 | depends_on:
80 | - library-api
81 | - client
82 | build:
83 | context: ./nginx
84 | dockerfile: Dockerfile.dev
85 | ports:
86 | - 8080:80
87 | networks:
88 | - library-mern-api
89 |
90 | networks:
91 | library-mern-api:
92 | driver: bridge
93 |
94 | volumes:
95 | mongodb-data:
96 | driver: local
97 |
--------------------------------------------------------------------------------
/nginx/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM nginx:1.19-alpine
2 | COPY ./default.conf /etc/nginx/conf.d/default.conf
--------------------------------------------------------------------------------
/nginx/Dockerfile.dev:
--------------------------------------------------------------------------------
1 | FROM nginx:1.19-alpine
2 | COPY ./default.conf /etc/nginx/conf.d/default.conf
--------------------------------------------------------------------------------
/nginx/default.conf:
--------------------------------------------------------------------------------
1 | upstream client {
2 | server client:3000;
3 | }
4 |
5 | upstream library-api {
6 | server library-api:5000;
7 | }
8 |
9 |
10 | server {
11 | listen 80;
12 |
13 | location / {
14 | proxy_pass http://client;
15 | proxy_redirect off;
16 | proxy_set_header Host $host;
17 | proxy_set_header X-Real-IP $remote_addr;
18 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
19 | proxy_set_header X-Forwarded-Host $server_name;
20 |
21 | }
22 |
23 | location /sockjs-node{
24 | proxy_pass http://client;
25 | proxy_http_version 1.1;
26 | proxy_set_header Upgrade $http_upgrade;
27 | proxy_set_header Connection "Upgrade";
28 |
29 | }
30 |
31 | location /api/v1 {
32 | proxy_pass http://library-api;
33 | }
34 | }
--------------------------------------------------------------------------------
/server/.dockerignore:
--------------------------------------------------------------------------------
1 | **/.classpath
2 | **/.dockerignore
3 | **/.env
4 | **/.git
5 | **/.gitignore
6 | **/.project
7 | **/.settings
8 | **/.toolstarget
9 | **/.vs
10 | **/.vscode
11 | **/*.*proj.user
12 | **/*.dbmdl
13 | **/*.jfm
14 | **/azds.yaml
15 | **/charts
16 | **/docker-compose*
17 | **/Dockerfile*
18 | **/node_modules
19 | **/npm-debug.log
20 | **/obj
21 | **/secrets.dev.yaml
22 | **/values.dev.yaml
23 | README.md
24 |
--------------------------------------------------------------------------------
/server/.env.example:
--------------------------------------------------------------------------------
1 | PORT=
2 | NODE_ENV=
3 | MONGO_ROOT_USERNAME=
4 | MONGO_ROOT_PASSWORD=
5 | DB_NAME=
--------------------------------------------------------------------------------
/server/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["airbnb", "prettier", "plugin:node/recommended"],
3 | "plugins": ["prettier"],
4 | "rules": {
5 | "prettier/prettier": "error",
6 | "spaced-comment": "off",
7 | "no-console": "warn",
8 | "consistent-return": "off",
9 | "func-names": "off",
10 | "object-shorthand": "off",
11 | "no-process-exit": "off",
12 | "no-param-reassign": "off",
13 | "no-return-await": "off",
14 | "no-underscore-dangle": "off",
15 | "class-methods-use-this": "off",
16 | "prefer-destructuring": ["error", { "object": true, "array": false }],
17 | "no-unused-vars": [
18 | "error",
19 | { "argsIgnorePattern": "req|res|next|val" }
20 | ],
21 | "arrow-body-style": "off"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/server/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM node:14-alpine3.10
2 |
3 | LABEL version="1.0"
4 | LABEL description="Production image for the Library MERN API"
5 |
6 | WORKDIR /app
7 |
8 | COPY ["package.json","package-lock.json*","npm-shrinkwrap.json*", "./"]
9 |
10 | RUN npm install
11 |
12 | COPY . .
13 |
14 | CMD [ "npm", "run", "start" ]
--------------------------------------------------------------------------------
/server/Dockerfile.dev:
--------------------------------------------------------------------------------
1 | # specify base image from dockerhub
2 | FROM node:14-alpine3.10
3 |
4 | LABEL version="1.0"
5 | LABEL description="Development image for the Library MERN API"
6 |
7 | # workdir is where our code shall live in the container
8 | # all commands executed relative to this directory
9 | WORKDIR /app
10 |
11 | COPY ["package.json","package-lock.json*","npm-shrinkwrap.json*", "./"]
12 |
13 | # Install dependencies and clear npm cache
14 | RUN npm install && npm cache clean --force
15 |
16 | COPY . .
17 |
18 | # use EXPOSE command to have our port mapped by the docker daemon
19 | EXPOSE 5000
20 |
21 | # default dev command
22 | CMD [ "npm", "run", "dev" ]
--------------------------------------------------------------------------------
/server/Makefile:
--------------------------------------------------------------------------------
1 | ifneq (,$(wildcard ./.env))
2 | include .env
3 | export
4 | ENV_FILE_PARAM = --env-file .env
5 | endif
6 |
7 | build:
8 | docker-compose up --build --remove-orphans
9 |
10 | up:
11 | docker-compose up
12 |
13 | down:
14 | docker-compose down
15 |
16 | down-V:
17 | docker-compose down -v
18 |
19 | volume:
20 | docker volume inspect mern-library-nginx_mongodb-data
21 |
22 |
--------------------------------------------------------------------------------
/server/controllers/bookControllers.js:
--------------------------------------------------------------------------------
1 | const Book = require("../models/Book");
2 | const AsyncManager = require("../utils/asyncManager");
3 | const LibraryError = require("../utils/libraryError");
4 |
5 | // $-title Create a Book
6 | // $-path POST /api/v1/books
7 | // $-auth Public
8 | exports.createBook = AsyncManager(async (req, res, next) => {
9 | const newbook = await Book.create(req.body);
10 | return res.status(201).json(newbook);
11 | });
12 |
13 | // $-title Get all Books
14 | // $-path GET /api/v1/books
15 | // $-auth Public
16 | exports.getAllBooks = AsyncManager(async (req, res, next) => {
17 | const books = await Book.find();
18 | return res.status(200).json(books);
19 | });
20 |
21 | // $-title Get Single Book
22 | // $-path GET /api/v1/books/:id
23 | // $-auth Public
24 | exports.getBook = AsyncManager(async (req, res, next) => {
25 | const book = await Book.findById(req.params.id);
26 |
27 | if (!book) {
28 | return next(new LibraryError(`That book is not available`, 404));
29 | }
30 | return res.status(200).json(book);
31 | });
32 |
33 | // $-title Get Published Books
34 | // $-path POST /api/v1/books/published
35 | // $-auth Public
36 | exports.getPublishedBooks = AsyncManager(async (req, res, next) => {
37 | const books = await Book.find({ published: true });
38 | return res.status(200).json(books);
39 | });
40 |
41 | // $-title Update Book
42 | // $-path PATCH /api/v1/books/:id
43 | // $-auth Public
44 | exports.updateBook = AsyncManager(async (req, res, next) => {
45 | let book = await Book.findById(req.params.id);
46 |
47 | if (!book) {
48 | return next(new LibraryError(`That book is not available`, 404));
49 | }
50 |
51 | book = await Book.findOneAndUpdate(req.params.id, req.body, {
52 | new: true,
53 | runValidators: true,
54 | });
55 | return res.status(200).json(book);
56 | });
57 |
58 | // $-title Delete Book
59 | // $-path DELETE /api/v1/books/:id
60 | // $-auth Public
61 | exports.deleteBook = AsyncManager(async (req, res, next) => {
62 | const book = await Book.findById(req.params.id);
63 |
64 | if (!book) {
65 | return next(new LibraryError(`That book is not available`, 404));
66 | }
67 |
68 | await book.remove();
69 | return res.status(200).json({ message: "The book has been deleted" });
70 | });
71 |
--------------------------------------------------------------------------------
/server/database/db.js:
--------------------------------------------------------------------------------
1 | const mongoose = require("mongoose");
2 |
3 | const connectToDB = async () => {
4 | const connect = await mongoose.connect(process.env.MONGO_URI, {
5 | dbName: process.env.DB_NAME,
6 | useNewUrlParser: true,
7 | useCreateIndex: true,
8 | useUnifiedTopology: true,
9 | useFindAndModify: false,
10 | });
11 | console.log(`MongoDB connected: ${connect.connection.host}`);
12 | };
13 |
14 | module.exports = connectToDB;
15 |
--------------------------------------------------------------------------------
/server/middleware/errorMiddleware.js:
--------------------------------------------------------------------------------
1 | const LibraryError = require("../utils/libraryError");
2 |
3 | const mongooseErrorHandler = (err, req, res, next) => {
4 | let error = { ...err };
5 |
6 | error.message = err.message;
7 |
8 | if (err.name === "CastError") {
9 | const message = `invalid ${err.path}: ${err.value}. This resource doesn't exist`;
10 | error = new LibraryError(message, 404);
11 | }
12 |
13 | if (err.code === 11000) {
14 | const value = err.errmsg.match(/(["'])(\\?.)*?\1/)[0];
15 | const message = `Duplicate field value: ${value}. Please enter another value`;
16 | error = new LibraryError(message, 400);
17 | }
18 |
19 | if (err.name === "ValidationError") {
20 | const errors = Object.values(err.errors).map((val) => val.message);
21 | const message = `Invalid data provided. ${errors.join(". ")}`;
22 | error = new LibraryError(message, 400);
23 | }
24 |
25 | return res.status(error.statusCode || 500).json({
26 | success: false,
27 | error,
28 | message: error.message,
29 | });
30 | };
31 |
32 | module.exports = mongooseErrorHandler;
33 |
--------------------------------------------------------------------------------
/server/models/Book.js:
--------------------------------------------------------------------------------
1 | const mongoose = require("mongoose");
2 | const slugify = require("slugify");
3 |
4 | const BookSchema = new mongoose.Schema(
5 | {
6 | title: {
7 | type: String,
8 | required: [true, "Please add a titile"],
9 | unique: true,
10 | trim: true,
11 | maxlength: [50, "Book title can't be more than 50 characters"],
12 | },
13 | slug: String,
14 | published: { type: Boolean, default: false },
15 | description: {
16 | type: String,
17 | required: [true, "Please add a subtitile"],
18 | },
19 | subtitle: {
20 | type: String,
21 | required: [true, "Please add a subtitile"],
22 | trim: true,
23 | maxlength: [50, "Book subtitle can't be more than 50 characters"],
24 | },
25 | author: {
26 | type: String,
27 | required: [true, "Please add an author"],
28 | trim: true,
29 | },
30 | isbn: {
31 | type: String,
32 | required: [true, "Please add an isbn number"],
33 | trim: true,
34 | maxlength: [13, "ISBN number can't be more than 13 characters"],
35 | },
36 | },
37 | {
38 | timestamps: true,
39 | }
40 | );
41 |
42 | BookSchema.pre("save", function (next) {
43 | this.slug = slugify(this.title, { lower: true });
44 | next();
45 | });
46 |
47 | module.exports = mongoose.model("Book", BookSchema);
48 |
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "server",
3 | "version": "1.0.0",
4 | "description": "A simple MERN API",
5 | "main": "server.js",
6 | "author": "Alpha",
7 | "license": "MIT",
8 | "dependencies": {
9 | "dotenv": "^8.2.0",
10 | "express": "^4.17.1",
11 | "mongoose": "^5.11.15",
12 | "slugify": "^1.4.6"
13 | },
14 | "devDependencies": {
15 | "eslint": "^7.19.0",
16 | "eslint-config-airbnb": "^18.2.1",
17 | "eslint-config-prettier": "^7.2.0",
18 | "eslint-plugin-import": "^2.22.1",
19 | "eslint-plugin-jsx-a11y": "^6.4.1",
20 | "eslint-plugin-node": "^11.1.0",
21 | "eslint-plugin-prettier": "^3.3.1",
22 | "eslint-plugin-react": "^7.22.0",
23 | "nodemon": "^2.0.7",
24 | "prettier": "^2.2.1"
25 | },
26 | "prettier": {
27 | "tabWidth": 4
28 | },
29 | "engines": {
30 | "node": ">=14.13.0"
31 | },
32 | "scripts": {
33 | "start": "node server.js",
34 | "dev": "nodemon server.js"
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/server/routes/bookRoutes.js:
--------------------------------------------------------------------------------
1 | const express = require("express");
2 | const {
3 | createBook,
4 | getAllBooks,
5 | updateBook,
6 | deleteBook,
7 | getBook,
8 | getPublishedBooks,
9 | } = require("../controllers/bookControllers");
10 |
11 | const router = express.Router();
12 |
13 | router.route("/books").get(getAllBooks).post(createBook);
14 | router.route("/books/:id").patch(updateBook).delete(deleteBook).get(getBook);
15 | router.route("/books/published").get(getPublishedBooks);
16 |
17 | module.exports = router;
18 |
--------------------------------------------------------------------------------
/server/server.js:
--------------------------------------------------------------------------------
1 | require("dotenv").config();
2 | const express = require("express");
3 | const connectToDB = require("./database/db");
4 | const ErrorsMiddleware = require("./middleware/errorMiddleware");
5 | const LibraryError = require("./utils/libraryError");
6 | const bookRoutes = require("./routes/bookRoutes");
7 |
8 | process.on("uncaughtException", (error) => {
9 | console.log("Uncaught Exception..... 💣 🔥 stopping the server....");
10 | console.log(error.name, error.message);
11 |
12 | process.exit(1);
13 | });
14 |
15 | //Initialize the app
16 | const app = express();
17 |
18 | connectToDB();
19 |
20 | //enable our app to parse JSON
21 | app.use(express.json());
22 |
23 | //declare our PORT
24 | const PORT = process.env.PORT || 5000;
25 |
26 | //Mount/Create Routes
27 | app.get("/test", (req, res) => {
28 | res.json({
29 | Hi: "Welcome to the MERN Library API",
30 | });
31 | });
32 | app.use("/api/v1/", bookRoutes);
33 |
34 | // Error middleware
35 | app.all("*", (req, res, next) => {
36 | next(
37 | new LibraryError(`Can't find ${req.originalUrl} on this server!`, 404)
38 | );
39 | });
40 | app.use(ErrorsMiddleware);
41 |
42 | // Make the sever listen on the declared PORT variable
43 | const server = app.listen(
44 | PORT,
45 | console.log(
46 | `Server running in ${process.env.NODE_ENV} mode on port ${PORT}`
47 | )
48 | );
49 |
50 | // Unhandled Rejection
51 | process.on("unhandledRejection", (error) => {
52 | console.log("Unhandled Rejection..... 💣 🔥 stopping the server....");
53 | console.log(error.name, error.message);
54 | server.close(() => {
55 | // exit code 1 means that there is an issue that caused the program to exit
56 | process.exit(1);
57 | });
58 | });
59 |
--------------------------------------------------------------------------------
/server/utils/asyncManager.js:
--------------------------------------------------------------------------------
1 | module.exports = (fn) => (req, res, next) => {
2 | fn(req, res, next).catch(next);
3 | };
4 |
--------------------------------------------------------------------------------
/server/utils/libraryError.js:
--------------------------------------------------------------------------------
1 | class LibraryError extends Error {
2 | constructor(message, statusCode) {
3 | super(message);
4 | this.statusCode = statusCode;
5 | this.status = `${statusCode}`.startsWith("4")
6 | ? "Client Error"
7 | : "Server Error";
8 | }
9 | }
10 |
11 | module.exports = LibraryError;
12 |
--------------------------------------------------------------------------------
/server/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@^7.0.0":
6 | version "7.12.13"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
8 | integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
9 | dependencies:
10 | "@babel/highlight" "^7.12.13"
11 |
12 | "@babel/helper-validator-identifier@^7.12.11":
13 | version "7.12.11"
14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
16 |
17 | "@babel/highlight@^7.12.13":
18 | version "7.12.13"
19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c"
20 | integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww==
21 | dependencies:
22 | "@babel/helper-validator-identifier" "^7.12.11"
23 | chalk "^2.0.0"
24 | js-tokens "^4.0.0"
25 |
26 | "@babel/runtime-corejs3@^7.10.2":
27 | version "7.12.13"
28 | resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.13.tgz#53d09813b7c20d616caf258e9325550ff701c039"
29 | integrity sha512-8fSpqYRETHATtNitsCXq8QQbKJP31/KnDl2Wz2Vtui9nKzjss2ysuZtyVsWjBtvkeEFo346gkwjYPab1hvrXkQ==
30 | dependencies:
31 | core-js-pure "^3.0.0"
32 | regenerator-runtime "^0.13.4"
33 |
34 | "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2":
35 | version "7.12.13"
36 | resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d"
37 | integrity sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==
38 | dependencies:
39 | regenerator-runtime "^0.13.4"
40 |
41 | "@eslint/eslintrc@^0.3.0":
42 | version "0.3.0"
43 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318"
44 | integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==
45 | dependencies:
46 | ajv "^6.12.4"
47 | debug "^4.1.1"
48 | espree "^7.3.0"
49 | globals "^12.1.0"
50 | ignore "^4.0.6"
51 | import-fresh "^3.2.1"
52 | js-yaml "^3.13.1"
53 | lodash "^4.17.20"
54 | minimatch "^3.0.4"
55 | strip-json-comments "^3.1.1"
56 |
57 | "@sindresorhus/is@^0.14.0":
58 | version "0.14.0"
59 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
60 | integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
61 |
62 | "@szmarczak/http-timer@^1.1.2":
63 | version "1.1.2"
64 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421"
65 | integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==
66 | dependencies:
67 | defer-to-connect "^1.0.1"
68 |
69 | "@types/bson@*":
70 | version "4.0.3"
71 | resolved "https://registry.yarnpkg.com/@types/bson/-/bson-4.0.3.tgz#30889d2ffde6262abbe38659364c631454999fbf"
72 | integrity sha512-mVRvYnTOZJz3ccpxhr3wgxVmSeiYinW+zlzQz3SXWaJmD1DuL05Jeq7nKw3SnbKmbleW5qrLG5vdyWe/A9sXhw==
73 | dependencies:
74 | "@types/node" "*"
75 |
76 | "@types/json5@^0.0.29":
77 | version "0.0.29"
78 | resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
79 | integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
80 |
81 | "@types/mongodb@^3.5.27":
82 | version "3.6.6"
83 | resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.6.6.tgz#d62300927564e03daa08794eb207ff4f760f9014"
84 | integrity sha512-ghYevKiSh/TGk2MAwSRZP7T1ilR9Pw8Fa7pT9GGVGZPUsWKdZjZ4G6LG3MqK2iXKdNba994F8W9ikA+qx2Eo3A==
85 | dependencies:
86 | "@types/bson" "*"
87 | "@types/node" "*"
88 |
89 | "@types/node@*":
90 | version "14.14.25"
91 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.25.tgz#15967a7b577ff81383f9b888aa6705d43fbbae93"
92 | integrity sha512-EPpXLOVqDvisVxtlbvzfyqSsFeQxltFbluZNRndIb8tr9KiBnYNLzrc1N3pyKUCww2RNrfHDViqDWWE1LCJQtQ==
93 |
94 | abbrev@1:
95 | version "1.1.1"
96 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
97 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
98 |
99 | accepts@~1.3.7:
100 | version "1.3.7"
101 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
102 | integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
103 | dependencies:
104 | mime-types "~2.1.24"
105 | negotiator "0.6.2"
106 |
107 | acorn-jsx@^5.3.1:
108 | version "5.3.1"
109 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
110 | integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
111 |
112 | acorn@^7.4.0:
113 | version "7.4.1"
114 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
115 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
116 |
117 | ajv@^6.10.0, ajv@^6.12.4:
118 | version "6.12.6"
119 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
120 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
121 | dependencies:
122 | fast-deep-equal "^3.1.1"
123 | fast-json-stable-stringify "^2.0.0"
124 | json-schema-traverse "^0.4.1"
125 | uri-js "^4.2.2"
126 |
127 | ajv@^7.0.2:
128 | version "7.0.4"
129 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.4.tgz#827e5f5ae32f5e5c1637db61f253a112229b5e2f"
130 | integrity sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==
131 | dependencies:
132 | fast-deep-equal "^3.1.1"
133 | json-schema-traverse "^1.0.0"
134 | require-from-string "^2.0.2"
135 | uri-js "^4.2.2"
136 |
137 | ansi-align@^3.0.0:
138 | version "3.0.0"
139 | resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb"
140 | integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==
141 | dependencies:
142 | string-width "^3.0.0"
143 |
144 | ansi-colors@^4.1.1:
145 | version "4.1.1"
146 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
147 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
148 |
149 | ansi-regex@^4.1.0:
150 | version "4.1.0"
151 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
152 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
153 |
154 | ansi-regex@^5.0.0:
155 | version "5.0.0"
156 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75"
157 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==
158 |
159 | ansi-styles@^3.2.1:
160 | version "3.2.1"
161 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
162 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
163 | dependencies:
164 | color-convert "^1.9.0"
165 |
166 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
167 | version "4.3.0"
168 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
169 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
170 | dependencies:
171 | color-convert "^2.0.1"
172 |
173 | anymatch@~3.1.1:
174 | version "3.1.1"
175 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
176 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
177 | dependencies:
178 | normalize-path "^3.0.0"
179 | picomatch "^2.0.4"
180 |
181 | argparse@^1.0.7:
182 | version "1.0.10"
183 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
184 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
185 | dependencies:
186 | sprintf-js "~1.0.2"
187 |
188 | aria-query@^4.2.2:
189 | version "4.2.2"
190 | resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
191 | integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
192 | dependencies:
193 | "@babel/runtime" "^7.10.2"
194 | "@babel/runtime-corejs3" "^7.10.2"
195 |
196 | array-flatten@1.1.1:
197 | version "1.1.1"
198 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
199 | integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
200 |
201 | array-includes@^3.1.1, array-includes@^3.1.2:
202 | version "3.1.2"
203 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8"
204 | integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==
205 | dependencies:
206 | call-bind "^1.0.0"
207 | define-properties "^1.1.3"
208 | es-abstract "^1.18.0-next.1"
209 | get-intrinsic "^1.0.1"
210 | is-string "^1.0.5"
211 |
212 | array.prototype.flat@^1.2.3:
213 | version "1.2.4"
214 | resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123"
215 | integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==
216 | dependencies:
217 | call-bind "^1.0.0"
218 | define-properties "^1.1.3"
219 | es-abstract "^1.18.0-next.1"
220 |
221 | array.prototype.flatmap@^1.2.3:
222 | version "1.2.4"
223 | resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9"
224 | integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==
225 | dependencies:
226 | call-bind "^1.0.0"
227 | define-properties "^1.1.3"
228 | es-abstract "^1.18.0-next.1"
229 | function-bind "^1.1.1"
230 |
231 | ast-types-flow@^0.0.7:
232 | version "0.0.7"
233 | resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
234 | integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
235 |
236 | astral-regex@^2.0.0:
237 | version "2.0.0"
238 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
239 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
240 |
241 | axe-core@^4.0.2:
242 | version "4.1.1"
243 | resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.1.tgz#70a7855888e287f7add66002211a423937063eaf"
244 | integrity sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ==
245 |
246 | axobject-query@^2.2.0:
247 | version "2.2.0"
248 | resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
249 | integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
250 |
251 | balanced-match@^1.0.0:
252 | version "1.0.0"
253 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
254 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
255 |
256 | binary-extensions@^2.0.0:
257 | version "2.2.0"
258 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
259 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
260 |
261 | bl@^2.2.1:
262 | version "2.2.1"
263 | resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5"
264 | integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==
265 | dependencies:
266 | readable-stream "^2.3.5"
267 | safe-buffer "^5.1.1"
268 |
269 | bluebird@3.5.1:
270 | version "3.5.1"
271 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9"
272 | integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==
273 |
274 | body-parser@1.19.0:
275 | version "1.19.0"
276 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
277 | integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
278 | dependencies:
279 | bytes "3.1.0"
280 | content-type "~1.0.4"
281 | debug "2.6.9"
282 | depd "~1.1.2"
283 | http-errors "1.7.2"
284 | iconv-lite "0.4.24"
285 | on-finished "~2.3.0"
286 | qs "6.7.0"
287 | raw-body "2.4.0"
288 | type-is "~1.6.17"
289 |
290 | boxen@^4.2.0:
291 | version "4.2.0"
292 | resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64"
293 | integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==
294 | dependencies:
295 | ansi-align "^3.0.0"
296 | camelcase "^5.3.1"
297 | chalk "^3.0.0"
298 | cli-boxes "^2.2.0"
299 | string-width "^4.1.0"
300 | term-size "^2.1.0"
301 | type-fest "^0.8.1"
302 | widest-line "^3.1.0"
303 |
304 | brace-expansion@^1.1.7:
305 | version "1.1.11"
306 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
307 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
308 | dependencies:
309 | balanced-match "^1.0.0"
310 | concat-map "0.0.1"
311 |
312 | braces@~3.0.2:
313 | version "3.0.2"
314 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
315 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
316 | dependencies:
317 | fill-range "^7.0.1"
318 |
319 | bson@^1.1.4:
320 | version "1.1.5"
321 | resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.5.tgz#2aaae98fcdf6750c0848b0cba1ddec3c73060a34"
322 | integrity sha512-kDuEzldR21lHciPQAIulLs1LZlCXdLziXI6Mb/TDkwXhb//UORJNPXgcRs2CuO4H0DcMkpfT3/ySsP3unoZjBg==
323 |
324 | bytes@3.1.0:
325 | version "3.1.0"
326 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
327 | integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
328 |
329 | cacheable-request@^6.0.0:
330 | version "6.1.0"
331 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912"
332 | integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==
333 | dependencies:
334 | clone-response "^1.0.2"
335 | get-stream "^5.1.0"
336 | http-cache-semantics "^4.0.0"
337 | keyv "^3.0.0"
338 | lowercase-keys "^2.0.0"
339 | normalize-url "^4.1.0"
340 | responselike "^1.0.2"
341 |
342 | call-bind@^1.0.0, call-bind@^1.0.2:
343 | version "1.0.2"
344 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
345 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
346 | dependencies:
347 | function-bind "^1.1.1"
348 | get-intrinsic "^1.0.2"
349 |
350 | callsites@^3.0.0:
351 | version "3.1.0"
352 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
353 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
354 |
355 | camelcase@^5.3.1:
356 | version "5.3.1"
357 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
358 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
359 |
360 | chalk@^2.0.0:
361 | version "2.4.2"
362 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
363 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
364 | dependencies:
365 | ansi-styles "^3.2.1"
366 | escape-string-regexp "^1.0.5"
367 | supports-color "^5.3.0"
368 |
369 | chalk@^3.0.0:
370 | version "3.0.0"
371 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4"
372 | integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==
373 | dependencies:
374 | ansi-styles "^4.1.0"
375 | supports-color "^7.1.0"
376 |
377 | chalk@^4.0.0:
378 | version "4.1.0"
379 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
380 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
381 | dependencies:
382 | ansi-styles "^4.1.0"
383 | supports-color "^7.1.0"
384 |
385 | chokidar@^3.2.2:
386 | version "3.5.1"
387 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
388 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
389 | dependencies:
390 | anymatch "~3.1.1"
391 | braces "~3.0.2"
392 | glob-parent "~5.1.0"
393 | is-binary-path "~2.1.0"
394 | is-glob "~4.0.1"
395 | normalize-path "~3.0.0"
396 | readdirp "~3.5.0"
397 | optionalDependencies:
398 | fsevents "~2.3.1"
399 |
400 | ci-info@^2.0.0:
401 | version "2.0.0"
402 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
403 | integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
404 |
405 | cli-boxes@^2.2.0:
406 | version "2.2.1"
407 | resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f"
408 | integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==
409 |
410 | clone-response@^1.0.2:
411 | version "1.0.2"
412 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
413 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
414 | dependencies:
415 | mimic-response "^1.0.0"
416 |
417 | color-convert@^1.9.0:
418 | version "1.9.3"
419 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
420 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
421 | dependencies:
422 | color-name "1.1.3"
423 |
424 | color-convert@^2.0.1:
425 | version "2.0.1"
426 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
427 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
428 | dependencies:
429 | color-name "~1.1.4"
430 |
431 | color-name@1.1.3:
432 | version "1.1.3"
433 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
434 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
435 |
436 | color-name@~1.1.4:
437 | version "1.1.4"
438 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
439 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
440 |
441 | concat-map@0.0.1:
442 | version "0.0.1"
443 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
444 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
445 |
446 | configstore@^5.0.1:
447 | version "5.0.1"
448 | resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
449 | integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==
450 | dependencies:
451 | dot-prop "^5.2.0"
452 | graceful-fs "^4.1.2"
453 | make-dir "^3.0.0"
454 | unique-string "^2.0.0"
455 | write-file-atomic "^3.0.0"
456 | xdg-basedir "^4.0.0"
457 |
458 | confusing-browser-globals@^1.0.10:
459 | version "1.0.10"
460 | resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59"
461 | integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==
462 |
463 | contains-path@^0.1.0:
464 | version "0.1.0"
465 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
466 | integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
467 |
468 | content-disposition@0.5.3:
469 | version "0.5.3"
470 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
471 | integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
472 | dependencies:
473 | safe-buffer "5.1.2"
474 |
475 | content-type@~1.0.4:
476 | version "1.0.4"
477 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
478 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
479 |
480 | cookie-signature@1.0.6:
481 | version "1.0.6"
482 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
483 | integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
484 |
485 | cookie@0.4.0:
486 | version "0.4.0"
487 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
488 | integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
489 |
490 | core-js-pure@^3.0.0:
491 | version "3.8.3"
492 | resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.3.tgz#10e9e3b2592ecaede4283e8f3ad7020811587c02"
493 | integrity sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA==
494 |
495 | core-util-is@~1.0.0:
496 | version "1.0.2"
497 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
498 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
499 |
500 | cross-spawn@^7.0.2:
501 | version "7.0.3"
502 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
503 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
504 | dependencies:
505 | path-key "^3.1.0"
506 | shebang-command "^2.0.0"
507 | which "^2.0.1"
508 |
509 | crypto-random-string@^2.0.0:
510 | version "2.0.0"
511 | resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
512 | integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
513 |
514 | damerau-levenshtein@^1.0.6:
515 | version "1.0.6"
516 | resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791"
517 | integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==
518 |
519 | debug@2.6.9, debug@^2.2.0, debug@^2.6.9:
520 | version "2.6.9"
521 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
522 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
523 | dependencies:
524 | ms "2.0.0"
525 |
526 | debug@3.1.0:
527 | version "3.1.0"
528 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
529 | integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
530 | dependencies:
531 | ms "2.0.0"
532 |
533 | debug@^3.2.6:
534 | version "3.2.7"
535 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
536 | integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
537 | dependencies:
538 | ms "^2.1.1"
539 |
540 | debug@^4.0.1, debug@^4.1.1:
541 | version "4.3.1"
542 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
543 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
544 | dependencies:
545 | ms "2.1.2"
546 |
547 | decompress-response@^3.3.0:
548 | version "3.3.0"
549 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
550 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
551 | dependencies:
552 | mimic-response "^1.0.0"
553 |
554 | deep-extend@^0.6.0:
555 | version "0.6.0"
556 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
557 | integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
558 |
559 | deep-is@^0.1.3:
560 | version "0.1.3"
561 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
562 | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
563 |
564 | defer-to-connect@^1.0.1:
565 | version "1.1.3"
566 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
567 | integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
568 |
569 | define-properties@^1.1.3:
570 | version "1.1.3"
571 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
572 | integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
573 | dependencies:
574 | object-keys "^1.0.12"
575 |
576 | denque@^1.4.1:
577 | version "1.5.0"
578 | resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de"
579 | integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==
580 |
581 | depd@~1.1.2:
582 | version "1.1.2"
583 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
584 | integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
585 |
586 | destroy@~1.0.4:
587 | version "1.0.4"
588 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
589 | integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
590 |
591 | doctrine@1.5.0:
592 | version "1.5.0"
593 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
594 | integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=
595 | dependencies:
596 | esutils "^2.0.2"
597 | isarray "^1.0.0"
598 |
599 | doctrine@^2.1.0:
600 | version "2.1.0"
601 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
602 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
603 | dependencies:
604 | esutils "^2.0.2"
605 |
606 | doctrine@^3.0.0:
607 | version "3.0.0"
608 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
609 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
610 | dependencies:
611 | esutils "^2.0.2"
612 |
613 | dot-prop@^5.2.0:
614 | version "5.3.0"
615 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88"
616 | integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==
617 | dependencies:
618 | is-obj "^2.0.0"
619 |
620 | dotenv@^8.2.0:
621 | version "8.2.0"
622 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
623 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
624 |
625 | duplexer3@^0.1.4:
626 | version "0.1.4"
627 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
628 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
629 |
630 | ee-first@1.1.1:
631 | version "1.1.1"
632 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
633 | integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
634 |
635 | emoji-regex@^7.0.1:
636 | version "7.0.3"
637 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
638 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
639 |
640 | emoji-regex@^8.0.0:
641 | version "8.0.0"
642 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
643 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
644 |
645 | emoji-regex@^9.0.0:
646 | version "9.2.1"
647 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.1.tgz#c9b25604256bb3428964bead3ab63069d736f7ee"
648 | integrity sha512-117l1H6U4X3Krn+MrzYrL57d5H7siRHWraBs7s+LjRuFK7Fe7hJqnJ0skWlinqsycVLU5YAo6L8CsEYQ0V5prg==
649 |
650 | encodeurl@~1.0.2:
651 | version "1.0.2"
652 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
653 | integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
654 |
655 | end-of-stream@^1.1.0:
656 | version "1.4.4"
657 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
658 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
659 | dependencies:
660 | once "^1.4.0"
661 |
662 | enquirer@^2.3.5:
663 | version "2.3.6"
664 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
665 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
666 | dependencies:
667 | ansi-colors "^4.1.1"
668 |
669 | error-ex@^1.2.0:
670 | version "1.3.2"
671 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
672 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
673 | dependencies:
674 | is-arrayish "^0.2.1"
675 |
676 | es-abstract@^1.18.0-next.1:
677 | version "1.18.0-next.2"
678 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2"
679 | integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==
680 | dependencies:
681 | call-bind "^1.0.2"
682 | es-to-primitive "^1.2.1"
683 | function-bind "^1.1.1"
684 | get-intrinsic "^1.0.2"
685 | has "^1.0.3"
686 | has-symbols "^1.0.1"
687 | is-callable "^1.2.2"
688 | is-negative-zero "^2.0.1"
689 | is-regex "^1.1.1"
690 | object-inspect "^1.9.0"
691 | object-keys "^1.1.1"
692 | object.assign "^4.1.2"
693 | string.prototype.trimend "^1.0.3"
694 | string.prototype.trimstart "^1.0.3"
695 |
696 | es-to-primitive@^1.2.1:
697 | version "1.2.1"
698 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
699 | integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
700 | dependencies:
701 | is-callable "^1.1.4"
702 | is-date-object "^1.0.1"
703 | is-symbol "^1.0.2"
704 |
705 | escape-goat@^2.0.0:
706 | version "2.1.1"
707 | resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675"
708 | integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==
709 |
710 | escape-html@~1.0.3:
711 | version "1.0.3"
712 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
713 | integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
714 |
715 | escape-string-regexp@^1.0.5:
716 | version "1.0.5"
717 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
718 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
719 |
720 | eslint-config-airbnb-base@^14.2.1:
721 | version "14.2.1"
722 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e"
723 | integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==
724 | dependencies:
725 | confusing-browser-globals "^1.0.10"
726 | object.assign "^4.1.2"
727 | object.entries "^1.1.2"
728 |
729 | eslint-config-airbnb@^18.2.1:
730 | version "18.2.1"
731 | resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.2.1.tgz#b7fe2b42f9f8173e825b73c8014b592e449c98d9"
732 | integrity sha512-glZNDEZ36VdlZWoxn/bUR1r/sdFKPd1mHPbqUtkctgNG4yT2DLLtJ3D+yCV+jzZCc2V1nBVkmdknOJBZ5Hc0fg==
733 | dependencies:
734 | eslint-config-airbnb-base "^14.2.1"
735 | object.assign "^4.1.2"
736 | object.entries "^1.1.2"
737 |
738 | eslint-config-prettier@^7.2.0:
739 | version "7.2.0"
740 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9"
741 | integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg==
742 |
743 | eslint-import-resolver-node@^0.3.4:
744 | version "0.3.4"
745 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717"
746 | integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==
747 | dependencies:
748 | debug "^2.6.9"
749 | resolve "^1.13.1"
750 |
751 | eslint-module-utils@^2.6.0:
752 | version "2.6.0"
753 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
754 | integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
755 | dependencies:
756 | debug "^2.6.9"
757 | pkg-dir "^2.0.0"
758 |
759 | eslint-plugin-es@^3.0.0:
760 | version "3.0.1"
761 | resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893"
762 | integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==
763 | dependencies:
764 | eslint-utils "^2.0.0"
765 | regexpp "^3.0.0"
766 |
767 | eslint-plugin-import@^2.22.1:
768 | version "2.22.1"
769 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702"
770 | integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==
771 | dependencies:
772 | array-includes "^3.1.1"
773 | array.prototype.flat "^1.2.3"
774 | contains-path "^0.1.0"
775 | debug "^2.6.9"
776 | doctrine "1.5.0"
777 | eslint-import-resolver-node "^0.3.4"
778 | eslint-module-utils "^2.6.0"
779 | has "^1.0.3"
780 | minimatch "^3.0.4"
781 | object.values "^1.1.1"
782 | read-pkg-up "^2.0.0"
783 | resolve "^1.17.0"
784 | tsconfig-paths "^3.9.0"
785 |
786 | eslint-plugin-jsx-a11y@^6.4.1:
787 | version "6.4.1"
788 | resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd"
789 | integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg==
790 | dependencies:
791 | "@babel/runtime" "^7.11.2"
792 | aria-query "^4.2.2"
793 | array-includes "^3.1.1"
794 | ast-types-flow "^0.0.7"
795 | axe-core "^4.0.2"
796 | axobject-query "^2.2.0"
797 | damerau-levenshtein "^1.0.6"
798 | emoji-regex "^9.0.0"
799 | has "^1.0.3"
800 | jsx-ast-utils "^3.1.0"
801 | language-tags "^1.0.5"
802 |
803 | eslint-plugin-node@^11.1.0:
804 | version "11.1.0"
805 | resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d"
806 | integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==
807 | dependencies:
808 | eslint-plugin-es "^3.0.0"
809 | eslint-utils "^2.0.0"
810 | ignore "^5.1.1"
811 | minimatch "^3.0.4"
812 | resolve "^1.10.1"
813 | semver "^6.1.0"
814 |
815 | eslint-plugin-prettier@^3.3.1:
816 | version "3.3.1"
817 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7"
818 | integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==
819 | dependencies:
820 | prettier-linter-helpers "^1.0.0"
821 |
822 | eslint-plugin-react@^7.22.0:
823 | version "7.22.0"
824 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269"
825 | integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA==
826 | dependencies:
827 | array-includes "^3.1.1"
828 | array.prototype.flatmap "^1.2.3"
829 | doctrine "^2.1.0"
830 | has "^1.0.3"
831 | jsx-ast-utils "^2.4.1 || ^3.0.0"
832 | object.entries "^1.1.2"
833 | object.fromentries "^2.0.2"
834 | object.values "^1.1.1"
835 | prop-types "^15.7.2"
836 | resolve "^1.18.1"
837 | string.prototype.matchall "^4.0.2"
838 |
839 | eslint-scope@^5.1.1:
840 | version "5.1.1"
841 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
842 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
843 | dependencies:
844 | esrecurse "^4.3.0"
845 | estraverse "^4.1.1"
846 |
847 | eslint-utils@^2.0.0, eslint-utils@^2.1.0:
848 | version "2.1.0"
849 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
850 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
851 | dependencies:
852 | eslint-visitor-keys "^1.1.0"
853 |
854 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
855 | version "1.3.0"
856 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
857 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
858 |
859 | eslint-visitor-keys@^2.0.0:
860 | version "2.0.0"
861 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
862 | integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
863 |
864 | eslint@^7.19.0:
865 | version "7.19.0"
866 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.19.0.tgz#6719621b196b5fad72e43387981314e5d0dc3f41"
867 | integrity sha512-CGlMgJY56JZ9ZSYhJuhow61lMPPjUzWmChFya71Z/jilVos7mR/jPgaEfVGgMBY5DshbKdG8Ezb8FDCHcoMEMg==
868 | dependencies:
869 | "@babel/code-frame" "^7.0.0"
870 | "@eslint/eslintrc" "^0.3.0"
871 | ajv "^6.10.0"
872 | chalk "^4.0.0"
873 | cross-spawn "^7.0.2"
874 | debug "^4.0.1"
875 | doctrine "^3.0.0"
876 | enquirer "^2.3.5"
877 | eslint-scope "^5.1.1"
878 | eslint-utils "^2.1.0"
879 | eslint-visitor-keys "^2.0.0"
880 | espree "^7.3.1"
881 | esquery "^1.2.0"
882 | esutils "^2.0.2"
883 | file-entry-cache "^6.0.0"
884 | functional-red-black-tree "^1.0.1"
885 | glob-parent "^5.0.0"
886 | globals "^12.1.0"
887 | ignore "^4.0.6"
888 | import-fresh "^3.0.0"
889 | imurmurhash "^0.1.4"
890 | is-glob "^4.0.0"
891 | js-yaml "^3.13.1"
892 | json-stable-stringify-without-jsonify "^1.0.1"
893 | levn "^0.4.1"
894 | lodash "^4.17.20"
895 | minimatch "^3.0.4"
896 | natural-compare "^1.4.0"
897 | optionator "^0.9.1"
898 | progress "^2.0.0"
899 | regexpp "^3.1.0"
900 | semver "^7.2.1"
901 | strip-ansi "^6.0.0"
902 | strip-json-comments "^3.1.0"
903 | table "^6.0.4"
904 | text-table "^0.2.0"
905 | v8-compile-cache "^2.0.3"
906 |
907 | espree@^7.3.0, espree@^7.3.1:
908 | version "7.3.1"
909 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
910 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
911 | dependencies:
912 | acorn "^7.4.0"
913 | acorn-jsx "^5.3.1"
914 | eslint-visitor-keys "^1.3.0"
915 |
916 | esprima@^4.0.0:
917 | version "4.0.1"
918 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
919 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
920 |
921 | esquery@^1.2.0:
922 | version "1.4.0"
923 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
924 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
925 | dependencies:
926 | estraverse "^5.1.0"
927 |
928 | esrecurse@^4.3.0:
929 | version "4.3.0"
930 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
931 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
932 | dependencies:
933 | estraverse "^5.2.0"
934 |
935 | estraverse@^4.1.1:
936 | version "4.3.0"
937 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
938 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
939 |
940 | estraverse@^5.1.0, estraverse@^5.2.0:
941 | version "5.2.0"
942 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
943 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
944 |
945 | esutils@^2.0.2:
946 | version "2.0.3"
947 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
948 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
949 |
950 | etag@~1.8.1:
951 | version "1.8.1"
952 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
953 | integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
954 |
955 | express@^4.17.1:
956 | version "4.17.1"
957 | resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
958 | integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
959 | dependencies:
960 | accepts "~1.3.7"
961 | array-flatten "1.1.1"
962 | body-parser "1.19.0"
963 | content-disposition "0.5.3"
964 | content-type "~1.0.4"
965 | cookie "0.4.0"
966 | cookie-signature "1.0.6"
967 | debug "2.6.9"
968 | depd "~1.1.2"
969 | encodeurl "~1.0.2"
970 | escape-html "~1.0.3"
971 | etag "~1.8.1"
972 | finalhandler "~1.1.2"
973 | fresh "0.5.2"
974 | merge-descriptors "1.0.1"
975 | methods "~1.1.2"
976 | on-finished "~2.3.0"
977 | parseurl "~1.3.3"
978 | path-to-regexp "0.1.7"
979 | proxy-addr "~2.0.5"
980 | qs "6.7.0"
981 | range-parser "~1.2.1"
982 | safe-buffer "5.1.2"
983 | send "0.17.1"
984 | serve-static "1.14.1"
985 | setprototypeof "1.1.1"
986 | statuses "~1.5.0"
987 | type-is "~1.6.18"
988 | utils-merge "1.0.1"
989 | vary "~1.1.2"
990 |
991 | fast-deep-equal@^3.1.1:
992 | version "3.1.3"
993 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
994 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
995 |
996 | fast-diff@^1.1.2:
997 | version "1.2.0"
998 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
999 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
1000 |
1001 | fast-json-stable-stringify@^2.0.0:
1002 | version "2.1.0"
1003 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1004 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1005 |
1006 | fast-levenshtein@^2.0.6:
1007 | version "2.0.6"
1008 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
1009 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
1010 |
1011 | file-entry-cache@^6.0.0:
1012 | version "6.0.0"
1013 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a"
1014 | integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==
1015 | dependencies:
1016 | flat-cache "^3.0.4"
1017 |
1018 | fill-range@^7.0.1:
1019 | version "7.0.1"
1020 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1021 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1022 | dependencies:
1023 | to-regex-range "^5.0.1"
1024 |
1025 | finalhandler@~1.1.2:
1026 | version "1.1.2"
1027 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
1028 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
1029 | dependencies:
1030 | debug "2.6.9"
1031 | encodeurl "~1.0.2"
1032 | escape-html "~1.0.3"
1033 | on-finished "~2.3.0"
1034 | parseurl "~1.3.3"
1035 | statuses "~1.5.0"
1036 | unpipe "~1.0.0"
1037 |
1038 | find-up@^2.0.0, find-up@^2.1.0:
1039 | version "2.1.0"
1040 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
1041 | integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
1042 | dependencies:
1043 | locate-path "^2.0.0"
1044 |
1045 | flat-cache@^3.0.4:
1046 | version "3.0.4"
1047 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
1048 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
1049 | dependencies:
1050 | flatted "^3.1.0"
1051 | rimraf "^3.0.2"
1052 |
1053 | flatted@^3.1.0:
1054 | version "3.1.1"
1055 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
1056 | integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
1057 |
1058 | forwarded@~0.1.2:
1059 | version "0.1.2"
1060 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
1061 | integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=
1062 |
1063 | fresh@0.5.2:
1064 | version "0.5.2"
1065 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
1066 | integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
1067 |
1068 | fs.realpath@^1.0.0:
1069 | version "1.0.0"
1070 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1071 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
1072 |
1073 | fsevents@~2.3.1:
1074 | version "2.3.2"
1075 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
1076 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
1077 |
1078 | function-bind@^1.1.1:
1079 | version "1.1.1"
1080 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
1081 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
1082 |
1083 | functional-red-black-tree@^1.0.1:
1084 | version "1.0.1"
1085 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
1086 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
1087 |
1088 | get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0:
1089 | version "1.1.1"
1090 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
1091 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
1092 | dependencies:
1093 | function-bind "^1.1.1"
1094 | has "^1.0.3"
1095 | has-symbols "^1.0.1"
1096 |
1097 | get-stream@^4.1.0:
1098 | version "4.1.0"
1099 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
1100 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
1101 | dependencies:
1102 | pump "^3.0.0"
1103 |
1104 | get-stream@^5.1.0:
1105 | version "5.2.0"
1106 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
1107 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
1108 | dependencies:
1109 | pump "^3.0.0"
1110 |
1111 | glob-parent@^5.0.0, glob-parent@~5.1.0:
1112 | version "5.1.1"
1113 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
1114 | integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
1115 | dependencies:
1116 | is-glob "^4.0.1"
1117 |
1118 | glob@^7.1.3:
1119 | version "7.1.6"
1120 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
1121 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
1122 | dependencies:
1123 | fs.realpath "^1.0.0"
1124 | inflight "^1.0.4"
1125 | inherits "2"
1126 | minimatch "^3.0.4"
1127 | once "^1.3.0"
1128 | path-is-absolute "^1.0.0"
1129 |
1130 | global-dirs@^2.0.1:
1131 | version "2.1.0"
1132 | resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.1.0.tgz#e9046a49c806ff04d6c1825e196c8f0091e8df4d"
1133 | integrity sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==
1134 | dependencies:
1135 | ini "1.3.7"
1136 |
1137 | globals@^12.1.0:
1138 | version "12.4.0"
1139 | resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
1140 | integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
1141 | dependencies:
1142 | type-fest "^0.8.1"
1143 |
1144 | got@^9.6.0:
1145 | version "9.6.0"
1146 | resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85"
1147 | integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==
1148 | dependencies:
1149 | "@sindresorhus/is" "^0.14.0"
1150 | "@szmarczak/http-timer" "^1.1.2"
1151 | cacheable-request "^6.0.0"
1152 | decompress-response "^3.3.0"
1153 | duplexer3 "^0.1.4"
1154 | get-stream "^4.1.0"
1155 | lowercase-keys "^1.0.1"
1156 | mimic-response "^1.0.1"
1157 | p-cancelable "^1.0.0"
1158 | to-readable-stream "^1.0.0"
1159 | url-parse-lax "^3.0.0"
1160 |
1161 | graceful-fs@^4.1.2:
1162 | version "4.2.5"
1163 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.5.tgz#bc18864a6c9fc7b303f2e2abdb9155ad178fbe29"
1164 | integrity sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==
1165 |
1166 | has-flag@^3.0.0:
1167 | version "3.0.0"
1168 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
1169 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
1170 |
1171 | has-flag@^4.0.0:
1172 | version "4.0.0"
1173 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1174 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1175 |
1176 | has-symbols@^1.0.1:
1177 | version "1.0.1"
1178 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
1179 | integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
1180 |
1181 | has-yarn@^2.1.0:
1182 | version "2.1.0"
1183 | resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77"
1184 | integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==
1185 |
1186 | has@^1.0.3:
1187 | version "1.0.3"
1188 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
1189 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
1190 | dependencies:
1191 | function-bind "^1.1.1"
1192 |
1193 | hosted-git-info@^2.1.4:
1194 | version "2.8.8"
1195 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
1196 | integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
1197 |
1198 | http-cache-semantics@^4.0.0:
1199 | version "4.1.0"
1200 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
1201 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
1202 |
1203 | http-errors@1.7.2:
1204 | version "1.7.2"
1205 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
1206 | integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
1207 | dependencies:
1208 | depd "~1.1.2"
1209 | inherits "2.0.3"
1210 | setprototypeof "1.1.1"
1211 | statuses ">= 1.5.0 < 2"
1212 | toidentifier "1.0.0"
1213 |
1214 | http-errors@~1.7.2:
1215 | version "1.7.3"
1216 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
1217 | integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==
1218 | dependencies:
1219 | depd "~1.1.2"
1220 | inherits "2.0.4"
1221 | setprototypeof "1.1.1"
1222 | statuses ">= 1.5.0 < 2"
1223 | toidentifier "1.0.0"
1224 |
1225 | iconv-lite@0.4.24:
1226 | version "0.4.24"
1227 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
1228 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
1229 | dependencies:
1230 | safer-buffer ">= 2.1.2 < 3"
1231 |
1232 | ignore-by-default@^1.0.1:
1233 | version "1.0.1"
1234 | resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
1235 | integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk=
1236 |
1237 | ignore@^4.0.6:
1238 | version "4.0.6"
1239 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
1240 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
1241 |
1242 | ignore@^5.1.1:
1243 | version "5.1.8"
1244 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
1245 | integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
1246 |
1247 | import-fresh@^3.0.0, import-fresh@^3.2.1:
1248 | version "3.3.0"
1249 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
1250 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
1251 | dependencies:
1252 | parent-module "^1.0.0"
1253 | resolve-from "^4.0.0"
1254 |
1255 | import-lazy@^2.1.0:
1256 | version "2.1.0"
1257 | resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
1258 | integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=
1259 |
1260 | imurmurhash@^0.1.4:
1261 | version "0.1.4"
1262 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1263 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
1264 |
1265 | inflight@^1.0.4:
1266 | version "1.0.6"
1267 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1268 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
1269 | dependencies:
1270 | once "^1.3.0"
1271 | wrappy "1"
1272 |
1273 | inherits@2, inherits@2.0.4, inherits@~2.0.3:
1274 | version "2.0.4"
1275 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1276 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1277 |
1278 | inherits@2.0.3:
1279 | version "2.0.3"
1280 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
1281 | integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
1282 |
1283 | ini@1.3.7:
1284 | version "1.3.7"
1285 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
1286 | integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
1287 |
1288 | ini@~1.3.0:
1289 | version "1.3.8"
1290 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
1291 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
1292 |
1293 | internal-slot@^1.0.2:
1294 | version "1.0.3"
1295 | resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
1296 | integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
1297 | dependencies:
1298 | get-intrinsic "^1.1.0"
1299 | has "^1.0.3"
1300 | side-channel "^1.0.4"
1301 |
1302 | ipaddr.js@1.9.1:
1303 | version "1.9.1"
1304 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
1305 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
1306 |
1307 | is-arrayish@^0.2.1:
1308 | version "0.2.1"
1309 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
1310 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
1311 |
1312 | is-binary-path@~2.1.0:
1313 | version "2.1.0"
1314 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
1315 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
1316 | dependencies:
1317 | binary-extensions "^2.0.0"
1318 |
1319 | is-callable@^1.1.4, is-callable@^1.2.2:
1320 | version "1.2.3"
1321 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e"
1322 | integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==
1323 |
1324 | is-ci@^2.0.0:
1325 | version "2.0.0"
1326 | resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
1327 | integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
1328 | dependencies:
1329 | ci-info "^2.0.0"
1330 |
1331 | is-core-module@^2.1.0:
1332 | version "2.2.0"
1333 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
1334 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
1335 | dependencies:
1336 | has "^1.0.3"
1337 |
1338 | is-date-object@^1.0.1:
1339 | version "1.0.2"
1340 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
1341 | integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
1342 |
1343 | is-extglob@^2.1.1:
1344 | version "2.1.1"
1345 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
1346 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
1347 |
1348 | is-fullwidth-code-point@^2.0.0:
1349 | version "2.0.0"
1350 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
1351 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
1352 |
1353 | is-fullwidth-code-point@^3.0.0:
1354 | version "3.0.0"
1355 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
1356 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
1357 |
1358 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
1359 | version "4.0.1"
1360 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
1361 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
1362 | dependencies:
1363 | is-extglob "^2.1.1"
1364 |
1365 | is-installed-globally@^0.3.1:
1366 | version "0.3.2"
1367 | resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141"
1368 | integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==
1369 | dependencies:
1370 | global-dirs "^2.0.1"
1371 | is-path-inside "^3.0.1"
1372 |
1373 | is-negative-zero@^2.0.1:
1374 | version "2.0.1"
1375 | resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
1376 | integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
1377 |
1378 | is-npm@^4.0.0:
1379 | version "4.0.0"
1380 | resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d"
1381 | integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==
1382 |
1383 | is-number@^7.0.0:
1384 | version "7.0.0"
1385 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1386 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1387 |
1388 | is-obj@^2.0.0:
1389 | version "2.0.0"
1390 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
1391 | integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
1392 |
1393 | is-path-inside@^3.0.1:
1394 | version "3.0.2"
1395 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017"
1396 | integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==
1397 |
1398 | is-regex@^1.1.1:
1399 | version "1.1.2"
1400 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251"
1401 | integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==
1402 | dependencies:
1403 | call-bind "^1.0.2"
1404 | has-symbols "^1.0.1"
1405 |
1406 | is-string@^1.0.5:
1407 | version "1.0.5"
1408 | resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
1409 | integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
1410 |
1411 | is-symbol@^1.0.2:
1412 | version "1.0.3"
1413 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
1414 | integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==
1415 | dependencies:
1416 | has-symbols "^1.0.1"
1417 |
1418 | is-typedarray@^1.0.0:
1419 | version "1.0.0"
1420 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
1421 | integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
1422 |
1423 | is-yarn-global@^0.3.0:
1424 | version "0.3.0"
1425 | resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232"
1426 | integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==
1427 |
1428 | isarray@^1.0.0, isarray@~1.0.0:
1429 | version "1.0.0"
1430 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
1431 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
1432 |
1433 | isexe@^2.0.0:
1434 | version "2.0.0"
1435 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1436 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
1437 |
1438 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
1439 | version "4.0.0"
1440 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
1441 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
1442 |
1443 | js-yaml@^3.13.1:
1444 | version "3.14.1"
1445 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
1446 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
1447 | dependencies:
1448 | argparse "^1.0.7"
1449 | esprima "^4.0.0"
1450 |
1451 | json-buffer@3.0.0:
1452 | version "3.0.0"
1453 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
1454 | integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
1455 |
1456 | json-schema-traverse@^0.4.1:
1457 | version "0.4.1"
1458 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
1459 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
1460 |
1461 | json-schema-traverse@^1.0.0:
1462 | version "1.0.0"
1463 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
1464 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
1465 |
1466 | json-stable-stringify-without-jsonify@^1.0.1:
1467 | version "1.0.1"
1468 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
1469 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
1470 |
1471 | json5@^1.0.1:
1472 | version "1.0.1"
1473 | resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
1474 | integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
1475 | dependencies:
1476 | minimist "^1.2.0"
1477 |
1478 | "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0:
1479 | version "3.2.0"
1480 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82"
1481 | integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==
1482 | dependencies:
1483 | array-includes "^3.1.2"
1484 | object.assign "^4.1.2"
1485 |
1486 | kareem@2.3.2:
1487 | version "2.3.2"
1488 | resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.2.tgz#78c4508894985b8d38a0dc15e1a8e11078f2ca93"
1489 | integrity sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==
1490 |
1491 | keyv@^3.0.0:
1492 | version "3.1.0"
1493 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
1494 | integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==
1495 | dependencies:
1496 | json-buffer "3.0.0"
1497 |
1498 | language-subtag-registry@~0.3.2:
1499 | version "0.3.21"
1500 | resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a"
1501 | integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==
1502 |
1503 | language-tags@^1.0.5:
1504 | version "1.0.5"
1505 | resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
1506 | integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=
1507 | dependencies:
1508 | language-subtag-registry "~0.3.2"
1509 |
1510 | latest-version@^5.0.0:
1511 | version "5.1.0"
1512 | resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
1513 | integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==
1514 | dependencies:
1515 | package-json "^6.3.0"
1516 |
1517 | levn@^0.4.1:
1518 | version "0.4.1"
1519 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
1520 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
1521 | dependencies:
1522 | prelude-ls "^1.2.1"
1523 | type-check "~0.4.0"
1524 |
1525 | load-json-file@^2.0.0:
1526 | version "2.0.0"
1527 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
1528 | integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
1529 | dependencies:
1530 | graceful-fs "^4.1.2"
1531 | parse-json "^2.2.0"
1532 | pify "^2.0.0"
1533 | strip-bom "^3.0.0"
1534 |
1535 | locate-path@^2.0.0:
1536 | version "2.0.0"
1537 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
1538 | integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
1539 | dependencies:
1540 | p-locate "^2.0.0"
1541 | path-exists "^3.0.0"
1542 |
1543 | lodash@^4.17.20:
1544 | version "4.17.20"
1545 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
1546 | integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
1547 |
1548 | loose-envify@^1.4.0:
1549 | version "1.4.0"
1550 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
1551 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
1552 | dependencies:
1553 | js-tokens "^3.0.0 || ^4.0.0"
1554 |
1555 | lowercase-keys@^1.0.0, lowercase-keys@^1.0.1:
1556 | version "1.0.1"
1557 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
1558 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==
1559 |
1560 | lowercase-keys@^2.0.0:
1561 | version "2.0.0"
1562 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479"
1563 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==
1564 |
1565 | lru-cache@^6.0.0:
1566 | version "6.0.0"
1567 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
1568 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
1569 | dependencies:
1570 | yallist "^4.0.0"
1571 |
1572 | make-dir@^3.0.0:
1573 | version "3.1.0"
1574 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
1575 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
1576 | dependencies:
1577 | semver "^6.0.0"
1578 |
1579 | media-typer@0.3.0:
1580 | version "0.3.0"
1581 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
1582 | integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
1583 |
1584 | memory-pager@^1.0.2:
1585 | version "1.5.0"
1586 | resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5"
1587 | integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==
1588 |
1589 | merge-descriptors@1.0.1:
1590 | version "1.0.1"
1591 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
1592 | integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
1593 |
1594 | methods@~1.1.2:
1595 | version "1.1.2"
1596 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
1597 | integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
1598 |
1599 | mime-db@1.45.0:
1600 | version "1.45.0"
1601 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
1602 | integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
1603 |
1604 | mime-types@~2.1.24:
1605 | version "2.1.28"
1606 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
1607 | integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
1608 | dependencies:
1609 | mime-db "1.45.0"
1610 |
1611 | mime@1.6.0:
1612 | version "1.6.0"
1613 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
1614 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
1615 |
1616 | mimic-response@^1.0.0, mimic-response@^1.0.1:
1617 | version "1.0.1"
1618 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
1619 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
1620 |
1621 | minimatch@^3.0.4:
1622 | version "3.0.4"
1623 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1624 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
1625 | dependencies:
1626 | brace-expansion "^1.1.7"
1627 |
1628 | minimist@^1.2.0:
1629 | version "1.2.5"
1630 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
1631 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
1632 |
1633 | mongodb@3.6.3:
1634 | version "3.6.3"
1635 | resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.6.3.tgz#eddaed0cc3598474d7a15f0f2a5b04848489fd05"
1636 | integrity sha512-rOZuR0QkodZiM+UbQE5kDsJykBqWi0CL4Ec2i1nrGrUI3KO11r6Fbxskqmq3JK2NH7aW4dcccBuUujAP0ERl5w==
1637 | dependencies:
1638 | bl "^2.2.1"
1639 | bson "^1.1.4"
1640 | denque "^1.4.1"
1641 | require_optional "^1.0.1"
1642 | safe-buffer "^5.1.2"
1643 | optionalDependencies:
1644 | saslprep "^1.0.0"
1645 |
1646 | mongoose-legacy-pluralize@1.0.2:
1647 | version "1.0.2"
1648 | resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4"
1649 | integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==
1650 |
1651 | mongoose@^5.11.15:
1652 | version "5.11.15"
1653 | resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.11.15.tgz#ee8ba751c83ee21f4b399aba7cb10276dd316320"
1654 | integrity sha512-8T4bT6eCGB7MqCm40oVhnhT/1AyAdwe+y1rYUhdl3ljsks3BpYz8whZgcMkIoh6VoCCjipOXRqZqdk1UByvlYA==
1655 | dependencies:
1656 | "@types/mongodb" "^3.5.27"
1657 | bson "^1.1.4"
1658 | kareem "2.3.2"
1659 | mongodb "3.6.3"
1660 | mongoose-legacy-pluralize "1.0.2"
1661 | mpath "0.8.3"
1662 | mquery "3.2.3"
1663 | ms "2.1.2"
1664 | regexp-clone "1.0.0"
1665 | safe-buffer "5.2.1"
1666 | sift "7.0.1"
1667 | sliced "1.0.1"
1668 |
1669 | mpath@0.8.3:
1670 | version "0.8.3"
1671 | resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.8.3.tgz#828ac0d187f7f42674839d74921970979abbdd8f"
1672 | integrity sha512-eb9rRvhDltXVNL6Fxd2zM9D4vKBxjVVQNLNijlj7uoXUy19zNDsIif5zR+pWmPCWNKwAtqyo4JveQm4nfD5+eA==
1673 |
1674 | mquery@3.2.3:
1675 | version "3.2.3"
1676 | resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.3.tgz#bcf54fdfe3baf57b6a22f9b62b1ad5fa18ffe96a"
1677 | integrity sha512-cIfbP4TyMYX+SkaQ2MntD+F2XbqaBHUYWk3j+kqdDztPWok3tgyssOZxMHMtzbV1w9DaSlvEea0Iocuro41A4g==
1678 | dependencies:
1679 | bluebird "3.5.1"
1680 | debug "3.1.0"
1681 | regexp-clone "^1.0.0"
1682 | safe-buffer "5.1.2"
1683 | sliced "1.0.1"
1684 |
1685 | ms@2.0.0:
1686 | version "2.0.0"
1687 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
1688 | integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
1689 |
1690 | ms@2.1.1:
1691 | version "2.1.1"
1692 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
1693 | integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
1694 |
1695 | ms@2.1.2:
1696 | version "2.1.2"
1697 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1698 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1699 |
1700 | ms@^2.1.1:
1701 | version "2.1.3"
1702 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1703 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1704 |
1705 | natural-compare@^1.4.0:
1706 | version "1.4.0"
1707 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1708 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
1709 |
1710 | negotiator@0.6.2:
1711 | version "0.6.2"
1712 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
1713 | integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
1714 |
1715 | nodemon@^2.0.7:
1716 | version "2.0.7"
1717 | resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.7.tgz#6f030a0a0ebe3ea1ba2a38f71bf9bab4841ced32"
1718 | integrity sha512-XHzK69Awgnec9UzHr1kc8EomQh4sjTQ8oRf8TsGrSmHDx9/UmiGG9E/mM3BuTfNeFwdNBvrqQq/RHL0xIeyFOA==
1719 | dependencies:
1720 | chokidar "^3.2.2"
1721 | debug "^3.2.6"
1722 | ignore-by-default "^1.0.1"
1723 | minimatch "^3.0.4"
1724 | pstree.remy "^1.1.7"
1725 | semver "^5.7.1"
1726 | supports-color "^5.5.0"
1727 | touch "^3.1.0"
1728 | undefsafe "^2.0.3"
1729 | update-notifier "^4.1.0"
1730 |
1731 | nopt@~1.0.10:
1732 | version "1.0.10"
1733 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
1734 | integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=
1735 | dependencies:
1736 | abbrev "1"
1737 |
1738 | normalize-package-data@^2.3.2:
1739 | version "2.5.0"
1740 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
1741 | integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
1742 | dependencies:
1743 | hosted-git-info "^2.1.4"
1744 | resolve "^1.10.0"
1745 | semver "2 || 3 || 4 || 5"
1746 | validate-npm-package-license "^3.0.1"
1747 |
1748 | normalize-path@^3.0.0, normalize-path@~3.0.0:
1749 | version "3.0.0"
1750 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1751 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1752 |
1753 | normalize-url@^4.1.0:
1754 | version "4.5.0"
1755 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129"
1756 | integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==
1757 |
1758 | object-assign@^4.1.1:
1759 | version "4.1.1"
1760 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
1761 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
1762 |
1763 | object-inspect@^1.9.0:
1764 | version "1.9.0"
1765 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
1766 | integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
1767 |
1768 | object-keys@^1.0.12, object-keys@^1.1.1:
1769 | version "1.1.1"
1770 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
1771 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
1772 |
1773 | object.assign@^4.1.2:
1774 | version "4.1.2"
1775 | resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
1776 | integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
1777 | dependencies:
1778 | call-bind "^1.0.0"
1779 | define-properties "^1.1.3"
1780 | has-symbols "^1.0.1"
1781 | object-keys "^1.1.1"
1782 |
1783 | object.entries@^1.1.2:
1784 | version "1.1.3"
1785 | resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6"
1786 | integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==
1787 | dependencies:
1788 | call-bind "^1.0.0"
1789 | define-properties "^1.1.3"
1790 | es-abstract "^1.18.0-next.1"
1791 | has "^1.0.3"
1792 |
1793 | object.fromentries@^2.0.2:
1794 | version "2.0.3"
1795 | resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.3.tgz#13cefcffa702dc67750314a3305e8cb3fad1d072"
1796 | integrity sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==
1797 | dependencies:
1798 | call-bind "^1.0.0"
1799 | define-properties "^1.1.3"
1800 | es-abstract "^1.18.0-next.1"
1801 | has "^1.0.3"
1802 |
1803 | object.values@^1.1.1:
1804 | version "1.1.2"
1805 | resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731"
1806 | integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==
1807 | dependencies:
1808 | call-bind "^1.0.0"
1809 | define-properties "^1.1.3"
1810 | es-abstract "^1.18.0-next.1"
1811 | has "^1.0.3"
1812 |
1813 | on-finished@~2.3.0:
1814 | version "2.3.0"
1815 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
1816 | integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
1817 | dependencies:
1818 | ee-first "1.1.1"
1819 |
1820 | once@^1.3.0, once@^1.3.1, once@^1.4.0:
1821 | version "1.4.0"
1822 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1823 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1824 | dependencies:
1825 | wrappy "1"
1826 |
1827 | optionator@^0.9.1:
1828 | version "0.9.1"
1829 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
1830 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
1831 | dependencies:
1832 | deep-is "^0.1.3"
1833 | fast-levenshtein "^2.0.6"
1834 | levn "^0.4.1"
1835 | prelude-ls "^1.2.1"
1836 | type-check "^0.4.0"
1837 | word-wrap "^1.2.3"
1838 |
1839 | p-cancelable@^1.0.0:
1840 | version "1.1.0"
1841 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc"
1842 | integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==
1843 |
1844 | p-limit@^1.1.0:
1845 | version "1.3.0"
1846 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
1847 | integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
1848 | dependencies:
1849 | p-try "^1.0.0"
1850 |
1851 | p-locate@^2.0.0:
1852 | version "2.0.0"
1853 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
1854 | integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
1855 | dependencies:
1856 | p-limit "^1.1.0"
1857 |
1858 | p-try@^1.0.0:
1859 | version "1.0.0"
1860 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
1861 | integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
1862 |
1863 | package-json@^6.3.0:
1864 | version "6.5.0"
1865 | resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0"
1866 | integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==
1867 | dependencies:
1868 | got "^9.6.0"
1869 | registry-auth-token "^4.0.0"
1870 | registry-url "^5.0.0"
1871 | semver "^6.2.0"
1872 |
1873 | parent-module@^1.0.0:
1874 | version "1.0.1"
1875 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1876 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1877 | dependencies:
1878 | callsites "^3.0.0"
1879 |
1880 | parse-json@^2.2.0:
1881 | version "2.2.0"
1882 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
1883 | integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
1884 | dependencies:
1885 | error-ex "^1.2.0"
1886 |
1887 | parseurl@~1.3.3:
1888 | version "1.3.3"
1889 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
1890 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
1891 |
1892 | path-exists@^3.0.0:
1893 | version "3.0.0"
1894 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
1895 | integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
1896 |
1897 | path-is-absolute@^1.0.0:
1898 | version "1.0.1"
1899 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1900 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1901 |
1902 | path-key@^3.1.0:
1903 | version "3.1.1"
1904 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1905 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1906 |
1907 | path-parse@^1.0.6:
1908 | version "1.0.6"
1909 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
1910 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
1911 |
1912 | path-to-regexp@0.1.7:
1913 | version "0.1.7"
1914 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
1915 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
1916 |
1917 | path-type@^2.0.0:
1918 | version "2.0.0"
1919 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
1920 | integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
1921 | dependencies:
1922 | pify "^2.0.0"
1923 |
1924 | picomatch@^2.0.4, picomatch@^2.2.1:
1925 | version "2.2.2"
1926 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
1927 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
1928 |
1929 | pify@^2.0.0:
1930 | version "2.3.0"
1931 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
1932 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
1933 |
1934 | pkg-dir@^2.0.0:
1935 | version "2.0.0"
1936 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
1937 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
1938 | dependencies:
1939 | find-up "^2.1.0"
1940 |
1941 | prelude-ls@^1.2.1:
1942 | version "1.2.1"
1943 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
1944 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
1945 |
1946 | prepend-http@^2.0.0:
1947 | version "2.0.0"
1948 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
1949 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
1950 |
1951 | prettier-linter-helpers@^1.0.0:
1952 | version "1.0.0"
1953 | resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
1954 | integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
1955 | dependencies:
1956 | fast-diff "^1.1.2"
1957 |
1958 | prettier@^2.2.1:
1959 | version "2.2.1"
1960 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
1961 | integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
1962 |
1963 | process-nextick-args@~2.0.0:
1964 | version "2.0.1"
1965 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
1966 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
1967 |
1968 | progress@^2.0.0:
1969 | version "2.0.3"
1970 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
1971 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
1972 |
1973 | prop-types@^15.7.2:
1974 | version "15.7.2"
1975 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
1976 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
1977 | dependencies:
1978 | loose-envify "^1.4.0"
1979 | object-assign "^4.1.1"
1980 | react-is "^16.8.1"
1981 |
1982 | proxy-addr@~2.0.5:
1983 | version "2.0.6"
1984 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
1985 | integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==
1986 | dependencies:
1987 | forwarded "~0.1.2"
1988 | ipaddr.js "1.9.1"
1989 |
1990 | pstree.remy@^1.1.7:
1991 | version "1.1.8"
1992 | resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a"
1993 | integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==
1994 |
1995 | pump@^3.0.0:
1996 | version "3.0.0"
1997 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
1998 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
1999 | dependencies:
2000 | end-of-stream "^1.1.0"
2001 | once "^1.3.1"
2002 |
2003 | punycode@^2.1.0:
2004 | version "2.1.1"
2005 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
2006 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
2007 |
2008 | pupa@^2.0.1:
2009 | version "2.1.1"
2010 | resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62"
2011 | integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==
2012 | dependencies:
2013 | escape-goat "^2.0.0"
2014 |
2015 | qs@6.7.0:
2016 | version "6.7.0"
2017 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
2018 | integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
2019 |
2020 | range-parser@~1.2.1:
2021 | version "1.2.1"
2022 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
2023 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
2024 |
2025 | raw-body@2.4.0:
2026 | version "2.4.0"
2027 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
2028 | integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
2029 | dependencies:
2030 | bytes "3.1.0"
2031 | http-errors "1.7.2"
2032 | iconv-lite "0.4.24"
2033 | unpipe "1.0.0"
2034 |
2035 | rc@^1.2.8:
2036 | version "1.2.8"
2037 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
2038 | integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
2039 | dependencies:
2040 | deep-extend "^0.6.0"
2041 | ini "~1.3.0"
2042 | minimist "^1.2.0"
2043 | strip-json-comments "~2.0.1"
2044 |
2045 | react-is@^16.8.1:
2046 | version "16.13.1"
2047 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
2048 | integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
2049 |
2050 | read-pkg-up@^2.0.0:
2051 | version "2.0.0"
2052 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
2053 | integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
2054 | dependencies:
2055 | find-up "^2.0.0"
2056 | read-pkg "^2.0.0"
2057 |
2058 | read-pkg@^2.0.0:
2059 | version "2.0.0"
2060 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
2061 | integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
2062 | dependencies:
2063 | load-json-file "^2.0.0"
2064 | normalize-package-data "^2.3.2"
2065 | path-type "^2.0.0"
2066 |
2067 | readable-stream@^2.3.5:
2068 | version "2.3.7"
2069 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
2070 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
2071 | dependencies:
2072 | core-util-is "~1.0.0"
2073 | inherits "~2.0.3"
2074 | isarray "~1.0.0"
2075 | process-nextick-args "~2.0.0"
2076 | safe-buffer "~5.1.1"
2077 | string_decoder "~1.1.1"
2078 | util-deprecate "~1.0.1"
2079 |
2080 | readdirp@~3.5.0:
2081 | version "3.5.0"
2082 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
2083 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
2084 | dependencies:
2085 | picomatch "^2.2.1"
2086 |
2087 | regenerator-runtime@^0.13.4:
2088 | version "0.13.7"
2089 | resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
2090 | integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
2091 |
2092 | regexp-clone@1.0.0, regexp-clone@^1.0.0:
2093 | version "1.0.0"
2094 | resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63"
2095 | integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==
2096 |
2097 | regexp.prototype.flags@^1.3.0:
2098 | version "1.3.1"
2099 | resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26"
2100 | integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==
2101 | dependencies:
2102 | call-bind "^1.0.2"
2103 | define-properties "^1.1.3"
2104 |
2105 | regexpp@^3.0.0, regexpp@^3.1.0:
2106 | version "3.1.0"
2107 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
2108 | integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
2109 |
2110 | registry-auth-token@^4.0.0:
2111 | version "4.2.1"
2112 | resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250"
2113 | integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==
2114 | dependencies:
2115 | rc "^1.2.8"
2116 |
2117 | registry-url@^5.0.0:
2118 | version "5.1.0"
2119 | resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009"
2120 | integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==
2121 | dependencies:
2122 | rc "^1.2.8"
2123 |
2124 | require-from-string@^2.0.2:
2125 | version "2.0.2"
2126 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
2127 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
2128 |
2129 | require_optional@^1.0.1:
2130 | version "1.0.1"
2131 | resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e"
2132 | integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==
2133 | dependencies:
2134 | resolve-from "^2.0.0"
2135 | semver "^5.1.0"
2136 |
2137 | resolve-from@^2.0.0:
2138 | version "2.0.0"
2139 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
2140 | integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=
2141 |
2142 | resolve-from@^4.0.0:
2143 | version "4.0.0"
2144 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
2145 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
2146 |
2147 | resolve@^1.10.0, resolve@^1.10.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1:
2148 | version "1.19.0"
2149 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c"
2150 | integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==
2151 | dependencies:
2152 | is-core-module "^2.1.0"
2153 | path-parse "^1.0.6"
2154 |
2155 | responselike@^1.0.2:
2156 | version "1.0.2"
2157 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
2158 | integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
2159 | dependencies:
2160 | lowercase-keys "^1.0.0"
2161 |
2162 | rimraf@^3.0.2:
2163 | version "3.0.2"
2164 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
2165 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
2166 | dependencies:
2167 | glob "^7.1.3"
2168 |
2169 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
2170 | version "5.1.2"
2171 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
2172 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
2173 |
2174 | safe-buffer@5.2.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2:
2175 | version "5.2.1"
2176 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
2177 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2178 |
2179 | "safer-buffer@>= 2.1.2 < 3":
2180 | version "2.1.2"
2181 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
2182 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
2183 |
2184 | saslprep@^1.0.0:
2185 | version "1.0.3"
2186 | resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226"
2187 | integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==
2188 | dependencies:
2189 | sparse-bitfield "^3.0.3"
2190 |
2191 | semver-diff@^3.1.1:
2192 | version "3.1.1"
2193 | resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b"
2194 | integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==
2195 | dependencies:
2196 | semver "^6.3.0"
2197 |
2198 | "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.7.1:
2199 | version "5.7.1"
2200 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
2201 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
2202 |
2203 | semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0:
2204 | version "6.3.0"
2205 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
2206 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
2207 |
2208 | semver@^7.2.1:
2209 | version "7.3.4"
2210 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
2211 | integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
2212 | dependencies:
2213 | lru-cache "^6.0.0"
2214 |
2215 | send@0.17.1:
2216 | version "0.17.1"
2217 | resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
2218 | integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
2219 | dependencies:
2220 | debug "2.6.9"
2221 | depd "~1.1.2"
2222 | destroy "~1.0.4"
2223 | encodeurl "~1.0.2"
2224 | escape-html "~1.0.3"
2225 | etag "~1.8.1"
2226 | fresh "0.5.2"
2227 | http-errors "~1.7.2"
2228 | mime "1.6.0"
2229 | ms "2.1.1"
2230 | on-finished "~2.3.0"
2231 | range-parser "~1.2.1"
2232 | statuses "~1.5.0"
2233 |
2234 | serve-static@1.14.1:
2235 | version "1.14.1"
2236 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
2237 | integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
2238 | dependencies:
2239 | encodeurl "~1.0.2"
2240 | escape-html "~1.0.3"
2241 | parseurl "~1.3.3"
2242 | send "0.17.1"
2243 |
2244 | setprototypeof@1.1.1:
2245 | version "1.1.1"
2246 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
2247 | integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
2248 |
2249 | shebang-command@^2.0.0:
2250 | version "2.0.0"
2251 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2252 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2253 | dependencies:
2254 | shebang-regex "^3.0.0"
2255 |
2256 | shebang-regex@^3.0.0:
2257 | version "3.0.0"
2258 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2259 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2260 |
2261 | side-channel@^1.0.3, side-channel@^1.0.4:
2262 | version "1.0.4"
2263 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
2264 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
2265 | dependencies:
2266 | call-bind "^1.0.0"
2267 | get-intrinsic "^1.0.2"
2268 | object-inspect "^1.9.0"
2269 |
2270 | sift@7.0.1:
2271 | version "7.0.1"
2272 | resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08"
2273 | integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g==
2274 |
2275 | signal-exit@^3.0.2:
2276 | version "3.0.3"
2277 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
2278 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
2279 |
2280 | slice-ansi@^4.0.0:
2281 | version "4.0.0"
2282 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
2283 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
2284 | dependencies:
2285 | ansi-styles "^4.0.0"
2286 | astral-regex "^2.0.0"
2287 | is-fullwidth-code-point "^3.0.0"
2288 |
2289 | sliced@1.0.1:
2290 | version "1.0.1"
2291 | resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41"
2292 | integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=
2293 |
2294 | slugify@^1.4.6:
2295 | version "1.4.6"
2296 | resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.6.tgz#ef288d920a47fb01c2be56b3487b6722f5e34ace"
2297 | integrity sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ==
2298 |
2299 | sparse-bitfield@^3.0.3:
2300 | version "3.0.3"
2301 | resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11"
2302 | integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE=
2303 | dependencies:
2304 | memory-pager "^1.0.2"
2305 |
2306 | spdx-correct@^3.0.0:
2307 | version "3.1.1"
2308 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
2309 | integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
2310 | dependencies:
2311 | spdx-expression-parse "^3.0.0"
2312 | spdx-license-ids "^3.0.0"
2313 |
2314 | spdx-exceptions@^2.1.0:
2315 | version "2.3.0"
2316 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
2317 | integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
2318 |
2319 | spdx-expression-parse@^3.0.0:
2320 | version "3.0.1"
2321 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
2322 | integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
2323 | dependencies:
2324 | spdx-exceptions "^2.1.0"
2325 | spdx-license-ids "^3.0.0"
2326 |
2327 | spdx-license-ids@^3.0.0:
2328 | version "3.0.7"
2329 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65"
2330 | integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==
2331 |
2332 | sprintf-js@~1.0.2:
2333 | version "1.0.3"
2334 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
2335 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
2336 |
2337 | "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
2338 | version "1.5.0"
2339 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
2340 | integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
2341 |
2342 | string-width@^3.0.0:
2343 | version "3.1.0"
2344 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
2345 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
2346 | dependencies:
2347 | emoji-regex "^7.0.1"
2348 | is-fullwidth-code-point "^2.0.0"
2349 | strip-ansi "^5.1.0"
2350 |
2351 | string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0:
2352 | version "4.2.0"
2353 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5"
2354 | integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==
2355 | dependencies:
2356 | emoji-regex "^8.0.0"
2357 | is-fullwidth-code-point "^3.0.0"
2358 | strip-ansi "^6.0.0"
2359 |
2360 | string.prototype.matchall@^4.0.2:
2361 | version "4.0.3"
2362 | resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a"
2363 | integrity sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==
2364 | dependencies:
2365 | call-bind "^1.0.0"
2366 | define-properties "^1.1.3"
2367 | es-abstract "^1.18.0-next.1"
2368 | has-symbols "^1.0.1"
2369 | internal-slot "^1.0.2"
2370 | regexp.prototype.flags "^1.3.0"
2371 | side-channel "^1.0.3"
2372 |
2373 | string.prototype.trimend@^1.0.3:
2374 | version "1.0.3"
2375 | resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b"
2376 | integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==
2377 | dependencies:
2378 | call-bind "^1.0.0"
2379 | define-properties "^1.1.3"
2380 |
2381 | string.prototype.trimstart@^1.0.3:
2382 | version "1.0.3"
2383 | resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa"
2384 | integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==
2385 | dependencies:
2386 | call-bind "^1.0.0"
2387 | define-properties "^1.1.3"
2388 |
2389 | string_decoder@~1.1.1:
2390 | version "1.1.1"
2391 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
2392 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
2393 | dependencies:
2394 | safe-buffer "~5.1.0"
2395 |
2396 | strip-ansi@^5.1.0:
2397 | version "5.2.0"
2398 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
2399 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
2400 | dependencies:
2401 | ansi-regex "^4.1.0"
2402 |
2403 | strip-ansi@^6.0.0:
2404 | version "6.0.0"
2405 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532"
2406 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==
2407 | dependencies:
2408 | ansi-regex "^5.0.0"
2409 |
2410 | strip-bom@^3.0.0:
2411 | version "3.0.0"
2412 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
2413 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
2414 |
2415 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
2416 | version "3.1.1"
2417 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
2418 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
2419 |
2420 | strip-json-comments@~2.0.1:
2421 | version "2.0.1"
2422 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
2423 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
2424 |
2425 | supports-color@^5.3.0, supports-color@^5.5.0:
2426 | version "5.5.0"
2427 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
2428 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
2429 | dependencies:
2430 | has-flag "^3.0.0"
2431 |
2432 | supports-color@^7.1.0:
2433 | version "7.2.0"
2434 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2435 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2436 | dependencies:
2437 | has-flag "^4.0.0"
2438 |
2439 | table@^6.0.4:
2440 | version "6.0.7"
2441 | resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34"
2442 | integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==
2443 | dependencies:
2444 | ajv "^7.0.2"
2445 | lodash "^4.17.20"
2446 | slice-ansi "^4.0.0"
2447 | string-width "^4.2.0"
2448 |
2449 | term-size@^2.1.0:
2450 | version "2.2.1"
2451 | resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54"
2452 | integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==
2453 |
2454 | text-table@^0.2.0:
2455 | version "0.2.0"
2456 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
2457 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
2458 |
2459 | to-readable-stream@^1.0.0:
2460 | version "1.0.0"
2461 | resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771"
2462 | integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==
2463 |
2464 | to-regex-range@^5.0.1:
2465 | version "5.0.1"
2466 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2467 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2468 | dependencies:
2469 | is-number "^7.0.0"
2470 |
2471 | toidentifier@1.0.0:
2472 | version "1.0.0"
2473 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
2474 | integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
2475 |
2476 | touch@^3.1.0:
2477 | version "3.1.0"
2478 | resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
2479 | integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==
2480 | dependencies:
2481 | nopt "~1.0.10"
2482 |
2483 | tsconfig-paths@^3.9.0:
2484 | version "3.9.0"
2485 | resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b"
2486 | integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==
2487 | dependencies:
2488 | "@types/json5" "^0.0.29"
2489 | json5 "^1.0.1"
2490 | minimist "^1.2.0"
2491 | strip-bom "^3.0.0"
2492 |
2493 | type-check@^0.4.0, type-check@~0.4.0:
2494 | version "0.4.0"
2495 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
2496 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
2497 | dependencies:
2498 | prelude-ls "^1.2.1"
2499 |
2500 | type-fest@^0.8.1:
2501 | version "0.8.1"
2502 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
2503 | integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
2504 |
2505 | type-is@~1.6.17, type-is@~1.6.18:
2506 | version "1.6.18"
2507 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
2508 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
2509 | dependencies:
2510 | media-typer "0.3.0"
2511 | mime-types "~2.1.24"
2512 |
2513 | typedarray-to-buffer@^3.1.5:
2514 | version "3.1.5"
2515 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
2516 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
2517 | dependencies:
2518 | is-typedarray "^1.0.0"
2519 |
2520 | undefsafe@^2.0.3:
2521 | version "2.0.3"
2522 | resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae"
2523 | integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==
2524 | dependencies:
2525 | debug "^2.2.0"
2526 |
2527 | unique-string@^2.0.0:
2528 | version "2.0.0"
2529 | resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
2530 | integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==
2531 | dependencies:
2532 | crypto-random-string "^2.0.0"
2533 |
2534 | unpipe@1.0.0, unpipe@~1.0.0:
2535 | version "1.0.0"
2536 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
2537 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
2538 |
2539 | update-notifier@^4.1.0:
2540 | version "4.1.3"
2541 | resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3"
2542 | integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==
2543 | dependencies:
2544 | boxen "^4.2.0"
2545 | chalk "^3.0.0"
2546 | configstore "^5.0.1"
2547 | has-yarn "^2.1.0"
2548 | import-lazy "^2.1.0"
2549 | is-ci "^2.0.0"
2550 | is-installed-globally "^0.3.1"
2551 | is-npm "^4.0.0"
2552 | is-yarn-global "^0.3.0"
2553 | latest-version "^5.0.0"
2554 | pupa "^2.0.1"
2555 | semver-diff "^3.1.1"
2556 | xdg-basedir "^4.0.0"
2557 |
2558 | uri-js@^4.2.2:
2559 | version "4.4.1"
2560 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
2561 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
2562 | dependencies:
2563 | punycode "^2.1.0"
2564 |
2565 | url-parse-lax@^3.0.0:
2566 | version "3.0.0"
2567 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
2568 | integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
2569 | dependencies:
2570 | prepend-http "^2.0.0"
2571 |
2572 | util-deprecate@~1.0.1:
2573 | version "1.0.2"
2574 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
2575 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
2576 |
2577 | utils-merge@1.0.1:
2578 | version "1.0.1"
2579 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
2580 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
2581 |
2582 | v8-compile-cache@^2.0.3:
2583 | version "2.2.0"
2584 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
2585 | integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
2586 |
2587 | validate-npm-package-license@^3.0.1:
2588 | version "3.0.4"
2589 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
2590 | integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
2591 | dependencies:
2592 | spdx-correct "^3.0.0"
2593 | spdx-expression-parse "^3.0.0"
2594 |
2595 | vary@~1.1.2:
2596 | version "1.1.2"
2597 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
2598 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
2599 |
2600 | which@^2.0.1:
2601 | version "2.0.2"
2602 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2603 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2604 | dependencies:
2605 | isexe "^2.0.0"
2606 |
2607 | widest-line@^3.1.0:
2608 | version "3.1.0"
2609 | resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca"
2610 | integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==
2611 | dependencies:
2612 | string-width "^4.0.0"
2613 |
2614 | word-wrap@^1.2.3:
2615 | version "1.2.3"
2616 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
2617 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
2618 |
2619 | wrappy@1:
2620 | version "1.0.2"
2621 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2622 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
2623 |
2624 | write-file-atomic@^3.0.0:
2625 | version "3.0.3"
2626 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
2627 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
2628 | dependencies:
2629 | imurmurhash "^0.1.4"
2630 | is-typedarray "^1.0.0"
2631 | signal-exit "^3.0.2"
2632 | typedarray-to-buffer "^3.1.5"
2633 |
2634 | xdg-basedir@^4.0.0:
2635 | version "4.0.0"
2636 | resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
2637 | integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
2638 |
2639 | yallist@^4.0.0:
2640 | version "4.0.0"
2641 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
2642 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
2643 |
--------------------------------------------------------------------------------