├── banckend ├── .gitignore ├── prisma │ ├── dev.db │ ├── migrations │ │ ├── migration_lock.toml │ │ └── 20220531175305_create_user │ │ │ └── migration.sql │ └── schema.prisma ├── src │ ├── utils │ │ └── prisma.ts │ ├── @types │ │ └── express.d.ts │ ├── server.ts │ ├── routes.ts │ ├── middlewares │ │ └── auth.ts │ └── controller │ │ ├── AuthController.ts │ │ └── UserController.ts ├── package.json ├── tsconfig.json └── yarn.lock └── frontend ├── src ├── services │ └── api.js ├── index.jsx ├── App.jsx ├── components │ └── LayoutComponents │ │ ├── index.jsx │ │ └── styles.css ├── routes │ ├── privateRoutes.jsx │ └── index.jsx ├── pages │ ├── Home │ │ └── index.jsx │ ├── Login │ │ └── index.jsx │ └── Register │ │ └── index.jsx ├── context │ └── AuthContext.jsx └── assets │ ├── global.css │ └── jp.svg ├── public └── index.html ├── .gitignore └── package.json /banckend/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | # Keep environment variables out of version control 3 | .env 4 | -------------------------------------------------------------------------------- /banckend/prisma/dev.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rodrigo322/autentica-o-REACT-NODE/HEAD/banckend/prisma/dev.db -------------------------------------------------------------------------------- /banckend/src/utils/prisma.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | export const prisma = new PrismaClient(); 4 | -------------------------------------------------------------------------------- /banckend/src/@types/express.d.ts: -------------------------------------------------------------------------------- 1 | declare namespace Express { 2 | export interface Request { 3 | userId: string; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/services/api.js: -------------------------------------------------------------------------------- 1 | import axios from "axios"; 2 | 3 | export const api = axios.create({ 4 | baseURL: "http://localhost:3333", 5 | }); 6 | -------------------------------------------------------------------------------- /banckend/prisma/migrations/migration_lock.toml: -------------------------------------------------------------------------------- 1 | # Please do not edit this file manually 2 | # It should be added in your version-control system (i.e. Git) 3 | provider = "sqlite" -------------------------------------------------------------------------------- /frontend/src/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { App } from './App'; 4 | 5 | ReactDOM.render( 6 | 7 | 8 | , 9 | document.getElementById('root') 10 | ); -------------------------------------------------------------------------------- /frontend/src/App.jsx: -------------------------------------------------------------------------------- 1 | import { AppRouter } from "./routes"; 2 | import "./assets/global.css"; 3 | import { AuthProvider } from "./context/AuthContext"; 4 | 5 | export const App = () => { 6 | return ( 7 | 8 | 9 | 10 | ); 11 | }; 12 | -------------------------------------------------------------------------------- /frontend/src/components/LayoutComponents/index.jsx: -------------------------------------------------------------------------------- 1 | import "./styles.css"; 2 | export const LayoutComponents = (props) => { 3 | return ( 4 |
5 |
6 |
{props.children}
7 |
8 |
9 | ); 10 | }; 11 | -------------------------------------------------------------------------------- /banckend/src/server.ts: -------------------------------------------------------------------------------- 1 | import express from "express"; 2 | import cors from "cors"; 3 | import { router } from "./routes"; 4 | 5 | const app = express(); 6 | 7 | app.use(cors()); 8 | app.use(express.json()); 9 | app.use(router); 10 | 11 | app.listen(3333, () => 12 | console.log("Server is running in http://localhost:3333") 13 | ); 14 | -------------------------------------------------------------------------------- /banckend/prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | generator client { 2 | provider = "prisma-client-js" 3 | } 4 | 5 | datasource db { 6 | provider = "sqlite" 7 | url = "file:./dev.db" 8 | } 9 | 10 | model User { 11 | id Int @id @default(autoincrement()) 12 | name String 13 | email String @unique 14 | password String 15 | } 16 | -------------------------------------------------------------------------------- /banckend/prisma/migrations/20220531175305_create_user/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "User" ( 3 | "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 4 | "name" TEXT NOT NULL, 5 | "email" TEXT NOT NULL, 6 | "password" TEXT NOT NULL 7 | ); 8 | 9 | -- CreateIndex 10 | CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); 11 | -------------------------------------------------------------------------------- /frontend/src/routes/privateRoutes.jsx: -------------------------------------------------------------------------------- 1 | import { useContext } from "react"; 2 | import { Navigate, Outlet } from "react-router-dom"; 3 | 4 | import { AuthContext } from "../context/AuthContext"; 5 | 6 | export const PrivateRoute = () => { 7 | const { signed } = useContext(AuthContext); 8 | return signed ? : ; 9 | }; 10 | -------------------------------------------------------------------------------- /frontend/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Login 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /frontend/.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 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /banckend/src/routes.ts: -------------------------------------------------------------------------------- 1 | import { Router } from "express"; 2 | import { UserController } from "./controller/UserController"; 3 | import { AuthController } from "./controller/AuthController"; 4 | import { authMiddleware } from "./middlewares/auth"; 5 | 6 | const usercontroller = new UserController(); 7 | const authcontroller = new AuthController(); 8 | 9 | export const router = Router(); 10 | 11 | router.post("/auth", authcontroller.authenticate); 12 | router.post("/create", usercontroller.store); 13 | router.get("/users", authMiddleware, usercontroller.index); 14 | -------------------------------------------------------------------------------- /frontend/src/components/LayoutComponents/styles.css: -------------------------------------------------------------------------------- 1 | 2 | .container { 3 | width: 100%; 4 | margin: 0 auto; 5 | } 6 | 7 | .container-login { 8 | width: 100%; 9 | min-height: 100vh; 10 | display: flex; 11 | flex-wrap: wrap; 12 | align-items: center; 13 | justify-content: center; 14 | padding: 15px; 15 | background-color: #111; 16 | } 17 | 18 | .wrap-login { 19 | width: 390px; 20 | background-color: #333; 21 | border-radius: 10px; 22 | overflow: hidden; 23 | padding: 77px 55px 33px 55px; 24 | box-shadow: 0 5px 10px 0px rgba(0, 0, 0, 0.2); 25 | } 26 | -------------------------------------------------------------------------------- /frontend/src/pages/Home/index.jsx: -------------------------------------------------------------------------------- 1 | import { LayoutComponents } from "../../components/LayoutComponents"; 2 | 3 | export const Home = () => { 4 | return ( 5 | 6 |
7 |
8 |

9 | Jovem Programador 10 |

11 |
12 |
13 |

14 | Aplicativo para auxiliar na organização de tarefas. 15 |

16 |
17 |
18 |
19 | ); 20 | }; 21 | -------------------------------------------------------------------------------- /frontend/src/routes/index.jsx: -------------------------------------------------------------------------------- 1 | import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; 2 | 3 | import { Login } from "../pages/Login"; 4 | import { Register } from "../pages/Register"; 5 | import { Home } from "../pages/Home"; 6 | import { PrivateRoute } from "./privateRoutes"; 7 | 8 | export const AppRouter = () => { 9 | return ( 10 | 11 | 12 | } /> 13 | } /> 14 | 15 | }> 16 | } /> 17 | 18 | 19 | 20 | ); 21 | }; 22 | -------------------------------------------------------------------------------- /banckend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backend", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "ts-node-dev --respawn --transpile-only --files src/server.ts" 8 | }, 9 | "dependencies": { 10 | "@prisma/client": "^3.14.0", 11 | "bcryptjs": "^2.4.3", 12 | "cors": "^2.8.5", 13 | "express": "^4.18.1", 14 | "jsonwebtoken": "^8.5.1", 15 | "prisma": "^3.14.0" 16 | }, 17 | "devDependencies": { 18 | "@types/bcryptjs": "^2.4.2", 19 | "@types/cors": "^2.8.12", 20 | "@types/express": "^4.17.13", 21 | "@types/jsonwebtoken": "^8.5.8", 22 | "ts-node-dev": "^2.0.0", 23 | "typescript": "^4.7.2" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /banckend/src/middlewares/auth.ts: -------------------------------------------------------------------------------- 1 | import { NextFunction, Request, Response } from "express"; 2 | import { verify } from "jsonwebtoken"; 3 | 4 | type TokenPayload = { 5 | id: string; 6 | iat: number; 7 | exp: number; 8 | }; 9 | 10 | export function authMiddleware( 11 | req: Request, 12 | res: Response, 13 | next: NextFunction 14 | ) { 15 | const { authorization } = req.headers; 16 | 17 | if (!authorization) { 18 | return res.status(401).json({ error: "Token not provided" }); 19 | } 20 | 21 | const [, token] = authorization.split(" "); 22 | 23 | try { 24 | const decoded = verify(token, "secret"); 25 | const { id } = decoded as TokenPayload; 26 | 27 | req.userId = id; 28 | next(); 29 | } catch (error) { 30 | return res.status(401).json({ error: "Token invalid" }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /banckend/src/controller/AuthController.ts: -------------------------------------------------------------------------------- 1 | import { prisma } from "../utils/prisma"; 2 | import { compare } from "bcryptjs"; 3 | import { Request, Response } from "express"; 4 | import { sign } from "jsonwebtoken"; 5 | 6 | export class AuthController { 7 | async authenticate(req: Request, res: Response) { 8 | const { email, password } = req.body; 9 | 10 | const user = await prisma.user.findUnique({ where: { email } }); 11 | 12 | if (!user) { 13 | return res.json({ error: "user not found" }); 14 | } 15 | 16 | const isPasswordValid = await compare(password, user.password); 17 | 18 | if (!isPasswordValid) { 19 | return res.json({ error: "password invalid" }); 20 | } 21 | 22 | const token = sign({ id: user.id }, "secret", { expiresIn: "1h" }); 23 | 24 | const { id } = user; 25 | 26 | return res.json({ user: { id, email }, token }); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /banckend/src/controller/UserController.ts: -------------------------------------------------------------------------------- 1 | import { prisma } from "../utils/prisma"; 2 | import { hash } from "bcryptjs"; 3 | import { Request, Response } from "express"; 4 | 5 | export class UserController { 6 | async index(req: Request, res: Response) { 7 | const users = await prisma.user.findMany(); 8 | return res.json(users); 9 | } 10 | async store(req: Request, res: Response) { 11 | const { name, email, password } = req.body; 12 | 13 | const userExists = await prisma.user.findUnique({ where: { email } }); 14 | 15 | if (userExists) { 16 | return res.json({ error: "user exists" }); 17 | } 18 | 19 | const hash_password = await hash(password, 8); 20 | 21 | const user = await prisma.user.create({ 22 | data: { 23 | name, 24 | email, 25 | password: hash_password, 26 | }, 27 | }); 28 | user.password = ""; 29 | return res.json({ user }); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 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.27.2", 10 | "react": "^17.0.2", 11 | "react-dom": "^17.0.2", 12 | "react-router-dom": "^6.2.1", 13 | "react-scripts": "4.0.3", 14 | "web-vitals": "^1.0.1" 15 | }, 16 | "scripts": { 17 | "start": "react-scripts start", 18 | "build": "react-scripts build", 19 | "test": "react-scripts test", 20 | "eject": "react-scripts eject" 21 | }, 22 | "eslintConfig": { 23 | "extends": [ 24 | "react-app", 25 | "react-app/jest" 26 | ] 27 | }, 28 | "browserslist": { 29 | "production": [ 30 | ">0.2%", 31 | "not dead", 32 | "not op_mini all" 33 | ], 34 | "development": [ 35 | "last 1 chrome version", 36 | "last 1 firefox version", 37 | "last 1 safari version" 38 | ] 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /frontend/src/context/AuthContext.jsx: -------------------------------------------------------------------------------- 1 | import { createContext } from "react"; 2 | import { useState } from "react"; 3 | import { useEffect } from "react"; 4 | import { Navigate } from "react-router-dom"; 5 | import { api } from "../services/api"; 6 | 7 | export const AuthContext = createContext(); 8 | 9 | export const AuthProvider = ({ children }) => { 10 | const [user, setUser] = useState(null); 11 | 12 | useEffect(() => { 13 | const loadingStoreData = () => { 14 | const storageUser = localStorage.getItem("@Auth:user"); 15 | const storageToken = localStorage.getItem("@Auth:token"); 16 | 17 | if (storageUser && storageToken) { 18 | setUser(storageUser); 19 | } 20 | }; 21 | loadingStoreData(); 22 | }, []); 23 | 24 | const signIn = async ({ email, password }) => { 25 | try { 26 | const response = await api.post("/auth", { email, password }); 27 | if (response.data.error) { 28 | alert(response.data.error); 29 | } else { 30 | setUser(response.data); 31 | api.defaults.headers.common[ 32 | "Authorization" 33 | ] = `Bearer ${response.data.token}`; 34 | 35 | localStorage.setItem("@Auth:user", JSON.stringify(response.data.user)); 36 | localStorage.setItem("@Auth:token", response.data.token); 37 | } 38 | } catch (error) { 39 | console.log(error); 40 | } 41 | }; 42 | 43 | const singOut = () => { 44 | localStorage.clear(); 45 | setUser(null); 46 | return ; 47 | }; 48 | 49 | return ( 50 | 58 | {children} 59 | 60 | ); 61 | }; 62 | -------------------------------------------------------------------------------- /frontend/src/pages/Login/index.jsx: -------------------------------------------------------------------------------- 1 | import { Link, Navigate } from "react-router-dom"; 2 | import { useState } from "react"; 3 | 4 | import jpIMG from "../../assets/jp.svg"; 5 | import { LayoutComponents } from "../../components/LayoutComponents"; 6 | import { useContext } from "react"; 7 | import { AuthContext } from "../../context/AuthContext"; 8 | 9 | export const Login = () => { 10 | const [email, setEmail] = useState(""); 11 | const [password, setPassword] = useState(""); 12 | const { signIn, signed } = useContext(AuthContext); 13 | 14 | const handleSubmit = async (e) => { 15 | e.preventDefault(); 16 | const data = { 17 | email, 18 | password, 19 | }; 20 | await signIn(data); 21 | }; 22 | console.log(signed); 23 | if (!signed) { 24 | return ( 25 | 26 |
27 | Bem vindo 28 | 29 | 30 | Jovem Programador 31 | 32 | 33 |
34 | setEmail(e.target.value)} 39 | /> 40 | 41 |
42 | 43 |
44 | setPassword(e.target.value)} 49 | /> 50 | 51 |
52 | 53 |
54 | 57 |
58 | 59 |
60 | Não possui conta? 61 | 62 | Criar conta. 63 | 64 |
65 |
66 |
67 | ); 68 | } else { 69 | return ; 70 | } 71 | }; 72 | -------------------------------------------------------------------------------- /frontend/src/pages/Register/index.jsx: -------------------------------------------------------------------------------- 1 | import { Link } from "react-router-dom"; 2 | import { useState } from "react"; 3 | import { LayoutComponents } from "../../components/LayoutComponents"; 4 | 5 | import jpIMG from "../../assets/jp.svg"; 6 | import { api } from "../../services/api"; 7 | 8 | export const Register = () => { 9 | const [email, setEmail] = useState(""); 10 | const [password, setPassword] = useState(""); 11 | const [name, setName] = useState(""); 12 | 13 | const handleSubmit = async (e) => { 14 | e.preventDefault(); 15 | const data = { 16 | name, 17 | email, 18 | password, 19 | }; 20 | await api.post("/create", data); 21 | alert("Usuário criado com sucesso!"); 22 | }; 23 | 24 | return ( 25 | 26 |
27 | Criar Conta 28 | 29 | 30 | Jovem Programador 31 | 32 | 33 |
34 | setName(e.target.value)} 39 | /> 40 | 41 |
42 | 43 |
44 | setEmail(e.target.value)} 49 | /> 50 | 51 |
52 | 53 |
54 | setPassword(e.target.value)} 59 | /> 60 | 61 |
62 | 63 |
64 | 67 |
68 | 69 |
70 | Já possui conta? 71 | 72 | Acessar com Email e Senha. 73 | 74 |
75 |
76 |
77 | ); 78 | }; 79 | -------------------------------------------------------------------------------- /frontend/src/assets/global.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap'); 2 | * { 3 | margin: 0; 4 | padding: 0; 5 | box-sizing: border-box; 6 | } 7 | 8 | body, html { 9 | font-family: 'Roboto', sans-serif; 10 | } 11 | 12 | .login-form { 13 | width: 100%; 14 | } 15 | 16 | .login-form-title { 17 | display: block; 18 | font-size: 30px; 19 | color: azure; 20 | line-height: 1.2; 21 | text-align: center; 22 | } 23 | 24 | .login-form-title img { 25 | width: 90px; 26 | } 27 | 28 | .wrap-input { 29 | width: 100%; 30 | position: relative; 31 | border-bottom: 2px solid #adadad; 32 | margin-bottom: 37px; 33 | } 34 | 35 | .input { 36 | font-size: 15px; 37 | color: #fff; 38 | line-height: 1.2; 39 | border: none; 40 | display: block; 41 | width: 100%; 42 | height: 45px; 43 | background-color: transparent; 44 | padding: 0 5px; 45 | } 46 | 47 | .focus-input { 48 | position: absolute; 49 | display: block; 50 | width: 100%; 51 | height: 100%; 52 | top: 0; 53 | left: 0; 54 | pointer-events: none; 55 | color: #adadad; 56 | } 57 | 58 | .focus-input::before { 59 | content: ""; 60 | display: block; 61 | position: absolute; 62 | bottom: -2px; 63 | left: 0; 64 | width: 0; 65 | height: 2px; 66 | -webkit-transition: all 0.4s; 67 | -o-transition: all 0.4s; 68 | -moz-transition: all 0.4s; 69 | transition: all 0.4s; 70 | background: #6a7dfe; 71 | background: -webkit-linear-gradient(to left, #21d4fd, #b721ff); 72 | background: -o-linear-gradient(to left, #21d4fd, #b721ff); 73 | background: -moz-linear-gradient(to left, #21d4fd, #b721ff); 74 | background: linear-gradient(to left, #21d4fd, #b721ff); 75 | } 76 | 77 | .focus-input::after { 78 | font-size: 15px; 79 | color: #999999; 80 | line-height: 1.2; 81 | content: attr(data-placeholder); 82 | display: block; 83 | width: 100%; 84 | position: absolute; 85 | top: 16px; 86 | left: 0px; 87 | padding-left: 5px; 88 | -webkit-transition: all 0.4s; 89 | -o-transition: all 0.4s; 90 | -moz-transition: all 0.4s; 91 | transition: all 0.4s; 92 | } 93 | 94 | .input:focus { 95 | outline: 0; 96 | } 97 | 98 | .input:focus+.focus-input::after { 99 | top: -15px; 100 | } 101 | 102 | .input:focus+.focus-input::before { 103 | width: 100%; 104 | } 105 | 106 | .has-val+.focus-input::after { 107 | top: -15px; 108 | } 109 | 110 | .has-val+.focus-input::before { 111 | width: 100%; 112 | } 113 | 114 | .container-login-form-btn { 115 | display: flex; 116 | flex-wrap: wrap; 117 | justify-content: center; 118 | padding-bottom: 13px; 119 | } 120 | 121 | .login-form-btn { 122 | font-size: 15px; 123 | border: none; 124 | border-radius: 10px; 125 | color: #fff; 126 | line-height: 1.2; 127 | text-transform: uppercase; 128 | display: flex; 129 | justify-content: center; 130 | align-items: center; 131 | width: 100%; 132 | height: 50px; 133 | background: #6a7dfe; 134 | background: -webkit-linear-gradient(to left, #21d4fd, #b721ff); 135 | background: -o-linear-gradient(to left, #21d4fd, #b721ff); 136 | background: -moz-linear-gradient(to left, #21d4fd, #b721ff); 137 | background: linear-gradient(to left, #21d4fd, #b721ff); 138 | } 139 | 140 | .login-form-btn:hover { 141 | cursor: pointer; 142 | } 143 | 144 | .text-center { 145 | display: flex; 146 | justify-content: center; 147 | align-items: center; 148 | margin-top: 50px; 149 | } 150 | 151 | .txt1 { 152 | font-size: 14px; 153 | color: #adadad; 154 | line-height: 1.5; 155 | padding-right: 5px; 156 | } 157 | 158 | .txt2 { 159 | font-size: 14px; 160 | color: #6a7dfe; 161 | line-height: 1.5; 162 | text-decoration: none; 163 | } -------------------------------------------------------------------------------- /banckend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2018" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ 22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 | 27 | /* Modules */ 28 | "module": "commonjs" /* Specify what module code is generated. */, 29 | // "rootDir": "./", /* Specify the root folder within your source files. */ 30 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 38 | // "resolveJsonModule": true, /* Enable importing .json files. */ 39 | // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ 40 | 41 | /* JavaScript Support */ 42 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 43 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 44 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 45 | 46 | /* Emit */ 47 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 48 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 49 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 50 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 51 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ 52 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 53 | // "removeComments": true, /* Disable emitting comments. */ 54 | // "noEmit": true, /* Disable emitting files from a compilation. */ 55 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 56 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 57 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 58 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 59 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 60 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 61 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 62 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 63 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 64 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 65 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 66 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 67 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 68 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 69 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 70 | 71 | /* Interop Constraints */ 72 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 73 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 74 | "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, 75 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 76 | "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 77 | 78 | /* Type Checking */ 79 | "strict": true /* Enable all strict type-checking options. */, 80 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 81 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 82 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 83 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 84 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 85 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 86 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 87 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 88 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 89 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 90 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 91 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 92 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 93 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 94 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 95 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 96 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 97 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 98 | 99 | /* Completeness */ 100 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 101 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /frontend/src/assets/jp.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /banckend/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@cspotcode/source-map-support@^0.8.0": 6 | version "0.8.1" 7 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 8 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 9 | dependencies: 10 | "@jridgewell/trace-mapping" "0.3.9" 11 | 12 | "@jridgewell/resolve-uri@^3.0.3": 13 | version "3.0.7" 14 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" 15 | integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== 16 | 17 | "@jridgewell/sourcemap-codec@^1.4.10": 18 | version "1.4.13" 19 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" 20 | integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== 21 | 22 | "@jridgewell/trace-mapping@0.3.9": 23 | version "0.3.9" 24 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 25 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 26 | dependencies: 27 | "@jridgewell/resolve-uri" "^3.0.3" 28 | "@jridgewell/sourcemap-codec" "^1.4.10" 29 | 30 | "@prisma/client@^3.14.0": 31 | version "3.14.0" 32 | resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.14.0.tgz#bb90405c012fcca11f4647d91153ed4c58f3bd48" 33 | integrity sha512-atb41UpgTR1MCst0VIbiHTMw8lmXnwUvE1KyUCAkq08+wJyjRE78Due+nSf+7uwqQn+fBFYVmoojtinhlLOSaA== 34 | dependencies: 35 | "@prisma/engines-version" "3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a" 36 | 37 | "@prisma/engines-version@3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a": 38 | version "3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a" 39 | resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a.tgz#4edae57cf6527f35e22cebe75e49214fc0e99ac9" 40 | integrity sha512-D+yHzq4a2r2Rrd0ZOW/mTZbgDIkUkD8ofKgusEI1xPiZz60Daks+UM7Me2ty5FzH3p/TgyhBpRrfIHx+ha20RQ== 41 | 42 | "@prisma/engines@3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a": 43 | version "3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a" 44 | resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a.tgz#7fa11bc26a51d450185c816cc0ab8cac673fb4bf" 45 | integrity sha512-LwZvI3FY6f43xFjQNRuE10JM5R8vJzFTSmbV9X0Wuhv9kscLkjRlZt0BEoiHmO+2HA3B3xxbMfB5du7ZoSFXGg== 46 | 47 | "@tsconfig/node10@^1.0.7": 48 | version "1.0.8" 49 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" 50 | integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== 51 | 52 | "@tsconfig/node12@^1.0.7": 53 | version "1.0.9" 54 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" 55 | integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== 56 | 57 | "@tsconfig/node14@^1.0.0": 58 | version "1.0.1" 59 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" 60 | integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== 61 | 62 | "@tsconfig/node16@^1.0.2": 63 | version "1.0.2" 64 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" 65 | integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== 66 | 67 | "@types/bcryptjs@^2.4.2": 68 | version "2.4.2" 69 | resolved "https://registry.yarnpkg.com/@types/bcryptjs/-/bcryptjs-2.4.2.tgz#e3530eac9dd136bfdfb0e43df2c4c5ce1f77dfae" 70 | integrity sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ== 71 | 72 | "@types/body-parser@*": 73 | version "1.19.2" 74 | resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" 75 | integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== 76 | dependencies: 77 | "@types/connect" "*" 78 | "@types/node" "*" 79 | 80 | "@types/connect@*": 81 | version "3.4.35" 82 | resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" 83 | integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== 84 | dependencies: 85 | "@types/node" "*" 86 | 87 | "@types/cors@^2.8.12": 88 | version "2.8.12" 89 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" 90 | integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== 91 | 92 | "@types/express-serve-static-core@^4.17.18": 93 | version "4.17.28" 94 | resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" 95 | integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== 96 | dependencies: 97 | "@types/node" "*" 98 | "@types/qs" "*" 99 | "@types/range-parser" "*" 100 | 101 | "@types/express@^4.17.13": 102 | version "4.17.13" 103 | resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034" 104 | integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA== 105 | dependencies: 106 | "@types/body-parser" "*" 107 | "@types/express-serve-static-core" "^4.17.18" 108 | "@types/qs" "*" 109 | "@types/serve-static" "*" 110 | 111 | "@types/jsonwebtoken@^8.5.8": 112 | version "8.5.8" 113 | resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44" 114 | integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A== 115 | dependencies: 116 | "@types/node" "*" 117 | 118 | "@types/mime@^1": 119 | version "1.3.2" 120 | resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" 121 | integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== 122 | 123 | "@types/node@*": 124 | version "17.0.36" 125 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.36.tgz#c0d5f2fe76b47b63e0e0efc3d2049a9970d68794" 126 | integrity sha512-V3orv+ggDsWVHP99K3JlwtH20R7J4IhI1Kksgc+64q5VxgfRkQG8Ws3MFm/FZOKDYGy9feGFlZ70/HpCNe9QaA== 127 | 128 | "@types/qs@*": 129 | version "6.9.7" 130 | resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" 131 | integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== 132 | 133 | "@types/range-parser@*": 134 | version "1.2.4" 135 | resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 136 | integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 137 | 138 | "@types/serve-static@*": 139 | version "1.13.10" 140 | resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9" 141 | integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ== 142 | dependencies: 143 | "@types/mime" "^1" 144 | "@types/node" "*" 145 | 146 | "@types/strip-bom@^3.0.0": 147 | version "3.0.0" 148 | resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2" 149 | integrity sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ== 150 | 151 | "@types/strip-json-comments@0.0.30": 152 | version "0.0.30" 153 | resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1" 154 | integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ== 155 | 156 | accepts@~1.3.8: 157 | version "1.3.8" 158 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 159 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 160 | dependencies: 161 | mime-types "~2.1.34" 162 | negotiator "0.6.3" 163 | 164 | acorn-walk@^8.1.1: 165 | version "8.2.0" 166 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 167 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 168 | 169 | acorn@^8.4.1: 170 | version "8.7.1" 171 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" 172 | integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== 173 | 174 | anymatch@~3.1.2: 175 | version "3.1.2" 176 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 177 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 178 | dependencies: 179 | normalize-path "^3.0.0" 180 | picomatch "^2.0.4" 181 | 182 | arg@^4.1.0: 183 | version "4.1.3" 184 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 185 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 186 | 187 | array-flatten@1.1.1: 188 | version "1.1.1" 189 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 190 | integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== 191 | 192 | balanced-match@^1.0.0: 193 | version "1.0.2" 194 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 195 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 196 | 197 | bcryptjs@^2.4.3: 198 | version "2.4.3" 199 | resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" 200 | integrity sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ== 201 | 202 | binary-extensions@^2.0.0: 203 | version "2.2.0" 204 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 205 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 206 | 207 | body-parser@1.20.0: 208 | version "1.20.0" 209 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" 210 | integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== 211 | dependencies: 212 | bytes "3.1.2" 213 | content-type "~1.0.4" 214 | debug "2.6.9" 215 | depd "2.0.0" 216 | destroy "1.2.0" 217 | http-errors "2.0.0" 218 | iconv-lite "0.4.24" 219 | on-finished "2.4.1" 220 | qs "6.10.3" 221 | raw-body "2.5.1" 222 | type-is "~1.6.18" 223 | unpipe "1.0.0" 224 | 225 | brace-expansion@^1.1.7: 226 | version "1.1.11" 227 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 228 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 229 | dependencies: 230 | balanced-match "^1.0.0" 231 | concat-map "0.0.1" 232 | 233 | braces@~3.0.2: 234 | version "3.0.2" 235 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 236 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 237 | dependencies: 238 | fill-range "^7.0.1" 239 | 240 | buffer-equal-constant-time@1.0.1: 241 | version "1.0.1" 242 | resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" 243 | integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== 244 | 245 | buffer-from@^1.0.0: 246 | version "1.1.2" 247 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 248 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 249 | 250 | bytes@3.1.2: 251 | version "3.1.2" 252 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 253 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 254 | 255 | call-bind@^1.0.0: 256 | version "1.0.2" 257 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" 258 | integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== 259 | dependencies: 260 | function-bind "^1.1.1" 261 | get-intrinsic "^1.0.2" 262 | 263 | chokidar@^3.5.1: 264 | version "3.5.3" 265 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 266 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 267 | dependencies: 268 | anymatch "~3.1.2" 269 | braces "~3.0.2" 270 | glob-parent "~5.1.2" 271 | is-binary-path "~2.1.0" 272 | is-glob "~4.0.1" 273 | normalize-path "~3.0.0" 274 | readdirp "~3.6.0" 275 | optionalDependencies: 276 | fsevents "~2.3.2" 277 | 278 | concat-map@0.0.1: 279 | version "0.0.1" 280 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 281 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 282 | 283 | content-disposition@0.5.4: 284 | version "0.5.4" 285 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" 286 | integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== 287 | dependencies: 288 | safe-buffer "5.2.1" 289 | 290 | content-type@~1.0.4: 291 | version "1.0.4" 292 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" 293 | integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 294 | 295 | cookie-signature@1.0.6: 296 | version "1.0.6" 297 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 298 | integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== 299 | 300 | cookie@0.5.0: 301 | version "0.5.0" 302 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" 303 | integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== 304 | 305 | cors@^2.8.5: 306 | version "2.8.5" 307 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 308 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 309 | dependencies: 310 | object-assign "^4" 311 | vary "^1" 312 | 313 | create-require@^1.1.0: 314 | version "1.1.1" 315 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 316 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 317 | 318 | debug@2.6.9: 319 | version "2.6.9" 320 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 321 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 322 | dependencies: 323 | ms "2.0.0" 324 | 325 | depd@2.0.0: 326 | version "2.0.0" 327 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 328 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 329 | 330 | destroy@1.2.0: 331 | version "1.2.0" 332 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 333 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 334 | 335 | diff@^4.0.1: 336 | version "4.0.2" 337 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 338 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 339 | 340 | dynamic-dedupe@^0.3.0: 341 | version "0.3.0" 342 | resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" 343 | integrity sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ== 344 | dependencies: 345 | xtend "^4.0.0" 346 | 347 | ecdsa-sig-formatter@1.0.11: 348 | version "1.0.11" 349 | resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" 350 | integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== 351 | dependencies: 352 | safe-buffer "^5.0.1" 353 | 354 | ee-first@1.1.1: 355 | version "1.1.1" 356 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 357 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 358 | 359 | encodeurl@~1.0.2: 360 | version "1.0.2" 361 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 362 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 363 | 364 | escape-html@~1.0.3: 365 | version "1.0.3" 366 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 367 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 368 | 369 | etag@~1.8.1: 370 | version "1.8.1" 371 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" 372 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 373 | 374 | express@^4.18.1: 375 | version "4.18.1" 376 | resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" 377 | integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== 378 | dependencies: 379 | accepts "~1.3.8" 380 | array-flatten "1.1.1" 381 | body-parser "1.20.0" 382 | content-disposition "0.5.4" 383 | content-type "~1.0.4" 384 | cookie "0.5.0" 385 | cookie-signature "1.0.6" 386 | debug "2.6.9" 387 | depd "2.0.0" 388 | encodeurl "~1.0.2" 389 | escape-html "~1.0.3" 390 | etag "~1.8.1" 391 | finalhandler "1.2.0" 392 | fresh "0.5.2" 393 | http-errors "2.0.0" 394 | merge-descriptors "1.0.1" 395 | methods "~1.1.2" 396 | on-finished "2.4.1" 397 | parseurl "~1.3.3" 398 | path-to-regexp "0.1.7" 399 | proxy-addr "~2.0.7" 400 | qs "6.10.3" 401 | range-parser "~1.2.1" 402 | safe-buffer "5.2.1" 403 | send "0.18.0" 404 | serve-static "1.15.0" 405 | setprototypeof "1.2.0" 406 | statuses "2.0.1" 407 | type-is "~1.6.18" 408 | utils-merge "1.0.1" 409 | vary "~1.1.2" 410 | 411 | fill-range@^7.0.1: 412 | version "7.0.1" 413 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 414 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 415 | dependencies: 416 | to-regex-range "^5.0.1" 417 | 418 | finalhandler@1.2.0: 419 | version "1.2.0" 420 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" 421 | integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== 422 | dependencies: 423 | debug "2.6.9" 424 | encodeurl "~1.0.2" 425 | escape-html "~1.0.3" 426 | on-finished "2.4.1" 427 | parseurl "~1.3.3" 428 | statuses "2.0.1" 429 | unpipe "~1.0.0" 430 | 431 | forwarded@0.2.0: 432 | version "0.2.0" 433 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" 434 | integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== 435 | 436 | fresh@0.5.2: 437 | version "0.5.2" 438 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" 439 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 440 | 441 | fs.realpath@^1.0.0: 442 | version "1.0.0" 443 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 444 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 445 | 446 | fsevents@~2.3.2: 447 | version "2.3.2" 448 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 449 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 450 | 451 | function-bind@^1.1.1: 452 | version "1.1.1" 453 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 454 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 455 | 456 | get-intrinsic@^1.0.2: 457 | version "1.1.1" 458 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" 459 | integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== 460 | dependencies: 461 | function-bind "^1.1.1" 462 | has "^1.0.3" 463 | has-symbols "^1.0.1" 464 | 465 | glob-parent@~5.1.2: 466 | version "5.1.2" 467 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 468 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 469 | dependencies: 470 | is-glob "^4.0.1" 471 | 472 | glob@^7.1.3: 473 | version "7.2.3" 474 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 475 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 476 | dependencies: 477 | fs.realpath "^1.0.0" 478 | inflight "^1.0.4" 479 | inherits "2" 480 | minimatch "^3.1.1" 481 | once "^1.3.0" 482 | path-is-absolute "^1.0.0" 483 | 484 | has-symbols@^1.0.1: 485 | version "1.0.3" 486 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 487 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 488 | 489 | has@^1.0.3: 490 | version "1.0.3" 491 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 492 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 493 | dependencies: 494 | function-bind "^1.1.1" 495 | 496 | http-errors@2.0.0: 497 | version "2.0.0" 498 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 499 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 500 | dependencies: 501 | depd "2.0.0" 502 | inherits "2.0.4" 503 | setprototypeof "1.2.0" 504 | statuses "2.0.1" 505 | toidentifier "1.0.1" 506 | 507 | iconv-lite@0.4.24: 508 | version "0.4.24" 509 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 510 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 511 | dependencies: 512 | safer-buffer ">= 2.1.2 < 3" 513 | 514 | inflight@^1.0.4: 515 | version "1.0.6" 516 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 517 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 518 | dependencies: 519 | once "^1.3.0" 520 | wrappy "1" 521 | 522 | inherits@2, inherits@2.0.4: 523 | version "2.0.4" 524 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 525 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 526 | 527 | ipaddr.js@1.9.1: 528 | version "1.9.1" 529 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" 530 | integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== 531 | 532 | is-binary-path@~2.1.0: 533 | version "2.1.0" 534 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 535 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 536 | dependencies: 537 | binary-extensions "^2.0.0" 538 | 539 | is-core-module@^2.8.1: 540 | version "2.9.0" 541 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" 542 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== 543 | dependencies: 544 | has "^1.0.3" 545 | 546 | is-extglob@^2.1.1: 547 | version "2.1.1" 548 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 549 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 550 | 551 | is-glob@^4.0.1, is-glob@~4.0.1: 552 | version "4.0.3" 553 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 554 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 555 | dependencies: 556 | is-extglob "^2.1.1" 557 | 558 | is-number@^7.0.0: 559 | version "7.0.0" 560 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 561 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 562 | 563 | jsonwebtoken@^8.5.1: 564 | version "8.5.1" 565 | resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" 566 | integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== 567 | dependencies: 568 | jws "^3.2.2" 569 | lodash.includes "^4.3.0" 570 | lodash.isboolean "^3.0.3" 571 | lodash.isinteger "^4.0.4" 572 | lodash.isnumber "^3.0.3" 573 | lodash.isplainobject "^4.0.6" 574 | lodash.isstring "^4.0.1" 575 | lodash.once "^4.0.0" 576 | ms "^2.1.1" 577 | semver "^5.6.0" 578 | 579 | jwa@^1.4.1: 580 | version "1.4.1" 581 | resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" 582 | integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== 583 | dependencies: 584 | buffer-equal-constant-time "1.0.1" 585 | ecdsa-sig-formatter "1.0.11" 586 | safe-buffer "^5.0.1" 587 | 588 | jws@^3.2.2: 589 | version "3.2.2" 590 | resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" 591 | integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== 592 | dependencies: 593 | jwa "^1.4.1" 594 | safe-buffer "^5.0.1" 595 | 596 | lodash.includes@^4.3.0: 597 | version "4.3.0" 598 | resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" 599 | integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== 600 | 601 | lodash.isboolean@^3.0.3: 602 | version "3.0.3" 603 | resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" 604 | integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== 605 | 606 | lodash.isinteger@^4.0.4: 607 | version "4.0.4" 608 | resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" 609 | integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== 610 | 611 | lodash.isnumber@^3.0.3: 612 | version "3.0.3" 613 | resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" 614 | integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== 615 | 616 | lodash.isplainobject@^4.0.6: 617 | version "4.0.6" 618 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 619 | integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== 620 | 621 | lodash.isstring@^4.0.1: 622 | version "4.0.1" 623 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 624 | integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== 625 | 626 | lodash.once@^4.0.0: 627 | version "4.1.1" 628 | resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" 629 | integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== 630 | 631 | make-error@^1.1.1: 632 | version "1.3.6" 633 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 634 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 635 | 636 | media-typer@0.3.0: 637 | version "0.3.0" 638 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 639 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 640 | 641 | merge-descriptors@1.0.1: 642 | version "1.0.1" 643 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 644 | integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 645 | 646 | methods@~1.1.2: 647 | version "1.1.2" 648 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 649 | integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 650 | 651 | mime-db@1.52.0: 652 | version "1.52.0" 653 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 654 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 655 | 656 | mime-types@~2.1.24, mime-types@~2.1.34: 657 | version "2.1.35" 658 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 659 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 660 | dependencies: 661 | mime-db "1.52.0" 662 | 663 | mime@1.6.0: 664 | version "1.6.0" 665 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 666 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 667 | 668 | minimatch@^3.1.1: 669 | version "3.1.2" 670 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 671 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 672 | dependencies: 673 | brace-expansion "^1.1.7" 674 | 675 | minimist@^1.2.6: 676 | version "1.2.6" 677 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 678 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 679 | 680 | mkdirp@^1.0.4: 681 | version "1.0.4" 682 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" 683 | integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== 684 | 685 | ms@2.0.0: 686 | version "2.0.0" 687 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 688 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 689 | 690 | ms@2.1.3, ms@^2.1.1: 691 | version "2.1.3" 692 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 693 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 694 | 695 | negotiator@0.6.3: 696 | version "0.6.3" 697 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 698 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 699 | 700 | normalize-path@^3.0.0, normalize-path@~3.0.0: 701 | version "3.0.0" 702 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 703 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 704 | 705 | object-assign@^4: 706 | version "4.1.1" 707 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 708 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 709 | 710 | object-inspect@^1.9.0: 711 | version "1.12.2" 712 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" 713 | integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== 714 | 715 | on-finished@2.4.1: 716 | version "2.4.1" 717 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 718 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 719 | dependencies: 720 | ee-first "1.1.1" 721 | 722 | once@^1.3.0: 723 | version "1.4.0" 724 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 725 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 726 | dependencies: 727 | wrappy "1" 728 | 729 | parseurl@~1.3.3: 730 | version "1.3.3" 731 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 732 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 733 | 734 | path-is-absolute@^1.0.0: 735 | version "1.0.1" 736 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 737 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 738 | 739 | path-parse@^1.0.7: 740 | version "1.0.7" 741 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 742 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 743 | 744 | path-to-regexp@0.1.7: 745 | version "0.1.7" 746 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 747 | integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 748 | 749 | picomatch@^2.0.4, picomatch@^2.2.1: 750 | version "2.3.1" 751 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 752 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 753 | 754 | prisma@^3.14.0: 755 | version "3.14.0" 756 | resolved "https://registry.yarnpkg.com/prisma/-/prisma-3.14.0.tgz#dd67ece37d7b5373e9fd9588971de0024b49be81" 757 | integrity sha512-l9MOgNCn/paDE+i1K2fp9NZ+Du4trzPTJsGkaQHVBufTGqzoYHuNk8JfzXuIn0Gte6/ZjyKj652Jq/Lc1tp2yw== 758 | dependencies: 759 | "@prisma/engines" "3.14.0-36.2b0c12756921c891fec4f68d9444e18c7d5d4a6a" 760 | 761 | proxy-addr@~2.0.7: 762 | version "2.0.7" 763 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" 764 | integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== 765 | dependencies: 766 | forwarded "0.2.0" 767 | ipaddr.js "1.9.1" 768 | 769 | qs@6.10.3: 770 | version "6.10.3" 771 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" 772 | integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== 773 | dependencies: 774 | side-channel "^1.0.4" 775 | 776 | range-parser@~1.2.1: 777 | version "1.2.1" 778 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 779 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 780 | 781 | raw-body@2.5.1: 782 | version "2.5.1" 783 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" 784 | integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== 785 | dependencies: 786 | bytes "3.1.2" 787 | http-errors "2.0.0" 788 | iconv-lite "0.4.24" 789 | unpipe "1.0.0" 790 | 791 | readdirp@~3.6.0: 792 | version "3.6.0" 793 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 794 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 795 | dependencies: 796 | picomatch "^2.2.1" 797 | 798 | resolve@^1.0.0: 799 | version "1.22.0" 800 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 801 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 802 | dependencies: 803 | is-core-module "^2.8.1" 804 | path-parse "^1.0.7" 805 | supports-preserve-symlinks-flag "^1.0.0" 806 | 807 | rimraf@^2.6.1: 808 | version "2.7.1" 809 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 810 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 811 | dependencies: 812 | glob "^7.1.3" 813 | 814 | safe-buffer@5.2.1, safe-buffer@^5.0.1: 815 | version "5.2.1" 816 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 817 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 818 | 819 | "safer-buffer@>= 2.1.2 < 3": 820 | version "2.1.2" 821 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 822 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 823 | 824 | semver@^5.6.0: 825 | version "5.7.1" 826 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 827 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 828 | 829 | send@0.18.0: 830 | version "0.18.0" 831 | resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" 832 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 833 | dependencies: 834 | debug "2.6.9" 835 | depd "2.0.0" 836 | destroy "1.2.0" 837 | encodeurl "~1.0.2" 838 | escape-html "~1.0.3" 839 | etag "~1.8.1" 840 | fresh "0.5.2" 841 | http-errors "2.0.0" 842 | mime "1.6.0" 843 | ms "2.1.3" 844 | on-finished "2.4.1" 845 | range-parser "~1.2.1" 846 | statuses "2.0.1" 847 | 848 | serve-static@1.15.0: 849 | version "1.15.0" 850 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" 851 | integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== 852 | dependencies: 853 | encodeurl "~1.0.2" 854 | escape-html "~1.0.3" 855 | parseurl "~1.3.3" 856 | send "0.18.0" 857 | 858 | setprototypeof@1.2.0: 859 | version "1.2.0" 860 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 861 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 862 | 863 | side-channel@^1.0.4: 864 | version "1.0.4" 865 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" 866 | integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== 867 | dependencies: 868 | call-bind "^1.0.0" 869 | get-intrinsic "^1.0.2" 870 | object-inspect "^1.9.0" 871 | 872 | source-map-support@^0.5.12: 873 | version "0.5.21" 874 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 875 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 876 | dependencies: 877 | buffer-from "^1.0.0" 878 | source-map "^0.6.0" 879 | 880 | source-map@^0.6.0: 881 | version "0.6.1" 882 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 883 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 884 | 885 | statuses@2.0.1: 886 | version "2.0.1" 887 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 888 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 889 | 890 | strip-bom@^3.0.0: 891 | version "3.0.0" 892 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 893 | integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= 894 | 895 | strip-json-comments@^2.0.0: 896 | version "2.0.1" 897 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 898 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 899 | 900 | supports-preserve-symlinks-flag@^1.0.0: 901 | version "1.0.0" 902 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 903 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 904 | 905 | to-regex-range@^5.0.1: 906 | version "5.0.1" 907 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 908 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 909 | dependencies: 910 | is-number "^7.0.0" 911 | 912 | toidentifier@1.0.1: 913 | version "1.0.1" 914 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 915 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 916 | 917 | tree-kill@^1.2.2: 918 | version "1.2.2" 919 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" 920 | integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== 921 | 922 | ts-node-dev@^2.0.0: 923 | version "2.0.0" 924 | resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-2.0.0.tgz#bdd53e17ab3b5d822ef519928dc6b4a7e0f13065" 925 | integrity sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w== 926 | dependencies: 927 | chokidar "^3.5.1" 928 | dynamic-dedupe "^0.3.0" 929 | minimist "^1.2.6" 930 | mkdirp "^1.0.4" 931 | resolve "^1.0.0" 932 | rimraf "^2.6.1" 933 | source-map-support "^0.5.12" 934 | tree-kill "^1.2.2" 935 | ts-node "^10.4.0" 936 | tsconfig "^7.0.0" 937 | 938 | ts-node@^10.4.0: 939 | version "10.8.0" 940 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.0.tgz#3ceb5ac3e67ae8025c1950626aafbdecb55d82ce" 941 | integrity sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA== 942 | dependencies: 943 | "@cspotcode/source-map-support" "^0.8.0" 944 | "@tsconfig/node10" "^1.0.7" 945 | "@tsconfig/node12" "^1.0.7" 946 | "@tsconfig/node14" "^1.0.0" 947 | "@tsconfig/node16" "^1.0.2" 948 | acorn "^8.4.1" 949 | acorn-walk "^8.1.1" 950 | arg "^4.1.0" 951 | create-require "^1.1.0" 952 | diff "^4.0.1" 953 | make-error "^1.1.1" 954 | v8-compile-cache-lib "^3.0.1" 955 | yn "3.1.1" 956 | 957 | tsconfig@^7.0.0: 958 | version "7.0.0" 959 | resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7" 960 | integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw== 961 | dependencies: 962 | "@types/strip-bom" "^3.0.0" 963 | "@types/strip-json-comments" "0.0.30" 964 | strip-bom "^3.0.0" 965 | strip-json-comments "^2.0.0" 966 | 967 | type-is@~1.6.18: 968 | version "1.6.18" 969 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 970 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 971 | dependencies: 972 | media-typer "0.3.0" 973 | mime-types "~2.1.24" 974 | 975 | typescript@^4.7.2: 976 | version "4.7.2" 977 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" 978 | integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== 979 | 980 | unpipe@1.0.0, unpipe@~1.0.0: 981 | version "1.0.0" 982 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 983 | integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 984 | 985 | utils-merge@1.0.1: 986 | version "1.0.1" 987 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 988 | integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 989 | 990 | v8-compile-cache-lib@^3.0.1: 991 | version "3.0.1" 992 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 993 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 994 | 995 | vary@^1, vary@~1.1.2: 996 | version "1.1.2" 997 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 998 | integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 999 | 1000 | wrappy@1: 1001 | version "1.0.2" 1002 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1003 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1004 | 1005 | xtend@^4.0.0: 1006 | version "4.0.2" 1007 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 1008 | integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== 1009 | 1010 | yn@3.1.1: 1011 | version "3.1.1" 1012 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1013 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1014 | --------------------------------------------------------------------------------