├── .gitignore
├── client
├── .eslintrc.json
├── .gitignore
├── README.md
├── images
│ └── 95001318.png
├── next-env.d.ts
├── next.config.js
├── package.json
├── pages
│ ├── _app.tsx
│ ├── _document.tsx
│ ├── edit.tsx
│ ├── gamesList.tsx
│ └── index.tsx
├── src
│ └── components
│ │ ├── app
│ │ ├── app.tsx
│ │ └── style.ts
│ │ ├── editGame
│ │ ├── editGame.tsx
│ │ └── style.ts
│ │ ├── header
│ │ ├── header.tsx
│ │ └── style.ts
│ │ ├── mainContentainer
│ │ └── MainContainer.tsx
│ │ └── table
│ │ ├── style.ts
│ │ └── table.tsx
├── styles
│ └── Global.ts
├── tsconfig.json
└── yarn.lock
└── server
├── index.js
├── package.json
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/client/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/client/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 | .pnpm-debug.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 |
--------------------------------------------------------------------------------
/client/README.md:
--------------------------------------------------------------------------------
1 | This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
2 |
3 | ## Getting Started
4 |
5 | First, run the development server:
6 |
7 | ```bash
8 | npm run dev
9 | # or
10 | yarn dev
11 | ```
12 |
13 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
14 |
15 | You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
16 |
17 | [API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
18 |
19 | The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
20 |
21 | ## Learn More
22 |
23 | To learn more about Next.js, take a look at the following resources:
24 |
25 | - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
26 | - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
27 |
28 | You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
29 |
30 | ## Deploy on Vercel
31 |
32 | The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
33 |
34 | Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
35 |
--------------------------------------------------------------------------------
/client/images/95001318.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mauriciocosta404/crud-node.js-express-mysql-next.js-typescript/dfa38aa7ee2dc768bb80eb3f19c4503f3e89c553/client/images/95001318.png
--------------------------------------------------------------------------------
/client/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/basic-features/typescript for more information.
6 |
--------------------------------------------------------------------------------
/client/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | }
5 |
6 | module.exports = nextConfig
7 |
--------------------------------------------------------------------------------
/client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "app0ty",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@types/styled-components": "^5.1.25",
13 | "axios": "^0.27.2",
14 | "miragejs": "^0.1.45",
15 | "next": "12.1.6",
16 | "next-link": "^2.0.0",
17 | "next-router": "^1.3.6",
18 | "react": "18.2.0",
19 | "react-dom": "18.2.0",
20 | "react-icons": "^4.4.0",
21 | "react-video-js-player": "^1.1.1",
22 | "styled-components": "^5.3.5"
23 | },
24 | "devDependencies": {
25 | "@types/node": "18.0.0",
26 | "@types/react": "18.0.14",
27 | "@types/react-dom": "18.0.5",
28 | "babel-plugin-styled-components": "^2.0.7",
29 | "eslint": "8.18.0",
30 | "eslint-config-next": "12.1.6",
31 | "typescript": "4.7.4"
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/client/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import type { AppProps } from 'next/app';
2 | import { GlobalStyle } from '../styles/Global';
3 | import MainContainer from '../src/components/mainContentainer/MainContainer';
4 |
5 |
6 | function MyApp({ Component, pageProps }: AppProps) {
7 | return (
8 | <>
9 |
10 |
11 |
12 |
13 |
14 | >)
15 | }
16 | export default MyApp
--------------------------------------------------------------------------------
/client/pages/_document.tsx:
--------------------------------------------------------------------------------
1 | import Document, { DocumentContext } from 'next/document'
2 | import { ServerStyleSheet } from 'styled-components'
3 |
4 | export default class MyDocument extends Document {
5 | static async getInitialProps(ctx: DocumentContext) {
6 | const sheet = new ServerStyleSheet()
7 | const originalRenderPage = ctx.renderPage
8 |
9 | try {
10 | ctx.renderPage = () =>
11 | originalRenderPage({
12 | enhanceApp: (App) => (props) =>
13 | sheet.collectStyles(),
14 | })
15 |
16 | const initialProps = await Document.getInitialProps(ctx)
17 | return {
18 | ...initialProps,
19 | styles: [initialProps.styles, sheet.getStyleElement()],
20 | }
21 | } finally {
22 | sheet.seal()
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/client/pages/edit.tsx:
--------------------------------------------------------------------------------
1 | import { NextPage } from "next";
2 | import EditGames from "../src/components/editGame/editGame";
3 |
4 | const Edit:NextPage=()=>{
5 | return(
6 | <>
7 |
8 | >
9 | )
10 | }
11 | export default Edit;
--------------------------------------------------------------------------------
/client/pages/gamesList.tsx:
--------------------------------------------------------------------------------
1 | import type { NextPage } from 'next'
2 | import Head from 'next/head'
3 | import Table from '../src/components/table/table';
4 | const GamesList: NextPage = () => {
5 |
6 | return (
7 | <>
8 |
9 | >
10 | )
11 | }
12 |
13 | export default GamesList;
--------------------------------------------------------------------------------
/client/pages/index.tsx:
--------------------------------------------------------------------------------
1 | import type { NextPage } from 'next'
2 | import Head from 'next/head'
3 | import App from '../src/components/app/app'
4 | const Home: NextPage = () => {
5 |
6 | return (
7 | <>
8 |
9 |
10 | mauriciadas
11 |
12 |
13 |
14 | >
15 | )
16 | }
17 |
18 | export default Home;
19 |
20 |
--------------------------------------------------------------------------------
/client/src/components/app/app.tsx:
--------------------------------------------------------------------------------
1 | import * as C from './style';
2 | import React,{ useState } from 'react';
3 | import { useEffect } from 'react';
4 | import Axios from 'axios';
5 |
6 | interface valuesProps{
7 | name:string,
8 | price:number,
9 | category:string
10 | }
11 |
12 | const App=()=>{
13 | const [values,setValues]=useState();
14 | const [name,setName]=useState('');
15 | const [price, setPrice] = useState(0);
16 | const [category, setCategory] = useState('');
17 |
18 | const handleValues=()=>{
19 | Axios.post('http://localhost:3001/register',{
20 | name,
21 | price,
22 | category
23 | });
24 | setName('');
25 | setPrice(0);
26 | setCategory('');
27 | }
28 |
29 | useEffect(()=>{
30 | setValues({
31 | name,
32 | price,
33 | category
34 | });
35 | },[name,price,category])
36 |
37 | return(
38 |
39 |
40 |
Games shop
41 | setName(event.target.value)}
47 | />
48 | setPrice(Number(event.target.value))}
54 | />
55 | setCategory(event.target.value)}
61 | />
62 |
63 |
64 |
65 | );
66 | }
67 | export default App;
--------------------------------------------------------------------------------
/client/src/components/app/style.ts:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 |
3 | export const AppContainer=styled.div`
4 | background-color: #fff;
5 | position: absolute;
6 | top: 50%;left:50%;
7 | transform: translate(-50%,-50%);
8 | >div{
9 | display: flex;
10 | flex-direction: column;
11 | padding: 1rem;
12 | }
13 | *{
14 | margin: .3rem;
15 | padding:.5rem 1rem;
16 | }
17 | button{
18 | background-color: blueviolet;
19 | border: none;
20 | color: #fff;
21 | }
22 | `;
--------------------------------------------------------------------------------
/client/src/components/editGame/editGame.tsx:
--------------------------------------------------------------------------------
1 | import * as C from './style';
2 | import React, { useState } from 'react';
3 | import { useEffect } from 'react';
4 | import Axios from 'axios';
5 |
6 | interface valuesProps {
7 | idGame:number,
8 | name: string,
9 | price: number,
10 | category: string,
11 | showEditContainer:boolean,
12 | setShowEditContainer: (showEditContainer:boolean)=>void
13 | }
14 |
15 | const EditGames = ({idGame,name,price,category,showEditContainer,setShowEditContainer}:valuesProps) => {
16 | const [values, setValues] = useState();
17 | const [name1, setName] = useState(name);
18 | const [price1, setPrice] = useState(price);
19 | const [category1, setCategory] = useState(category);
20 |
21 | const handleEdit = () => {
22 |
23 | Axios.put('http://localhost:3001/edit',{
24 | idGame,
25 | name1,
26 | price1,
27 | category1
28 | });
29 | }
30 | return (
31 |
32 | {setShowEditContainer(false)}}
34 | >
35 | x
36 |
37 |
38 |
63 |
64 |
65 | );
66 | }
67 | export default EditGames;
--------------------------------------------------------------------------------
/client/src/components/editGame/style.ts:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 |
3 | export const Container = styled.div`
4 | position:absolute ;
5 | top:0;bottom:0;right:0;left:0;
6 | z-index: 1;
7 | background-color: rgba(0,0,0,0.4);
8 | .close{
9 | cursor: pointer;
10 | position: absolute;
11 | color: #fff;
12 | top: 3rem;
13 | right: 6rem;
14 | font-size: 2.6rem;
15 | }
16 | `;
17 |
18 | export const AppContainer = styled.div`
19 | width: 16rem;
20 | background-color: #fff;
21 | position: relative;
22 | top: 50%;left:50%;
23 | transform: translate(-50%,-50%);
24 |
25 | box-shadow: 0 .5rem 1.5rem rgba(0,0,0,0.3);
26 | >div{
27 | display: flex;
28 | flex-direction: column;
29 | padding: 1rem;
30 | }
31 | *{
32 | margin: .3rem;
33 | padding:.5rem 1rem;
34 | }
35 | a{
36 | background-color: blueviolet;
37 | border: none;
38 | color: #fff;
39 | text-align: center;
40 | }
41 | `;
--------------------------------------------------------------------------------
/client/src/components/header/header.tsx:
--------------------------------------------------------------------------------
1 | import * as C from './style';
2 | const Header=()=>{
3 | return(
4 |
5 |
9 |
10 | )
11 | }
12 | export default Header;
--------------------------------------------------------------------------------
/client/src/components/header/style.ts:
--------------------------------------------------------------------------------
1 | import styled from 'styled-components';
2 |
3 | export const NavContainer=styled.nav`
4 | position: fixed;
5 | top: 0; left: 0; right: 0;
6 | background: #fff;
7 | padding: 1rem 7%;
8 | display: flex;
9 | align-items: center;
10 | justify-content: center;
11 | z-index: 1000;
12 | box-shadow: var(--box-shadow);
13 |
14 | ul{
15 | list-style-type: none;
16 | display: flex;
17 | }
18 | li a{
19 | padding: .3rem;
20 | margin: .3rem;
21 | color: #fff;
22 | }
23 | ul a.active,
24 | ul a{
25 | background-color: blueviolet;
26 | }
27 | `;
--------------------------------------------------------------------------------
/client/src/components/mainContentainer/MainContainer.tsx:
--------------------------------------------------------------------------------
1 | import { PropsWithChildren, ReactNode } from "react";
2 | import Header from '../header/header';
3 | const MainContainer=({children}:PropsWithChildren)=>{
4 | return(
5 |
6 |
7 | {children}
8 |
9 | )
10 | }
11 | export default MainContainer;
--------------------------------------------------------------------------------
/client/src/components/table/style.ts:
--------------------------------------------------------------------------------
1 | import styled from "styled-components";
2 |
3 | export const TableContainer=styled.div`
4 | position: absolute;
5 | margin-top: 21rem;
6 | left:50%;
7 | transform: translate(-50%,-50%);
8 |
9 | table{
10 | border-collapse: collapse;
11 | background-color:#fff ;
12 | }
13 | tr:nth-child(even){
14 | background-color: #ddd;
15 | }
16 | th{
17 | background-color: blueviolet;
18 | color: #fff;
19 | }
20 | th,td{
21 | padding: .5rem 3rem;
22 | text-align: center;
23 | }
24 | .buttons{
25 | display: flex;
26 | outline: none;
27 | }
28 | .edit{
29 | background-color:blueviolet;
30 | color: #fff;
31 | padding: .3rem;
32 | margin: .5rem;
33 | border:none;
34 | }
35 |
36 | .delet{
37 | background-color: tomato;
38 | color: #fff;
39 | padding: .3rem;
40 | margin: .5rem;
41 | border: none;
42 | }
43 | `;
--------------------------------------------------------------------------------
/client/src/components/table/table.tsx:
--------------------------------------------------------------------------------
1 | import * as C from './style';
2 | import Axios from 'axios';
3 | import { useEffect, useState } from 'react';
4 | import EditGames from '../editGame/editGame';
5 |
6 | interface valuesProps{
7 | idGame:number,
8 | id:number,
9 | name:string,
10 | price:number,
11 | category:string
12 | }
13 |
14 | const Table=()=>{
15 |
16 | const [showEditContainer,setShowEditContainer]=useState(false);
17 | const [name, setName] = useState('');
18 | const [price, setPrice] = useState(0);
19 | const [idGame, setIdGame] = useState(0);
20 | const [category, setCategory] = useState('');
21 | const [games,setGames]=useState([]);
22 |
23 | useEffect(() => {
24 | Axios.get('http://localhost:3001/getGames').
25 | then((response) => {
26 | setGames(response.data);
27 | });
28 | }, []);
29 |
30 | const handleDelet=(id:number)=>{
31 | Axios.delete(`http://localhost:3001/delet/${id}`)
32 | }
33 |
34 | return(
35 |
36 | {showEditContainer &&(
37 |
45 | )}
46 |
47 |
48 |
49 |
50 | Id |
51 | Name |
52 | Price |
53 | Category |
54 | action |
55 |
56 |
57 |
58 | {games.map(({id,name,price,category},index)=>
59 | (
60 |
63 | {index +1} |
64 | {name} |
65 | {price} |
66 | {category} |
67 |
68 |
76 | handleDelet(id)}
79 | >eliminar
80 | |
81 |
82 | )
83 | )}
84 |
85 |
86 |
87 |
88 | )
89 | }
90 | export default Table;
91 |
--------------------------------------------------------------------------------
/client/styles/Global.ts:
--------------------------------------------------------------------------------
1 | import { createGlobalStyle } from "styled-components";
2 |
3 | export const GlobalStyle=createGlobalStyle`
4 | *{
5 | margin: 0; padding:0;
6 | box-sizing: border-box;
7 | text-decoration: none;
8 | transition: all .5s linear;
9 | outline: none;
10 | font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
11 | }
12 | body{
13 | background-color: #eee;
14 | }
15 | button{
16 | cursor: pointer;
17 | }
18 | `;
--------------------------------------------------------------------------------
/client/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": ["dom", "dom.iterable", "esnext"],
5 | "allowJs": true,
6 | "skipLibCheck": true,
7 | "strict": true,
8 | "forceConsistentCasingInFileNames": true,
9 | "noEmit": true,
10 | "esModuleInterop": true,
11 | "module": "esnext",
12 | "moduleResolution": "node",
13 | "resolveJsonModule": true,
14 | "isolatedModules": true,
15 | "jsx": "preserve",
16 | "incremental": true
17 | },
18 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
19 | "exclude": ["node_modules"]
20 | }
21 |
--------------------------------------------------------------------------------
/server/index.js:
--------------------------------------------------------------------------------
1 | const express=require('express');
2 | const app=express();
3 | const PORT=process.env.PORT || 3001;
4 | const mysql=require('mysql');
5 | const cors=require('cors');
6 | const { request } = require('express');
7 |
8 | const db=mysql.createPool({
9 | host:'localhost',
10 | user:'root',
11 | password:'',
12 | database:'crudGames'
13 | });
14 |
15 | app.use(cors());
16 | app.use(express.json());
17 |
18 | app.post('/register',(request,response)=>{
19 | const {name,price,category}=request.body;
20 | let SQL="INSERT INTO games(name,price,category) values(?,?,?)";
21 |
22 | db.query(SQL,[name,price,category],(err,result)=>{
23 | console.log(err)
24 | });
25 | //return response.send('');
26 | });
27 |
28 | app.get('/getGames',(request,response)=>{
29 | let SQL="SELECT * FROM games";
30 |
31 | db.query(SQL,(err,result)=>{
32 | err?console.log(err):response.send(result);
33 | })
34 | });
35 |
36 | app.put('/edit',(request,response)=>{
37 | const {idGame,name1,price1,category1}=request.body;
38 |
39 | const SQL='UPDATE games set name=?,price=?,category=? WHERE id=?';
40 |
41 | db.query(SQL,[name1,price1,category1,idGame],(err)=>{
42 | err?console.log(err):response.send({message:'update'});
43 | });
44 | });
45 |
46 | app.delete('/delet/:id',(request,response)=>{
47 | const {id}=request.params;
48 |
49 | const SQL=`DELETE FROM games WHERE id=?`;
50 | db.query(SQL,[id],(err)=>{
51 | err?console.log(err):response.send({message:'deleted'});
52 | });
53 | });
54 |
55 | app.listen(PORT,()=>{
56 | console.log(`servidor rodando em http://localhost:${PORT}`);
57 | })
--------------------------------------------------------------------------------
/server/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "cors": "^2.8.5",
4 | "express": "^4.18.1",
5 | "express-handlebars": "^6.0.6",
6 | "mysql": "^2.18.1"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/server/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | accepts@~1.3.8:
6 | version "1.3.8"
7 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
8 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
9 | dependencies:
10 | mime-types "~2.1.34"
11 | negotiator "0.6.3"
12 |
13 | array-flatten@1.1.1:
14 | version "1.1.1"
15 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
16 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
17 |
18 | balanced-match@^1.0.0:
19 | version "1.0.2"
20 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
21 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
22 |
23 | bignumber.js@9.0.0:
24 | version "9.0.0"
25 | resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075"
26 | integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==
27 |
28 | body-parser@1.20.0:
29 | version "1.20.0"
30 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5"
31 | integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==
32 | dependencies:
33 | bytes "3.1.2"
34 | content-type "~1.0.4"
35 | debug "2.6.9"
36 | depd "2.0.0"
37 | destroy "1.2.0"
38 | http-errors "2.0.0"
39 | iconv-lite "0.4.24"
40 | on-finished "2.4.1"
41 | qs "6.10.3"
42 | raw-body "2.5.1"
43 | type-is "~1.6.18"
44 | unpipe "1.0.0"
45 |
46 | brace-expansion@^2.0.1:
47 | version "2.0.1"
48 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
49 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
50 | dependencies:
51 | balanced-match "^1.0.0"
52 |
53 | bytes@3.1.2:
54 | version "3.1.2"
55 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
56 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
57 |
58 | call-bind@^1.0.0:
59 | version "1.0.2"
60 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
61 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
62 | dependencies:
63 | function-bind "^1.1.1"
64 | get-intrinsic "^1.0.2"
65 |
66 | content-disposition@0.5.4:
67 | version "0.5.4"
68 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
69 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
70 | dependencies:
71 | safe-buffer "5.2.1"
72 |
73 | content-type@~1.0.4:
74 | version "1.0.4"
75 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
76 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
77 |
78 | cookie-signature@1.0.6:
79 | version "1.0.6"
80 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
81 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
82 |
83 | cookie@0.5.0:
84 | version "0.5.0"
85 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
86 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
87 |
88 | core-util-is@~1.0.0:
89 | version "1.0.3"
90 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
91 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
92 |
93 | cors@^2.8.5:
94 | version "2.8.5"
95 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
96 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
97 | dependencies:
98 | object-assign "^4"
99 | vary "^1"
100 |
101 | debug@2.6.9:
102 | version "2.6.9"
103 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
104 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
105 | dependencies:
106 | ms "2.0.0"
107 |
108 | depd@2.0.0:
109 | version "2.0.0"
110 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
111 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
112 |
113 | destroy@1.2.0:
114 | version "1.2.0"
115 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
116 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
117 |
118 | ee-first@1.1.1:
119 | version "1.1.1"
120 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
121 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
122 |
123 | encodeurl@~1.0.2:
124 | version "1.0.2"
125 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
126 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
127 |
128 | escape-html@~1.0.3:
129 | version "1.0.3"
130 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
131 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
132 |
133 | etag@~1.8.1:
134 | version "1.8.1"
135 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
136 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
137 |
138 | express-handlebars@^6.0.6:
139 | version "6.0.6"
140 | resolved "https://registry.yarnpkg.com/express-handlebars/-/express-handlebars-6.0.6.tgz#2589bcc4cf9545918047c767e66fa625f5ace85b"
141 | integrity sha512-E4QHYCh+9fyfdBEb8uKJ8p6HD4qq/sUSHBq83lRNlLJp2TQKEg2nFJYbVdC+M3QzaV19dODe43lgjQWVaIpbyQ==
142 | dependencies:
143 | glob "^8.0.2"
144 | graceful-fs "^4.2.10"
145 | handlebars "^4.7.7"
146 |
147 | express@^4.18.1:
148 | version "4.18.1"
149 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
150 | integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
151 | dependencies:
152 | accepts "~1.3.8"
153 | array-flatten "1.1.1"
154 | body-parser "1.20.0"
155 | content-disposition "0.5.4"
156 | content-type "~1.0.4"
157 | cookie "0.5.0"
158 | cookie-signature "1.0.6"
159 | debug "2.6.9"
160 | depd "2.0.0"
161 | encodeurl "~1.0.2"
162 | escape-html "~1.0.3"
163 | etag "~1.8.1"
164 | finalhandler "1.2.0"
165 | fresh "0.5.2"
166 | http-errors "2.0.0"
167 | merge-descriptors "1.0.1"
168 | methods "~1.1.2"
169 | on-finished "2.4.1"
170 | parseurl "~1.3.3"
171 | path-to-regexp "0.1.7"
172 | proxy-addr "~2.0.7"
173 | qs "6.10.3"
174 | range-parser "~1.2.1"
175 | safe-buffer "5.2.1"
176 | send "0.18.0"
177 | serve-static "1.15.0"
178 | setprototypeof "1.2.0"
179 | statuses "2.0.1"
180 | type-is "~1.6.18"
181 | utils-merge "1.0.1"
182 | vary "~1.1.2"
183 |
184 | finalhandler@1.2.0:
185 | version "1.2.0"
186 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
187 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
188 | dependencies:
189 | debug "2.6.9"
190 | encodeurl "~1.0.2"
191 | escape-html "~1.0.3"
192 | on-finished "2.4.1"
193 | parseurl "~1.3.3"
194 | statuses "2.0.1"
195 | unpipe "~1.0.0"
196 |
197 | forwarded@0.2.0:
198 | version "0.2.0"
199 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
200 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
201 |
202 | fresh@0.5.2:
203 | version "0.5.2"
204 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
205 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
206 |
207 | fs.realpath@^1.0.0:
208 | version "1.0.0"
209 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
210 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
211 |
212 | function-bind@^1.1.1:
213 | version "1.1.1"
214 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
215 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
216 |
217 | get-intrinsic@^1.0.2:
218 | version "1.1.2"
219 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598"
220 | integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==
221 | dependencies:
222 | function-bind "^1.1.1"
223 | has "^1.0.3"
224 | has-symbols "^1.0.3"
225 |
226 | glob@^8.0.2:
227 | version "8.0.3"
228 | resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e"
229 | integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==
230 | dependencies:
231 | fs.realpath "^1.0.0"
232 | inflight "^1.0.4"
233 | inherits "2"
234 | minimatch "^5.0.1"
235 | once "^1.3.0"
236 |
237 | graceful-fs@^4.2.10:
238 | version "4.2.10"
239 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
240 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
241 |
242 | handlebars@^4.7.7:
243 | version "4.7.7"
244 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"
245 | integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==
246 | dependencies:
247 | minimist "^1.2.5"
248 | neo-async "^2.6.0"
249 | source-map "^0.6.1"
250 | wordwrap "^1.0.0"
251 | optionalDependencies:
252 | uglify-js "^3.1.4"
253 |
254 | has-symbols@^1.0.3:
255 | version "1.0.3"
256 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
257 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
258 |
259 | has@^1.0.3:
260 | version "1.0.3"
261 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
262 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
263 | dependencies:
264 | function-bind "^1.1.1"
265 |
266 | http-errors@2.0.0:
267 | version "2.0.0"
268 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
269 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
270 | dependencies:
271 | depd "2.0.0"
272 | inherits "2.0.4"
273 | setprototypeof "1.2.0"
274 | statuses "2.0.1"
275 | toidentifier "1.0.1"
276 |
277 | iconv-lite@0.4.24:
278 | version "0.4.24"
279 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
280 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
281 | dependencies:
282 | safer-buffer ">= 2.1.2 < 3"
283 |
284 | inflight@^1.0.4:
285 | version "1.0.6"
286 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
287 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
288 | dependencies:
289 | once "^1.3.0"
290 | wrappy "1"
291 |
292 | inherits@2, inherits@2.0.4, inherits@~2.0.3:
293 | version "2.0.4"
294 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
295 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
296 |
297 | ipaddr.js@1.9.1:
298 | version "1.9.1"
299 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
300 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
301 |
302 | isarray@~1.0.0:
303 | version "1.0.0"
304 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
305 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
306 |
307 | media-typer@0.3.0:
308 | version "0.3.0"
309 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
310 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
311 |
312 | merge-descriptors@1.0.1:
313 | version "1.0.1"
314 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
315 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
316 |
317 | methods@~1.1.2:
318 | version "1.1.2"
319 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
320 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
321 |
322 | mime-db@1.52.0:
323 | version "1.52.0"
324 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
325 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
326 |
327 | mime-types@~2.1.24, mime-types@~2.1.34:
328 | version "2.1.35"
329 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
330 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
331 | dependencies:
332 | mime-db "1.52.0"
333 |
334 | mime@1.6.0:
335 | version "1.6.0"
336 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
337 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
338 |
339 | minimatch@^5.0.1:
340 | version "5.1.0"
341 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7"
342 | integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==
343 | dependencies:
344 | brace-expansion "^2.0.1"
345 |
346 | minimist@^1.2.5:
347 | version "1.2.6"
348 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
349 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
350 |
351 | ms@2.0.0:
352 | version "2.0.0"
353 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
354 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
355 |
356 | ms@2.1.3:
357 | version "2.1.3"
358 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
359 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
360 |
361 | mysql@^2.18.1:
362 | version "2.18.1"
363 | resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717"
364 | integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==
365 | dependencies:
366 | bignumber.js "9.0.0"
367 | readable-stream "2.3.7"
368 | safe-buffer "5.1.2"
369 | sqlstring "2.3.1"
370 |
371 | negotiator@0.6.3:
372 | version "0.6.3"
373 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
374 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
375 |
376 | neo-async@^2.6.0:
377 | version "2.6.2"
378 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
379 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
380 |
381 | object-assign@^4:
382 | version "4.1.1"
383 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
384 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
385 |
386 | object-inspect@^1.9.0:
387 | version "1.12.2"
388 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
389 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
390 |
391 | on-finished@2.4.1:
392 | version "2.4.1"
393 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
394 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
395 | dependencies:
396 | ee-first "1.1.1"
397 |
398 | once@^1.3.0:
399 | version "1.4.0"
400 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
401 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
402 | dependencies:
403 | wrappy "1"
404 |
405 | parseurl@~1.3.3:
406 | version "1.3.3"
407 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
408 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
409 |
410 | path-to-regexp@0.1.7:
411 | version "0.1.7"
412 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
413 | integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
414 |
415 | process-nextick-args@~2.0.0:
416 | version "2.0.1"
417 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
418 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
419 |
420 | proxy-addr@~2.0.7:
421 | version "2.0.7"
422 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
423 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
424 | dependencies:
425 | forwarded "0.2.0"
426 | ipaddr.js "1.9.1"
427 |
428 | qs@6.10.3:
429 | version "6.10.3"
430 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
431 | integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
432 | dependencies:
433 | side-channel "^1.0.4"
434 |
435 | range-parser@~1.2.1:
436 | version "1.2.1"
437 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
438 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
439 |
440 | raw-body@2.5.1:
441 | version "2.5.1"
442 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
443 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
444 | dependencies:
445 | bytes "3.1.2"
446 | http-errors "2.0.0"
447 | iconv-lite "0.4.24"
448 | unpipe "1.0.0"
449 |
450 | readable-stream@2.3.7:
451 | version "2.3.7"
452 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
453 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
454 | dependencies:
455 | core-util-is "~1.0.0"
456 | inherits "~2.0.3"
457 | isarray "~1.0.0"
458 | process-nextick-args "~2.0.0"
459 | safe-buffer "~5.1.1"
460 | string_decoder "~1.1.1"
461 | util-deprecate "~1.0.1"
462 |
463 | safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
464 | version "5.1.2"
465 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
466 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
467 |
468 | safe-buffer@5.2.1:
469 | version "5.2.1"
470 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
471 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
472 |
473 | "safer-buffer@>= 2.1.2 < 3":
474 | version "2.1.2"
475 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
476 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
477 |
478 | send@0.18.0:
479 | version "0.18.0"
480 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
481 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
482 | dependencies:
483 | debug "2.6.9"
484 | depd "2.0.0"
485 | destroy "1.2.0"
486 | encodeurl "~1.0.2"
487 | escape-html "~1.0.3"
488 | etag "~1.8.1"
489 | fresh "0.5.2"
490 | http-errors "2.0.0"
491 | mime "1.6.0"
492 | ms "2.1.3"
493 | on-finished "2.4.1"
494 | range-parser "~1.2.1"
495 | statuses "2.0.1"
496 |
497 | serve-static@1.15.0:
498 | version "1.15.0"
499 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
500 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
501 | dependencies:
502 | encodeurl "~1.0.2"
503 | escape-html "~1.0.3"
504 | parseurl "~1.3.3"
505 | send "0.18.0"
506 |
507 | setprototypeof@1.2.0:
508 | version "1.2.0"
509 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
510 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
511 |
512 | side-channel@^1.0.4:
513 | version "1.0.4"
514 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
515 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
516 | dependencies:
517 | call-bind "^1.0.0"
518 | get-intrinsic "^1.0.2"
519 | object-inspect "^1.9.0"
520 |
521 | source-map@^0.6.1:
522 | version "0.6.1"
523 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
524 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
525 |
526 | sqlstring@2.3.1:
527 | version "2.3.1"
528 | resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40"
529 | integrity sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==
530 |
531 | statuses@2.0.1:
532 | version "2.0.1"
533 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
534 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
535 |
536 | string_decoder@~1.1.1:
537 | version "1.1.1"
538 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
539 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
540 | dependencies:
541 | safe-buffer "~5.1.0"
542 |
543 | toidentifier@1.0.1:
544 | version "1.0.1"
545 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
546 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
547 |
548 | type-is@~1.6.18:
549 | version "1.6.18"
550 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
551 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
552 | dependencies:
553 | media-typer "0.3.0"
554 | mime-types "~2.1.24"
555 |
556 | uglify-js@^3.1.4:
557 | version "3.17.0"
558 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.0.tgz#55bd6e9d19ce5eef0d5ad17cd1f587d85b180a85"
559 | integrity sha512-aTeNPVmgIMPpm1cxXr2Q/nEbvkmV8yq66F3om7X3P/cvOXQ0TMQ64Wk63iyT1gPlmdmGzjGpyLh1f3y8MZWXGg==
560 |
561 | unpipe@1.0.0, unpipe@~1.0.0:
562 | version "1.0.0"
563 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
564 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
565 |
566 | util-deprecate@~1.0.1:
567 | version "1.0.2"
568 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
569 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
570 |
571 | utils-merge@1.0.1:
572 | version "1.0.1"
573 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
574 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
575 |
576 | vary@^1, vary@~1.1.2:
577 | version "1.1.2"
578 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
579 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
580 |
581 | wordwrap@^1.0.0:
582 | version "1.0.0"
583 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
584 | integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
585 |
586 | wrappy@1:
587 | version "1.0.2"
588 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
589 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
590 |
--------------------------------------------------------------------------------