├── .env.example ├── .eslintrc.json ├── .github └── FUNDING.yml ├── .gitignore ├── .prettierrc ├── LICENSE ├── README.md ├── components ├── footer.js ├── pollCard.tsx └── pollForm.js ├── lib ├── addNewUpvote.ts ├── addNewVote.ts ├── checkForUpvote.ts ├── checkForVote.ts └── theme.ts ├── next-env.d.ts ├── next.config.js ├── package.json ├── pages ├── 404.js ├── _app.js ├── api │ ├── poll.js │ ├── upvote.js │ ├── vote.js │ └── votes.js ├── create.jsx ├── index.js ├── poll │ ├── [slug].tsx │ └── results │ │ └── [slug].tsx └── polls.tsx ├── pnpm-lock.yaml ├── postcss.config.js ├── prisma └── schema.prisma ├── public └── vercel.svg ├── styles ├── globals.css └── nprogress.css ├── tailwind.config.js └── tsconfig.json /.env.example: -------------------------------------------------------------------------------- 1 | DATABASE_URL= -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: asheeeshh 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 13 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 14 | -------------------------------------------------------------------------------- /.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 30 | 31 | # vercel 32 | .vercel 33 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": true, 3 | "tabWidth": 2, 4 | "useTabs": false, 5 | "$schema": "https://json.schemastore.org/prettierrc", 6 | "arrowParens": "always", 7 | "trailingComma": "all", 8 | "singleQuote": false, 9 | "jsxSingleQuote": false 10 | } 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 ashish 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Oh My Poll 2 | 3 | create and share polls privately or publicly -- its fast and free! 4 | 5 | ### Tech Stack 6 | - Next.js 7 | - TailwindCSS 8 | - Prisma 9 | - PlanetScale 10 | 11 | ### External Dependencies 12 | - formik 13 | - nanoid 14 | - react-icons 15 | - nprogress 16 | - react-hot-toast 17 | 18 | ### Run Locally 19 | - Clone the repository 20 | ```bash 21 | git clone https://github.com/asheeeshh/ohmypoll.git 22 | ``` 23 | - Create a database on [planetscale](https://planetscale.com) and set the `DATABASE_URL` environment variable in a `.env` file, see [`.env.example`](/.env.example) for example. You can also use this command. 24 | ```bash 25 | echo "DATABASE_URL=your_databse_url" > .env 26 | ``` 27 | - Install dependencies 28 | ```bash 29 | cd ohmypoll 30 | pnpm i # or npm i 31 | ``` 32 | - Fire up prisma 33 | ```bash 34 | pnpm dlx prisma db push # or npx prisma db push 35 | ``` 36 | - Run the app 37 | ```bash 38 | pnpm run dev # or npm run dev 39 | ``` 40 | 41 | ### License 42 | [MIT License](LICENSE) 43 | 44 | ### Contributing 45 | - Fork the repository 46 | - Create a new branch 47 | - Make your changes 48 | - Commit your changes 49 | - Push your changes to the main branch 50 | - Open a pull request 51 | 52 | ### Ending Note 53 | - If you have any questions, suggestions or bug reports please open an issue. 54 | - Leave a star if you like the project. 55 | - If you like this project, please consider [supporting](https://www.buymeacoffee.com/asheeshh) me. 56 | 57 | -------------------------------------------------------------------------------- /components/footer.js: -------------------------------------------------------------------------------- 1 | const SiteFooter = () => { 2 | return ( 3 |
4 |

5 | made with{" "} 6 | {`<3`} by{" "} 7 | 11 | ashish 12 | 13 |

14 |
15 | ); 16 | }; 17 | 18 | export default SiteFooter; 19 | -------------------------------------------------------------------------------- /components/pollCard.tsx: -------------------------------------------------------------------------------- 1 | import { Poll } from "@prisma/client"; 2 | import { useRouter } from "next/router"; 3 | 4 | type Props = { 5 | poll: Poll; 6 | }; 7 | 8 | export default function PollCard(props: Props) { 9 | const router = useRouter(); 10 | const { title, createdAt, upvotes, createdBy, id, votes } = props?.poll; 11 | return ( 12 |
router.push(`/poll/${id}`)} 15 | > 16 |
17 | 18 | poll#{id} 19 | 20 |

21 | {title} 22 |

23 |
24 |
25 | 26 | △ {upvotes} 27 | 28 | {" | "} 29 | 30 | by {createdBy} 31 | 32 | 33 | on {new Date(createdAt).toLocaleDateString()} 34 | 35 | {" | "} 36 | 37 | {votes} {votes === 1 ? "person" : "people"} voted 38 | 39 |
40 |
41 | ); 42 | } 43 | -------------------------------------------------------------------------------- /components/pollForm.js: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import { useRouter } from "next/router"; 3 | import { toast } from "react-hot-toast"; 4 | import { Formik, Form } from "formik"; 5 | import { FiPlus, FiX } from "react-icons/fi"; 6 | 7 | const PollForm = ({ redirectPath = "", onSubmit = () => null }) => { 8 | const router = useRouter(); 9 | const [cBy, setCBy] = useState("anonymous"); 10 | const [visibility, setVisibility] = useState("private"); 11 | const [disabled, setDisabled] = useState(false); 12 | const [options, setOptions] = useState([]); 13 | const [question, setQuestion] = useState(""); 14 | const [newOption, setNewOption] = useState(""); 15 | 16 | const handleSubmit = async (values) => { 17 | let toastId; 18 | try { 19 | setDisabled(true); 20 | 21 | if (typeof onSubmit === "function") { 22 | if (options.length >= 2 && options.length <= 6) { 23 | if (question.length > 0) { 24 | toastId = toast.loading("Creating poll..."); 25 | await onSubmit({ 26 | title: question, 27 | options: options, 28 | visibility: visibility, 29 | createdBy: cBy, 30 | }); 31 | toast.success("Poll created successfully!", { 32 | autoClose: 3000, 33 | closeButton: false, 34 | id: toastId, 35 | }); 36 | router.push(redirectPath); 37 | } else { 38 | toast.error("Please add a question!"); 39 | setDisabled(false); 40 | } 41 | } else { 42 | if (options.length < 2) { 43 | // console.log("i love you"); 44 | toast.error("Please add at least two options!"); 45 | setDisabled(false); 46 | } else if (options.length > 6) { 47 | toast.error("You can add at most six options!"); 48 | setDisabled(false); 49 | } 50 | } 51 | 52 | // await onSubmit({ ...values, createdBy: cBy, visibility: visibility }); 53 | } 54 | } catch (error) { 55 | toast.error(error.message, { 56 | autoClose: 3000, 57 | closeButton: false, 58 | id: toastId, 59 | }); 60 | setDisabled(false); 61 | } 62 | }; 63 | 64 | return ( 65 | {}} 71 | onSubmit={handleSubmit} 72 | > 73 | {({ isSubmitting, isValid }) => ( 74 |
75 |
76 | 82 | setQuestion(e.target.value)} 90 | /> 91 |
92 |
93 | 102 |
103 | setNewOption(e.target.value)} 111 | value={newOption} 112 | /> 113 | 132 |
133 |
134 | {options.length > 0 && ( 135 |
136 | {options.map((option, index) => ( 137 |
138 | { 147 | const newOptions = [...options]; 148 | newOptions[index] = e.target.value; 149 | setOptions(newOptions); 150 | }} 151 | /> 152 | 164 |
165 | ))} 166 |
167 | )} 168 |
169 | 175 | setCBy(e.target.value)} 184 | /> 185 |
186 |
187 | 196 | 207 |
208 | 215 |
216 | )} 217 |
218 | ); 219 | }; 220 | 221 | export default PollForm; 222 | -------------------------------------------------------------------------------- /lib/addNewUpvote.ts: -------------------------------------------------------------------------------- 1 | export function addNewUpVote(pollID: string) { 2 | const allUpVotes = localStorage.getItem("upvotes"); 3 | if (allUpVotes) { 4 | const upvotes = JSON.parse(allUpVotes); 5 | upvotes.push(pollID); 6 | localStorage.setItem("upvotes", JSON.stringify(upvotes)); 7 | } else { 8 | localStorage.setItem("upvotes", JSON.stringify([pollID])); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /lib/addNewVote.ts: -------------------------------------------------------------------------------- 1 | export function addNewVote(voteID: string) { 2 | const allVotes = localStorage.getItem("votes"); 3 | if (allVotes) { 4 | const votes = JSON.parse(allVotes); 5 | votes.push(voteID); 6 | console.log(votes); 7 | localStorage.setItem("votes", JSON.stringify(votes)); 8 | } else { 9 | localStorage.setItem("votes", JSON.stringify([voteID])); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /lib/checkForUpvote.ts: -------------------------------------------------------------------------------- 1 | export function checkForUpVote(pollID: string) { 2 | const allUpVotes = localStorage.getItem("upvotes"); 3 | if (allUpVotes) { 4 | const upvotes = JSON.parse(allUpVotes); 5 | if (upvotes.includes(pollID)) { 6 | return true; 7 | } 8 | return false; 9 | } 10 | return false; 11 | } 12 | -------------------------------------------------------------------------------- /lib/checkForVote.ts: -------------------------------------------------------------------------------- 1 | export function checkForVote(voteID: string) { 2 | const allVotes = localStorage.getItem("votes"); 3 | if (allVotes) { 4 | const votes = JSON.parse(allVotes); 5 | if (votes.includes(voteID)) { 6 | return true; 7 | } 8 | return false; 9 | } 10 | return false; 11 | } 12 | -------------------------------------------------------------------------------- /lib/theme.ts: -------------------------------------------------------------------------------- 1 | export function getTheme(): string { 2 | const theme = localStorage.getItem("theme"); 3 | if (theme !== null && theme !== undefined) { 4 | return theme; 5 | } else { 6 | return "light"; 7 | } 8 | } 9 | 10 | export function setTheme(theme: string) { 11 | localStorage.setItem("theme", theme); 12 | } 13 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | reactStrictMode: true, 4 | }; 5 | 6 | module.exports = nextConfig; 7 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ohmypoll", 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 | "@prisma/client": "^4.0.0", 13 | "axios": "^0.27.2", 14 | "formik": "^2.2.9", 15 | "nanoid": "^4.0.0", 16 | "next": "12.2.0", 17 | "nprogress": "^0.2.0", 18 | "react": "18.2.0", 19 | "react-dom": "18.2.0", 20 | "react-hot-toast": "^2.2.0", 21 | "react-icons": "^4.4.0" 22 | }, 23 | "devDependencies": { 24 | "@tailwindcss/forms": "^0.5.2", 25 | "@types/node": "^18.0.1", 26 | "@types/react": "^18.0.14", 27 | "@types/react-dom": "^18.0.5", 28 | "autoprefixer": "^10.4.7", 29 | "eslint": "8.19.0", 30 | "eslint-config-next": "12.2.0", 31 | "postcss": "^8.4.14", 32 | "prisma": "^4.0.0", 33 | "tailwindcss": "^3.1.4", 34 | "typescript": "^4.7.4" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /pages/404.js: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | 3 | export default function FourOhFour() { 4 | return ( 5 |
6 |
7 |

8 | 9 | 404 10 | {" "} 11 | page not found :( 12 |

13 | 14 | 15 | . . /{" "} 16 | 17 | 404.js 18 | 19 | 20 | 21 |
22 |
23 | ); 24 | } 25 | -------------------------------------------------------------------------------- /pages/_app.js: -------------------------------------------------------------------------------- 1 | import "../styles/globals.css"; 2 | import { Toaster } from "react-hot-toast"; 3 | import NProgress from "nprogress"; 4 | // import "nprogress/nprogress.css"; 5 | import "../styles/nprogress.css"; 6 | import { Router } from "next/router"; 7 | import Head from "next/head"; 8 | 9 | function MyApp({ Component, pageProps }) { 10 | NProgress.configure({ showSpinner: false }); 11 | Router.events.on("routeChangeStart", () => NProgress.start()); 12 | Router.events.on("routeChangeComplete", () => NProgress.done()); 13 | Router.events.on("routeChangeError", () => NProgress.done()); 14 | return ( 15 |
16 | 17 | Oh My Poll! 18 | 19 | 23 | 24 | 28 | 29 | 30 | 31 | 35 | 36 | 37 | 38 | 39 |
40 | ); 41 | } 42 | 43 | export default MyApp; 44 | -------------------------------------------------------------------------------- /pages/api/poll.js: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | const prisma = new PrismaClient(); 4 | 5 | export default async function handler(req, res) { 6 | if (req.method === "POST") { 7 | try { 8 | const { id, title, options, visibility, createdBy } = req.body; 9 | const poll = await prisma.poll.create({ 10 | data: { 11 | id, 12 | title, 13 | options: { 14 | create: options.map((option, index) => ({ 15 | number: index + 1, 16 | text: option, 17 | })), 18 | }, 19 | visibility, 20 | createdBy, 21 | }, 22 | }); 23 | res.status(200).json(poll); 24 | } catch (error) { 25 | console.log(error); 26 | res.status(500).json({ error: error.message }); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /pages/api/upvote.js: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | const prisma = new PrismaClient(); 4 | 5 | export default async function handler(req, res) { 6 | if (req.method === "POST") { 7 | try { 8 | const { id } = req.body; 9 | const upvote = await prisma.poll.update({ 10 | where: { 11 | id: id, 12 | }, 13 | data: { 14 | upvotes: { 15 | increment: 1, 16 | }, 17 | }, 18 | }); 19 | res.status(200).json(upvote); 20 | } catch (error) { 21 | // console.log(error); 22 | res.status(500).json({ error: error.message }); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /pages/api/vote.js: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | const prisma = new PrismaClient(); 4 | 5 | export default async function handler(req, res) { 6 | if (req.method === "POST") { 7 | try { 8 | const { id } = req.body; 9 | const vote = await prisma.option.update({ 10 | where: { 11 | id: id, 12 | }, 13 | data: { 14 | votes: { 15 | increment: 1, 16 | }, 17 | }, 18 | }); 19 | res.status(200).json(vote); 20 | } catch (error) { 21 | // console.log(error); 22 | res.status(500).json({ error: error.message }); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /pages/api/votes.js: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | 3 | const prisma = new PrismaClient(); 4 | 5 | export default async function handler(req, res) { 6 | if (req.method === "POST") { 7 | try { 8 | const { id } = req.body; 9 | const vote = await prisma.poll.update({ 10 | where: { 11 | id: id, 12 | }, 13 | data: { 14 | votes: { 15 | increment: 1, 16 | }, 17 | }, 18 | }); 19 | res.status(200).json(vote); 20 | } catch (error) { 21 | // console.log(error); 22 | res.status(500).json({ error: error.message }); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /pages/create.jsx: -------------------------------------------------------------------------------- 1 | import { nanoid } from "nanoid"; 2 | import axios from "axios"; 3 | import PollForm from "../components/pollForm"; 4 | import Link from "next/link"; 5 | import SiteFooter from "../components/footer"; 6 | import { setTheme, getTheme } from "../lib/theme"; 7 | import { useEffect, useState } from "react"; 8 | import { FiMoon, FiSun } from "react-icons/fi"; 9 | 10 | export default function Create() { 11 | const id = nanoid(6); 12 | const addPoll = (poll) => axios.post("/api/poll", { id, ...poll }); 13 | const [currentTheme, setCurrentTheme] = useState("light"); 14 | 15 | useEffect(() => { 16 | setTheme(getTheme()); 17 | setCurrentTheme(getTheme()); 18 | document.body.classList.add(getTheme()); 19 | }, [currentTheme]); 20 | 21 | function switchTheme() { 22 | if (currentTheme === "light") { 23 | setTheme("dark"); 24 | setCurrentTheme("dark"); 25 | document.body.classList.add("dark"); 26 | } else { 27 | setTheme("light"); 28 | setCurrentTheme("light"); 29 | document.body.classList.remove("dark"); 30 | } 31 | } 32 | 33 | return ( 34 |
35 | 45 |
46 | 47 | 48 | . . /{" "} 49 | 50 | create 51 | 52 | 53 | 54 |
55 |
56 |

57 | Create a poll 58 |

59 | 60 |
61 | 62 |
63 | ); 64 | } 65 | -------------------------------------------------------------------------------- /pages/index.js: -------------------------------------------------------------------------------- 1 | import { useRouter } from "next/router"; 2 | import SiteFooter from "../components/footer"; 3 | import { useEffect, useState } from "react"; 4 | import { setTheme, getTheme } from "../lib/theme"; 5 | import { FiMoon, FiSun } from "react-icons/fi"; 6 | 7 | export default function Home() { 8 | const router = useRouter(); 9 | const [currentTheme, setCurrentTheme] = useState("light"); 10 | 11 | useEffect(() => { 12 | setTheme(getTheme()); 13 | setCurrentTheme(getTheme()); 14 | document.body.classList.add(getTheme()); 15 | }, [currentTheme]); 16 | 17 | function switchTheme() { 18 | if (currentTheme === "light") { 19 | setTheme("dark"); 20 | setCurrentTheme("dark"); 21 | document.body.classList.add("dark"); 22 | } else { 23 | setTheme("light"); 24 | setCurrentTheme("light"); 25 | document.body.classList.remove("dark"); 26 | } 27 | } 28 | 29 | return ( 30 |
31 | 41 |
42 |

43 | oh my poll ! 44 |

45 |

46 | create polls and ask others anything you want privately or publicly -{" "} 47 | {`it's`} free! 48 |

49 |
50 |
51 | 57 | 63 |
64 | 65 |
66 | ); 67 | } 68 | -------------------------------------------------------------------------------- /pages/poll/[slug].tsx: -------------------------------------------------------------------------------- 1 | // Import the generated Prisma client 2 | import { PrismaClient } from "@prisma/client"; 3 | import axios from "axios"; 4 | import { toast } from "react-hot-toast"; 5 | import { addNewVote } from "../../lib/addNewVote"; 6 | import { checkForVote } from "../../lib/checkForVote"; 7 | import { addNewUpVote } from "../../lib/addNewUpvote"; 8 | import { checkForUpVote } from "../../lib/checkForUpvote"; 9 | import { Option, Poll } from "@prisma/client"; 10 | import { useRouter } from "next/router"; 11 | import { useEffect, useState } from "react"; 12 | import SiteFooter from "../../components/footer"; 13 | import Link from "next/link"; 14 | 15 | // Instantiate it 16 | const prisma = new PrismaClient(); 17 | 18 | export type Props = { 19 | poll: Poll; 20 | options: Option[]; 21 | }; 22 | 23 | export async function getStaticPaths() { 24 | const polls = await prisma.poll.findMany({ 25 | select: { 26 | id: true, 27 | }, 28 | }); 29 | 30 | return { 31 | paths: polls.map((poll) => ({ 32 | params: { 33 | slug: poll.id, 34 | }, 35 | })), 36 | fallback: true, 37 | }; 38 | } 39 | 40 | export async function getStaticProps({ params }: any) { 41 | const poll = await prisma.poll.findUnique({ 42 | where: { 43 | id: params.slug, 44 | }, 45 | }); 46 | const options = await prisma.option.findMany({ 47 | where: { 48 | pollID: params.slug, 49 | }, 50 | }); 51 | 52 | if (poll) { 53 | return { 54 | props: { 55 | poll: JSON.parse(JSON.stringify(poll)), 56 | options: JSON.parse(JSON.stringify(options)), 57 | }, 58 | revalidate: 2, 59 | }; 60 | } 61 | 62 | return { 63 | redirect: { 64 | destination: "/", 65 | permanent: false, 66 | }, 67 | }; 68 | } 69 | 70 | export default function PollPage(props: Props) { 71 | const router = useRouter(); 72 | const [hasVoted, setHasVoted] = useState(false); 73 | const [hasUpVoted, setHasUpVoted] = useState(false); 74 | const [upvotes, setUpvotes] = useState(props?.poll?.upvotes); 75 | useEffect(() => { 76 | setHasUpVoted(checkForUpVote(props?.poll?.id)); 77 | setHasVoted(checkForVote(props?.poll?.id)); 78 | }, [props?.poll?.id]); 79 | const addVote = (id: number, pollId: string) => { 80 | if (hasVoted !== true) { 81 | addNewVote(pollId); 82 | let toastId; 83 | toastId = toast.loading("Adding your vote..."); 84 | try { 85 | Promise.all([ 86 | axios.post("/api/vote", { 87 | id: id, 88 | }), 89 | axios.post("/api/votes", { 90 | id: pollId, 91 | }), 92 | ]); 93 | toast.success("Your vote has been added!", { 94 | id: toastId, 95 | }); 96 | setHasVoted(true); 97 | router.push(`/poll/results/${pollId}`); 98 | } catch (error) { 99 | toast.error("Something went wrong...", { 100 | id: toastId, 101 | }); 102 | } 103 | } else { 104 | toast.error("You have already voted for this poll!"); 105 | } 106 | }; 107 | 108 | const addUpVote = (pollId: string) => { 109 | if (hasUpVoted !== true) { 110 | addNewUpVote(pollId); 111 | let toastId; 112 | toastId = toast.loading("Adding your upvote..."); 113 | try { 114 | axios.post("/api/upvote", { 115 | id: pollId, 116 | }); 117 | toast.success("Your upvote has been added!", { 118 | id: toastId, 119 | }); 120 | setUpvotes(upvotes + 1); 121 | setHasUpVoted(true); 122 | } catch (error) { 123 | toast.error("Something went wrong...", { 124 | id: toastId, 125 | }); 126 | } 127 | } else { 128 | toast.error("You have already upvoted this poll!"); 129 | } 130 | }; 131 | 132 | if (router.isFallback) { 133 | return ( 134 |
135 | Loading... 136 |
137 | ); 138 | } 139 | 140 | return ( 141 |
142 |
143 | 144 | 145 | . . /{" "} 146 | 147 | poll / {props?.poll?.id} 148 | 149 | 150 | 151 |
152 |
153 |

154 | {props?.poll?.title}{" "} 155 | 156 | {props?.poll?.visibility} 157 | 158 |

159 |
160 | {props?.options?.map((option: Option) => { 161 | return ( 162 | 174 | ); 175 | })} 176 |
177 |
178 | {hasVoted === true && ( 179 | <> 180 |

router.push(`/poll/results/${props?.poll?.id}`)} 183 | > 184 | view results 185 |

186 | {" | "} 187 | 188 | )} 189 |

addUpVote(props?.poll?.id)} 192 | > 193 | {upvotes}△{" "} 194 | 195 | upvote 196 | 197 |

198 |
199 |

200 | 201 | created by 202 | {" "} 203 | {props?.poll?.createdBy} 204 | {" | "} 205 | 206 | created on 207 | {" "} 208 | {new Date(props?.poll?.createdAt).toLocaleDateString()}{" "} 209 | {new Date(props?.poll?.createdAt).toLocaleTimeString()} 210 |

211 |
212 | 213 |
214 | ); 215 | } 216 | -------------------------------------------------------------------------------- /pages/poll/results/[slug].tsx: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from "@prisma/client"; 2 | import { Props } from "../[slug]"; 3 | import { Option } from "@prisma/client"; 4 | import SiteFooter from "../../../components/footer"; 5 | import Link from "next/link"; 6 | import { useRouter } from "next/router"; 7 | import { useState, useEffect } from "react"; 8 | import { checkForVote } from "../../../lib/checkForVote"; 9 | 10 | const prisma = new PrismaClient(); 11 | 12 | export async function getStaticPaths() { 13 | const polls = await prisma.poll.findMany({ 14 | select: { 15 | id: true, 16 | }, 17 | }); 18 | 19 | return { 20 | paths: polls.map((poll) => ({ 21 | params: { 22 | slug: poll.id, 23 | }, 24 | })), 25 | fallback: true, 26 | }; 27 | } 28 | 29 | export async function getStaticProps({ params }: any) { 30 | const poll = await prisma.poll.findUnique({ 31 | where: { 32 | id: params.slug, 33 | }, 34 | }); 35 | const options = await prisma.option.findMany({ 36 | where: { 37 | pollID: params.slug, 38 | }, 39 | }); 40 | 41 | if (poll) { 42 | return { 43 | props: { 44 | poll: JSON.parse(JSON.stringify(poll)), 45 | options: JSON.parse(JSON.stringify(options)), 46 | }, 47 | revalidate: 2, 48 | }; 49 | } 50 | 51 | return { 52 | redirect: { 53 | destination: "/", 54 | permanent: false, 55 | }, 56 | }; 57 | } 58 | 59 | export default function Results({ poll, options }: Props) { 60 | const totalVotes = options?.reduce((acc, option) => { 61 | return acc + option.votes; 62 | }, 0); 63 | const [hasVoted, setHasVoted] = useState(false); 64 | const router = useRouter(); 65 | useEffect(() => { 66 | setHasVoted(checkForVote(poll?.id)); 67 | }, [poll?.id]); 68 | if (router.isFallback) { 69 | return ( 70 |
71 | Loading... 72 |
73 | ); 74 | } 75 | if (hasVoted === false) { 76 | return ( 77 |
78 |

79 | You haven{`'`}t voted for this poll yet! 80 |

81 |

router.push(`/poll/${poll?.id}`)} 84 | > 85 | vote for poll #{poll?.id} 86 |

87 |
88 | ); 89 | } 90 | return ( 91 |
92 |
93 | 94 | 95 | . . /{" "} 96 | 97 | poll / results / {poll?.id} 98 | 99 | 100 | 101 |
102 |
103 |

104 | {poll?.title}{" "} 105 | 106 | {poll?.visibility} 107 | 108 |

109 |
110 | {options?.map((option: Option) => { 111 | return ( 112 |
113 | 119 | 141 |
142 | ); 143 | })} 144 |
145 |

146 | 147 | created by 148 | {" "} 149 | {poll?.createdBy} 150 | {" | "} 151 | 152 | {poll?.upvotes === 1 ? "upvote" : "upvotes"} 153 | {" "} 154 | {poll?.upvotes} 155 | {" | "} 156 | 157 | created on 158 | {" "} 159 | {new Date(poll?.createdAt).toLocaleDateString()}{" "} 160 | {new Date(poll?.createdAt).toLocaleTimeString()} 161 |

162 |
163 | 164 |
165 | ); 166 | } 167 | -------------------------------------------------------------------------------- /pages/polls.tsx: -------------------------------------------------------------------------------- 1 | import Link from "next/link"; 2 | import { useEffect, useState } from "react"; 3 | import { PrismaClient } from "@prisma/client"; 4 | import { Poll } from "@prisma/client"; 5 | import PollCard from "../components/pollCard"; 6 | import SiteFooter from "../components/footer"; 7 | import { getTheme, setTheme } from "../lib/theme"; 8 | import { FiMoon, FiSun } from "react-icons/fi"; 9 | 10 | const prisma = new PrismaClient(); 11 | 12 | type Props = { 13 | pollsByUpvotes: Poll[]; 14 | pollsByDate: Poll[]; 15 | }; 16 | 17 | async function getPolls() { 18 | const pollsByUpvotes = await prisma.poll.findMany({ 19 | where: { 20 | visibility: "public", 21 | }, 22 | orderBy: { 23 | upvotes: "desc", 24 | }, 25 | }); 26 | const pollsByDate = await prisma.poll.findMany({ 27 | where: { 28 | visibility: "public", 29 | }, 30 | orderBy: { 31 | createdAt: "desc", 32 | }, 33 | }); 34 | return { 35 | pollsByUpvotes, 36 | pollsByDate, 37 | }; 38 | } 39 | 40 | export async function getServerSideProps() { 41 | const { pollsByUpvotes, pollsByDate } = await getPolls(); 42 | 43 | return { 44 | props: { 45 | pollsByUpvotes: JSON.parse(JSON.stringify(pollsByUpvotes)), 46 | pollsByDate: JSON.parse(JSON.stringify(pollsByDate)), 47 | }, 48 | }; 49 | } 50 | 51 | export default function Polls(props: Props) { 52 | const [sortType, setSortType] = useState("upvotes"); 53 | const [currentTheme, setCurrentTheme] = useState("light"); 54 | 55 | useEffect(() => { 56 | setTheme(getTheme()); 57 | setCurrentTheme(getTheme()); 58 | document.body.classList.add(getTheme()); 59 | }, [currentTheme]); 60 | 61 | function switchTheme() { 62 | if (currentTheme === "light") { 63 | setTheme("dark"); 64 | setCurrentTheme("dark"); 65 | document.body.classList.add("dark"); 66 | } else { 67 | setTheme("light"); 68 | setCurrentTheme("light"); 69 | document.body.classList.remove("dark"); 70 | } 71 | } 72 | 73 | const switchSortType = () => { 74 | console.log(sortType); 75 | if (sortType === "upvotes") { 76 | setSortType("date"); 77 | } else { 78 | setSortType("upvotes"); 79 | } 80 | }; 81 | 82 | return ( 83 |
84 | 94 |
95 | 96 | 97 | . . /{" "} 98 | 99 | polls 100 | 101 | 102 | 103 |
104 |
105 |

106 | Public Poll List 107 |

108 | 115 |
116 |
117 | {sortType === "date" 118 | ? props?.pollsByDate.map((poll: Poll) => { 119 | return ( 120 |
121 | 122 |
123 | ); 124 | }) 125 | : props?.pollsByUpvotes.map((poll: Poll) => { 126 | return ( 127 |
128 | 129 |
130 | ); 131 | })} 132 |
133 | 134 |
135 | ); 136 | } 137 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@prisma/client': ^4.0.0 5 | '@tailwindcss/forms': ^0.5.2 6 | '@types/node': ^18.0.1 7 | '@types/react': ^18.0.14 8 | '@types/react-dom': ^18.0.5 9 | autoprefixer: ^10.4.7 10 | axios: ^0.27.2 11 | eslint: 8.19.0 12 | eslint-config-next: 12.2.0 13 | formik: ^2.2.9 14 | nanoid: ^4.0.0 15 | next: 12.2.0 16 | nprogress: ^0.2.0 17 | postcss: ^8.4.14 18 | prisma: ^4.0.0 19 | react: 18.2.0 20 | react-dom: 18.2.0 21 | react-hot-toast: ^2.2.0 22 | react-icons: ^4.4.0 23 | tailwindcss: ^3.1.4 24 | typescript: ^4.7.4 25 | 26 | dependencies: 27 | '@prisma/client': 4.0.0_prisma@4.0.0 28 | axios: 0.27.2 29 | formik: 2.2.9_react@18.2.0 30 | nanoid: 4.0.0 31 | next: 12.2.0_biqbaboplfbrettd7655fr4n2y 32 | nprogress: 0.2.0 33 | react: 18.2.0 34 | react-dom: 18.2.0_react@18.2.0 35 | react-hot-toast: 2.2.0_biqbaboplfbrettd7655fr4n2y 36 | react-icons: 4.4.0_react@18.2.0 37 | 38 | devDependencies: 39 | '@tailwindcss/forms': 0.5.2_tailwindcss@3.1.4 40 | '@types/node': 18.0.1 41 | '@types/react': 18.0.14 42 | '@types/react-dom': 18.0.5 43 | autoprefixer: 10.4.7_postcss@8.4.14 44 | eslint: 8.19.0 45 | eslint-config-next: 12.2.0_4x5o4skxv6sl53vpwefgt23khm 46 | postcss: 8.4.14 47 | prisma: 4.0.0 48 | tailwindcss: 3.1.4 49 | typescript: 4.7.4 50 | 51 | packages: 52 | 53 | /@babel/runtime-corejs3/7.18.6: 54 | resolution: {integrity: sha512-cOu5wH2JFBgMjje+a+fz2JNIWU4GzYpl05oSob3UDvBEh6EuIn+TXFHMmBbhSb+k/4HMzgKCQfEEDArAWNF9Cw==} 55 | engines: {node: '>=6.9.0'} 56 | dependencies: 57 | core-js-pure: 3.23.3 58 | regenerator-runtime: 0.13.9 59 | dev: true 60 | 61 | /@babel/runtime/7.18.6: 62 | resolution: {integrity: sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==} 63 | engines: {node: '>=6.9.0'} 64 | dependencies: 65 | regenerator-runtime: 0.13.9 66 | dev: true 67 | 68 | /@eslint/eslintrc/1.3.0: 69 | resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} 70 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 71 | dependencies: 72 | ajv: 6.12.6 73 | debug: 4.3.4 74 | espree: 9.3.2 75 | globals: 13.15.0 76 | ignore: 5.2.0 77 | import-fresh: 3.3.0 78 | js-yaml: 4.1.0 79 | minimatch: 3.1.2 80 | strip-json-comments: 3.1.1 81 | transitivePeerDependencies: 82 | - supports-color 83 | dev: true 84 | 85 | /@humanwhocodes/config-array/0.9.5: 86 | resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} 87 | engines: {node: '>=10.10.0'} 88 | dependencies: 89 | '@humanwhocodes/object-schema': 1.2.1 90 | debug: 4.3.4 91 | minimatch: 3.1.2 92 | transitivePeerDependencies: 93 | - supports-color 94 | dev: true 95 | 96 | /@humanwhocodes/object-schema/1.2.1: 97 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 98 | dev: true 99 | 100 | /@next/env/12.2.0: 101 | resolution: {integrity: sha512-/FCkDpL/8SodJEXvx/DYNlOD5ijTtkozf4PPulYPtkPOJaMPpBSOkzmsta4fnrnbdH6eZjbwbiXFdr6gSQCV4w==} 102 | dev: false 103 | 104 | /@next/eslint-plugin-next/12.2.0: 105 | resolution: {integrity: sha512-nIj5xV/z3dOfeBnE7qFAjUQZAi4pTlIMuusRM6s/T6lOz8x7mjY5s1ZkTUBmcjPVCb2VIv3CrMH0WZL6xfjZZg==} 106 | dependencies: 107 | glob: 7.1.7 108 | dev: true 109 | 110 | /@next/swc-android-arm-eabi/12.2.0: 111 | resolution: {integrity: sha512-hbneH8DNRB2x0Nf5fPCYoL8a0osvdTCe4pvOc9Rv5CpDsoOlf8BWBs2OWpeP0U2BktGvIsuUhmISmdYYGyrvTw==} 112 | engines: {node: '>= 10'} 113 | cpu: [arm] 114 | os: [android] 115 | requiresBuild: true 116 | dev: false 117 | optional: true 118 | 119 | /@next/swc-android-arm64/12.2.0: 120 | resolution: {integrity: sha512-1eEk91JHjczcJomxJ8X0XaUeNcp5Lx1U2Ic7j15ouJ83oRX+3GIslOuabW2oPkSgXbHkThMClhirKpvG98kwZg==} 121 | engines: {node: '>= 10'} 122 | cpu: [arm64] 123 | os: [android] 124 | requiresBuild: true 125 | dev: false 126 | optional: true 127 | 128 | /@next/swc-darwin-arm64/12.2.0: 129 | resolution: {integrity: sha512-x5U5gJd7ZvrEtTFnBld9O2bUlX8opu7mIQUqRzj7KeWzBwPhrIzTTsQXAiNqsaMuaRPvyHBVW/5d/6g6+89Y8g==} 130 | engines: {node: '>= 10'} 131 | cpu: [arm64] 132 | os: [darwin] 133 | requiresBuild: true 134 | dev: false 135 | optional: true 136 | 137 | /@next/swc-darwin-x64/12.2.0: 138 | resolution: {integrity: sha512-iwMNFsrAPjfedjKDv9AXPAV16PWIomP3qw/FfPaxkDVRbUls7BNdofBLzkQmqxqWh93WrawLwaqyXpJuAaiwJA==} 139 | engines: {node: '>= 10'} 140 | cpu: [x64] 141 | os: [darwin] 142 | requiresBuild: true 143 | dev: false 144 | optional: true 145 | 146 | /@next/swc-freebsd-x64/12.2.0: 147 | resolution: {integrity: sha512-gRiAw8g3Akf6niTDLEm1Emfa7jXDjvaAj/crDO8hKASKA4Y1fS4kbi/tyWw5VtoFI4mUzRmCPmZ8eL0tBSG58A==} 148 | engines: {node: '>= 10'} 149 | cpu: [x64] 150 | os: [freebsd] 151 | requiresBuild: true 152 | dev: false 153 | optional: true 154 | 155 | /@next/swc-linux-arm-gnueabihf/12.2.0: 156 | resolution: {integrity: sha512-/TJZkxaIpeEwnXh6A40trgwd40C5+LJroLUOEQwMOJdavLl62PjCA6dGl1pgooWLCIb5YdBQ0EG4ylzvLwS2+Q==} 157 | engines: {node: '>= 10'} 158 | cpu: [arm] 159 | os: [linux] 160 | requiresBuild: true 161 | dev: false 162 | optional: true 163 | 164 | /@next/swc-linux-arm64-gnu/12.2.0: 165 | resolution: {integrity: sha512-++WAB4ElXCSOKG9H8r4ENF8EaV+w0QkrpjehmryFkQXmt5juVXz+nKDVlCRMwJU7A1O0Mie82XyEoOrf6Np1pA==} 166 | engines: {node: '>= 10'} 167 | cpu: [arm64] 168 | os: [linux] 169 | requiresBuild: true 170 | dev: false 171 | optional: true 172 | 173 | /@next/swc-linux-arm64-musl/12.2.0: 174 | resolution: {integrity: sha512-XrqkHi/VglEn5zs2CYK6ofJGQySrd+Lr4YdmfJ7IhsCnMKkQY1ma9Hv5THwhZVof3e+6oFHrQ9bWrw9K4WTjFA==} 175 | engines: {node: '>= 10'} 176 | cpu: [arm64] 177 | os: [linux] 178 | requiresBuild: true 179 | dev: false 180 | optional: true 181 | 182 | /@next/swc-linux-x64-gnu/12.2.0: 183 | resolution: {integrity: sha512-MyhHbAKVjpn065WzRbqpLu2krj4kHLi6RITQdD1ee+uxq9r2yg5Qe02l24NxKW+1/lkmpusl4Y5Lks7rBiJn4w==} 184 | engines: {node: '>= 10'} 185 | cpu: [x64] 186 | os: [linux] 187 | requiresBuild: true 188 | dev: false 189 | optional: true 190 | 191 | /@next/swc-linux-x64-musl/12.2.0: 192 | resolution: {integrity: sha512-Tz1tJZ5egE0S/UqCd5V6ZPJsdSzv/8aa7FkwFmIJ9neLS8/00za+OY5pq470iZQbPrkTwpKzmfTTIPRVD5iqDg==} 193 | engines: {node: '>= 10'} 194 | cpu: [x64] 195 | os: [linux] 196 | requiresBuild: true 197 | dev: false 198 | optional: true 199 | 200 | /@next/swc-win32-arm64-msvc/12.2.0: 201 | resolution: {integrity: sha512-0iRO/CPMCdCYUzuH6wXLnsfJX1ykBX4emOOvH0qIgtiZM0nVYbF8lkEyY2ph4XcsurpinS+ziWuYCXVqrOSqiw==} 202 | engines: {node: '>= 10'} 203 | cpu: [arm64] 204 | os: [win32] 205 | requiresBuild: true 206 | dev: false 207 | optional: true 208 | 209 | /@next/swc-win32-ia32-msvc/12.2.0: 210 | resolution: {integrity: sha512-8A26RJVcJHwIKm8xo/qk2ePRquJ6WCI2keV2qOW/Qm+ZXrPXHMIWPYABae/nKN243YFBNyPiHytjX37VrcpUhg==} 211 | engines: {node: '>= 10'} 212 | cpu: [ia32] 213 | os: [win32] 214 | requiresBuild: true 215 | dev: false 216 | optional: true 217 | 218 | /@next/swc-win32-x64-msvc/12.2.0: 219 | resolution: {integrity: sha512-OI14ozFLThEV3ey6jE47zrzSTV/6eIMsvbwozo+XfdWqOPwQ7X00YkRx4GVMKMC0rM44oGS2gmwMKYpe4EblnA==} 220 | engines: {node: '>= 10'} 221 | cpu: [x64] 222 | os: [win32] 223 | requiresBuild: true 224 | dev: false 225 | optional: true 226 | 227 | /@nodelib/fs.scandir/2.1.5: 228 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 229 | engines: {node: '>= 8'} 230 | dependencies: 231 | '@nodelib/fs.stat': 2.0.5 232 | run-parallel: 1.2.0 233 | dev: true 234 | 235 | /@nodelib/fs.stat/2.0.5: 236 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 237 | engines: {node: '>= 8'} 238 | dev: true 239 | 240 | /@nodelib/fs.walk/1.2.8: 241 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 242 | engines: {node: '>= 8'} 243 | dependencies: 244 | '@nodelib/fs.scandir': 2.1.5 245 | fastq: 1.13.0 246 | dev: true 247 | 248 | /@prisma/client/4.0.0_prisma@4.0.0: 249 | resolution: {integrity: sha512-g1h2OGoRo7anBVQ9Cw3gsbjwPtvf7i0pkGxKeZICtwkvE5CZXW+xZF4FZdmrViYkKaAShbISL0teNpu9ecpf4g==} 250 | engines: {node: '>=14.17'} 251 | requiresBuild: true 252 | peerDependencies: 253 | prisma: '*' 254 | peerDependenciesMeta: 255 | prisma: 256 | optional: true 257 | dependencies: 258 | '@prisma/engines-version': 3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11 259 | prisma: 4.0.0 260 | dev: false 261 | 262 | /@prisma/engines-version/3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11: 263 | resolution: {integrity: sha512-PiZhdD624SrYEjyLboI0X7OugNbxUzDJx9v/6ldTKuqNDVUCmRH/Z00XwDi/dgM4FlqOSO+YiUsSiSKjxxG8cw==} 264 | dev: false 265 | 266 | /@prisma/engines/3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11: 267 | resolution: {integrity: sha512-u/rG4lDHALolWBLr3yebZ+N2qImp3SDMcu7bHNJuRDaYvYEXy/MqfNRNEgd9GoPsXL3gofYf0VzJf2AmCG3YVw==} 268 | requiresBuild: true 269 | 270 | /@rushstack/eslint-patch/1.1.4: 271 | resolution: {integrity: sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==} 272 | dev: true 273 | 274 | /@swc/helpers/0.4.2: 275 | resolution: {integrity: sha512-556Az0VX7WR6UdoTn4htt/l3zPQ7bsQWK+HqdG4swV7beUCxo/BqmvbOpUkTIm/9ih86LIf1qsUnywNL3obGHw==} 276 | dependencies: 277 | tslib: 2.4.0 278 | dev: false 279 | 280 | /@tailwindcss/forms/0.5.2_tailwindcss@3.1.4: 281 | resolution: {integrity: sha512-pSrFeJB6Bg1Mrg9CdQW3+hqZXAKsBrSG9MAfFLKy1pVA4Mb4W7C0k7mEhlmS2Dfo/otxrQOET7NJiJ9RrS563w==} 282 | peerDependencies: 283 | tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' 284 | dependencies: 285 | mini-svg-data-uri: 1.4.4 286 | tailwindcss: 3.1.4 287 | dev: true 288 | 289 | /@types/json5/0.0.29: 290 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 291 | dev: true 292 | 293 | /@types/node/18.0.1: 294 | resolution: {integrity: sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg==} 295 | dev: true 296 | 297 | /@types/prop-types/15.7.5: 298 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 299 | dev: true 300 | 301 | /@types/react-dom/18.0.5: 302 | resolution: {integrity: sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA==} 303 | dependencies: 304 | '@types/react': 18.0.14 305 | dev: true 306 | 307 | /@types/react/18.0.14: 308 | resolution: {integrity: sha512-x4gGuASSiWmo0xjDLpm5mPb52syZHJx02VKbqUKdLmKtAwIh63XClGsiTI1K6DO5q7ox4xAsQrU+Gl3+gGXF9Q==} 309 | dependencies: 310 | '@types/prop-types': 15.7.5 311 | '@types/scheduler': 0.16.2 312 | csstype: 3.1.0 313 | dev: true 314 | 315 | /@types/scheduler/0.16.2: 316 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 317 | dev: true 318 | 319 | /@typescript-eslint/parser/5.30.3_4x5o4skxv6sl53vpwefgt23khm: 320 | resolution: {integrity: sha512-ddwGEPC3E49DduAUC8UThQafHRE5uc1NE8jdOgl+w8/NrYF50MJQNeD3u4JZrqAXdY9rJz0CdQ9HpNME20CzkA==} 321 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 322 | peerDependencies: 323 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 324 | typescript: '*' 325 | peerDependenciesMeta: 326 | typescript: 327 | optional: true 328 | dependencies: 329 | '@typescript-eslint/scope-manager': 5.30.3 330 | '@typescript-eslint/types': 5.30.3 331 | '@typescript-eslint/typescript-estree': 5.30.3_typescript@4.7.4 332 | debug: 4.3.4 333 | eslint: 8.19.0 334 | typescript: 4.7.4 335 | transitivePeerDependencies: 336 | - supports-color 337 | dev: true 338 | 339 | /@typescript-eslint/scope-manager/5.30.3: 340 | resolution: {integrity: sha512-yVJIIUXeo/vv6Alj6lKBvsqnRs5hcxUpN3Dg3aD9Zv6r7p6Nn106jJcr5rnpRHAReEb/aMI2RWrt3JmL17eCVA==} 341 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 342 | dependencies: 343 | '@typescript-eslint/types': 5.30.3 344 | '@typescript-eslint/visitor-keys': 5.30.3 345 | dev: true 346 | 347 | /@typescript-eslint/types/5.30.3: 348 | resolution: {integrity: sha512-vshU3pjSTgBPNgfd55JLYngHkXuwQP68fxYFUAg1Uq+JrR3xG/XjvL9Dmv28CpOERtqwkaR4QQ3mD0NLZcE2Xw==} 349 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 350 | dev: true 351 | 352 | /@typescript-eslint/typescript-estree/5.30.3_typescript@4.7.4: 353 | resolution: {integrity: sha512-jqVh5N9AJx6+7yRgoA+ZelAFrHezgI9pzI9giv7s84DDOmtpFwTgURcpICDHyz9x6vAeOu91iACZ4dBTVfzIyA==} 354 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 355 | peerDependencies: 356 | typescript: '*' 357 | peerDependenciesMeta: 358 | typescript: 359 | optional: true 360 | dependencies: 361 | '@typescript-eslint/types': 5.30.3 362 | '@typescript-eslint/visitor-keys': 5.30.3 363 | debug: 4.3.4 364 | globby: 11.1.0 365 | is-glob: 4.0.3 366 | semver: 7.3.7 367 | tsutils: 3.21.0_typescript@4.7.4 368 | typescript: 4.7.4 369 | transitivePeerDependencies: 370 | - supports-color 371 | dev: true 372 | 373 | /@typescript-eslint/visitor-keys/5.30.3: 374 | resolution: {integrity: sha512-ep2xtHOhnSRt6fDP9DSSxrA/FqZhdMF7/Y9fYsxrKss2uWJMbzJyBJ/We1fKc786BJ10pHwrzUlhvpz8i7XzBg==} 375 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 376 | dependencies: 377 | '@typescript-eslint/types': 5.30.3 378 | eslint-visitor-keys: 3.3.0 379 | dev: true 380 | 381 | /acorn-jsx/5.3.2_acorn@8.7.1: 382 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 383 | peerDependencies: 384 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 385 | dependencies: 386 | acorn: 8.7.1 387 | dev: true 388 | 389 | /acorn-node/1.8.2: 390 | resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} 391 | dependencies: 392 | acorn: 7.4.1 393 | acorn-walk: 7.2.0 394 | xtend: 4.0.2 395 | dev: true 396 | 397 | /acorn-walk/7.2.0: 398 | resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} 399 | engines: {node: '>=0.4.0'} 400 | dev: true 401 | 402 | /acorn/7.4.1: 403 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 404 | engines: {node: '>=0.4.0'} 405 | hasBin: true 406 | dev: true 407 | 408 | /acorn/8.7.1: 409 | resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} 410 | engines: {node: '>=0.4.0'} 411 | hasBin: true 412 | dev: true 413 | 414 | /ajv/6.12.6: 415 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 416 | dependencies: 417 | fast-deep-equal: 3.1.3 418 | fast-json-stable-stringify: 2.1.0 419 | json-schema-traverse: 0.4.1 420 | uri-js: 4.4.1 421 | dev: true 422 | 423 | /ansi-regex/5.0.1: 424 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 425 | engines: {node: '>=8'} 426 | dev: true 427 | 428 | /ansi-styles/4.3.0: 429 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 430 | engines: {node: '>=8'} 431 | dependencies: 432 | color-convert: 2.0.1 433 | dev: true 434 | 435 | /anymatch/3.1.2: 436 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 437 | engines: {node: '>= 8'} 438 | dependencies: 439 | normalize-path: 3.0.0 440 | picomatch: 2.3.1 441 | dev: true 442 | 443 | /arg/5.0.2: 444 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 445 | dev: true 446 | 447 | /argparse/2.0.1: 448 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 449 | dev: true 450 | 451 | /aria-query/4.2.2: 452 | resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} 453 | engines: {node: '>=6.0'} 454 | dependencies: 455 | '@babel/runtime': 7.18.6 456 | '@babel/runtime-corejs3': 7.18.6 457 | dev: true 458 | 459 | /array-includes/3.1.5: 460 | resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} 461 | engines: {node: '>= 0.4'} 462 | dependencies: 463 | call-bind: 1.0.2 464 | define-properties: 1.1.4 465 | es-abstract: 1.20.1 466 | get-intrinsic: 1.1.2 467 | is-string: 1.0.7 468 | dev: true 469 | 470 | /array-union/2.1.0: 471 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 472 | engines: {node: '>=8'} 473 | dev: true 474 | 475 | /array.prototype.flat/1.3.0: 476 | resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} 477 | engines: {node: '>= 0.4'} 478 | dependencies: 479 | call-bind: 1.0.2 480 | define-properties: 1.1.4 481 | es-abstract: 1.20.1 482 | es-shim-unscopables: 1.0.0 483 | dev: true 484 | 485 | /array.prototype.flatmap/1.3.0: 486 | resolution: {integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==} 487 | engines: {node: '>= 0.4'} 488 | dependencies: 489 | call-bind: 1.0.2 490 | define-properties: 1.1.4 491 | es-abstract: 1.20.1 492 | es-shim-unscopables: 1.0.0 493 | dev: true 494 | 495 | /ast-types-flow/0.0.7: 496 | resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} 497 | dev: true 498 | 499 | /asynckit/0.4.0: 500 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 501 | dev: false 502 | 503 | /autoprefixer/10.4.7_postcss@8.4.14: 504 | resolution: {integrity: sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==} 505 | engines: {node: ^10 || ^12 || >=14} 506 | hasBin: true 507 | peerDependencies: 508 | postcss: ^8.1.0 509 | dependencies: 510 | browserslist: 4.21.1 511 | caniuse-lite: 1.0.30001361 512 | fraction.js: 4.2.0 513 | normalize-range: 0.1.2 514 | picocolors: 1.0.0 515 | postcss: 8.4.14 516 | postcss-value-parser: 4.2.0 517 | dev: true 518 | 519 | /axe-core/4.4.2: 520 | resolution: {integrity: sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA==} 521 | engines: {node: '>=12'} 522 | dev: true 523 | 524 | /axios/0.27.2: 525 | resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} 526 | dependencies: 527 | follow-redirects: 1.15.1 528 | form-data: 4.0.0 529 | transitivePeerDependencies: 530 | - debug 531 | dev: false 532 | 533 | /axobject-query/2.2.0: 534 | resolution: {integrity: sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==} 535 | dev: true 536 | 537 | /balanced-match/1.0.2: 538 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 539 | dev: true 540 | 541 | /binary-extensions/2.2.0: 542 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 543 | engines: {node: '>=8'} 544 | dev: true 545 | 546 | /brace-expansion/1.1.11: 547 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 548 | dependencies: 549 | balanced-match: 1.0.2 550 | concat-map: 0.0.1 551 | dev: true 552 | 553 | /braces/3.0.2: 554 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 555 | engines: {node: '>=8'} 556 | dependencies: 557 | fill-range: 7.0.1 558 | dev: true 559 | 560 | /browserslist/4.21.1: 561 | resolution: {integrity: sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==} 562 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 563 | hasBin: true 564 | dependencies: 565 | caniuse-lite: 1.0.30001361 566 | electron-to-chromium: 1.4.177 567 | node-releases: 2.0.5 568 | update-browserslist-db: 1.0.4_browserslist@4.21.1 569 | dev: true 570 | 571 | /call-bind/1.0.2: 572 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 573 | dependencies: 574 | function-bind: 1.1.1 575 | get-intrinsic: 1.1.2 576 | dev: true 577 | 578 | /callsites/3.1.0: 579 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 580 | engines: {node: '>=6'} 581 | dev: true 582 | 583 | /camelcase-css/2.0.1: 584 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 585 | engines: {node: '>= 6'} 586 | dev: true 587 | 588 | /caniuse-lite/1.0.30001361: 589 | resolution: {integrity: sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ==} 590 | 591 | /chalk/4.1.2: 592 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 593 | engines: {node: '>=10'} 594 | dependencies: 595 | ansi-styles: 4.3.0 596 | supports-color: 7.2.0 597 | dev: true 598 | 599 | /chokidar/3.5.3: 600 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 601 | engines: {node: '>= 8.10.0'} 602 | dependencies: 603 | anymatch: 3.1.2 604 | braces: 3.0.2 605 | glob-parent: 5.1.2 606 | is-binary-path: 2.1.0 607 | is-glob: 4.0.3 608 | normalize-path: 3.0.0 609 | readdirp: 3.6.0 610 | optionalDependencies: 611 | fsevents: 2.3.2 612 | dev: true 613 | 614 | /color-convert/2.0.1: 615 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 616 | engines: {node: '>=7.0.0'} 617 | dependencies: 618 | color-name: 1.1.4 619 | dev: true 620 | 621 | /color-name/1.1.4: 622 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 623 | dev: true 624 | 625 | /combined-stream/1.0.8: 626 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 627 | engines: {node: '>= 0.8'} 628 | dependencies: 629 | delayed-stream: 1.0.0 630 | dev: false 631 | 632 | /concat-map/0.0.1: 633 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 634 | dev: true 635 | 636 | /core-js-pure/3.23.3: 637 | resolution: {integrity: sha512-XpoouuqIj4P+GWtdyV8ZO3/u4KftkeDVMfvp+308eGMhCrA3lVDSmAxO0c6GGOcmgVlaKDrgWVMo49h2ab/TDA==} 638 | requiresBuild: true 639 | dev: true 640 | 641 | /cross-spawn/7.0.3: 642 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 643 | engines: {node: '>= 8'} 644 | dependencies: 645 | path-key: 3.1.1 646 | shebang-command: 2.0.0 647 | which: 2.0.2 648 | dev: true 649 | 650 | /cssesc/3.0.0: 651 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 652 | engines: {node: '>=4'} 653 | hasBin: true 654 | dev: true 655 | 656 | /csstype/3.1.0: 657 | resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} 658 | dev: true 659 | 660 | /damerau-levenshtein/1.0.8: 661 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 662 | dev: true 663 | 664 | /debug/2.6.9: 665 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 666 | peerDependencies: 667 | supports-color: '*' 668 | peerDependenciesMeta: 669 | supports-color: 670 | optional: true 671 | dependencies: 672 | ms: 2.0.0 673 | dev: true 674 | 675 | /debug/3.2.7: 676 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 677 | peerDependencies: 678 | supports-color: '*' 679 | peerDependenciesMeta: 680 | supports-color: 681 | optional: true 682 | dependencies: 683 | ms: 2.1.3 684 | dev: true 685 | 686 | /debug/4.3.4: 687 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 688 | engines: {node: '>=6.0'} 689 | peerDependencies: 690 | supports-color: '*' 691 | peerDependenciesMeta: 692 | supports-color: 693 | optional: true 694 | dependencies: 695 | ms: 2.1.2 696 | dev: true 697 | 698 | /deep-is/0.1.4: 699 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 700 | dev: true 701 | 702 | /deepmerge/2.2.1: 703 | resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} 704 | engines: {node: '>=0.10.0'} 705 | dev: false 706 | 707 | /define-properties/1.1.4: 708 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 709 | engines: {node: '>= 0.4'} 710 | dependencies: 711 | has-property-descriptors: 1.0.0 712 | object-keys: 1.1.1 713 | dev: true 714 | 715 | /defined/1.0.0: 716 | resolution: {integrity: sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==} 717 | dev: true 718 | 719 | /delayed-stream/1.0.0: 720 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 721 | engines: {node: '>=0.4.0'} 722 | dev: false 723 | 724 | /detective/5.2.1: 725 | resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==} 726 | engines: {node: '>=0.8.0'} 727 | hasBin: true 728 | dependencies: 729 | acorn-node: 1.8.2 730 | defined: 1.0.0 731 | minimist: 1.2.6 732 | dev: true 733 | 734 | /didyoumean/1.2.2: 735 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 736 | dev: true 737 | 738 | /dir-glob/3.0.1: 739 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 740 | engines: {node: '>=8'} 741 | dependencies: 742 | path-type: 4.0.0 743 | dev: true 744 | 745 | /dlv/1.1.3: 746 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 747 | dev: true 748 | 749 | /doctrine/2.1.0: 750 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 751 | engines: {node: '>=0.10.0'} 752 | dependencies: 753 | esutils: 2.0.3 754 | dev: true 755 | 756 | /doctrine/3.0.0: 757 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 758 | engines: {node: '>=6.0.0'} 759 | dependencies: 760 | esutils: 2.0.3 761 | dev: true 762 | 763 | /electron-to-chromium/1.4.177: 764 | resolution: {integrity: sha512-FYPir3NSBEGexSZUEeht81oVhHfLFl6mhUKSkjHN/iB/TwEIt/WHQrqVGfTLN5gQxwJCQkIJBe05eOXjI7omgg==} 765 | dev: true 766 | 767 | /emoji-regex/9.2.2: 768 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 769 | dev: true 770 | 771 | /es-abstract/1.20.1: 772 | resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} 773 | engines: {node: '>= 0.4'} 774 | dependencies: 775 | call-bind: 1.0.2 776 | es-to-primitive: 1.2.1 777 | function-bind: 1.1.1 778 | function.prototype.name: 1.1.5 779 | get-intrinsic: 1.1.2 780 | get-symbol-description: 1.0.0 781 | has: 1.0.3 782 | has-property-descriptors: 1.0.0 783 | has-symbols: 1.0.3 784 | internal-slot: 1.0.3 785 | is-callable: 1.2.4 786 | is-negative-zero: 2.0.2 787 | is-regex: 1.1.4 788 | is-shared-array-buffer: 1.0.2 789 | is-string: 1.0.7 790 | is-weakref: 1.0.2 791 | object-inspect: 1.12.2 792 | object-keys: 1.1.1 793 | object.assign: 4.1.2 794 | regexp.prototype.flags: 1.4.3 795 | string.prototype.trimend: 1.0.5 796 | string.prototype.trimstart: 1.0.5 797 | unbox-primitive: 1.0.2 798 | dev: true 799 | 800 | /es-shim-unscopables/1.0.0: 801 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 802 | dependencies: 803 | has: 1.0.3 804 | dev: true 805 | 806 | /es-to-primitive/1.2.1: 807 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 808 | engines: {node: '>= 0.4'} 809 | dependencies: 810 | is-callable: 1.2.4 811 | is-date-object: 1.0.5 812 | is-symbol: 1.0.4 813 | dev: true 814 | 815 | /escalade/3.1.1: 816 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 817 | engines: {node: '>=6'} 818 | dev: true 819 | 820 | /escape-string-regexp/4.0.0: 821 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 822 | engines: {node: '>=10'} 823 | dev: true 824 | 825 | /eslint-config-next/12.2.0_4x5o4skxv6sl53vpwefgt23khm: 826 | resolution: {integrity: sha512-QWzNegadFXjQ0h3hixnLacRM9Kot85vQefyNsA8IeOnERZMz0Gvays1W6DMCjSxJbnCwuWaMXj9DCpar5IahRA==} 827 | peerDependencies: 828 | eslint: ^7.23.0 || ^8.0.0 829 | typescript: '>=3.3.1' 830 | peerDependenciesMeta: 831 | typescript: 832 | optional: true 833 | dependencies: 834 | '@next/eslint-plugin-next': 12.2.0 835 | '@rushstack/eslint-patch': 1.1.4 836 | '@typescript-eslint/parser': 5.30.3_4x5o4skxv6sl53vpwefgt23khm 837 | eslint: 8.19.0 838 | eslint-import-resolver-node: 0.3.6 839 | eslint-import-resolver-typescript: 2.7.1_q2xwze32dd33a2fc2qubwr4ie4 840 | eslint-plugin-import: 2.26.0_lpr6b4f57sykalm7s3cchxuzae 841 | eslint-plugin-jsx-a11y: 6.6.0_eslint@8.19.0 842 | eslint-plugin-react: 7.30.1_eslint@8.19.0 843 | eslint-plugin-react-hooks: 4.6.0_eslint@8.19.0 844 | typescript: 4.7.4 845 | transitivePeerDependencies: 846 | - eslint-import-resolver-webpack 847 | - supports-color 848 | dev: true 849 | 850 | /eslint-import-resolver-node/0.3.6: 851 | resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} 852 | dependencies: 853 | debug: 3.2.7 854 | resolve: 1.22.1 855 | transitivePeerDependencies: 856 | - supports-color 857 | dev: true 858 | 859 | /eslint-import-resolver-typescript/2.7.1_q2xwze32dd33a2fc2qubwr4ie4: 860 | resolution: {integrity: sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==} 861 | engines: {node: '>=4'} 862 | peerDependencies: 863 | eslint: '*' 864 | eslint-plugin-import: '*' 865 | dependencies: 866 | debug: 4.3.4 867 | eslint: 8.19.0 868 | eslint-plugin-import: 2.26.0_lpr6b4f57sykalm7s3cchxuzae 869 | glob: 7.2.3 870 | is-glob: 4.0.3 871 | resolve: 1.22.1 872 | tsconfig-paths: 3.14.1 873 | transitivePeerDependencies: 874 | - supports-color 875 | dev: true 876 | 877 | /eslint-module-utils/2.7.3_rtb5dxpn5xly2nzth5ytfc22ia: 878 | resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} 879 | engines: {node: '>=4'} 880 | peerDependencies: 881 | '@typescript-eslint/parser': '*' 882 | eslint-import-resolver-node: '*' 883 | eslint-import-resolver-typescript: '*' 884 | eslint-import-resolver-webpack: '*' 885 | peerDependenciesMeta: 886 | '@typescript-eslint/parser': 887 | optional: true 888 | eslint-import-resolver-node: 889 | optional: true 890 | eslint-import-resolver-typescript: 891 | optional: true 892 | eslint-import-resolver-webpack: 893 | optional: true 894 | dependencies: 895 | '@typescript-eslint/parser': 5.30.3_4x5o4skxv6sl53vpwefgt23khm 896 | debug: 3.2.7 897 | eslint-import-resolver-node: 0.3.6 898 | eslint-import-resolver-typescript: 2.7.1_q2xwze32dd33a2fc2qubwr4ie4 899 | find-up: 2.1.0 900 | transitivePeerDependencies: 901 | - supports-color 902 | dev: true 903 | 904 | /eslint-plugin-import/2.26.0_lpr6b4f57sykalm7s3cchxuzae: 905 | resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} 906 | engines: {node: '>=4'} 907 | peerDependencies: 908 | '@typescript-eslint/parser': '*' 909 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 910 | peerDependenciesMeta: 911 | '@typescript-eslint/parser': 912 | optional: true 913 | dependencies: 914 | '@typescript-eslint/parser': 5.30.3_4x5o4skxv6sl53vpwefgt23khm 915 | array-includes: 3.1.5 916 | array.prototype.flat: 1.3.0 917 | debug: 2.6.9 918 | doctrine: 2.1.0 919 | eslint: 8.19.0 920 | eslint-import-resolver-node: 0.3.6 921 | eslint-module-utils: 2.7.3_rtb5dxpn5xly2nzth5ytfc22ia 922 | has: 1.0.3 923 | is-core-module: 2.9.0 924 | is-glob: 4.0.3 925 | minimatch: 3.1.2 926 | object.values: 1.1.5 927 | resolve: 1.22.1 928 | tsconfig-paths: 3.14.1 929 | transitivePeerDependencies: 930 | - eslint-import-resolver-typescript 931 | - eslint-import-resolver-webpack 932 | - supports-color 933 | dev: true 934 | 935 | /eslint-plugin-jsx-a11y/6.6.0_eslint@8.19.0: 936 | resolution: {integrity: sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw==} 937 | engines: {node: '>=4.0'} 938 | peerDependencies: 939 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 940 | dependencies: 941 | '@babel/runtime': 7.18.6 942 | aria-query: 4.2.2 943 | array-includes: 3.1.5 944 | ast-types-flow: 0.0.7 945 | axe-core: 4.4.2 946 | axobject-query: 2.2.0 947 | damerau-levenshtein: 1.0.8 948 | emoji-regex: 9.2.2 949 | eslint: 8.19.0 950 | has: 1.0.3 951 | jsx-ast-utils: 3.3.1 952 | language-tags: 1.0.5 953 | minimatch: 3.1.2 954 | semver: 6.3.0 955 | dev: true 956 | 957 | /eslint-plugin-react-hooks/4.6.0_eslint@8.19.0: 958 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 959 | engines: {node: '>=10'} 960 | peerDependencies: 961 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 962 | dependencies: 963 | eslint: 8.19.0 964 | dev: true 965 | 966 | /eslint-plugin-react/7.30.1_eslint@8.19.0: 967 | resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==} 968 | engines: {node: '>=4'} 969 | peerDependencies: 970 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 971 | dependencies: 972 | array-includes: 3.1.5 973 | array.prototype.flatmap: 1.3.0 974 | doctrine: 2.1.0 975 | eslint: 8.19.0 976 | estraverse: 5.3.0 977 | jsx-ast-utils: 3.3.1 978 | minimatch: 3.1.2 979 | object.entries: 1.1.5 980 | object.fromentries: 2.0.5 981 | object.hasown: 1.1.1 982 | object.values: 1.1.5 983 | prop-types: 15.8.1 984 | resolve: 2.0.0-next.4 985 | semver: 6.3.0 986 | string.prototype.matchall: 4.0.7 987 | dev: true 988 | 989 | /eslint-scope/7.1.1: 990 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 991 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 992 | dependencies: 993 | esrecurse: 4.3.0 994 | estraverse: 5.3.0 995 | dev: true 996 | 997 | /eslint-utils/3.0.0_eslint@8.19.0: 998 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 999 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1000 | peerDependencies: 1001 | eslint: '>=5' 1002 | dependencies: 1003 | eslint: 8.19.0 1004 | eslint-visitor-keys: 2.1.0 1005 | dev: true 1006 | 1007 | /eslint-visitor-keys/2.1.0: 1008 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1009 | engines: {node: '>=10'} 1010 | dev: true 1011 | 1012 | /eslint-visitor-keys/3.3.0: 1013 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1014 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1015 | dev: true 1016 | 1017 | /eslint/8.19.0: 1018 | resolution: {integrity: sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==} 1019 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1020 | hasBin: true 1021 | dependencies: 1022 | '@eslint/eslintrc': 1.3.0 1023 | '@humanwhocodes/config-array': 0.9.5 1024 | ajv: 6.12.6 1025 | chalk: 4.1.2 1026 | cross-spawn: 7.0.3 1027 | debug: 4.3.4 1028 | doctrine: 3.0.0 1029 | escape-string-regexp: 4.0.0 1030 | eslint-scope: 7.1.1 1031 | eslint-utils: 3.0.0_eslint@8.19.0 1032 | eslint-visitor-keys: 3.3.0 1033 | espree: 9.3.2 1034 | esquery: 1.4.0 1035 | esutils: 2.0.3 1036 | fast-deep-equal: 3.1.3 1037 | file-entry-cache: 6.0.1 1038 | functional-red-black-tree: 1.0.1 1039 | glob-parent: 6.0.2 1040 | globals: 13.15.0 1041 | ignore: 5.2.0 1042 | import-fresh: 3.3.0 1043 | imurmurhash: 0.1.4 1044 | is-glob: 4.0.3 1045 | js-yaml: 4.1.0 1046 | json-stable-stringify-without-jsonify: 1.0.1 1047 | levn: 0.4.1 1048 | lodash.merge: 4.6.2 1049 | minimatch: 3.1.2 1050 | natural-compare: 1.4.0 1051 | optionator: 0.9.1 1052 | regexpp: 3.2.0 1053 | strip-ansi: 6.0.1 1054 | strip-json-comments: 3.1.1 1055 | text-table: 0.2.0 1056 | v8-compile-cache: 2.3.0 1057 | transitivePeerDependencies: 1058 | - supports-color 1059 | dev: true 1060 | 1061 | /espree/9.3.2: 1062 | resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} 1063 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1064 | dependencies: 1065 | acorn: 8.7.1 1066 | acorn-jsx: 5.3.2_acorn@8.7.1 1067 | eslint-visitor-keys: 3.3.0 1068 | dev: true 1069 | 1070 | /esquery/1.4.0: 1071 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1072 | engines: {node: '>=0.10'} 1073 | dependencies: 1074 | estraverse: 5.3.0 1075 | dev: true 1076 | 1077 | /esrecurse/4.3.0: 1078 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1079 | engines: {node: '>=4.0'} 1080 | dependencies: 1081 | estraverse: 5.3.0 1082 | dev: true 1083 | 1084 | /estraverse/5.3.0: 1085 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1086 | engines: {node: '>=4.0'} 1087 | dev: true 1088 | 1089 | /esutils/2.0.3: 1090 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1091 | engines: {node: '>=0.10.0'} 1092 | dev: true 1093 | 1094 | /fast-deep-equal/3.1.3: 1095 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1096 | dev: true 1097 | 1098 | /fast-glob/3.2.11: 1099 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 1100 | engines: {node: '>=8.6.0'} 1101 | dependencies: 1102 | '@nodelib/fs.stat': 2.0.5 1103 | '@nodelib/fs.walk': 1.2.8 1104 | glob-parent: 5.1.2 1105 | merge2: 1.4.1 1106 | micromatch: 4.0.5 1107 | dev: true 1108 | 1109 | /fast-json-stable-stringify/2.1.0: 1110 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1111 | dev: true 1112 | 1113 | /fast-levenshtein/2.0.6: 1114 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1115 | dev: true 1116 | 1117 | /fastq/1.13.0: 1118 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1119 | dependencies: 1120 | reusify: 1.0.4 1121 | dev: true 1122 | 1123 | /file-entry-cache/6.0.1: 1124 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1125 | engines: {node: ^10.12.0 || >=12.0.0} 1126 | dependencies: 1127 | flat-cache: 3.0.4 1128 | dev: true 1129 | 1130 | /fill-range/7.0.1: 1131 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1132 | engines: {node: '>=8'} 1133 | dependencies: 1134 | to-regex-range: 5.0.1 1135 | dev: true 1136 | 1137 | /find-up/2.1.0: 1138 | resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} 1139 | engines: {node: '>=4'} 1140 | dependencies: 1141 | locate-path: 2.0.0 1142 | dev: true 1143 | 1144 | /flat-cache/3.0.4: 1145 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1146 | engines: {node: ^10.12.0 || >=12.0.0} 1147 | dependencies: 1148 | flatted: 3.2.6 1149 | rimraf: 3.0.2 1150 | dev: true 1151 | 1152 | /flatted/3.2.6: 1153 | resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==} 1154 | dev: true 1155 | 1156 | /follow-redirects/1.15.1: 1157 | resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==} 1158 | engines: {node: '>=4.0'} 1159 | peerDependencies: 1160 | debug: '*' 1161 | peerDependenciesMeta: 1162 | debug: 1163 | optional: true 1164 | dev: false 1165 | 1166 | /form-data/4.0.0: 1167 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1168 | engines: {node: '>= 6'} 1169 | dependencies: 1170 | asynckit: 0.4.0 1171 | combined-stream: 1.0.8 1172 | mime-types: 2.1.35 1173 | dev: false 1174 | 1175 | /formik/2.2.9_react@18.2.0: 1176 | resolution: {integrity: sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==} 1177 | peerDependencies: 1178 | react: '>=16.8.0' 1179 | dependencies: 1180 | deepmerge: 2.2.1 1181 | hoist-non-react-statics: 3.3.2 1182 | lodash: 4.17.21 1183 | lodash-es: 4.17.21 1184 | react: 18.2.0 1185 | react-fast-compare: 2.0.4 1186 | tiny-warning: 1.0.3 1187 | tslib: 1.14.1 1188 | dev: false 1189 | 1190 | /fraction.js/4.2.0: 1191 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 1192 | dev: true 1193 | 1194 | /fs.realpath/1.0.0: 1195 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1196 | dev: true 1197 | 1198 | /fsevents/2.3.2: 1199 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1200 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1201 | os: [darwin] 1202 | requiresBuild: true 1203 | dev: true 1204 | optional: true 1205 | 1206 | /function-bind/1.1.1: 1207 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1208 | dev: true 1209 | 1210 | /function.prototype.name/1.1.5: 1211 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} 1212 | engines: {node: '>= 0.4'} 1213 | dependencies: 1214 | call-bind: 1.0.2 1215 | define-properties: 1.1.4 1216 | es-abstract: 1.20.1 1217 | functions-have-names: 1.2.3 1218 | dev: true 1219 | 1220 | /functional-red-black-tree/1.0.1: 1221 | resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} 1222 | dev: true 1223 | 1224 | /functions-have-names/1.2.3: 1225 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1226 | dev: true 1227 | 1228 | /get-intrinsic/1.1.2: 1229 | resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} 1230 | dependencies: 1231 | function-bind: 1.1.1 1232 | has: 1.0.3 1233 | has-symbols: 1.0.3 1234 | dev: true 1235 | 1236 | /get-symbol-description/1.0.0: 1237 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1238 | engines: {node: '>= 0.4'} 1239 | dependencies: 1240 | call-bind: 1.0.2 1241 | get-intrinsic: 1.1.2 1242 | dev: true 1243 | 1244 | /glob-parent/5.1.2: 1245 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1246 | engines: {node: '>= 6'} 1247 | dependencies: 1248 | is-glob: 4.0.3 1249 | dev: true 1250 | 1251 | /glob-parent/6.0.2: 1252 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1253 | engines: {node: '>=10.13.0'} 1254 | dependencies: 1255 | is-glob: 4.0.3 1256 | dev: true 1257 | 1258 | /glob/7.1.7: 1259 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1260 | dependencies: 1261 | fs.realpath: 1.0.0 1262 | inflight: 1.0.6 1263 | inherits: 2.0.4 1264 | minimatch: 3.1.2 1265 | once: 1.4.0 1266 | path-is-absolute: 1.0.1 1267 | dev: true 1268 | 1269 | /glob/7.2.3: 1270 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1271 | dependencies: 1272 | fs.realpath: 1.0.0 1273 | inflight: 1.0.6 1274 | inherits: 2.0.4 1275 | minimatch: 3.1.2 1276 | once: 1.4.0 1277 | path-is-absolute: 1.0.1 1278 | dev: true 1279 | 1280 | /globals/13.15.0: 1281 | resolution: {integrity: sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog==} 1282 | engines: {node: '>=8'} 1283 | dependencies: 1284 | type-fest: 0.20.2 1285 | dev: true 1286 | 1287 | /globby/11.1.0: 1288 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1289 | engines: {node: '>=10'} 1290 | dependencies: 1291 | array-union: 2.1.0 1292 | dir-glob: 3.0.1 1293 | fast-glob: 3.2.11 1294 | ignore: 5.2.0 1295 | merge2: 1.4.1 1296 | slash: 3.0.0 1297 | dev: true 1298 | 1299 | /goober/2.1.10: 1300 | resolution: {integrity: sha512-7PpuQMH10jaTWm33sQgBQvz45pHR8N4l3Cu3WMGEWmHShAcTuuP7I+5/DwKo39fwti5A80WAjvqgz6SSlgWmGA==} 1301 | peerDependencies: 1302 | csstype: ^3.0.10 1303 | dev: false 1304 | 1305 | /has-bigints/1.0.2: 1306 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1307 | dev: true 1308 | 1309 | /has-flag/4.0.0: 1310 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1311 | engines: {node: '>=8'} 1312 | dev: true 1313 | 1314 | /has-property-descriptors/1.0.0: 1315 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1316 | dependencies: 1317 | get-intrinsic: 1.1.2 1318 | dev: true 1319 | 1320 | /has-symbols/1.0.3: 1321 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1322 | engines: {node: '>= 0.4'} 1323 | dev: true 1324 | 1325 | /has-tostringtag/1.0.0: 1326 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1327 | engines: {node: '>= 0.4'} 1328 | dependencies: 1329 | has-symbols: 1.0.3 1330 | dev: true 1331 | 1332 | /has/1.0.3: 1333 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1334 | engines: {node: '>= 0.4.0'} 1335 | dependencies: 1336 | function-bind: 1.1.1 1337 | dev: true 1338 | 1339 | /hoist-non-react-statics/3.3.2: 1340 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} 1341 | dependencies: 1342 | react-is: 16.13.1 1343 | dev: false 1344 | 1345 | /ignore/5.2.0: 1346 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1347 | engines: {node: '>= 4'} 1348 | dev: true 1349 | 1350 | /import-fresh/3.3.0: 1351 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1352 | engines: {node: '>=6'} 1353 | dependencies: 1354 | parent-module: 1.0.1 1355 | resolve-from: 4.0.0 1356 | dev: true 1357 | 1358 | /imurmurhash/0.1.4: 1359 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1360 | engines: {node: '>=0.8.19'} 1361 | dev: true 1362 | 1363 | /inflight/1.0.6: 1364 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1365 | dependencies: 1366 | once: 1.4.0 1367 | wrappy: 1.0.2 1368 | dev: true 1369 | 1370 | /inherits/2.0.4: 1371 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1372 | dev: true 1373 | 1374 | /internal-slot/1.0.3: 1375 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 1376 | engines: {node: '>= 0.4'} 1377 | dependencies: 1378 | get-intrinsic: 1.1.2 1379 | has: 1.0.3 1380 | side-channel: 1.0.4 1381 | dev: true 1382 | 1383 | /is-bigint/1.0.4: 1384 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1385 | dependencies: 1386 | has-bigints: 1.0.2 1387 | dev: true 1388 | 1389 | /is-binary-path/2.1.0: 1390 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1391 | engines: {node: '>=8'} 1392 | dependencies: 1393 | binary-extensions: 2.2.0 1394 | dev: true 1395 | 1396 | /is-boolean-object/1.1.2: 1397 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1398 | engines: {node: '>= 0.4'} 1399 | dependencies: 1400 | call-bind: 1.0.2 1401 | has-tostringtag: 1.0.0 1402 | dev: true 1403 | 1404 | /is-callable/1.2.4: 1405 | resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} 1406 | engines: {node: '>= 0.4'} 1407 | dev: true 1408 | 1409 | /is-core-module/2.9.0: 1410 | resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} 1411 | dependencies: 1412 | has: 1.0.3 1413 | dev: true 1414 | 1415 | /is-date-object/1.0.5: 1416 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1417 | engines: {node: '>= 0.4'} 1418 | dependencies: 1419 | has-tostringtag: 1.0.0 1420 | dev: true 1421 | 1422 | /is-extglob/2.1.1: 1423 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1424 | engines: {node: '>=0.10.0'} 1425 | dev: true 1426 | 1427 | /is-glob/4.0.3: 1428 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1429 | engines: {node: '>=0.10.0'} 1430 | dependencies: 1431 | is-extglob: 2.1.1 1432 | dev: true 1433 | 1434 | /is-negative-zero/2.0.2: 1435 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1436 | engines: {node: '>= 0.4'} 1437 | dev: true 1438 | 1439 | /is-number-object/1.0.7: 1440 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1441 | engines: {node: '>= 0.4'} 1442 | dependencies: 1443 | has-tostringtag: 1.0.0 1444 | dev: true 1445 | 1446 | /is-number/7.0.0: 1447 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1448 | engines: {node: '>=0.12.0'} 1449 | dev: true 1450 | 1451 | /is-regex/1.1.4: 1452 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1453 | engines: {node: '>= 0.4'} 1454 | dependencies: 1455 | call-bind: 1.0.2 1456 | has-tostringtag: 1.0.0 1457 | dev: true 1458 | 1459 | /is-shared-array-buffer/1.0.2: 1460 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1461 | dependencies: 1462 | call-bind: 1.0.2 1463 | dev: true 1464 | 1465 | /is-string/1.0.7: 1466 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1467 | engines: {node: '>= 0.4'} 1468 | dependencies: 1469 | has-tostringtag: 1.0.0 1470 | dev: true 1471 | 1472 | /is-symbol/1.0.4: 1473 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1474 | engines: {node: '>= 0.4'} 1475 | dependencies: 1476 | has-symbols: 1.0.3 1477 | dev: true 1478 | 1479 | /is-weakref/1.0.2: 1480 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1481 | dependencies: 1482 | call-bind: 1.0.2 1483 | dev: true 1484 | 1485 | /isexe/2.0.0: 1486 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1487 | dev: true 1488 | 1489 | /js-tokens/4.0.0: 1490 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1491 | 1492 | /js-yaml/4.1.0: 1493 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1494 | hasBin: true 1495 | dependencies: 1496 | argparse: 2.0.1 1497 | dev: true 1498 | 1499 | /json-schema-traverse/0.4.1: 1500 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1501 | dev: true 1502 | 1503 | /json-stable-stringify-without-jsonify/1.0.1: 1504 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1505 | dev: true 1506 | 1507 | /json5/1.0.1: 1508 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 1509 | hasBin: true 1510 | dependencies: 1511 | minimist: 1.2.6 1512 | dev: true 1513 | 1514 | /jsx-ast-utils/3.3.1: 1515 | resolution: {integrity: sha512-pxrjmNpeRw5wwVeWyEAk7QJu2GnBO3uzPFmHCKJJFPKK2Cy0cWL23krGtLdnMmbIi6/FjlrQpPyfQI19ByPOhQ==} 1516 | engines: {node: '>=4.0'} 1517 | dependencies: 1518 | array-includes: 3.1.5 1519 | object.assign: 4.1.2 1520 | dev: true 1521 | 1522 | /language-subtag-registry/0.3.21: 1523 | resolution: {integrity: sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==} 1524 | dev: true 1525 | 1526 | /language-tags/1.0.5: 1527 | resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} 1528 | dependencies: 1529 | language-subtag-registry: 0.3.21 1530 | dev: true 1531 | 1532 | /levn/0.4.1: 1533 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1534 | engines: {node: '>= 0.8.0'} 1535 | dependencies: 1536 | prelude-ls: 1.2.1 1537 | type-check: 0.4.0 1538 | dev: true 1539 | 1540 | /lilconfig/2.0.5: 1541 | resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} 1542 | engines: {node: '>=10'} 1543 | dev: true 1544 | 1545 | /locate-path/2.0.0: 1546 | resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} 1547 | engines: {node: '>=4'} 1548 | dependencies: 1549 | p-locate: 2.0.0 1550 | path-exists: 3.0.0 1551 | dev: true 1552 | 1553 | /lodash-es/4.17.21: 1554 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 1555 | dev: false 1556 | 1557 | /lodash.merge/4.6.2: 1558 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1559 | dev: true 1560 | 1561 | /lodash/4.17.21: 1562 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1563 | dev: false 1564 | 1565 | /loose-envify/1.4.0: 1566 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1567 | hasBin: true 1568 | dependencies: 1569 | js-tokens: 4.0.0 1570 | 1571 | /lru-cache/6.0.0: 1572 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1573 | engines: {node: '>=10'} 1574 | dependencies: 1575 | yallist: 4.0.0 1576 | dev: true 1577 | 1578 | /merge2/1.4.1: 1579 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1580 | engines: {node: '>= 8'} 1581 | dev: true 1582 | 1583 | /micromatch/4.0.5: 1584 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1585 | engines: {node: '>=8.6'} 1586 | dependencies: 1587 | braces: 3.0.2 1588 | picomatch: 2.3.1 1589 | dev: true 1590 | 1591 | /mime-db/1.52.0: 1592 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1593 | engines: {node: '>= 0.6'} 1594 | dev: false 1595 | 1596 | /mime-types/2.1.35: 1597 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1598 | engines: {node: '>= 0.6'} 1599 | dependencies: 1600 | mime-db: 1.52.0 1601 | dev: false 1602 | 1603 | /mini-svg-data-uri/1.4.4: 1604 | resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} 1605 | hasBin: true 1606 | dev: true 1607 | 1608 | /minimatch/3.1.2: 1609 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1610 | dependencies: 1611 | brace-expansion: 1.1.11 1612 | dev: true 1613 | 1614 | /minimist/1.2.6: 1615 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 1616 | dev: true 1617 | 1618 | /ms/2.0.0: 1619 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1620 | dev: true 1621 | 1622 | /ms/2.1.2: 1623 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1624 | dev: true 1625 | 1626 | /ms/2.1.3: 1627 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1628 | dev: true 1629 | 1630 | /nanoid/3.3.4: 1631 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1632 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1633 | hasBin: true 1634 | 1635 | /nanoid/4.0.0: 1636 | resolution: {integrity: sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg==} 1637 | engines: {node: ^14 || ^16 || >=18} 1638 | hasBin: true 1639 | dev: false 1640 | 1641 | /natural-compare/1.4.0: 1642 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1643 | dev: true 1644 | 1645 | /next/12.2.0_biqbaboplfbrettd7655fr4n2y: 1646 | resolution: {integrity: sha512-B4j7D3SHYopLYx6/Ark0fenwIar9tEaZZFAaxmKjgcMMexhVJzB3jt7X+6wcdXPPMeUD6r09weUtnDpjox/vIA==} 1647 | engines: {node: '>=12.22.0'} 1648 | hasBin: true 1649 | peerDependencies: 1650 | fibers: '>= 3.1.0' 1651 | node-sass: ^6.0.0 || ^7.0.0 1652 | react: ^17.0.2 || ^18.0.0-0 1653 | react-dom: ^17.0.2 || ^18.0.0-0 1654 | sass: ^1.3.0 1655 | peerDependenciesMeta: 1656 | fibers: 1657 | optional: true 1658 | node-sass: 1659 | optional: true 1660 | sass: 1661 | optional: true 1662 | dependencies: 1663 | '@next/env': 12.2.0 1664 | '@swc/helpers': 0.4.2 1665 | caniuse-lite: 1.0.30001361 1666 | postcss: 8.4.5 1667 | react: 18.2.0 1668 | react-dom: 18.2.0_react@18.2.0 1669 | styled-jsx: 5.0.2_react@18.2.0 1670 | use-sync-external-store: 1.1.0_react@18.2.0 1671 | optionalDependencies: 1672 | '@next/swc-android-arm-eabi': 12.2.0 1673 | '@next/swc-android-arm64': 12.2.0 1674 | '@next/swc-darwin-arm64': 12.2.0 1675 | '@next/swc-darwin-x64': 12.2.0 1676 | '@next/swc-freebsd-x64': 12.2.0 1677 | '@next/swc-linux-arm-gnueabihf': 12.2.0 1678 | '@next/swc-linux-arm64-gnu': 12.2.0 1679 | '@next/swc-linux-arm64-musl': 12.2.0 1680 | '@next/swc-linux-x64-gnu': 12.2.0 1681 | '@next/swc-linux-x64-musl': 12.2.0 1682 | '@next/swc-win32-arm64-msvc': 12.2.0 1683 | '@next/swc-win32-ia32-msvc': 12.2.0 1684 | '@next/swc-win32-x64-msvc': 12.2.0 1685 | transitivePeerDependencies: 1686 | - '@babel/core' 1687 | - babel-plugin-macros 1688 | dev: false 1689 | 1690 | /node-releases/2.0.5: 1691 | resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} 1692 | dev: true 1693 | 1694 | /normalize-path/3.0.0: 1695 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1696 | engines: {node: '>=0.10.0'} 1697 | dev: true 1698 | 1699 | /normalize-range/0.1.2: 1700 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1701 | engines: {node: '>=0.10.0'} 1702 | dev: true 1703 | 1704 | /nprogress/0.2.0: 1705 | resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} 1706 | dev: false 1707 | 1708 | /object-assign/4.1.1: 1709 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1710 | engines: {node: '>=0.10.0'} 1711 | dev: true 1712 | 1713 | /object-hash/3.0.0: 1714 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1715 | engines: {node: '>= 6'} 1716 | dev: true 1717 | 1718 | /object-inspect/1.12.2: 1719 | resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} 1720 | dev: true 1721 | 1722 | /object-keys/1.1.1: 1723 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1724 | engines: {node: '>= 0.4'} 1725 | dev: true 1726 | 1727 | /object.assign/4.1.2: 1728 | resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} 1729 | engines: {node: '>= 0.4'} 1730 | dependencies: 1731 | call-bind: 1.0.2 1732 | define-properties: 1.1.4 1733 | has-symbols: 1.0.3 1734 | object-keys: 1.1.1 1735 | dev: true 1736 | 1737 | /object.entries/1.1.5: 1738 | resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} 1739 | engines: {node: '>= 0.4'} 1740 | dependencies: 1741 | call-bind: 1.0.2 1742 | define-properties: 1.1.4 1743 | es-abstract: 1.20.1 1744 | dev: true 1745 | 1746 | /object.fromentries/2.0.5: 1747 | resolution: {integrity: sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==} 1748 | engines: {node: '>= 0.4'} 1749 | dependencies: 1750 | call-bind: 1.0.2 1751 | define-properties: 1.1.4 1752 | es-abstract: 1.20.1 1753 | dev: true 1754 | 1755 | /object.hasown/1.1.1: 1756 | resolution: {integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==} 1757 | dependencies: 1758 | define-properties: 1.1.4 1759 | es-abstract: 1.20.1 1760 | dev: true 1761 | 1762 | /object.values/1.1.5: 1763 | resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} 1764 | engines: {node: '>= 0.4'} 1765 | dependencies: 1766 | call-bind: 1.0.2 1767 | define-properties: 1.1.4 1768 | es-abstract: 1.20.1 1769 | dev: true 1770 | 1771 | /once/1.4.0: 1772 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1773 | dependencies: 1774 | wrappy: 1.0.2 1775 | dev: true 1776 | 1777 | /optionator/0.9.1: 1778 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 1779 | engines: {node: '>= 0.8.0'} 1780 | dependencies: 1781 | deep-is: 0.1.4 1782 | fast-levenshtein: 2.0.6 1783 | levn: 0.4.1 1784 | prelude-ls: 1.2.1 1785 | type-check: 0.4.0 1786 | word-wrap: 1.2.3 1787 | dev: true 1788 | 1789 | /p-limit/1.3.0: 1790 | resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} 1791 | engines: {node: '>=4'} 1792 | dependencies: 1793 | p-try: 1.0.0 1794 | dev: true 1795 | 1796 | /p-locate/2.0.0: 1797 | resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} 1798 | engines: {node: '>=4'} 1799 | dependencies: 1800 | p-limit: 1.3.0 1801 | dev: true 1802 | 1803 | /p-try/1.0.0: 1804 | resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} 1805 | engines: {node: '>=4'} 1806 | dev: true 1807 | 1808 | /parent-module/1.0.1: 1809 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1810 | engines: {node: '>=6'} 1811 | dependencies: 1812 | callsites: 3.1.0 1813 | dev: true 1814 | 1815 | /path-exists/3.0.0: 1816 | resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} 1817 | engines: {node: '>=4'} 1818 | dev: true 1819 | 1820 | /path-is-absolute/1.0.1: 1821 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1822 | engines: {node: '>=0.10.0'} 1823 | dev: true 1824 | 1825 | /path-key/3.1.1: 1826 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1827 | engines: {node: '>=8'} 1828 | dev: true 1829 | 1830 | /path-parse/1.0.7: 1831 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1832 | dev: true 1833 | 1834 | /path-type/4.0.0: 1835 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1836 | engines: {node: '>=8'} 1837 | dev: true 1838 | 1839 | /picocolors/1.0.0: 1840 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1841 | 1842 | /picomatch/2.3.1: 1843 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1844 | engines: {node: '>=8.6'} 1845 | dev: true 1846 | 1847 | /pify/2.3.0: 1848 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1849 | engines: {node: '>=0.10.0'} 1850 | dev: true 1851 | 1852 | /postcss-import/14.1.0_postcss@8.4.14: 1853 | resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} 1854 | engines: {node: '>=10.0.0'} 1855 | peerDependencies: 1856 | postcss: ^8.0.0 1857 | dependencies: 1858 | postcss: 8.4.14 1859 | postcss-value-parser: 4.2.0 1860 | read-cache: 1.0.0 1861 | resolve: 1.22.1 1862 | dev: true 1863 | 1864 | /postcss-js/4.0.0_postcss@8.4.14: 1865 | resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} 1866 | engines: {node: ^12 || ^14 || >= 16} 1867 | peerDependencies: 1868 | postcss: ^8.3.3 1869 | dependencies: 1870 | camelcase-css: 2.0.1 1871 | postcss: 8.4.14 1872 | dev: true 1873 | 1874 | /postcss-load-config/3.1.4_postcss@8.4.14: 1875 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1876 | engines: {node: '>= 10'} 1877 | peerDependencies: 1878 | postcss: '>=8.0.9' 1879 | ts-node: '>=9.0.0' 1880 | peerDependenciesMeta: 1881 | postcss: 1882 | optional: true 1883 | ts-node: 1884 | optional: true 1885 | dependencies: 1886 | lilconfig: 2.0.5 1887 | postcss: 8.4.14 1888 | yaml: 1.10.2 1889 | dev: true 1890 | 1891 | /postcss-nested/5.0.6_postcss@8.4.14: 1892 | resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} 1893 | engines: {node: '>=12.0'} 1894 | peerDependencies: 1895 | postcss: ^8.2.14 1896 | dependencies: 1897 | postcss: 8.4.14 1898 | postcss-selector-parser: 6.0.10 1899 | dev: true 1900 | 1901 | /postcss-selector-parser/6.0.10: 1902 | resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} 1903 | engines: {node: '>=4'} 1904 | dependencies: 1905 | cssesc: 3.0.0 1906 | util-deprecate: 1.0.2 1907 | dev: true 1908 | 1909 | /postcss-value-parser/4.2.0: 1910 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1911 | dev: true 1912 | 1913 | /postcss/8.4.14: 1914 | resolution: {integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==} 1915 | engines: {node: ^10 || ^12 || >=14} 1916 | dependencies: 1917 | nanoid: 3.3.4 1918 | picocolors: 1.0.0 1919 | source-map-js: 1.0.2 1920 | dev: true 1921 | 1922 | /postcss/8.4.5: 1923 | resolution: {integrity: sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==} 1924 | engines: {node: ^10 || ^12 || >=14} 1925 | dependencies: 1926 | nanoid: 3.3.4 1927 | picocolors: 1.0.0 1928 | source-map-js: 1.0.2 1929 | dev: false 1930 | 1931 | /prelude-ls/1.2.1: 1932 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1933 | engines: {node: '>= 0.8.0'} 1934 | dev: true 1935 | 1936 | /prisma/4.0.0: 1937 | resolution: {integrity: sha512-Dtsar03XpCBkcEb2ooGWO/WcgblDTLzGhPcustbehwlFXuTMliMDRzXsfygsgYwQoZnAUKRd1rhpvBNEUziOVw==} 1938 | engines: {node: '>=14.17'} 1939 | hasBin: true 1940 | requiresBuild: true 1941 | dependencies: 1942 | '@prisma/engines': 3.16.0-49.da41d2bb3406da22087b849f0e911199ba4fbf11 1943 | 1944 | /prop-types/15.8.1: 1945 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1946 | dependencies: 1947 | loose-envify: 1.4.0 1948 | object-assign: 4.1.1 1949 | react-is: 16.13.1 1950 | dev: true 1951 | 1952 | /punycode/2.1.1: 1953 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1954 | engines: {node: '>=6'} 1955 | dev: true 1956 | 1957 | /queue-microtask/1.2.3: 1958 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1959 | dev: true 1960 | 1961 | /quick-lru/5.1.1: 1962 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 1963 | engines: {node: '>=10'} 1964 | dev: true 1965 | 1966 | /react-dom/18.2.0_react@18.2.0: 1967 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 1968 | peerDependencies: 1969 | react: ^18.2.0 1970 | dependencies: 1971 | loose-envify: 1.4.0 1972 | react: 18.2.0 1973 | scheduler: 0.23.0 1974 | dev: false 1975 | 1976 | /react-fast-compare/2.0.4: 1977 | resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} 1978 | dev: false 1979 | 1980 | /react-hot-toast/2.2.0_biqbaboplfbrettd7655fr4n2y: 1981 | resolution: {integrity: sha512-248rXw13uhf/6TNDVzagX+y7R8J183rp7MwUMNkcrBRyHj/jWOggfXTGlM8zAOuh701WyVW+eUaWG2LeSufX9g==} 1982 | engines: {node: '>=10'} 1983 | peerDependencies: 1984 | react: '>=16' 1985 | react-dom: '>=16' 1986 | dependencies: 1987 | goober: 2.1.10 1988 | react: 18.2.0 1989 | react-dom: 18.2.0_react@18.2.0 1990 | transitivePeerDependencies: 1991 | - csstype 1992 | dev: false 1993 | 1994 | /react-icons/4.4.0_react@18.2.0: 1995 | resolution: {integrity: sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==} 1996 | peerDependencies: 1997 | react: '*' 1998 | dependencies: 1999 | react: 18.2.0 2000 | dev: false 2001 | 2002 | /react-is/16.13.1: 2003 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2004 | 2005 | /react/18.2.0: 2006 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2007 | engines: {node: '>=0.10.0'} 2008 | dependencies: 2009 | loose-envify: 1.4.0 2010 | dev: false 2011 | 2012 | /read-cache/1.0.0: 2013 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2014 | dependencies: 2015 | pify: 2.3.0 2016 | dev: true 2017 | 2018 | /readdirp/3.6.0: 2019 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2020 | engines: {node: '>=8.10.0'} 2021 | dependencies: 2022 | picomatch: 2.3.1 2023 | dev: true 2024 | 2025 | /regenerator-runtime/0.13.9: 2026 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 2027 | dev: true 2028 | 2029 | /regexp.prototype.flags/1.4.3: 2030 | resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} 2031 | engines: {node: '>= 0.4'} 2032 | dependencies: 2033 | call-bind: 1.0.2 2034 | define-properties: 1.1.4 2035 | functions-have-names: 1.2.3 2036 | dev: true 2037 | 2038 | /regexpp/3.2.0: 2039 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2040 | engines: {node: '>=8'} 2041 | dev: true 2042 | 2043 | /resolve-from/4.0.0: 2044 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2045 | engines: {node: '>=4'} 2046 | dev: true 2047 | 2048 | /resolve/1.22.1: 2049 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2050 | hasBin: true 2051 | dependencies: 2052 | is-core-module: 2.9.0 2053 | path-parse: 1.0.7 2054 | supports-preserve-symlinks-flag: 1.0.0 2055 | dev: true 2056 | 2057 | /resolve/2.0.0-next.4: 2058 | resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} 2059 | hasBin: true 2060 | dependencies: 2061 | is-core-module: 2.9.0 2062 | path-parse: 1.0.7 2063 | supports-preserve-symlinks-flag: 1.0.0 2064 | dev: true 2065 | 2066 | /reusify/1.0.4: 2067 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2068 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2069 | dev: true 2070 | 2071 | /rimraf/3.0.2: 2072 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2073 | hasBin: true 2074 | dependencies: 2075 | glob: 7.2.3 2076 | dev: true 2077 | 2078 | /run-parallel/1.2.0: 2079 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2080 | dependencies: 2081 | queue-microtask: 1.2.3 2082 | dev: true 2083 | 2084 | /scheduler/0.23.0: 2085 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2086 | dependencies: 2087 | loose-envify: 1.4.0 2088 | dev: false 2089 | 2090 | /semver/6.3.0: 2091 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2092 | hasBin: true 2093 | dev: true 2094 | 2095 | /semver/7.3.7: 2096 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 2097 | engines: {node: '>=10'} 2098 | hasBin: true 2099 | dependencies: 2100 | lru-cache: 6.0.0 2101 | dev: true 2102 | 2103 | /shebang-command/2.0.0: 2104 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2105 | engines: {node: '>=8'} 2106 | dependencies: 2107 | shebang-regex: 3.0.0 2108 | dev: true 2109 | 2110 | /shebang-regex/3.0.0: 2111 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2112 | engines: {node: '>=8'} 2113 | dev: true 2114 | 2115 | /side-channel/1.0.4: 2116 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2117 | dependencies: 2118 | call-bind: 1.0.2 2119 | get-intrinsic: 1.1.2 2120 | object-inspect: 1.12.2 2121 | dev: true 2122 | 2123 | /slash/3.0.0: 2124 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2125 | engines: {node: '>=8'} 2126 | dev: true 2127 | 2128 | /source-map-js/1.0.2: 2129 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2130 | engines: {node: '>=0.10.0'} 2131 | 2132 | /string.prototype.matchall/4.0.7: 2133 | resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==} 2134 | dependencies: 2135 | call-bind: 1.0.2 2136 | define-properties: 1.1.4 2137 | es-abstract: 1.20.1 2138 | get-intrinsic: 1.1.2 2139 | has-symbols: 1.0.3 2140 | internal-slot: 1.0.3 2141 | regexp.prototype.flags: 1.4.3 2142 | side-channel: 1.0.4 2143 | dev: true 2144 | 2145 | /string.prototype.trimend/1.0.5: 2146 | resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} 2147 | dependencies: 2148 | call-bind: 1.0.2 2149 | define-properties: 1.1.4 2150 | es-abstract: 1.20.1 2151 | dev: true 2152 | 2153 | /string.prototype.trimstart/1.0.5: 2154 | resolution: {integrity: sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==} 2155 | dependencies: 2156 | call-bind: 1.0.2 2157 | define-properties: 1.1.4 2158 | es-abstract: 1.20.1 2159 | dev: true 2160 | 2161 | /strip-ansi/6.0.1: 2162 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2163 | engines: {node: '>=8'} 2164 | dependencies: 2165 | ansi-regex: 5.0.1 2166 | dev: true 2167 | 2168 | /strip-bom/3.0.0: 2169 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2170 | engines: {node: '>=4'} 2171 | dev: true 2172 | 2173 | /strip-json-comments/3.1.1: 2174 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2175 | engines: {node: '>=8'} 2176 | dev: true 2177 | 2178 | /styled-jsx/5.0.2_react@18.2.0: 2179 | resolution: {integrity: sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ==} 2180 | engines: {node: '>= 12.0.0'} 2181 | peerDependencies: 2182 | '@babel/core': '*' 2183 | babel-plugin-macros: '*' 2184 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 2185 | peerDependenciesMeta: 2186 | '@babel/core': 2187 | optional: true 2188 | babel-plugin-macros: 2189 | optional: true 2190 | dependencies: 2191 | react: 18.2.0 2192 | dev: false 2193 | 2194 | /supports-color/7.2.0: 2195 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2196 | engines: {node: '>=8'} 2197 | dependencies: 2198 | has-flag: 4.0.0 2199 | dev: true 2200 | 2201 | /supports-preserve-symlinks-flag/1.0.0: 2202 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2203 | engines: {node: '>= 0.4'} 2204 | dev: true 2205 | 2206 | /tailwindcss/3.1.4: 2207 | resolution: {integrity: sha512-NrxbFV4tYsga/hpWbRyUfIaBrNMXDxx5BsHgBS4v5tlyjf+sDsgBg5m9OxjrXIqAS/uR9kicxLKP+bEHI7BSeQ==} 2208 | engines: {node: '>=12.13.0'} 2209 | hasBin: true 2210 | dependencies: 2211 | arg: 5.0.2 2212 | chokidar: 3.5.3 2213 | color-name: 1.1.4 2214 | detective: 5.2.1 2215 | didyoumean: 1.2.2 2216 | dlv: 1.1.3 2217 | fast-glob: 3.2.11 2218 | glob-parent: 6.0.2 2219 | is-glob: 4.0.3 2220 | lilconfig: 2.0.5 2221 | normalize-path: 3.0.0 2222 | object-hash: 3.0.0 2223 | picocolors: 1.0.0 2224 | postcss: 8.4.14 2225 | postcss-import: 14.1.0_postcss@8.4.14 2226 | postcss-js: 4.0.0_postcss@8.4.14 2227 | postcss-load-config: 3.1.4_postcss@8.4.14 2228 | postcss-nested: 5.0.6_postcss@8.4.14 2229 | postcss-selector-parser: 6.0.10 2230 | postcss-value-parser: 4.2.0 2231 | quick-lru: 5.1.1 2232 | resolve: 1.22.1 2233 | transitivePeerDependencies: 2234 | - ts-node 2235 | dev: true 2236 | 2237 | /text-table/0.2.0: 2238 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2239 | dev: true 2240 | 2241 | /tiny-warning/1.0.3: 2242 | resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} 2243 | dev: false 2244 | 2245 | /to-regex-range/5.0.1: 2246 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2247 | engines: {node: '>=8.0'} 2248 | dependencies: 2249 | is-number: 7.0.0 2250 | dev: true 2251 | 2252 | /tsconfig-paths/3.14.1: 2253 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 2254 | dependencies: 2255 | '@types/json5': 0.0.29 2256 | json5: 1.0.1 2257 | minimist: 1.2.6 2258 | strip-bom: 3.0.0 2259 | dev: true 2260 | 2261 | /tslib/1.14.1: 2262 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2263 | 2264 | /tslib/2.4.0: 2265 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 2266 | dev: false 2267 | 2268 | /tsutils/3.21.0_typescript@4.7.4: 2269 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2270 | engines: {node: '>= 6'} 2271 | peerDependencies: 2272 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2273 | dependencies: 2274 | tslib: 1.14.1 2275 | typescript: 4.7.4 2276 | dev: true 2277 | 2278 | /type-check/0.4.0: 2279 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2280 | engines: {node: '>= 0.8.0'} 2281 | dependencies: 2282 | prelude-ls: 1.2.1 2283 | dev: true 2284 | 2285 | /type-fest/0.20.2: 2286 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2287 | engines: {node: '>=10'} 2288 | dev: true 2289 | 2290 | /typescript/4.7.4: 2291 | resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} 2292 | engines: {node: '>=4.2.0'} 2293 | hasBin: true 2294 | dev: true 2295 | 2296 | /unbox-primitive/1.0.2: 2297 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2298 | dependencies: 2299 | call-bind: 1.0.2 2300 | has-bigints: 1.0.2 2301 | has-symbols: 1.0.3 2302 | which-boxed-primitive: 1.0.2 2303 | dev: true 2304 | 2305 | /update-browserslist-db/1.0.4_browserslist@4.21.1: 2306 | resolution: {integrity: sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==} 2307 | hasBin: true 2308 | peerDependencies: 2309 | browserslist: '>= 4.21.0' 2310 | dependencies: 2311 | browserslist: 4.21.1 2312 | escalade: 3.1.1 2313 | picocolors: 1.0.0 2314 | dev: true 2315 | 2316 | /uri-js/4.4.1: 2317 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2318 | dependencies: 2319 | punycode: 2.1.1 2320 | dev: true 2321 | 2322 | /use-sync-external-store/1.1.0_react@18.2.0: 2323 | resolution: {integrity: sha512-SEnieB2FPKEVne66NpXPd1Np4R1lTNKfjuy3XdIoPQKYBAFdzbzSZlSn1KJZUiihQLQC5Znot4SBz1EOTBwQAQ==} 2324 | peerDependencies: 2325 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 2326 | dependencies: 2327 | react: 18.2.0 2328 | dev: false 2329 | 2330 | /util-deprecate/1.0.2: 2331 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2332 | dev: true 2333 | 2334 | /v8-compile-cache/2.3.0: 2335 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 2336 | dev: true 2337 | 2338 | /which-boxed-primitive/1.0.2: 2339 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 2340 | dependencies: 2341 | is-bigint: 1.0.4 2342 | is-boolean-object: 1.1.2 2343 | is-number-object: 1.0.7 2344 | is-string: 1.0.7 2345 | is-symbol: 1.0.4 2346 | dev: true 2347 | 2348 | /which/2.0.2: 2349 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2350 | engines: {node: '>= 8'} 2351 | hasBin: true 2352 | dependencies: 2353 | isexe: 2.0.0 2354 | dev: true 2355 | 2356 | /word-wrap/1.2.3: 2357 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 2358 | engines: {node: '>=0.10.0'} 2359 | dev: true 2360 | 2361 | /wrappy/1.0.2: 2362 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2363 | dev: true 2364 | 2365 | /xtend/4.0.2: 2366 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2367 | engines: {node: '>=0.4'} 2368 | dev: true 2369 | 2370 | /yallist/4.0.0: 2371 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2372 | dev: true 2373 | 2374 | /yaml/1.10.2: 2375 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2376 | engines: {node: '>= 6'} 2377 | dev: true 2378 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | // This is your Prisma schema file, 2 | // learn more about it in the docs: https://pris.ly/d/prisma-schema 3 | 4 | generator client { 5 | provider = "prisma-client-js" 6 | previewFeatures = ["referentialIntegrity"] 7 | } 8 | 9 | datasource db { 10 | provider = "mysql" 11 | url = env("DATABASE_URL") 12 | referentialIntegrity = "prisma" 13 | } 14 | 15 | model Option { 16 | id Int @id @default(autoincrement()) 17 | pollID String 18 | number Int 19 | poll Poll @relation(fields: [pollID], references: [id]) 20 | text String 21 | votes Int @default(0) 22 | } 23 | 24 | model Poll { 25 | id String @id 26 | title String 27 | options Option[] 28 | visibility String @default("public") 29 | createdBy String @default("anonymous") 30 | createdAt DateTime @default(now()) 31 | updatedAt DateTime @default(now()) 32 | upvotes Int @default(0) 33 | votes Int @default(0) 34 | } 35 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /styles/globals.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.bunny.net/css?family=work-sans:900,800,700,600,500,400,900i,800i,700i,600i,500i); 2 | 3 | @tailwind base; 4 | @tailwind components; 5 | @tailwind utilities; 6 | 7 | .options-container::-webkit-scrollbar { 8 | display: none; 9 | } 10 | 11 | /* Hide scrollbar for IE, Edge and Firefox */ 12 | .options-container { 13 | -ms-overflow-style: none; /* IE and Edge */ 14 | scrollbar-width: none; /* Firefox */ 15 | } 16 | 17 | ::selection { 18 | background: #e5e7eb; 19 | } 20 | -------------------------------------------------------------------------------- /styles/nprogress.css: -------------------------------------------------------------------------------- 1 | #nprogress { 2 | pointer-events: none; 3 | } 4 | 5 | #nprogress .bar { 6 | background: #22c55e; 7 | 8 | position: fixed; 9 | z-index: 1031; 10 | top: 0; 11 | left: 0; 12 | 13 | width: 100%; 14 | height: 2px; 15 | } 16 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | const plugin = require("tailwindcss/plugin"); 3 | 4 | module.exports = { 5 | content: [ 6 | "./pages/**/*.{js,ts,jsx,tsx}", 7 | "./components/**/*.{js,ts,jsx,tsx}", 8 | ], 9 | darkMode: 'class', 10 | theme: { 11 | extend: { 12 | fontFamily: { 13 | sans: ["Work Sans", "sans-serif"], 14 | }, 15 | textShadow: { 16 | sm: "0 1px 2px var(--tw-shadow)", 17 | DEFAULT: "0 2px 4px var(--tw-shadow)", 18 | lg: "0 8px 16px var(--tw-shadow)", 19 | }, 20 | keyframes: { 21 | "progress-bar-fill": { 22 | "0%": { 23 | transform: "scaleX(0)", 24 | }, 25 | "100%": { 26 | transform: "scaleX(1)", 27 | }, 28 | }, 29 | }, 30 | animation: { 31 | "progress-bar-fill": "progress-bar-fill 3s ease-in-out", 32 | }, 33 | }, 34 | }, 35 | plugins: [ 36 | plugin(function ({ matchUtilities, theme }) { 37 | matchUtilities( 38 | { 39 | "text-shadow": (value) => ({ 40 | textShadow: value, 41 | }), 42 | }, 43 | { values: theme("textShadow") }, 44 | ); 45 | }), 46 | ], 47 | }; 48 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------